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
47 KiB
731 lines
47 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:07:27+00:00",
|
|
"source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb",
|
|
"language_code": "ml"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# ഒരു വർഗ്ഗീകരണ മോഡൽ നിർമ്മിക്കുക: രുചികരമായ ഏഷ്യൻ மற்றும் ഇന്ത്യൻ ഭക്ഷണങ്ങൾ\n"
|
|
],
|
|
"metadata": {
|
|
"id": "ItETB4tSFprR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## ക്ലാസിഫിക്കേഷനിലേക്ക് പരിചയം: നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുക, തയ്യാറാക്കുക, ദൃശ്യവത്കരിക്കുക\n",
|
|
"\n",
|
|
"ഈ നാല് പാഠങ്ങളിൽ, നിങ്ങൾ ക്ലാസിക് മെഷീൻ ലേണിങ്ങിന്റെ ഒരു അടിസ്ഥാന ശ്രദ്ധാകേന്ദ്രമായ *ക്ലാസിഫിക്കേഷൻ* അന്വേഷിക്കും. ഏഷ്യയും ഇന്ത്യയും ഉൾപ്പെടുന്ന എല്ലാ പ്രശസ്തമായ പാചകശാലകളെക്കുറിച്ചുള്ള ഒരു ഡാറ്റാസെറ്റുമായി വിവിധ ക്ലാസിഫിക്കേഷൻ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് നാം നടക്കും. നിങ്ങൾക്ക് വിശക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു!\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/ml/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/ml/binary-multiclass.b56d0c86c81105a6.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>ക്ലാസിഫിക്കേഷൻ ആൽഗോരിതങ്ങൾ കൈകാര്യം ചെയ്യേണ്ട ബൈനറി vs. മൾട്ടിക്ലാസ് പ്രശ്നങ്ങൾ. ഇൻഫോഗ്രാഫിക്: ജെൻ ലൂപ്പർ</figcaption>\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"ഡാറ്റ ശുദ്ധീകരണം, ദൃശ്യവത്കരണം, ML പ്രവർത്തനങ്ങൾക്ക് തയ്യാറാക്കൽ തുടങ്ങിയ പ്രക്രിയ ആരംഭിക്കുന്നതിന് മുമ്പ്, മെഷീൻ ലേണിങ്ങ് ഡാറ്റ ക്ലാസിഫൈ ചെയ്യാൻ ഉപയോഗിക്കാവുന്ന വിവിധ മാർഗങ്ങൾ കുറച്ച് പഠിക്കാം.\n",
|
|
"\n",
|
|
"[സ്റ്റാറ്റിസ്റ്റിക്സിൽ നിന്നുള്ള](https://wikipedia.org/wiki/Statistical_classification) പ്രചോദനം ലഭിച്ച ക്ലാസിഫിക്കേഷൻ, ക്ലാസിക് മെഷീൻ ലേണിങ്ങ് ഉപയോഗിച്ച് `smoker`, `weight`, `age` പോലുള്ള ഫീച്ചറുകൾ ഉപയോഗിച്ച് *X രോഗം ഉണ്ടാകാനുള്ള സാധ്യത* നിർണയിക്കുന്നു. നിങ്ങൾ മുമ്പ് ചെയ്ത റെഗ്രഷൻ അഭ്യാസങ്ങളോട് സമാനമായ ഒരു സൂപ്പർവൈസ്ഡ് ലേണിങ്ങ് സാങ്കേതികവിദ്യയായി, നിങ്ങളുടെ ഡാറ്റ ലേബൽ ചെയ്തിരിക്കുന്നു, ML ആൽഗോരിതങ്ങൾ ആ ലേബലുകൾ ഉപയോഗിച്ച് ഡാറ്റാസെറ്റിന്റെ ക്ലാസുകൾ (അഥവാ 'ഫീച്ചറുകൾ') ക്ലാസിഫൈ ചെയ്ത് ഒരു ഗ്രൂപ്പിലോ ഫലത്തിലോ നിയോഗിക്കുന്നു.\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`: [DataExplorer പാക്കേജ്](https://cran.r-project.org/web/packages/DataExplorer/vignettes/dataexplorer-intro.html) EDA പ്രക്രിയയും റിപ്പോർട്ട് സൃഷ്ടിയും ലളിതമാക്കാനും ഓട്ടോമേറ്റുചെയ്യാനുമുള്ളതാണ്.\n",
|
|
"\n",
|
|
"- `themis`: [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": [
|
|
"## Exercise - നിങ്ങളുടെ ഡാറ്റ ശുദ്ധീകരിക്കുകയും സമതുല്യപ്പെടുത്തുകയും ചെയ്യുക\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",
|
|
"## Exercise - learning about cuisines\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/ml/dplyr_filter.b480b264b03439ff.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>Artwork by @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()` and `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": [
|
|
"## Preprocessing data using recipes 👩🍳👨🍳 - Dealing with imbalanced data ⚖️\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/ml/recipes.186acfa8ed2e8f00.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>Artwork by @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 മടങ്ങ് കൂടുതലാണ്. അസമത്വമുള്ള ഡാറ്റ മോഡൽ പ്രകടനത്തിൽ നെഗറ്റീവ് ഫലങ്ങൾ ഉണ്ടാക്കാറുണ്ട്. ഒരു ബൈനറി ക്ലാസിഫിക്കേഷൻ പരിഗണിക്കൂ. നിങ്ങളുടെ ഡാറ്റയുടെ ഭൂരിഭാഗവും ഒരു ക്ലാസ്സിൽ ആണെങ്കിൽ, ഒരു ML മോഡൽ ആ ക്ലാസ്സ് കൂടുതൽ പ്രവചിക്കും, കാരണം അതിനുള്ള ഡാറ്റ കൂടുതലാണ്. ഡാറ്റ ബാലൻസ് ചെയ്യുന്നത് ഏതെങ്കിലും വക്രമായ ഡാറ്റ എടുത്ത് ഈ അസമത്വം നീക്കം ചെയ്യാൻ സഹായിക്കുന്നു. നിരീക്ഷണങ്ങളുടെ എണ്ണം സമമാണ് എങ്കിൽ പല മോഡലുകളും മികച്ച പ്രകടനം കാണിക്കുന്നു, അതിനാൽ അസമത്വമുള്ള ഡാറ്റയുമായി അവർ ബുദ്ധിമുട്ടുന്നു.\n",
|
|
"\n",
|
|
"അസമത്വമുള്ള ഡാറ്റ സെറ്റുകളെ കൈകാര്യം ചെയ്യാനുള്ള പ്രധാനമായ രണ്ട് മാർഗ്ഗങ്ങൾ ഉണ്ട്:\n",
|
|
"\n",
|
|
"- ന്യൂനപക്ഷ ക്ലാസ്സിൽ നിരീക്ഷണങ്ങൾ ചേർക്കൽ: `Over-sampling` ഉദാഹരണത്തിന് SMOTE ആൽഗോരിതം ഉപയോഗിച്ച്\n",
|
|
"\n",
|
|
"- ഭൂരിപക്ഷ ക്ലാസ്സിൽ നിന്നുള്ള നിരീക്ഷണങ്ങൾ നീക്കം ചെയ്യൽ: `Under-sampling`\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. Wickham and G. Grolemund, [*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) and [Jen Looper](https://www.twitter.com/jenlooper) ഈ മോഡ്യൂളിന്റെ ഒറിജിനൽ പൈതൺ പതിപ്പ് സൃഷ്ടിച്ചതിന് ♥️\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/ml/r_learners_sm.cd14eb3581a9f28d.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>Artwork by @allison_horst</figcaption>\n"
|
|
],
|
|
"metadata": {
|
|
"id": "WQs5621pMGwf"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
|
|
]
|
|
}
|
|
]
|
|
} |