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.
732 lines
44 KiB
732 lines
44 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:05:54+00:00",
|
|
"source_file": "4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb",
|
|
"language_code": "te"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# వర్గీకరణ మోడల్ నిర్మించండి: రుచికరమైన ఆసియన్లు మరియు భారతీయ వంటకాలు\n"
|
|
],
|
|
"metadata": {
|
|
"id": "ItETB4tSFprR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## వర్గీకరణకు పరిచయం: మీ డేటాను శుభ్రపరచండి, సిద్ధం చేయండి, మరియు దృశ్యీకరించండి\n",
|
|
"\n",
|
|
"ఈ నాలుగు పాఠాలలో, మీరు క్లాసిక్ మెషీన్ లెర్నింగ్ యొక్క ఒక ప్రాథమిక దృష్టిని అన్వేషించబోతున్నారు - *వర్గీకరణ*. ఆసియా మరియు భారతదేశంలోని అన్ని అద్భుతమైన వంటకాల గురించి ఒక డేటాసెట్తో వివిధ వర్గీకరణ అల్గోరిథమ్స్ ఉపయోగించడం ద్వారా మనం నడవబోతున్నాము. మీరు ఆకలిగా ఉన్నారని ఆశిస్తున్నాము!\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/te/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/te/binary-multiclass.b56d0c86c81105a6.webp\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>వర్గీకరణ అల్గోరిథమ్స్ నిర్వహించాల్సిన బైనరీ మరియు బహుళ వర్గ సమస్యలు. ఇన్ఫోగ్రాఫిక్ జెన్ లూపర్ ద్వారా</figcaption>\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"మా డేటాను శుభ్రపరచడం, దృశ్యీకరించడం మరియు మా ML పనుల కోసం సిద్ధం చేయడం ప్రారంభించే ముందు, మెషీన్ లెర్నింగ్ డేటాను వర్గీకరించడానికి ఉపయోగించగల వివిధ మార్గాల గురించి కొంత తెలుసుకుందాం.\n",
|
|
"\n",
|
|
"[సంఖ్యాశాస్త్రం](https://wikipedia.org/wiki/Statistical_classification) నుండి ఉద్భవించిన, క్లాసిక్ మెషీన్ లెర్నింగ్ ఉపయోగించి వర్గీకరణ `స్మోకర్`, `బరువు`, మరియు `వయస్సు` వంటి లక్షణాలను ఉపయోగించి *X వ్యాధి అభివృద్ధి చెందే అవకాశాన్ని* నిర్ణయిస్తుంది. మీరు ముందుగా చేసిన రిగ్రెషన్ వ్యాయామాలకు సమానమైన సూపర్వైజ్డ్ లెర్నింగ్ సాంకేతికతగా, మీ డేటాకు లేబుల్స్ ఉంటాయి మరియు ML అల్గోరిథమ్స్ ఆ లేబుల్స్ను ఉపయోగించి డేటాసెట్ యొక్క వర్గాలు (లేదా 'లక్షణాలు')ను వర్గీకరించి, వాటిని ఒక గుంపు లేదా ఫలితానికి కేటాయిస్తాయి.\n",
|
|
"\n",
|
|
"✅ వంటకాల గురించి ఒక డేటాసెట్ను ఊహించండి. బహుళ వర్గ మోడల్ ఏమి సమాధానం చెప్పగలదు? బైనరీ మోడల్ ఏమి సమాధానం చెప్పగలదు? మీరు ఒక వంటకం మెంతులు ఉపయోగించే అవకాశం ఉందా అని నిర్ణయించాలనుకుంటే? మీరు ఒక గ్రోసరీ బ్యాగ్లో స్టార్ అనీస్, ఆర్టిచోక్స్, కాలీఫ్లవర్, మరియు హోర్సరాడిష్ ఉన్నప్పుడు, మీరు ఒక సాధారణ భారతీయ వంటకం తయారు చేయగలరా అని చూడాలనుకుంటే?\n",
|
|
"\n",
|
|
"### **హలో 'వర్గీకర్త'**\n",
|
|
"\n",
|
|
"ఈ వంటకాల డేటాసెట్ నుండి అడగదలచిన ప్రశ్న వాస్తవానికి ఒక **బహుళ వర్గ ప్రశ్న**నే, ఎందుకంటే మనకు అనేక జాతీయ వంటకాలు ఉన్నాయి. పదార్థాల ఒక బ్యాచ్ ఇచ్చినప్పుడు, ఈ అనేక వర్గాలలో ఏది డేటాకు సరిపోతుంది?\n",
|
|
"\n",
|
|
"Tidymodels వివిధ సమస్యలను పరిష్కరించడానికి ఉపయోగించగల అనేక అల్గోరిథమ్స్ను అందిస్తుంది. తదుపరి రెండు పాఠాలలో, మీరు ఈ అల్గోరిథమ్స్ గురించి తెలుసుకుంటారు.\n",
|
|
"\n",
|
|
"#### **ముందస్తు అవసరం**\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",
|
|
"- `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": [
|
|
"## వ్యాయామం - మీ డేటాను శుభ్రం చేసి సమతుల్యం చేయండి\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": [
|
|
"ఫలితంలోనుంచి, మనకు తక్షణమే కనిపిస్తుంది మన దగ్గర `2448` వరుసలు మరియు `385` కాలమ్స్ మరియు `0` మిస్సింగ్ విలువలు ఉన్నాయి. మన దగ్గర 1 డిస్క్రీట్ కాలమ్ కూడా ఉంది, *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/te/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/te/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": [
|
|
"\n",
|
|
"మీరు చూడగలిగినట్లుగా, వంటకాల సంఖ్యలో చాలా అసమానమైన పంపిణీ ఉంది. కొరియన్ వంటకాలు థాయ్ వంటకాల కంటే సుమారు 3 రెట్లు ఎక్కువ ఉన్నాయి. అసమతుల్య డేటా తరచుగా మోడల్ పనితీరుపై ప్రతికూల ప్రభావాలు చూపుతుంది. ఒక ద్విభాగ వర్గీకరణను ఆలోచించండి. మీ డేటా ఎక్కువ భాగం ఒక వర్గం అయితే, ఒక ML మోడల్ ఆ వర్గాన్ని ఎక్కువగా అంచనా వేయడానికి ప్రయత్నిస్తుంది, ఎందుకంటే ఆ వర్గానికి ఎక్కువ డేటా ఉంటుంది. డేటాను సమతుల్యం చేయడం అనేది ఏదైనా వక్రీకృత డేటాను తీసుకుని ఈ అసమతుల్యతను తొలగించడంలో సహాయపడుతుంది. చాలా మోడల్స్ గమనికల సంఖ్య సమానంగా ఉన్నప్పుడు ఉత్తమంగా పనిచేస్తాయి, అందువల్ల అసమతుల్య డేటాతో పోరాడుతాయి.\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",
|
|
"- Tidy మోడల్స్ [సూచన వెబ్సైట్](https://www.tidymodels.org/start/).\n",
|
|
"\n",
|
|
"- H. Wickham మరియు 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) మరియు [Jen Looper](https://www.twitter.com/jenlooper) కు ఈ మాడ్యూల్ యొక్క అసలు Python సంస్కరణను సృష్టించినందుకు ♥️\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../../../../../translated_images/te/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"
|
|
]
|
|
}
|
|
]
|
|
} |