You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
452 lines
30 KiB
452 lines
30 KiB
{
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2,
|
|
"metadata": {
|
|
"colab": {
|
|
"name": "lesson_1-R.ipynb",
|
|
"provenance": [],
|
|
"collapsed_sections": [],
|
|
"toc_visible": true
|
|
},
|
|
"kernelspec": {
|
|
"name": "ir",
|
|
"display_name": "R"
|
|
},
|
|
"language_info": {
|
|
"name": "R"
|
|
},
|
|
"coopTranslator": {
|
|
"original_hash": "c18d3bd0bd8ae3878597e89dcd1fa5c1",
|
|
"translation_date": "2025-12-19T16:31:36+00:00",
|
|
"source_file": "2-Regression/1-Tools/solution/R/lesson_1-R.ipynb",
|
|
"language_code": "kn"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: R ಮತ್ತು Tidymodels ಬಳಸಿ ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ\n"
|
|
],
|
|
"metadata": {
|
|
"id": "YJUHCXqK57yz"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## ರಿಗ್ರೆಶನ್ ಪರಿಚಯ - ಪಾಠ 1\n",
|
|
"\n",
|
|
"#### ದೃಷ್ಟಿಕೋನಕ್ಕೆ ಇಡುವುದು\n",
|
|
"\n",
|
|
"✅ ರಿಗ್ರೆಶನ್ ವಿಧಾನಗಳ ಹಲವು ಪ್ರಕಾರಗಳಿವೆ, ಮತ್ತು ನೀವು ಯಾವದನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ ಎಂಬುದು ನೀವು ಹುಡುಕುತ್ತಿರುವ ಉತ್ತರದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ನೀವು ನೀಡಲಾದ ವಯಸ್ಸಿನ ವ್ಯಕ್ತಿಯ ಸಾಧ್ಯತೆಯ ಎತ್ತರವನ್ನು ಊಹಿಸಲು ಬಯಸಿದರೆ, ನೀವು `ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್` ಅನ್ನು ಬಳಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ನೀವು **ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯ**ವನ್ನು ಹುಡುಕುತ್ತಿದ್ದೀರಿ. ನೀವು ಯಾವ ರೀತಿಯ ಆಹಾರವನ್ನು ವೆಗನ್ ಎಂದು ಪರಿಗಣಿಸಬೇಕೇ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಲು ಆಸಕ್ತರಾಗಿದ್ದರೆ, ನೀವು **ವರ್ಗ ವಿಂಗಡಣೆ**ಗಾಗಿ ಹುಡುಕುತ್ತಿದ್ದೀರಿ ಆದ್ದರಿಂದ ನೀವು `ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್` ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ನೀವು ನಂತರ ಹೆಚ್ಚು ತಿಳಿಯುತ್ತೀರಿ. ಡೇಟಾದಿಂದ ನೀವು ಕೇಳಬಹುದಾದ ಕೆಲವು ಪ್ರಶ್ನೆಗಳ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಯೋಚಿಸಿ, ಮತ್ತು ಈ ವಿಧಾನಗಳಲ್ಲಿ ಯಾವುದು ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ ಎಂದು ಪರಿಗಣಿಸಿ.\n",
|
|
"\n",
|
|
"ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು [ಮಧುಮೇಹದ ಬಗ್ಗೆ ಸಣ್ಣ ಡೇಟಾಸೆಟ್](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html) ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುತ್ತೀರಿ. ನೀವು ಮಧುಮೇಹ ರೋಗಿಗಳಿಗೆ ಚಿಕಿತ್ಸೆ ಪರೀಕ್ಷಿಸಲು ಬಯಸಿದರೆ ಎಂದು ಕಲ್ಪಿಸಿ. ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳು, ಬದಲಾವಣೆಗಳ ಸಂಯೋಜನೆಗಳ ಆಧಾರದ ಮೇಲೆ, ಯಾವ ರೋಗಿಗಳು ಚಿಕಿತ್ಸೆಗಾಗಿ ಉತ್ತಮ ಪ್ರತಿಕ್ರಿಯಿಸುವರು ಎಂದು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಅತ್ಯಂತ ಮೂಲಭೂತ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯೂ ಸಹ, ದೃಶ್ಯೀಕರಿಸಿದಾಗ, ನಿಮ್ಮ ಸೈದ್ಧಾಂತಿಕ ಕ್ಲಿನಿಕಲ್ ಪ್ರಯೋಗಗಳನ್ನು ಸಂಘಟಿಸಲು ಸಹಾಯ ಮಾಡುವ ಬದಲಾವಣೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿ ತೋರಿಸಬಹುದು.\n",
|
|
"\n",
|
|
"ಹೀಗಾಗಿ, ಈ ಕಾರ್ಯವನ್ನು ಪ್ರಾರಂಭಿಸೋಣ!\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/kn/encouRage.e75d5fe0367fb913.webp\"\n",
|
|
" width=\"630\"/>\n",
|
|
" <figcaption>@allison_horst ಅವರ ಕಲಾಕೃತಿ</figcaption>\n",
|
|
"\n",
|
|
"<!--<br>Artwork by @allison_horst-->\n"
|
|
],
|
|
"metadata": {
|
|
"id": "LWNNzfqd6feZ"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 1. ನಮ್ಮ ಉಪಕರಣಗಳ ಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುವುದು\n",
|
|
"\n",
|
|
"ಈ ಕಾರ್ಯಕ್ಕಾಗಿ, ನಾವು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಅಗತ್ಯವಿದೆ:\n",
|
|
"\n",
|
|
"- `tidyverse`: [tidyverse](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಹೆಚ್ಚು ಮನರಂಜನೀಯವಾಗಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ!\n",
|
|
"\n",
|
|
"- `tidymodels`: [tidymodels](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜುಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ.\n",
|
|
"\n",
|
|
"ನೀವು ಅವುಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n",
|
|
"\n",
|
|
"`install.packages(c(\"tidyverse\", \"tidymodels\"))`\n",
|
|
"\n",
|
|
"ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ನೀವು ಈ ಘಟಕವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜುಗಳಿದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲವು ಇಲ್ಲದಿದ್ದರೆ ಅವುಗಳನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "FIo2YhO26wI9"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"source": [
|
|
"suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n",
|
|
"pacman::p_load(tidyverse, tidymodels)"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stderr",
|
|
"text": [
|
|
"Loading required package: pacman\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"id": "cIA9fz9v7Dss",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "2df7073b-86b2-4b32-cb86-0da605a0dc11"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಈಗ, ಈ ಅದ್ಭುತ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ ನಮ್ಮ ಪ್ರಸ್ತುತ R ಸೆಷನ್ನಲ್ಲಿ ಲಭ್ಯವಿರಿಸೋಣ.(ಇದು ಕೇವಲ ಉದಾಹರಣೆಗೆ, `pacman::p_load()` ಈಗಾಗಲೇ ಅದನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಮಾಡಿದೆ)\n"
|
|
],
|
|
"metadata": {
|
|
"id": "gpO_P_6f9WUG"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# load the core Tidyverse packages\r\n",
|
|
"library(tidyverse)\r\n",
|
|
"\r\n",
|
|
"# load the core Tidymodels packages\r\n",
|
|
"library(tidymodels)\r\n"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "NLMycgG-9ezO"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 2. ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್\n",
|
|
"\n",
|
|
"ಈ ವ್ಯಾಯಾಮದಲ್ಲಿ, ನಾವು ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವ ಮೂಲಕ ನಮ್ಮ ರಿಗ್ರೆಶನ್ ಕೌಶಲ್ಯಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವೆವು. [ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt) ನಲ್ಲಿ ಡಯಾಬಿಟಿಸ್ ಸುತ್ತಲೂ `442 ಮಾದರಿಗಳು` ಒಳಗೊಂಡಿವೆ, 10 ಭವಿಷ್ಯವಾಣಿ ವೈಶಿಷ್ಟ್ಯ ಚರಗಳು, `ವಯಸ್ಸು`, `ಲಿಂಗ`, `ದೇಹದ ಭಾರ ಸೂಚ್ಯಂಕ`, `ಸರಾಸರಿ ರಕ್ತದ ಒತ್ತಡ`, ಮತ್ತು `ಆರು ರಕ್ತ ಸೀರಮ್ ಮಾಪನಗಳು` ಜೊತೆಗೆ ಫಲಿತಾಂಶ ಚರ `y`: ಮೂಲಸ್ಥಿತಿಯಿಂದ ಒಂದು ವರ್ಷ ನಂತರ ರೋಗ ಪ್ರಗತಿಯ ಪ್ರಮಾಣಾತ್ಮಕ ಅಳೆಯುವಿಕೆ.\n",
|
|
"\n",
|
|
"|ನೋಟಗಳ ಸಂಖ್ಯೆ|442|\n",
|
|
"|----------------------|:---|\n",
|
|
"|ಭವಿಷ್ಯವಾಣಿ ಚರಗಳ ಸಂಖ್ಯೆ|ಮೊದಲ 10 ಕಾಲಮ್ಗಳು ಸಂಖ್ಯಾತ್ಮಕ ಭವಿಷ್ಯವಾಣಿ|\n",
|
|
"|ಫಲಿತಾಂಶ/ಲಕ್ಷ್ಯ|11ನೇ ಕಾಲಮ್ ಮೂಲಸ್ಥಿತಿಯಿಂದ ಒಂದು ವರ್ಷ ನಂತರ ರೋಗ ಪ್ರಗತಿಯ ಪ್ರಮಾಣಾತ್ಮಕ ಅಳೆಯುವಿಕೆ|\n",
|
|
"|ಭವಿಷ್ಯವಾಣಿ ಮಾಹಿತಿ|- ವಯಸ್ಸು ವರ್ಷಗಳಲ್ಲಿ\n",
|
|
"||- ಲಿಂಗ\n",
|
|
"||- bmi ದೇಹದ ಭಾರ ಸೂಚ್ಯಂಕ\n",
|
|
"||- bp ಸರಾಸರಿ ರಕ್ತದ ಒತ್ತಡ\n",
|
|
"||- s1 tc, ಒಟ್ಟು ಸೀರಮ್ ಕೊಲೆಸ್ಟ್ರಾಲ್\n",
|
|
"||- s2 ldl, ಕಡಿಮೆ ಸಾಂದ್ರತೆ ಲಿಪೋಪ್ರೋಟೀನ್ಗಳು\n",
|
|
"||- s3 hdl, ಹೆಚ್ಚಿನ ಸಾಂದ್ರತೆ ಲಿಪೋಪ್ರೋಟೀನ್ಗಳು\n",
|
|
"||- s4 tch, ಒಟ್ಟು ಕೊಲೆಸ್ಟ್ರಾಲ್ / HDL\n",
|
|
"||- s5 ltg, ಸಾಧ್ಯತೆಯಾಗಿ ಸೀರಮ್ ಟ್ರೈಗ್ಲಿಸರೈಡ್ ಮಟ್ಟದ ಲಾಗ್\n",
|
|
"||- s6 glu, ರಕ್ತ ಸಕ್ಕರೆ ಮಟ್ಟ|\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"> 🎓 ನೆನಪಿಡಿ, ಇದು ಮೇಲ್ವಿಚಾರಿತ ಕಲಿಕೆ, ಮತ್ತು ನಮಗೆ 'y' ಎಂಬ ಹೆಸರಿನ ಲಕ್ಷ್ಯ ಬೇಕು.\n",
|
|
"\n",
|
|
"ನೀವು R ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಚಾಲಿಸಲು ಮೊದಲು, ನೀವು ಡೇಟಾವನ್ನು R ನ ಮೆಮೊರಿಯಲ್ಲಿ ಆಮದು ಮಾಡಿಕೊಳ್ಳಬೇಕು, ಅಥವಾ R ಡೇಟಾವನ್ನು ದೂರಸ್ಥವಾಗಿ ಪ್ರವೇಶಿಸಲು ಬಳಸಬಹುದಾದ ಸಂಪರ್ಕವನ್ನು ನಿರ್ಮಿಸಬೇಕು.\n",
|
|
"\n",
|
|
"> [readr](https://readr.tidyverse.org/) ಪ್ಯಾಕೇಜ್, ಇದು ಟಿಡಿವರ್ಸ್ನ ಭಾಗವಾಗಿದೆ, R ಗೆ ಚೌಕಾಕಾರದ ಡೇಟಾವನ್ನು ವೇಗವಾಗಿ ಮತ್ತು ಸ್ನೇಹಪೂರ್ವಕವಾಗಿ ಓದಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n",
|
|
"\n",
|
|
"ಈಗ, ಈ ಮೂಲ URL ನಲ್ಲಿ ನೀಡಲಾದ ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡೋಣ: <https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html>\n",
|
|
"\n",
|
|
"ಮತ್ತೆ, ನಾವು `glimpse()` ಬಳಸಿ ನಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಸಮರ್ಥನೆ ಪರಿಶೀಲನೆ ಮಾಡೋಣ ಮತ್ತು `slice()` ಬಳಸಿ ಮೊದಲ 5 ಸಾಲುಗಳನ್ನು ಪ್ರದರ್ಶಿಸೋಣ.\n",
|
|
"\n",
|
|
"ಮುಂದೆ ಹೋಗುವ ಮೊದಲು, R ಕೋಡ್ನಲ್ಲಿ ನೀವು ಬಹುಶಃ συχνά ಎದುರಿಸುವುದಾದ ಒಂದು ವಿಷಯವನ್ನು ಪರಿಚಯಿಸೋಣ 🥁🥁: ಪೈಪ್ ಆಪರೇಟರ್ `%>%`\n",
|
|
"\n",
|
|
"ಪೈಪ್ ಆಪರೇಟರ್ (`%>%`) ಒಂದು ವಸ್ತುವನ್ನು ಮುಂದಕ್ಕೆ ಫಂಕ್ಷನ್ ಅಥವಾ ಕರೆ ಅಭಿವ್ಯಕ್ತಿಗೆ ಹಂಚಿಕೊಡುವ ಮೂಲಕ ತಾರ್ಕಿಕ ಕ್ರಮದಲ್ಲಿ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ನೀವು ಪೈಪ್ ಆಪರೇಟರ್ ಅನ್ನು ನಿಮ್ಮ ಕೋಡ್ನಲ್ಲಿ \"ಮತ್ತು ನಂತರ\" ಎಂದು ಹೇಳುತ್ತಿರುವಂತೆ ಭಾವಿಸಬಹುದು.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "KM6iXLH996Cl"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Import the data set\r\n",
|
|
"diabetes <- read_table2(file = \"https://www4.stat.ncsu.edu/~boos/var.select/diabetes.rwrite1.txt\")\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"# Get a glimpse and dimensions of the data\r\n",
|
|
"glimpse(diabetes)\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"# Select the first 5 rows of the data\r\n",
|
|
"diabetes %>% \r\n",
|
|
" slice(1:5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "Z1geAMhM-bSP"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"`glimpse()` ನಮಗೆ ಈ ಡೇಟಾದಲ್ಲಿ 442 ಸಾಲುಗಳು ಮತ್ತು 11 ಕಾಲಮ್ಗಳಿವೆ ಎಂದು ತೋರಿಸುತ್ತದೆ, ಎಲ್ಲ ಕಾಲಮ್ಗಳೂ `double` ಡೇಟಾ ಪ್ರಕಾರದವು.\n",
|
|
"\n",
|
|
"<br>\n",
|
|
"\n",
|
|
"> glimpse() ಮತ್ತು slice() ಎಂಬವು [`dplyr`](https://dplyr.tidyverse.org/) ನಲ್ಲಿ ಇರುವ ಫಂಕ್ಷನ್ಗಳು. Dplyr, Tidyverse ಭಾಗವಾಗಿದ್ದು, ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್ನ ವ್ಯಾಕರಣವಾಗಿದೆ, ಇದು ಸಾಮಾನ್ಯ ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್ ಸವಾಲುಗಳನ್ನು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುವ ಸತತ ಕ್ರಿಯಾಪದಗಳ ಸಮೂಹವನ್ನು ಒದಗಿಸುತ್ತದೆ.\n",
|
|
"\n",
|
|
"<br>\n",
|
|
"\n",
|
|
"ಈಗ ನಮಗೆ ಡೇಟಾ ಇದ್ದು, ಈ ವ್ಯಾಯಾಮಕ್ಕಾಗಿ ಒಂದು ವೈಶಿಷ್ಟ್ಯ (`bmi`) ಯನ್ನು ಗುರಿಯಾಗಿಸೋಣ. ಇದಕ್ಕಾಗಿ ನಾವು ಬೇಕಾದ ಕಾಲಮ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಹಾಗಾದರೆ, ನಾವು ಇದನ್ನು ಹೇಗೆ ಮಾಡಬಹುದು?\n",
|
|
"\n",
|
|
"[`dplyr::select()`](https://dplyr.tidyverse.org/reference/select.html) ನಮಗೆ ಡೇಟಾ ಫ್ರೇಮ್ನಲ್ಲಿ ಕಾಲಮ್ಗಳನ್ನು *ಆಯ್ಕೆ* (ಮತ್ತು ಐಚ್ಛಿಕವಾಗಿ ಮರುನಾಮಕರಣ) ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "UwjVT1Hz-c3Z"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Select predictor feature `bmi` and outcome `y`\r\n",
|
|
"diabetes_select <- diabetes %>% \r\n",
|
|
" select(c(bmi, y))\r\n",
|
|
"\r\n",
|
|
"# Print the first 5 rows\r\n",
|
|
"diabetes_select %>% \r\n",
|
|
" slice(1:10)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "RDY1oAKI-m80"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 3. ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಡೇಟಾ\n",
|
|
"\n",
|
|
"ನಿರೀಕ್ಷಿತ ಕಲಿಕೆಯಲ್ಲಿ ಡೇಟಾವನ್ನು ಎರಡು ಉಪಸಮೂಹಗಳಾಗಿ *ಬೇರ್ಪಡಿಸುವುದು* ಸಾಮಾನ್ಯ ಅಭ್ಯಾಸ; ಒಂದು (ಸಾಮಾನ್ಯವಾಗಿ ದೊಡ್ಡದಾದ) ಸೆಟ್ ಅನ್ನು ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಬಳಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಒಂದು ಸಣ್ಣ \"ಹೋಲ್ಡ್-ಬ್ಯಾಕ್\" ಸೆಟ್ ಅನ್ನು ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಿತು ಎಂದು ನೋಡಲು ಬಳಸಲಾಗುತ್ತದೆ.\n",
|
|
"\n",
|
|
"ಈಗ ನಮಗೆ ಡೇಟಾ ಸಿದ್ಧವಾಗಿದೆ, ನಾವು ಈ ಡೇಟಾಸೆಟ್ನ ಸಂಖ್ಯೆಗಳ ನಡುವೆ ತಾರ್ಕಿಕ ಬೇರ್ಪಡಿಸುವಿಕೆಯನ್ನು ಯಂತ್ರ ಸಹಾಯದಿಂದ ನಿರ್ಧರಿಸಬಹುದೇ ಎಂದು ನೋಡಬಹುದು. ನಾವು [rsample](https://tidymodels.github.io/rsample/) ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಬಳಸಬಹುದು, ಇದು Tidymodels ಫ್ರೇಮ್ವರ್ಕ್ನ ಭಾಗವಾಗಿದ್ದು, ಡೇಟಾವನ್ನು *ಹೇಗೆ* ಬೇರ್ಪಡಿಸುವುದರ ಮಾಹಿತಿ ಹೊಂದಿರುವ ವಸ್ತುವನ್ನು ರಚಿಸಲು, ಮತ್ತು ನಂತರ ರಚಿಸಲಾದ ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್ಗಳನ್ನು ಹೊರತೆಗೆಯಲು ಇನ್ನೂ ಎರಡು rsample ಫಂಕ್ಷನ್ಗಳನ್ನು ಬಳಸಬಹುದು:\n"
|
|
],
|
|
"metadata": {
|
|
"id": "SDk668xK-tc3"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"set.seed(2056)\r\n",
|
|
"# Split 67% of the data for training and the rest for tesing\r\n",
|
|
"diabetes_split <- diabetes_select %>% \r\n",
|
|
" initial_split(prop = 0.67)\r\n",
|
|
"\r\n",
|
|
"# Extract the resulting train and test sets\r\n",
|
|
"diabetes_train <- training(diabetes_split)\r\n",
|
|
"diabetes_test <- testing(diabetes_split)\r\n",
|
|
"\r\n",
|
|
"# Print the first 3 rows of the training set\r\n",
|
|
"diabetes_train %>% \r\n",
|
|
" slice(1:10)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "EqtHx129-1h-"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 4. Tidymodels ಬಳಸಿ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಿ\n",
|
|
"\n",
|
|
"ಈಗ ನಾವು ನಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ!\n",
|
|
"\n",
|
|
"Tidymodels ನಲ್ಲಿ, ನೀವು `parsnip()` ಬಳಸಿ ಮೂರು ಕಲ್ಪನೆಗಳನ್ನು ಸೂಚಿಸುವ ಮೂಲಕ ಮಾದರಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೀರಿ:\n",
|
|
"\n",
|
|
"- ಮಾದರಿ **ಪ್ರಕಾರ** ರೇಖೀಯ ರಿಗ್ರೆಶನ್, ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್, ನಿರ್ಧಾರ ಮರ ಮಾದರಿಗಳು ಮತ್ತು ಇತರವುಗಳಂತಹ ಮಾದರಿಗಳನ್ನು ವಿಭಿನ್ನಗೊಳಿಸುತ್ತದೆ.\n",
|
|
"\n",
|
|
"- ಮಾದರಿ **ಮೋಡ್** ಸಾಮಾನ್ಯ ಆಯ್ಕೆಗಳು regression ಮತ್ತು classification ಅನ್ನು ಒಳಗೊಂಡಿದೆ; ಕೆಲವು ಮಾದರಿ ಪ್ರಕಾರಗಳು ಇವುಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ಒಂದು ಅಥವಾ ಎರಡನ್ನೂ ಬೆಂಬಲಿಸುತ್ತವೆ.\n",
|
|
"\n",
|
|
"- ಮಾದರಿ **ಎಂಜಿನ್** ಮಾದರಿಯನ್ನು ಹೊಂದಿಸಲು ಬಳಸಲಾಗುವ ಗಣನಾತ್ಮಕ ಸಾಧನವಾಗಿದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಇವು R ಪ್ಯಾಕೇಜ್ಗಳು, ಉದಾಹರಣೆಗೆ **`\"lm\"`** ಅಥವಾ **`\"ranger\"`**\n",
|
|
"\n",
|
|
"ಈ ಮಾದರಿ ಮಾಹಿತಿಯನ್ನು ಮಾದರಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವಿಕೆಯಲ್ಲಿ ಸೆರೆಹಿಡಿಯಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಒಂದನ್ನು ನಿರ್ಮಿಸೋಣ!\n"
|
|
],
|
|
"metadata": {
|
|
"id": "sBOS-XhB-6v7"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Build a linear model specification\r\n",
|
|
"lm_spec <- \r\n",
|
|
" # Type\r\n",
|
|
" linear_reg() %>% \r\n",
|
|
" # Engine\r\n",
|
|
" set_engine(\"lm\") %>% \r\n",
|
|
" # Mode\r\n",
|
|
" set_mode(\"regression\")\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"# Print the model specification\r\n",
|
|
"lm_spec"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "20OwEw20--t3"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಮಾದರಿಯನ್ನು *ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ* ನಂತರ, ಮಾದರಿಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಸೂತ್ರ ಮತ್ತು ಕೆಲವು ಡೇಟಾವನ್ನು ಬಳಸಿ [`fit()`](https://parsnip.tidymodels.org/reference/fit.html) ಫಂಕ್ಷನ್ ಬಳಸಿ `ಅಂದಾಜು` ಅಥವಾ `ತರಬೇತಿ` ಮಾಡಬಹುದು.\n",
|
|
"\n",
|
|
"`y ~ .` ಅಂದರೆ ನಾವು `y` ಅನ್ನು ಭವಿಷ್ಯವಾಣಿ ಪ್ರಮಾಣ/ಲಕ್ಷ್ಯವಾಗಿ ಹೊಂದಿಸುವೆವು, ಎಲ್ಲಾ ಭವಿಷ್ಯವಾಣಿಕಾರರು/ವೈಶಿಷ್ಟ್ಯಗಳಿಂದ ವಿವರಿಸಲಾಗುತ್ತದೆ ಅಂದರೆ, `.` (ಈ ಪ್ರಕರಣದಲ್ಲಿ, ನಮಗೆ ಒಂದೇ ಭವಿಷ್ಯವಾಣಿಕಾರನು ಇದೆ: `bmi`)\n"
|
|
],
|
|
"metadata": {
|
|
"id": "_oDHs89k_CJj"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Build a linear model specification\r\n",
|
|
"lm_spec <- linear_reg() %>% \r\n",
|
|
" set_engine(\"lm\") %>%\r\n",
|
|
" set_mode(\"regression\")\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"# Train a linear regression model\r\n",
|
|
"lm_mod <- lm_spec %>% \r\n",
|
|
" fit(y ~ ., data = diabetes_train)\r\n",
|
|
"\r\n",
|
|
"# Print the model\r\n",
|
|
"lm_mod"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "YlsHqd-q_GJQ"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಮಾದರಿ ಔಟ್ಪುಟ್ನಿಂದ, ನಾವು ತರಬೇತಿ ಸಮಯದಲ್ಲಿ ಕಲಿತ ಸಹಗುಣಾಂಕಗಳನ್ನು ನೋಡಬಹುದು. ಅವುಗಳು ನಿಜವಾದ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲಾದ ಚರಗಳ ನಡುವೆ ಕನಿಷ್ಠ ಒಟ್ಟು ದೋಷವನ್ನು ನೀಡುವ ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆಯ ಸಹಗುಣಾಂಕಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ.\n",
|
|
"<br>\n",
|
|
"\n",
|
|
"## 5. ಪರೀಕ್ಷಾ ಸೆಟ್ನಲ್ಲಿ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಿ\n",
|
|
"\n",
|
|
"ನಾವು ಈಗಾಗಲೇ ಒಂದು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿರುವುದರಿಂದ, ಅದನ್ನು [parsnip::predict()](https://parsnip.tidymodels.org/reference/predict.model_fit.html) ಬಳಸಿ ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್ಗೆ ರೋಗ ಪ್ರಗತಿಯನ್ನು y ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸಬಹುದು. ಇದನ್ನು ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ರೇಖೆಯನ್ನು ಬಿಡಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "kGZ22RQj_Olu"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Make predictions for the test set\r\n",
|
|
"predictions <- lm_mod %>% \r\n",
|
|
" predict(new_data = diabetes_test)\r\n",
|
|
"\r\n",
|
|
"# Print out some of the predictions\r\n",
|
|
"predictions %>% \r\n",
|
|
" slice(1:5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "nXHbY7M2_aao"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ವಾಹ್! 💃🕺 ನಾವು ಇತ್ತೀಚೆಗೆ ಒಂದು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಂಡು ಅದನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಳಸಿದ್ದೇವೆ!\n",
|
|
"\n",
|
|
"ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವಾಗ, tidymodels ಸಂಪ್ರದಾಯವು ಯಾವಾಗಲೂ ಫಲಿತಾಂಶಗಳ ತಬಲ್/ಡೇಟಾ ಫ್ರೇಮ್ ಅನ್ನು ಮಾನಕೃತ ಕಾಲಮ್ ಹೆಸರುಗಳೊಂದಿಗೆ ಉತ್ಪಾದಿಸುವುದಾಗಿದೆ. ಇದರಿಂದ ಮೂಲ ಡೇಟಾ ಮತ್ತು ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು subsequent ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ, ಉದಾಹರಣೆಗೆ ಪ್ಲಾಟಿಂಗ್ಗೆ, ಬಳಸಬಹುದಾದ ಸ್ವರೂಪದಲ್ಲಿ ಸಂಯೋಜಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ.\n",
|
|
"\n",
|
|
"`dplyr::bind_cols()` ಬಹು ಡೇಟಾ ಫ್ರೇಮ್ಗಳ ಕಾಲಮ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಂಧಿಸುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "R_JstwUY_bIs"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Combine the predictions and the original test set\r\n",
|
|
"results <- diabetes_test %>% \r\n",
|
|
" bind_cols(predictions)\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"results %>% \r\n",
|
|
" slice(1:5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "RybsMJR7_iI8"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 6. ಮಾದರಿ ಫಲಿತಾಂಶಗಳನ್ನು ಚಿತ್ರಿಸಿ\n",
|
|
"\n",
|
|
"ಈಗ, ಇದನ್ನು ದೃಶ್ಯವಾಗಿ ನೋಡಲು ಸಮಯವಾಗಿದೆ 📈. ನಾವು ಪರೀಕ್ಷಾ ಸೆಟ್ನ ಎಲ್ಲಾ `y` ಮತ್ತು `bmi` ಮೌಲ್ಯಗಳ scatter plot ಅನ್ನು ರಚಿಸುವೆವು, ನಂತರ ಮಾದರಿಯ ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಅತ್ಯಂತ ಸೂಕ್ತ ಸ್ಥಳದಲ್ಲಿ prediction ಗಳನ್ನು ಬಳಸಿ ಒಂದು ರೇಖೆಯನ್ನು ಬಿಡುತ್ತೇವೆ.\n",
|
|
"\n",
|
|
"R ನಲ್ಲಿ ಗ್ರಾಫ್ಗಳನ್ನು ರಚಿಸಲು ಹಲವಾರು ವ್ಯವಸ್ಥೆಗಳಿವೆ, ಆದರೆ `ggplot2` ಅತ್ಯಂತ ಸುಂದರ ಮತ್ತು ಬಹುಮುಖವಾಗಿದೆ. ಇದು ನಿಮಗೆ **ಸ್ವತಂತ್ರ ಘಟಕಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ** ಗ್ರಾಫ್ಗಳನ್ನು ರಚಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "XJbYbMZW_n_s"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Set a theme for the plot\r\n",
|
|
"theme_set(theme_light())\r\n",
|
|
"# Create a scatter plot\r\n",
|
|
"results %>% \r\n",
|
|
" ggplot(aes(x = bmi)) +\r\n",
|
|
" # Add a scatter plot\r\n",
|
|
" geom_point(aes(y = y), size = 1.6) +\r\n",
|
|
" # Add a line plot\r\n",
|
|
" geom_line(aes(y = .pred), color = \"blue\", size = 1.5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "R9tYp3VW_sTn"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"> ✅ ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದರ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ಒಂದು ಸರಳ ರೇಖೆ ಅನೇಕ ಸಣ್ಣ ಡೇಟಾ ಬಿಂದುಗಳ ಮೂಲಕ ಓಡುತ್ತಿದೆ, ಆದರೆ ಅದು ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ? ಈ ರೇಖೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ, ಕಾಣದ ಡೇಟಾ ಬಿಂದು ಪ್ಲಾಟ್ನ y ಅಕ್ಷದ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ಊಹಿಸಬಹುದು ಎಂದು ನೀವು ನೋಡಬಹುದೇ? ಈ ಮಾದರಿಯ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಯನ್ನು ಪದಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸಿ.\n",
|
|
"\n",
|
|
"ಅಭಿನಂದನೆಗಳು, ನೀವು ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದನ್ನು ಬಳಸಿಕೊಂಡು ಊಹೆ ಮಾಡಿದ್ದೀರಿ, ಮತ್ತು ಅದನ್ನು ಪ್ಲಾಟ್ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿದ್ದೀರಿ!\n"
|
|
],
|
|
"metadata": {
|
|
"id": "zrPtHIxx_tNI"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
|
|
]
|
|
}
|
|
]
|
|
} |