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.
731 lines
45 KiB
731 lines
45 KiB
{
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2,
|
|
"metadata": {
|
|
"colab": {
|
|
"name": "lesson_10-R.ipynb",
|
|
"provenance": [],
|
|
"collapsed_sections": []
|
|
},
|
|
"kernelspec": {
|
|
"name": "ir",
|
|
"display_name": "R"
|
|
},
|
|
"language_info": {
|
|
"name": "R"
|
|
},
|
|
"coopTranslator": {
|
|
"original_hash": "2621e24705e8100893c9bf84e0fc8aef",
|
|
"translation_date": "2025-12-19T17:08:55+00:00",
|
|
"source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb",
|
|
"language_code": "kn"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# ವರ್ಗೀಕರಣ ಮಾದರಿ ನಿರ್ಮಿಸಿ: ರುಚಿಕರ ಏಷ್ಯನ್ ಮತ್ತು ಭಾರತೀಯ ಆಹಾರಗಳು\n"
|
|
],
|
|
"metadata": {
|
|
"id": "ItETB4tSFprR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## ವರ್ಗೀಕರಣಕ್ಕೆ ಪರಿಚಯ: ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ, ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ\n",
|
|
"\n",
|
|
"ಈ ನಾಲ್ಕು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನದ ಮೂಲಭೂತ ಗಮನಾರ್ಹ ವಿಷಯವಾದ *ವರ್ಗೀಕರಣ* ಅನ್ನು ಅನ್ವೇಷಿಸುವಿರಿ. ಏಷ್ಯಾ ಮತ್ತು ಭಾರತದಲ್ಲಿನ ಎಲ್ಲಾ ಅದ್ಭುತ ಆಹಾರಗಳ ಬಗ್ಗೆ ಇರುವ ಡೇಟಾಸೆಟ್ನೊಂದಿಗೆ ವಿವಿಧ ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿಥಮ್ಗಳನ್ನು ಬಳಸುವುದನ್ನು ನಾವು ಹಾದುಹೋಗುತ್ತೇವೆ. ನೀವು ಹಸಿವಾಗಿದ್ದೀರಾ ಎಂದು ಆಶಿಸುತ್ತೇವೆ!\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/kn/pinch.1b035ec9ba7e0d40.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>ಈ ಪಾಠಗಳಲ್ಲಿ ಪ್ಯಾನ್-ಏಷಿಯನ್ ಆಹಾರಗಳನ್ನು ಆಚರಿಸಿ! ಚಿತ್ರ: ಜೆನ್ ಲೂಪರ್</figcaption>\n",
|
|
"\n",
|
|
"\n",
|
|
"<!---->\n",
|
|
"\n",
|
|
"ವರ್ಗೀಕರಣವು [ನಿರೀಕ್ಷಿತ ಅಧ್ಯಯನ](https://wikipedia.org/wiki/Supervised_learning)ದ ಒಂದು ರೂಪವಾಗಿದ್ದು, ರಿಗ್ರೆಷನ್ ತಂತ್ರಜ್ಞಾನಗಳೊಂದಿಗೆ ಬಹಳ ಸಾಮಾನ್ಯತೆ ಹೊಂದಿದೆ. ವರ್ಗೀಕರಣದಲ್ಲಿ, ನೀವು ಒಂದು ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುತ್ತೀರಿ ಅದು ಯಾವ `ವರ್ಗ`ಕ್ಕೆ ಒಂದು ಐಟಂ ಸೇರಿದೆ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಯಂತ್ರ ಅಧ್ಯಯನವು ಡೇಟಾಸೆಟ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವಸ್ತುಗಳಿಗೆ ಮೌಲ್ಯಗಳು ಅಥವಾ ಹೆಸರುಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದರ ಬಗ್ಗೆ ಇದ್ದರೆ, ವರ್ಗೀಕರಣ ಸಾಮಾನ್ಯವಾಗಿ ಎರಡು ಗುಂಪುಗಳಿಗೆ ಬಿದ್ದುಹೋಗುತ್ತದೆ: *ದ್ವಿಪದ ವರ್ಗೀಕರಣ* ಮತ್ತು *ಬಹುಪದ ವರ್ಗೀಕರಣ*.\n",
|
|
"\n",
|
|
"ಸ್ಮರಿಸಿ:\n",
|
|
"\n",
|
|
"- **ರೇಖೀಯ ರಿಗ್ರೆಷನ್** ನಿಮಗೆ ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಮತ್ತು ಹೊಸ ಡೇಟಾಪಾಯಿಂಟ್ ಆ ರೇಖೆಯ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಬಿದ್ದೀತೆ ಎಂಬುದನ್ನು ನಿಖರವಾಗಿ ಊಹಿಸಲು ಸಹಾಯ ಮಾಡಿತು. ಆದ್ದರಿಂದ, ನೀವು ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ *ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಡಿಸೆಂಬರ್ನಲ್ಲಿ ಕಂಬಳಿಯ ಬೆಲೆ ಏನು ಇರುತ್ತದೆ* ಎಂದು.\n",
|
|
"\n",
|
|
"- **ಲಾಗಿಸ್ಟಿಕ್ ರಿಗ್ರೆಷನ್** ನಿಮಗೆ \"ದ್ವಿಪದ ವರ್ಗಗಳು\" ಅನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡಿತು: ಈ ಬೆಲೆ ಮಟ್ಟದಲ್ಲಿ, *ಈ ಕಂಬಳಿ ಕಿತ್ತಳೆ ಬಣ್ಣದದೆಯೇ ಅಥವಾ ಅಲ್ಲವೇ*?\n",
|
|
"\n",
|
|
"ವರ್ಗೀಕರಣವು ಡೇಟಾ ಪಾಯಿಂಟ್ನ ಲೇಬಲ್ ಅಥವಾ ವರ್ಗವನ್ನು ನಿರ್ಧರಿಸಲು ವಿವಿಧ ಆಲ್ಗಾರಿಥಮ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಆಹಾರ ಡೇಟಾ ಜೊತೆ ಕೆಲಸ ಮಾಡಿ, ಒಂದು ಗುಂಪಿನ ಪದಾರ್ಥಗಳನ್ನು ಗಮನಿಸಿ ಅದರ ಮೂಲ ಆಹಾರವನ್ನು ನಾವು ನಿರ್ಧರಿಸಬಹುದೇ ಎಂದು ನೋಡೋಣ.\n",
|
|
"\n",
|
|
"### [**ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)\n",
|
|
"\n",
|
|
"### **ಪರಿಚಯ**\n",
|
|
"\n",
|
|
"ವರ್ಗೀಕರಣವು ಯಂತ್ರ ಅಧ್ಯಯನ ಸಂಶೋಧಕ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಮೂಲಭೂತ ಚಟುವಟಿಕೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಒಂದು ದ್ವಿಪದ ಮೌಲ್ಯದ ಮೂಲಭೂತ ವರ್ಗೀಕರಣದಿಂದ (\"ಈ ಇಮೇಲ್ ಸ್ಪ್ಯಾಮ್ ಆಗಿದೆಯೇ ಇಲ್ಲವೇ?\"), ಸಂಕೀರ್ಣ ಚಿತ್ರ ವರ್ಗೀಕರಣ ಮತ್ತು ವಿಭಾಗೀಕರಣದವರೆಗೆ, ಡೇಟಾವನ್ನು ವರ್ಗಗಳಲ್ಲಿ ವಿಂಗಡಿಸಿ ಅದಕ್ಕೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳುವುದು ಸದಾ ಉಪಯುಕ್ತ.\n",
|
|
"\n",
|
|
"ವಿಜ್ಞಾನಾತ್ಮಕವಾಗಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹೇಳುವುದಾದರೆ, ನಿಮ್ಮ ವರ್ಗೀಕರಣ ವಿಧಾನವು ಇನ್ಪುಟ್ ಚರಗಳ ಮತ್ತು ಔಟ್ಪುಟ್ ಚರಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ನಕ್ಷೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವ ಭವಿಷ್ಯವಾಣಿ ಮಾದರಿಯನ್ನು ರಚಿಸುತ್ತದೆ.\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/kn/binary-multiclass.b56d0c86c81105a6.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>ವರ್ಗೀಕರಣ ಆಲ್ಗಾರಿಥಮ್ಗಳು ನಿರ್ವಹಿಸಬೇಕಾದ ದ್ವಿಪದ ಮತ್ತು ಬಹುಪದ ಸಮಸ್ಯೆಗಳು. ಇನ್ಫೋಗ್ರಾಫಿಕ್: ಜೆನ್ ಲೂಪರ್</figcaption>\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"ನಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವ, ದೃಶ್ಯೀಕರಿಸುವ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಿಗೆ ಸಿದ್ಧಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಯಂತ್ರ ಅಧ್ಯಯನವನ್ನು ಡೇಟಾವನ್ನು ವರ್ಗೀಕರಿಸಲು ಬಳಸಬಹುದಾದ ವಿವಿಧ ಮಾರ್ಗಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳೋಣ.\n",
|
|
"\n",
|
|
"[ಸಂಖ್ಯಾಶಾಸ್ತ್ರ](https://wikipedia.org/wiki/Statistical_classification)ದಿಂದ ಪಡೆದ, ಕ್ಲಾಸಿಕ್ ಯಂತ್ರ ಅಧ್ಯಯನ ಬಳಸಿ ವರ್ಗೀಕರಣವು `ಧೂಮಪಾನಿ`, `ತೂಕ`, ಮತ್ತು `ವಯಸ್ಸು` ಮುಂತಾದ ಲಕ್ಷಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು *X ರೋಗದ ಸಂಭವನೀಯತೆ* ಅನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ನೀವು ಮೊದಲು ಮಾಡಿದ ರಿಗ್ರೆಷನ್ ಅಭ್ಯಾಸಗಳಂತೆ, ಇದು ಒಂದು ನಿರೀಕ್ಷಿತ ಅಧ್ಯಯನ ತಂತ್ರವಾಗಿದೆ, ನಿಮ್ಮ ಡೇಟಾ ಲೇಬಲ್ ಮಾಡಲ್ಪಟ್ಟಿದ್ದು, ಯಂತ್ರ ಅಧ್ಯಯನ ಆಲ್ಗಾರಿಥಮ್ಗಳು ಆ ಲೇಬಲ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾಸೆಟ್ನ ವರ್ಗಗಳನ್ನು (ಅಥವಾ 'ಲಕ್ಷಣಗಳನ್ನು') ವರ್ಗೀಕರಿಸಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಗುಂಪು ಅಥವಾ ಫಲಿತಾಂಶಕ್ಕೆ ನಿಯೋಜಿಸುತ್ತವೆ.\n",
|
|
"\n",
|
|
"✅ ಆಹಾರಗಳ ಬಗ್ಗೆ ಒಂದು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಕಲ್ಪಿಸಿ. ಬಹುಪದ ಮಾದರಿ ಏನು ಉತ್ತರಿಸಬಹುದು? ದ್ವಿಪದ ಮಾದರಿ ಏನು ಉತ್ತರಿಸಬಹುದು? ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಆಹಾರದಲ್ಲಿ ಮೆಂತ್ಯ ಬಳಕೆಯಾಗುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸಲು ಬಯಸಿದರೆ? ನೀವು ಸ್ಟಾರ್ ಅನೀಸ್, ಆರ್ಟಿಚೋಕ್, ಹೂಕೋಸು ಮತ್ತು ಹರ್ಸರಾಡಿಷ್ ತುಂಬಿದ ಗ್ರೋಸರಿ ಬ್ಯಾಗ್ ಇದ್ದಾಗ, ನೀವು ಸಾಮಾನ್ಯ ಭಾರತೀಯ ವಾನಗಿಯನ್ನು ರಚಿಸಬಹುದೇ ಎಂದು ನೋಡಲು ಬಯಸಿದರೆ?\n",
|
|
"\n",
|
|
"### **ಹಲೋ 'ವರ್ಗೀಕರಣಕಾರ'**\n",
|
|
"\n",
|
|
"ನಾವು ಈ ಆಹಾರ ಡೇಟಾಸೆಟ್ಗೆ ಕೇಳಬೇಕಾದ ಪ್ರಶ್ನೆ ವಾಸ್ತವವಾಗಿ ಒಂದು **ಬಹುಪದ ಪ್ರಶ್ನೆ**, ಏಕೆಂದರೆ ನಾವು ಹಲವಾರು ರಾಷ್ಟ್ರೀಯ ಆಹಾರಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇವೆ. ಪದಾರ್ಥಗಳ ಒಂದು ಬ್ಯಾಚ್ ನೀಡಿದಾಗ, ಈ ಅನೇಕ ವರ್ಗಗಳಲ್ಲಿ ಯಾವುದು ಡೇಟಾ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ?\n",
|
|
"\n",
|
|
"ಟಿಡಿಮೋಡಲ್ಸ್ ವಿವಿಧ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಬಳಸಬಹುದಾದ ವಿವಿಧ ಆಲ್ಗಾರಿಥಮ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಮುಂದಿನ ಎರಡು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಈ ಆಲ್ಗಾರಿಥಮ್ಗಳ ಬಗ್ಗೆ ತಿಳಿಯುವಿರಿ.\n",
|
|
"\n",
|
|
"#### **ಪೂರ್ವಾಪೇಕ್ಷಿತ**\n",
|
|
"\n",
|
|
"ಈ ಪಾಠಕ್ಕಾಗಿ, ನಾವು ನಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲು, ಸಿದ್ಧಪಡಿಸಲು ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಲು ಕೆಳಗಿನ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಅಗತ್ಯವಿದೆ:\n",
|
|
"\n",
|
|
"- `tidyverse`: [ಟಿಡಿವರ್ಸ್](https://www.tidyverse.org/) ಒಂದು [R ಪ್ಯಾಕೇಜ್ಗಳ ಸಂಗ್ರಹ](https://www.tidyverse.org/packages) ಆಗಿದ್ದು, ಡೇಟಾ ವಿಜ್ಞಾನವನ್ನು ವೇಗವಾಗಿ, ಸುಲಭವಾಗಿ ಮತ್ತು ಮನರಂಜನೀಯವಾಗಿ ಮಾಡುತ್ತದೆ!\n",
|
|
"\n",
|
|
"- `tidymodels`: [ಟಿಡಿಮೋಡಲ್ಸ್](https://www.tidymodels.org/) ಫ್ರೇಮ್ವರ್ಕ್ ಒಂದು [ಪ್ಯಾಕೇಜ್ಗಳ ಸಂಗ್ರಹ](https://www.tidymodels.org/packages/) ಆಗಿದ್ದು, ಮಾದರೀಕರಣ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಉಪಯುಕ್ತವಾಗಿದೆ.\n",
|
|
"\n",
|
|
"- `DataExplorer`: [ಡೇಟಾ ಎಕ್ಸ್ಪ್ಲೋರರ್ ಪ್ಯಾಕೇಜ್](https://cran.r-project.org/web/packages/DataExplorer/vignettes/dataexplorer-intro.html) EDA ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ವರದಿ ತಯಾರಿಕೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ಮತ್ತು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು ಉದ್ದೇಶಿಸಲಾಗಿದೆ.\n",
|
|
"\n",
|
|
"- `themis`: [ಥೆಮಿಸ್ ಪ್ಯಾಕೇಜ್](https://themis.tidymodels.org/) ಅಸಮತೋಲನ ಡೇಟಾ ನಿರ್ವಹಣೆಗೆ ಹೆಚ್ಚುವರಿ ರೆಸಿಪಿ ಹಂತಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.\n",
|
|
"\n",
|
|
"ನೀವು ಅವುಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಬಹುದು:\n",
|
|
"\n",
|
|
"`install.packages(c(\"tidyverse\", \"tidymodels\", \"DataExplorer\", \"here\"))`\n",
|
|
"\n",
|
|
"ಬದಲಾಗಿ, ಕೆಳಗಿನ ಸ್ಕ್ರಿಪ್ಟ್ ಈ ಮಾಯಾಜಾಲವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜ್ಗಳಿದ್ದಾರೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ, ಅವು ಇಲ್ಲದಿದ್ದರೆ ನಿಮ್ಮಿಗಾಗಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "ri5bQxZ-Fz_0"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"suppressWarnings(if (!require(\"pacman\"))install.packages(\"pacman\"))\r\n",
|
|
"\r\n",
|
|
"pacman::p_load(tidyverse, tidymodels, DataExplorer, themis, here)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "KIPxa4elGAPI"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ನಾವು ನಂತರ ಈ ಅದ್ಭುತ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ ನಮ್ಮ ಪ್ರಸ್ತುತ R ಸೆಷನ್ನಲ್ಲಿ ಲಭ್ಯವಿರಿಸುವೆವು. (ಇದು ಕೇವಲ ಉದಾಹರಣೆಗೆ, `pacman::p_load()` ಈಗಾಗಲೇ ಅದನ್ನು ನಿಮ್ಮಿಗಾಗಿ ಮಾಡಿದೆ)\n"
|
|
],
|
|
"metadata": {
|
|
"id": "YkKAxOJvGD4C"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## ವ್ಯಾಯಾಮ - ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು ಸಮತೋಲಗೊಳಿಸಿ\n",
|
|
"\n",
|
|
"ಈ ಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಮೊದಲ ಕಾರ್ಯವೆಂದರೆ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಮತ್ತು **ಸಮತೋಲಗೊಳಿಸುವುದು**\n",
|
|
"\n",
|
|
"ಡೇಟಾವನ್ನು ಪರಿಚಯಿಸೋಣ!🕵️\n"
|
|
],
|
|
"metadata": {
|
|
"id": "PFkQDlk0GN5O"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Import data\r\n",
|
|
"df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/4-Classification/data/cuisines.csv\")\r\n",
|
|
"\r\n",
|
|
"# View the first 5 rows\r\n",
|
|
"df %>% \r\n",
|
|
" slice_head(n = 5)\r\n"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "Qccw7okxGT0S"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಆಕರ್ಷಕವಾಗಿದೆ! ನೋಡಿದಂತೆ, ಮೊದಲ ಕಾಲಮ್ ಒಂದು ರೀತಿಯ `id` ಕಾಲಮ್ ಆಗಿದೆ. ಡೇಟಾ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಮಾಹಿತಿ ಪಡೆಯೋಣ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "XrWnlgSrGVmR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Basic information about the data\r\n",
|
|
"df %>%\r\n",
|
|
" introduce()\r\n",
|
|
"\r\n",
|
|
"# Visualize basic information above\r\n",
|
|
"df %>% \r\n",
|
|
" plot_intro(ggtheme = theme_light())"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "4UcGmxRxGieA"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"From the output, we can immediately see that we have `2448` rows and `385` columns and `0` missing values. We also have 1 discrete column, *cuisine*.\n",
|
|
"\n",
|
|
"## ವ್ಯಾಯಾಮ - ಆಹಾರ ಶೈಲಿಗಳ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳುವುದು\n",
|
|
"\n",
|
|
"ಈಗ ಕೆಲಸ ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕವಾಗಲು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಪ್ರತಿ ಆಹಾರ ಶೈಲಿಗೆ ಪ್ರಕಾರದ ಡೇಟಾ ವಿತರಣೆ ಕಂಡುಹಿಡಿಯೋಣ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "AaPubl__GmH5"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Count observations per cuisine\r\n",
|
|
"df %>% \r\n",
|
|
" count(cuisine) %>% \r\n",
|
|
" arrange(n)\r\n",
|
|
"\r\n",
|
|
"# Plot the distribution\r\n",
|
|
"theme_set(theme_light())\r\n",
|
|
"df %>% \r\n",
|
|
" count(cuisine) %>% \r\n",
|
|
" ggplot(mapping = aes(x = n, y = reorder(cuisine, -n))) +\r\n",
|
|
" geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n",
|
|
" ylab(\"cuisine\")"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "FRsBVy5eGrrv"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಸಂಖ್ಯಾತ್ಮಕವಾದ ಅಡುಗೆಶೈಲಿಗಳು ಇವೆ, ಆದರೆ ಡೇಟಾದ ವಿತರಣೆಯು ಅಸಮಾನವಾಗಿದೆ. ನೀವು ಅದನ್ನು ಸರಿಪಡಿಸಬಹುದು! ಅದನ್ನು ಮಾಡುವ ಮೊದಲು, ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅನ್ವೇಷಿಸಿ.\n",
|
|
"\n",
|
|
"ಮುಂದೆ, ಪ್ರತಿ ಅಡುಗೆಶೈಲಿಯನ್ನು ಅದರ ಸ್ವತಂತ್ರ ಟಿಬಲ್ಗೆ ಹಂಚಿ ಮತ್ತು ಪ್ರತಿ ಅಡುಗೆಶೈಲಿಗೆ ಎಷ್ಟು ಡೇಟಾ ಲಭ್ಯವಿದೆ (ಸಾಲುಗಳು, ಕಾಲಮ್ಗಳು) ಎಂದು ಕಂಡುಹಿಡಿಯೋಣ.\n",
|
|
"\n",
|
|
"> [ಟಿಬಲ್](https://tibble.tidyverse.org/) ಒಂದು ಆಧುನಿಕ ಡೇಟಾ ಫ್ರೇಮ್ ಆಗಿದೆ.\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/kn/dplyr_filter.b480b264b03439ff.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>ಕಲಾಕೃತಿ @allison_horst ಅವರಿಂದ</figcaption>\n"
|
|
],
|
|
"metadata": {
|
|
"id": "vVvyDb1kG2in"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Create individual tibble for the cuisines\r\n",
|
|
"thai_df <- df %>% \r\n",
|
|
" filter(cuisine == \"thai\")\r\n",
|
|
"japanese_df <- df %>% \r\n",
|
|
" filter(cuisine == \"japanese\")\r\n",
|
|
"chinese_df <- df %>% \r\n",
|
|
" filter(cuisine == \"chinese\")\r\n",
|
|
"indian_df <- df %>% \r\n",
|
|
" filter(cuisine == \"indian\")\r\n",
|
|
"korean_df <- df %>% \r\n",
|
|
" filter(cuisine == \"korean\")\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"# Find out how much data is available per cuisine\r\n",
|
|
"cat(\" thai df:\", dim(thai_df), \"\\n\",\r\n",
|
|
" \"japanese df:\", dim(japanese_df), \"\\n\",\r\n",
|
|
" \"chinese_df:\", dim(chinese_df), \"\\n\",\r\n",
|
|
" \"indian_df:\", dim(indian_df), \"\\n\",\r\n",
|
|
" \"korean_df:\", dim(korean_df))"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "0TvXUxD3G8Bk"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"Perfect!😋\n",
|
|
"\n",
|
|
"## **ವ್ಯಾಯಾಮ - dplyr ಬಳಸಿ ಆಹಾರ ಪ್ರಕಾರದ ಪ್ರಾಥಮಿಕ ಪದಾರ್ಥಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು**\n",
|
|
"\n",
|
|
"ಈಗ ನೀವು ಡೇಟಾದಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ಹೋಗಿ ಪ್ರತಿ ಆಹಾರ ಪ್ರಕಾರದ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳು ಯಾವುವು ಎಂದು ತಿಳಿದುಕೊಳ್ಳಬಹುದು. ಆಹಾರ ಪ್ರಕಾರಗಳ ನಡುವೆ ಗೊಂದಲ ಉಂಟುಮಾಡುವ ಪುನರಾವರ್ತಿತ ಡೇಟಾವನ್ನು ನೀವು ಶುದ್ಧೀಕರಿಸಬೇಕು, ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳೋಣ.\n",
|
|
"\n",
|
|
"R ನಲ್ಲಿ `create_ingredient()` ಎಂಬ ಫಂಕ್ಷನ್ ಅನ್ನು ರಚಿಸಿ, ಇದು ಒಂದು ಪದಾರ್ಥ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಈ ಫಂಕ್ಷನ್ ಒಂದು ಅನಗತ್ಯ ಕಾಲಮ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಪದಾರ್ಥಗಳನ್ನು ಅವರ ಎಣಿಕೆಯ ಮೂಲಕ ಕ್ರಮಬದ್ಧಗೊಳಿಸುತ್ತದೆ.\n",
|
|
"\n",
|
|
"R ನಲ್ಲಿ ಫಂಕ್ಷನ್ನ ಮೂಲ ರಚನೆ:\n",
|
|
"\n",
|
|
"`myFunction <- function(arglist){`\n",
|
|
"\n",
|
|
"**`...`**\n",
|
|
"\n",
|
|
"**`return`**`(value)`\n",
|
|
"\n",
|
|
"`}`\n",
|
|
"\n",
|
|
"R ಫಂಕ್ಷನ್ಗಳ ಬಗ್ಗೆ ಸರಳ ಪರಿಚಯವನ್ನು ನೀವು [ಇಲ್ಲಿ](https://skirmer.github.io/presentations/functions_with_r.html#1) ಕಾಣಬಹುದು.\n",
|
|
"\n",
|
|
"ನೇರವಾಗಿ ಪ್ರಾರಂಭಿಸೋಣ! ನಾವು ನಮ್ಮ ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಕಲಿತ [dplyr ಕ್ರಿಯಾಪದಗಳನ್ನು](https://dplyr.tidyverse.org/) ಬಳಸಲಿದ್ದೇವೆ. ಪುನರಾವೃತ್ತಿಯಾಗಿ:\n",
|
|
"\n",
|
|
"- `dplyr::select()`: ನೀವು ಯಾವ **ಕಾಲಮ್ಗಳನ್ನು** ಉಳಿಸಬೇಕು ಅಥವಾ ಹೊರತುಪಡಿಸಬೇಕು ಎಂದು ಆಯ್ಕೆಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n",
|
|
"\n",
|
|
"- `dplyr::pivot_longer()`: ಡೇಟಾವನ್ನು \"ಉದ್ದಗೊಳಿಸಲು\" ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೆಚ್ಚಿಸಿ ಕಾಲಮ್ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.\n",
|
|
"\n",
|
|
"- `dplyr::group_by()` ಮತ್ತು `dplyr::summarise()`: ವಿಭಿನ್ನ ಗುಂಪುಗಳಿಗಾಗಿ ಸಾರಾಂಶ ಅಂಕಿಅಂಶಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ಅದನ್ನು ಒಳ್ಳೆಯ ಟೇಬಲ್ನಲ್ಲಿ ಇಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n",
|
|
"\n",
|
|
"- `dplyr::filter()`: ನಿಮ್ಮ ಶರತ್ತುಗಳನ್ನು ಪೂರೈಸುವ ಸಾಲುಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿರುವ ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ರಚಿಸುತ್ತದೆ.\n",
|
|
"\n",
|
|
"- `dplyr::mutate()`: ಕಾಲಮ್ಗಳನ್ನು ರಚಿಸಲು ಅಥವಾ ಬದಲಾಯಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n",
|
|
"\n",
|
|
"Allison Horst ರವರ [*ಕಲೆಯೊಂದಿಗೆ* ತುಂಬಿದ learnr ಟ್ಯುಟೋರಿಯಲ್](https://allisonhorst.shinyapps.io/dplyr-learnr/#section-welcome) ಅನ್ನು ನೋಡಿ, ಇದು dplyr *(Tidyverse ಭಾಗ)* ನಲ್ಲಿ ಕೆಲವು ಉಪಯುಕ್ತ ಡೇಟಾ ವ್ರ್ಯಾಂಗ್ಲಿಂಗ್ ಫಂಕ್ಷನ್ಗಳನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "K3RF5bSCHC76"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Creates a functions that returns the top ingredients by class\r\n",
|
|
"\r\n",
|
|
"create_ingredient <- function(df){\r\n",
|
|
" \r\n",
|
|
" # Drop the id column which is the first colum\r\n",
|
|
" ingredient_df = df %>% select(-1) %>% \r\n",
|
|
" # Transpose data to a long format\r\n",
|
|
" pivot_longer(!cuisine, names_to = \"ingredients\", values_to = \"count\") %>% \r\n",
|
|
" # Find the top most ingredients for a particular cuisine\r\n",
|
|
" group_by(ingredients) %>% \r\n",
|
|
" summarise(n_instances = sum(count)) %>% \r\n",
|
|
" filter(n_instances != 0) %>% \r\n",
|
|
" # Arrange by descending order\r\n",
|
|
" arrange(desc(n_instances)) %>% \r\n",
|
|
" mutate(ingredients = factor(ingredients) %>% fct_inorder())\r\n",
|
|
" \r\n",
|
|
" \r\n",
|
|
" return(ingredient_df)\r\n",
|
|
"} # End of function"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "uB_0JR82HTPa"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಈಗ ನಾವು ಈ ಫಂಕ್ಷನ್ ಅನ್ನು ಉಪಯೋಗಿಸಿ ಪ್ರತಿ ಆಹಾರ ಶೈಲಿಯಲ್ಲಿನ ಟಾಪ್ ಹತ್ತು ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಪದಾರ್ಥಗಳ ಬಗ್ಗೆ ಒಂದು ಕಲ್ಪನೆ ಪಡೆಯಬಹುದು. `thai_df` ಜೊತೆಗೆ ಇದನ್ನು ಪ್ರಯೋಗಿಸೋಣ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "h9794WF8HWmc"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Call create_ingredient and display popular ingredients\r\n",
|
|
"thai_ingredient_df <- create_ingredient(df = thai_df)\r\n",
|
|
"\r\n",
|
|
"thai_ingredient_df %>% \r\n",
|
|
" slice_head(n = 10)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "agQ-1HrcHaEA"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಹಿಂದಿನ ವಿಭಾಗದಲ್ಲಿ, ನಾವು `geom_col()` ಅನ್ನು ಬಳಸಿದ್ದೇವೆ, ಈಗ `geom_bar` ಅನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂದು ನೋಡೋಣ, ಬಾರ್ ಚಾರ್ಟ್ಗಳನ್ನು ರಚಿಸಲು. ಹೆಚ್ಚಿನ ಓದಿಗಾಗಿ `?geom_bar` ಅನ್ನು ಬಳಸಿ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "kHu9ffGjHdcX"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Make a bar chart for popular thai cuisines\r\n",
|
|
"thai_ingredient_df %>% \r\n",
|
|
" slice_head(n = 10) %>% \r\n",
|
|
" ggplot(aes(x = n_instances, y = ingredients)) +\r\n",
|
|
" geom_bar(stat = \"identity\", width = 0.5, fill = \"steelblue\") +\r\n",
|
|
" xlab(\"\") + ylab(\"\")"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "fb3Bx_3DHj6e"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ನಾವು ಜಪಾನೀಸ್ ಡೇಟಾದಿಗೂ ಅದೇ ರೀತಿಯಲ್ಲಿ ಮಾಡೋಣ\n"
|
|
],
|
|
"metadata": {
|
|
"id": "RHP_xgdkHnvM"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Get popular ingredients for Japanese cuisines and make bar chart\r\n",
|
|
"create_ingredient(df = japanese_df) %>% \r\n",
|
|
" slice_head(n = 10) %>%\r\n",
|
|
" ggplot(aes(x = n_instances, y = ingredients)) +\r\n",
|
|
" geom_bar(stat = \"identity\", width = 0.5, fill = \"darkorange\", alpha = 0.8) +\r\n",
|
|
" xlab(\"\") + ylab(\"\")\r\n"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "019v8F0XHrRU"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಚೈನೀಸ್ ಆಹಾರಗಳ ಬಗ್ಗೆ ಏನು?\n"
|
|
],
|
|
"metadata": {
|
|
"id": "iIGM7vO8Hu3v"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Get popular ingredients for Chinese cuisines and make bar chart\r\n",
|
|
"create_ingredient(df = chinese_df) %>% \r\n",
|
|
" slice_head(n = 10) %>%\r\n",
|
|
" ggplot(aes(x = n_instances, y = ingredients)) +\r\n",
|
|
" geom_bar(stat = \"identity\", width = 0.5, fill = \"cyan4\", alpha = 0.8) +\r\n",
|
|
" xlab(\"\") + ylab(\"\")"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "lHd9_gd2HyzU"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ನಾವು ಭಾರತೀಯ ಆಹಾರಗಳನ್ನು ನೋಡೋಣ 🌶️.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "ir8qyQbNH1c7"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Get popular ingredients for Indian cuisines and make bar chart\r\n",
|
|
"create_ingredient(df = indian_df) %>% \r\n",
|
|
" slice_head(n = 10) %>%\r\n",
|
|
" ggplot(aes(x = n_instances, y = ingredients)) +\r\n",
|
|
" geom_bar(stat = \"identity\", width = 0.5, fill = \"#041E42FF\", alpha = 0.8) +\r\n",
|
|
" xlab(\"\") + ylab(\"\")"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "ApukQtKjH5FO"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಕೊನೆಗೆ, ಕೊರಿಯನ್ ಪದಾರ್ಥಗಳನ್ನು ಚಿತ್ರಿಸಿ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "qv30cwY1H-FM"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Get popular ingredients for Korean cuisines and make bar chart\r\n",
|
|
"create_ingredient(df = korean_df) %>% \r\n",
|
|
" slice_head(n = 10) %>%\r\n",
|
|
" ggplot(aes(x = n_instances, y = ingredients)) +\r\n",
|
|
" geom_bar(stat = \"identity\", width = 0.5, fill = \"#852419FF\", alpha = 0.8) +\r\n",
|
|
" xlab(\"\") + ylab(\"\")"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "lumgk9cHIBie"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಡೇಟಾ ದೃಶ್ಯೀಕರಣಗಳಿಂದ, ನಾವು ಈಗ ವಿಭಿನ್ನ ಆಹಾರ ಶೈಲಿಗಳ ನಡುವೆ ಗೊಂದಲವನ್ನು ಉಂಟುಮಾಡುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಪದಾರ್ಥಗಳನ್ನು `dplyr::select()` ಬಳಸಿ ತೆಗೆದುಹಾಕಬಹುದು.\n",
|
|
"\n",
|
|
"ಎಲ್ಲರೂ ಅಕ್ಕಿ, ಬೆಳ್ಳುಳ್ಳಿ ಮತ್ತು ಶುಂಠಿ ಅನ್ನು ಪ್ರೀತಿಸುತ್ತಾರೆ!\n"
|
|
],
|
|
"metadata": {
|
|
"id": "iO4veMXuIEta"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Drop id column, rice, garlic and ginger from our original data set\r\n",
|
|
"df_select <- df %>% \r\n",
|
|
" select(-c(1, rice, garlic, ginger))\r\n",
|
|
"\r\n",
|
|
"# Display new data set\r\n",
|
|
"df_select %>% \r\n",
|
|
" slice_head(n = 5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "iHJPiG6rIUcK"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## ರೆಸಿಪಿಗಳನ್ನು ಬಳಸಿ ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆ 👩🍳👨🍳 - ಅಸಮತೋಲನ ಡೇಟಾ ನಿರ್ವಹಣೆ ⚖️\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/kn/recipes.186acfa8ed2e8f00.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>ಕಲಾಕೃತಿ @allison_horst ಅವರಿಂದ</figcaption>\n",
|
|
"\n",
|
|
"ಈ ಪಾಠವು ಆಹಾರವರ್ಗಗಳ ಬಗ್ಗೆ ಇರುವುದರಿಂದ, ನಾವು `recipes` ಅನ್ನು ಸಂದರ್ಭದಲ್ಲಿ ಇರಿಸಬೇಕಾಗಿದೆ.\n",
|
|
"\n",
|
|
"Tidymodels ಇನ್ನೊಂದು ಚೆನ್ನಾದ ಪ್ಯಾಕೇಜ್ ಒದಗಿಸುತ್ತದೆ: `recipes` - ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆಗಾಗಿ ಪ್ಯಾಕೇಜ್.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "kkFd-JxdIaL6"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ನಮ್ಮ ಆಹಾರವರ್ಗಗಳ ವಿತರಣೆ ಮತ್ತೊಮ್ಮೆ ನೋಡೋಣ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "6l2ubtTPJAhY"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Distribution of cuisines\r\n",
|
|
"old_label_count <- df_select %>% \r\n",
|
|
" count(cuisine) %>% \r\n",
|
|
" arrange(desc(n))\r\n",
|
|
"\r\n",
|
|
"old_label_count"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "1e-E9cb7JDVi"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ನೀವು ನೋಡಬಹುದು, ಆಹಾರದ ಪ್ರಕಾರಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಬಹಳ ಅಸಮಾನ ವಿತರಣೆಯಿದೆ. ಕೊರಿಯನ್ ಆಹಾರಗಳು ತಾಯ್ ಆಹಾರಗಳಿಗಿಂತ ಸುಮಾರು 3 ಪಟ್ಟು ಹೆಚ್ಚು. ಅಸಮತೋಲನದ ಡೇಟಾ ಸಾಮಾನ್ಯವಾಗಿ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ದ್ವಿಪದ ವರ್ಗೀಕರಣವನ್ನು ಯೋಚಿಸಿ. ನಿಮ್ಮ ಡೇಟಾದ ಬಹುಮತವು ಒಂದು ವರ್ಗವಾಗಿದ್ದರೆ, ಒಂದು ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿ ಆ ವರ್ಗವನ್ನು ಹೆಚ್ಚು ಬಾರಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಅದಕ್ಕೆ ಹೆಚ್ಚು ಡೇಟಾ ಇದೆ. ಡೇಟಾವನ್ನು ಸಮತೋಲನಗೊಳಿಸುವುದು ಯಾವುದೇ ತಿರುವು ಹೊಂದಿದ ಡೇಟಾವನ್ನು ತೆಗೆದು ಈ ಅಸಮತೋಲನವನ್ನು ತೆಗೆದುಹಾಕಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಬಹುತೆಕ ಮಾದರಿಗಳು ಗಮನಗಳ ಸಂಖ್ಯೆ ಸಮಾನವಾಗಿದ್ದಾಗ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಆದ್ದರಿಂದ ಅಸಮತೋಲನ ಡೇಟಾದೊಂದಿಗೆ ಹೋರಾಡುತ್ತವೆ.\n",
|
|
"\n",
|
|
"ಅಸಮತೋಲನ ಡೇಟಾ ಸೆಟ್ಗಳನ್ನು ನಿಭಾಯಿಸುವ ಪ್ರಮುಖ ಎರಡು ವಿಧಾನಗಳಿವೆ:\n",
|
|
"\n",
|
|
"- ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗಕ್ಕೆ ಗಮನಗಳನ್ನು ಸೇರಿಸುವುದು: `ಓವರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್` ಉದಾಹರಣೆಗೆ SMOTE ಆಲ್ಗಾರಿದಮ್ ಬಳಸಿ\n",
|
|
"\n",
|
|
"- ಬಹುಮತ ವರ್ಗದಿಂದ ಗಮನಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು: `ಅಂಡರ್-ಸ್ಯಾಂಪ್ಲಿಂಗ್`\n",
|
|
"\n",
|
|
"ಇದೀಗ ನಾವು `recipe` ಬಳಸಿ ಅಸಮತೋಲನ ಡೇಟಾ ಸೆಟ್ಗಳನ್ನು ಹೇಗೆ ನಿಭಾಯಿಸುವುದನ್ನು ಪ್ರದರ್ಶಿಸೋಣ. ಒಂದು recipe ಅನ್ನು ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಗೆ ಸಿದ್ಧಗೊಳಿಸಲು ಡೇಟಾ ಸೆಟ್ಗೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ವಿವರಿಸುವ ಬ್ಲೂಪ್ರಿಂಟ್ ಎಂದು ಪರಿಗಣಿಸಬಹುದು.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "soAw6826JKx9"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Load themis package for dealing with imbalanced data\r\n",
|
|
"library(themis)\r\n",
|
|
"\r\n",
|
|
"# Create a recipe for preprocessing data\r\n",
|
|
"cuisines_recipe <- recipe(cuisine ~ ., data = df_select) %>% \r\n",
|
|
" step_smote(cuisine)\r\n",
|
|
"\r\n",
|
|
"cuisines_recipe"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "HS41brUIJVJy"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ನಮ್ಮ ಪೂರ್ವಸಿದ್ಧತಾ ಹಂತಗಳನ್ನು ವಿಭಜಿಸೋಣ.\n",
|
|
"\n",
|
|
"- ಸೂತ್ರದೊಂದಿಗೆ `recipe()` ಗೆ ಕರೆ ಮಾಡುವುದರಿಂದ `df_select` ಡೇಟಾವನ್ನು ಉಲ್ಲೇಖವಾಗಿ ಬಳಸಿಕೊಂಡು ಚರಗಳ *ಪಾತ್ರಗಳನ್ನು* ರೆಸಿಪಿಗೆ ತಿಳಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ `cuisine` ಕಾಲಮ್ಗೆ `outcome` ಪಾತ್ರವನ್ನು ನೀಡಲಾಗಿದೆ, ಉಳಿದ ಕಾಲಮ್ಗಳಿಗೆ `predictor` ಪಾತ್ರವನ್ನು ನೀಡಲಾಗಿದೆ.\n",
|
|
"\n",
|
|
"- [`step_smote(cuisine)`](https://themis.tidymodels.org/reference/step_smote.html) ಅಲ್ಪಸಂಖ್ಯಾತ ವರ್ಗದ ಹೊಸ ಉದಾಹರಣೆಗಳನ್ನು ಸಮೀಪದ ನೆರೆಹೊರೆಯವರನ್ನು ಬಳಸಿ ಸೃಷ್ಟಿಸುವ ರೆಸಿಪಿ ಹಂತದ *ವಿವರಣೆ* ರಚಿಸುತ್ತದೆ.\n",
|
|
"\n",
|
|
"ಈಗ, ನಾವು ಪೂರ್ವಸಿದ್ಧ ಡೇಟಾವನ್ನು ನೋಡಲು ಬಯಸಿದರೆ, ನಾವು [**`prep()`**](https://recipes.tidymodels.org/reference/prep.html) ಮತ್ತು [**`bake()`**](https://recipes.tidymodels.org/reference/bake.html) ನಮ್ಮ ರೆಸಿಪಿಯನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ.\n",
|
|
"\n",
|
|
"`prep()`: ತರಬೇತಿ ಸೆಟ್ನಿಂದ ಅಗತ್ಯವಾದ ಪರಿಮಾಣಗಳನ್ನು ಅಂದಾಜು ಮಾಡುತ್ತದೆ, ಅವುಗಳನ್ನು ನಂತರ ಇತರ ಡೇಟಾ ಸೆಟ್ಗಳಿಗೆ ಅನ್ವಯಿಸಬಹುದು.\n",
|
|
"\n",
|
|
"`bake()`: ಪೂರ್ವಸಿದ್ಧ ರೆಸಿಪಿಯನ್ನು ತೆಗೆದುಕೊಂಡು ಯಾವುದೇ ಡೇಟಾ ಸೆಟ್ಗೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "Yb-7t7XcJaC8"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Prep and bake the recipe\r\n",
|
|
"preprocessed_df <- cuisines_recipe %>% \r\n",
|
|
" prep() %>% \r\n",
|
|
" bake(new_data = NULL) %>% \r\n",
|
|
" relocate(cuisine)\r\n",
|
|
"\r\n",
|
|
"# Display data\r\n",
|
|
"preprocessed_df %>% \r\n",
|
|
" slice_head(n = 5)\r\n",
|
|
"\r\n",
|
|
"# Quick summary stats\r\n",
|
|
"preprocessed_df %>% \r\n",
|
|
" introduce()"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "9QhSgdpxJl44"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ನಾವು ಈಗ ನಮ್ಮ ಆಹಾರವರ್ಗಗಳ ವಿತರಣೆಯನ್ನು ಪರಿಶೀಲಿಸಿ ಅವುಗಳನ್ನು ಅಸಮತೋಲನ ಡೇಟಾದೊಂದಿಗೆ ಹೋಲಿಸೋಣ.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "dmidELh_LdV7"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Distribution of cuisines\r\n",
|
|
"new_label_count <- preprocessed_df %>% \r\n",
|
|
" count(cuisine) %>% \r\n",
|
|
" arrange(desc(n))\r\n",
|
|
"\r\n",
|
|
"list(new_label_count = new_label_count,\r\n",
|
|
" old_label_count = old_label_count)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "aSh23klBLwDz"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಯಮ್! ಡೇಟಾ ಚೆನ್ನಾಗಿದ್ದು, ಸಮತೋಲನದಲ್ಲಿದ್ದು, ತುಂಬಾ ರುಚಿಕರವಾಗಿದೆ 😋!\n",
|
|
"\n",
|
|
"> ಸಾಮಾನ್ಯವಾಗಿ, ಒಂದು ರೆಸಿಪಿ ಅನ್ನು ಮಾದರೀಕರಣಕ್ಕಾಗಿ ಪ್ರೀಪ್ರೊಸೆಸರ್ ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ಅದು ಡೇಟಾ ಸೆಟ್ ಮೇಲೆ ಯಾವ ಹಂತಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕು ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ, ಇದರಿಂದ ಅದು ಮಾದರೀಕರಣಕ್ಕೆ ಸಿದ್ಧವಾಗುತ್ತದೆ. ಆ ಸಂದರ್ಭದಲ್ಲಿ, `workflow()` ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ (ನಾವು ಹಿಂದಿನ ಪಾಠಗಳಲ್ಲಿ ಈಗಾಗಲೇ ನೋಡಿದ್ದಂತೆ) ಕೈಯಿಂದ ರೆಸಿಪಿಯನ್ನು ಅಂದಾಜಿಸುವ ಬದಲು\n",
|
|
">\n",
|
|
"> ಆದ್ದರಿಂದ, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ tidymodels ಬಳಸುವಾಗ **`prep()`** ಮತ್ತು **`bake()`** ರೆಸಿಪಿಗಳನ್ನು ಬಳಸಬೇಕಾಗಿಲ್ಲ, ಆದರೆ ಅವು ನಿಮ್ಮ ಉಪಕರಣಸಂಚಯದಲ್ಲಿ ಸಹಾಯಕ ಕಾರ್ಯಗಳಾಗಿವೆ, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ರೆಸಿಪಿಗಳು ನೀವು ನಿರೀಕ್ಷಿಸುವಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವುದನ್ನು ದೃಢೀಕರಿಸಲು.\n",
|
|
">\n",
|
|
"> ನೀವು **`bake()`** ಮಾಡಿದಾಗ, **`new_data = NULL`** ಇರುವ ಪ್ರಿಪ್ ಮಾಡಿದ ರೆಸಿಪಿ, ನೀವು ರೆಸಿಪಿ ನಿರ್ಧರಿಸುವಾಗ ನೀಡಿದ ಡೇಟಾವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಆದರೆ ಪ್ರೀಪ್ರೊಸೆಸಿಂಗ್ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿಕೊಂಡು.\n",
|
|
"\n",
|
|
"ಈ ಡೇಟಾದ ಪ್ರತಿಯನ್ನು ಭವಿಷ್ಯದ ಪಾಠಗಳಲ್ಲಿ ಬಳಸಲು ಈಗ ಉಳಿಸೋಣ:\n"
|
|
],
|
|
"metadata": {
|
|
"id": "HEu80HZ8L7ae"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Save preprocessed data\r\n",
|
|
"write_csv(preprocessed_df, \"../../../data/cleaned_cuisines_R.csv\")"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "cBmCbIgrMOI6"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ಈ ಹೊಸ CSV ಈಗ ರೂಟ್ ಡೇಟಾ ಫೋಲ್ಡರ್ನಲ್ಲಿ ಕಂಡುಬರುತ್ತದೆ.\n",
|
|
"\n",
|
|
"**🚀ಸವಾಲು**\n",
|
|
"\n",
|
|
"ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಹಲವಾರು ಆಸಕ್ತಿದಾಯಕ ಡೇಟಾಸೆಟ್ಗಳಿವೆ. `data` ಫೋಲ್ಡರ್ಗಳನ್ನು ತೋಡಿಸಿ ಮತ್ತು ಯಾವುದೇ ಡೇಟಾಸೆಟ್ಗಳು ಬೈನರಿ ಅಥವಾ ಬಹು-ವರ್ಗ ವರ್ಗೀಕರಣಕ್ಕೆ ಸೂಕ್ತವಾಗಿದೆಯೇ ಎಂದು ನೋಡಿ? ಈ ಡೇಟಾಸೆಟ್ನಿಂದ ನೀವು ಯಾವ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳುತ್ತೀರಿ?\n",
|
|
"\n",
|
|
"## [**ಪಾಠದ ನಂತರದ ಕ್ವಿಜ್**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)\n",
|
|
"\n",
|
|
"## **ಪುನರಾವೃತ್ತಿ & ಸ್ವಯಂ ಅಧ್ಯಯನ**\n",
|
|
"\n",
|
|
"- [package themis](https://github.com/tidymodels/themis) ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ಅಸಮತೋಲನ ಡೇಟಾ ನಿರ್ವಹಿಸಲು ನಾವು ಇನ್ನಾವುದೇ ತಂತ್ರಗಳನ್ನು ಬಳಸಬಹುದು?\n",
|
|
"\n",
|
|
"- ಟಿಡಿ ಮಾದರಿಗಳು [ಉಲ್ಲೇಖ ವೆಬ್ಸೈಟ್](https://www.tidymodels.org/start/).\n",
|
|
"\n",
|
|
"- H. ವಿಕ್ಹ್ಯಾಮ್ ಮತ್ತು G. ಗ್ರೋಲೆಮಂಡ್, [*R for Data Science: Visualize, Model, Transform, Tidy, and Import Data*](https://r4ds.had.co.nz/).\n",
|
|
"\n",
|
|
"#### ಧನ್ಯವಾದಗಳು:\n",
|
|
"\n",
|
|
"[`Allison Horst`](https://twitter.com/allison_horst/) ಅವರಿಗೆ R ಅನ್ನು ಹೆಚ್ಚು ಆತಿಥ್ಯಪೂರ್ಣ ಮತ್ತು ಆಕರ್ಷಕವಾಗಿಸುವ ಅದ್ಭುತ ಚಿತ್ರಣಗಳನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ. ಅವಳ [ಗ್ಯಾಲರಿ](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM) ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಚಿತ್ರಣಗಳನ್ನು ಕಂಡುಹಿಡಿಯಿರಿ.\n",
|
|
"\n",
|
|
"[Cassie Breviu](https://www.twitter.com/cassieview) ಮತ್ತು [Jen Looper](https://www.twitter.com/jenlooper) ಅವರಿಗೆ ಈ ಮಾಯಾಜಾಲದ ಮೂಲ Python ಆವೃತ್ತಿಯನ್ನು ಸೃಷ್ಟಿಸಿದಕ್ಕಾಗಿ ♥️\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/kn/r_learners_sm.cd14eb3581a9f28d.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>ಕಲಾಕೃತಿ @allison_horst ಅವರಿಂದ</figcaption>\n"
|
|
],
|
|
"metadata": {
|
|
"id": "WQs5621pMGwf"
|
|
}
|
|
},
|
|
{
|
|
"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"
|
|
]
|
|
}
|
|
]
|
|
} |