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.
668 lines
38 KiB
668 lines
38 KiB
{
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2,
|
|
"metadata": {
|
|
"colab": {
|
|
"name": "lesson_2-R.ipynb",
|
|
"provenance": [],
|
|
"collapsed_sections": [],
|
|
"toc_visible": true
|
|
},
|
|
"kernelspec": {
|
|
"name": "ir",
|
|
"display_name": "R"
|
|
},
|
|
"language_info": {
|
|
"name": "R"
|
|
},
|
|
"coopTranslator": {
|
|
"original_hash": "f3c335f9940cfd76528b3ef918b9b342",
|
|
"translation_date": "2025-08-29T19:04:28+00:00",
|
|
"source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb",
|
|
"language_code": "mr"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# पुनरावृत्ती मॉडेल तयार करा: डेटा तयार करा आणि दृश्यात्मक करा\n",
|
|
"\n",
|
|
"## **पंपकिन्ससाठी रेषीय पुनरावृत्ती - धडा 2**\n",
|
|
"#### परिचय\n",
|
|
"\n",
|
|
"आता तुम्ही Tidymodels आणि Tidyverse च्या मदतीने मशीन लर्निंग मॉडेल तयार करण्यासाठी आवश्यक साधनांमध्ये प्रवीण झाला आहात, त्यामुळे तुम्ही तुमच्या डेटावर प्रश्न विचारायला तयार आहात. डेटा हाताळताना आणि मशीन लर्निंग उपाय लागू करताना, योग्य प्रश्न विचारणे खूप महत्त्वाचे आहे, जेणेकरून तुमच्या डेटासेटची क्षमता योग्य प्रकारे उलगडता येईल.\n",
|
|
"\n",
|
|
"या धड्यात, तुम्ही शिकाल:\n",
|
|
"\n",
|
|
"- तुमच्या डेटाला मॉडेल तयार करण्यासाठी कसे तयार करायचे.\n",
|
|
"\n",
|
|
"- डेटा दृश्यात्मकतेसाठी `ggplot2` कसे वापरायचे.\n",
|
|
"\n",
|
|
"तुम्हाला उत्तर हवे असलेला प्रश्न ठरवेल की तुम्ही कोणत्या प्रकारचे मशीन लर्निंग अल्गोरिदम वापरणार आहात. आणि तुम्हाला मिळणाऱ्या उत्तराची गुणवत्ता तुमच्या डेटाच्या स्वरूपावर मोठ्या प्रमाणात अवलंबून असेल.\n",
|
|
"\n",
|
|
"चला, हे एका व्यावहारिक उदाहरणाद्वारे पाहूया.\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../images/unruly_data.jpg\"\n",
|
|
" width=\"700\"/>\n",
|
|
" <figcaption>@allison_horst यांचे कलाकृती</figcaption>\n",
|
|
"\n",
|
|
"\n",
|
|
"<!--<br>@allison_horst यांचे कलाकृती-->\n"
|
|
],
|
|
"metadata": {
|
|
"id": "Pg5aexcOPqAZ"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 1. भोपळ्यांचा डेटा आयात करणे आणि Tidyverse वापरणे\n",
|
|
"\n",
|
|
"या धड्याला व्यवस्थित समजून घेण्यासाठी आपल्याला खालील पॅकेजेसची आवश्यकता असेल:\n",
|
|
"\n",
|
|
"- `tidyverse`: [tidyverse](https://www.tidyverse.org/) हा [R पॅकेजेसचा संग्रह](https://www.tidyverse.org/packages) आहे, जो डेटा सायन्स अधिक वेगवान, सोपा आणि मजेदार बनवण्यासाठी डिझाइन केला आहे!\n",
|
|
"\n",
|
|
"आपण हे पॅकेजेस खालीलप्रमाणे इन्स्टॉल करू शकता:\n",
|
|
"\n",
|
|
"`install.packages(c(\"tidyverse\"))`\n",
|
|
"\n",
|
|
"खालील स्क्रिप्ट तपासते की या मॉड्यूलसाठी आवश्यक पॅकेजेस तुमच्याकडे आहेत का आणि जर काही पॅकेजेस गायब असतील तर ती तुमच्यासाठी इन्स्टॉल करते.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "dc5WhyVdXAjR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n",
|
|
"pacman::p_load(tidyverse)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "GqPYUZgfXOBt"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"आता, काही पॅकेजेस सुरू करूया आणि या धड्यासाठी दिलेला [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) लोड करूया!\n"
|
|
],
|
|
"metadata": {
|
|
"id": "kvjDTPDSXRr2"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Load the core Tidyverse packages\n",
|
|
"library(tidyverse)\n",
|
|
"\n",
|
|
"# Import the pumpkins data\n",
|
|
"pumpkins <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/2-Regression/data/US-pumpkins.csv\")\n",
|
|
"\n",
|
|
"\n",
|
|
"# Get a glimpse and dimensions of the data\n",
|
|
"glimpse(pumpkins)\n",
|
|
"\n",
|
|
"\n",
|
|
"# Print the first 50 rows of the data set\n",
|
|
"pumpkins %>% \n",
|
|
" slice_head(n =50)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "VMri-t2zXqgD"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"`glimpse()` वापरल्यावर लगेच लक्षात येते की डेटा मध्ये रिक्त जागा आहेत आणि स्ट्रिंग्स (`chr`) आणि संख्यात्मक डेटा (`dbl`) यांचा मिश्रण आहे. `Date` हा प्रकार कॅरेक्टर आहे आणि एक विचित्र कॉलम `Package` नावाचा आहे जिथे डेटा `sacks`, `bins` आणि इतर मूल्यांचे मिश्रण आहे. खरं तर, हा डेटा थोडासा गोंधळात टाकणारा आहे 😤.\n",
|
|
"\n",
|
|
"खरं तर, पूर्णपणे तयार असलेला डेटासेट मिळणे, ज्याचा थेट ML मॉडेलसाठी वापर करता येईल, हे फारसे सामान्य नाही. पण काळजी करू नका, या धड्यात तुम्ही स्टँडर्ड R लायब्ररी वापरून कच्चा डेटासेट तयार करण्याची प्रक्रिया शिकाल 🧑🔧. तुम्ही डेटा व्हिज्युअलाइझ करण्यासाठी विविध तंत्रज्ञान देखील शिकाल.📈📊\n",
|
|
"<br>\n",
|
|
"\n",
|
|
"> एक पुनरावलोकन: पाइप ऑपरेटर (`%>%`) लॉजिकल क्रमाने ऑपरेशन्स करते, जिथे एखादी ऑब्जेक्ट पुढे फंक्शन किंवा कॉल एक्सप्रेशनमध्ये पास केली जाते. तुम्ही पाइप ऑपरेटरला तुमच्या कोडमध्ये \"आणि मग\" असे म्हणत असल्यासारखे समजू शकता.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "REWcIv9yX29v"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 2. डेटा गायब असल्याची तपासणी करा\n",
|
|
"\n",
|
|
"डेटा शास्त्रज्ञांना सर्वात जास्त सामोरे जावे लागणारे सामान्य प्रश्न म्हणजे अपूर्ण किंवा गायब डेटा. R गायब किंवा अज्ञात मूल्ये `NA` (Not Available) या विशेष चिन्हांकित मूल्याने दर्शवतो.\n",
|
|
"\n",
|
|
"मग आपल्याला डेटा फ्रेममध्ये गायब मूल्ये आहेत हे कसे कळेल? \n",
|
|
"<br>\n",
|
|
"- एक सोपा मार्ग म्हणजे बेस R फंक्शन `anyNA` वापरणे, जे लॉजिकल ऑब्जेक्ट्स `TRUE` किंवा `FALSE` परत करते.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "Zxfb3AM5YbUe"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"pumpkins %>% \n",
|
|
" anyNA()"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "G--DQutAYltj"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"छान, काही डेटा गायब असल्याचे दिसते! हे सुरू करण्यासाठी चांगले ठिकाण आहे.\n",
|
|
"\n",
|
|
"- आणखी एक मार्ग म्हणजे `is.na()` फंक्शन वापरणे, जे लॉजिकल `TRUE` सह कोणते विशिष्ट स्तंभ घटक गायब आहेत हे दर्शवते.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "mU-7-SB6YokF"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"pumpkins %>% \n",
|
|
" is.na() %>% \n",
|
|
" head(n = 7)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "W-DxDOR4YxSW"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"ठीक आहे, काम पूर्ण झाले पण अशा मोठ्या डेटा फ्रेमसाठी प्रत्येक ओळ आणि स्तंभ स्वतंत्रपणे तपासणे अप्रभावी आणि प्रत्यक्षात अशक्य होईल😴.\n",
|
|
"\n",
|
|
"- अधिक सोपी पद्धत म्हणजे प्रत्येक स्तंभासाठी गहाळ मूल्यांची बेरीज मोजणे:\n"
|
|
],
|
|
"metadata": {
|
|
"id": "xUWxipKYY0o7"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"pumpkins %>% \n",
|
|
" is.na() %>% \n",
|
|
" colSums()"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "ZRBWV6P9ZArL"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"खूपच चांगलं! काही डेटा गायब आहे, पण कदाचित तो दिलेल्या कामासाठी महत्त्वाचा नसेल. पाहूया पुढील विश्लेषण काय समोर आणते.\n",
|
|
"\n",
|
|
"> R मध्ये उत्कृष्ट पॅकेजेस आणि फंक्शन्सच्या संचासोबतच खूप चांगली दस्तऐवजीकरण प्रणाली आहे. उदाहरणार्थ, `help(colSums)` किंवा `?colSums` वापरून त्या फंक्शनबद्दल अधिक माहिती मिळवा.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "9gv-crB6ZD1Y"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 3. Dplyr: डेटा हाताळणीसाठी व्याकरण\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../images/dplyr_wrangling.png\"\n",
|
|
" width=\"569\"/>\n",
|
|
" <figcaption>चित्रकृती: @allison_horst</figcaption>\n",
|
|
"\n",
|
|
"\n",
|
|
"<!--<br/>चित्रकृती: \\@allison_horst-->\n"
|
|
],
|
|
"metadata": {
|
|
"id": "o4jLY5-VZO2C"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"[`dplyr`](https://dplyr.tidyverse.org/), Tidyverse मधील एक पॅकेज, डेटा हाताळणीसाठी एक व्याकरण आहे जे तुम्हाला सर्वसामान्य डेटा हाताळणीच्या आव्हानांवर उपाय शोधण्यासाठी मदत करणाऱ्या सुसंगत क्रियापदांचा संच प्रदान करते. या विभागात, आपण dplyr च्या काही क्रियापदांचा अभ्यास करू! \n",
|
|
"<br>\n"
|
|
],
|
|
"metadata": {
|
|
"id": "i5o33MQBZWWw"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"#### dplyr::select()\n",
|
|
"\n",
|
|
"`select()` ही `dplyr` पॅकेजमधील एक फंक्शन आहे जी तुम्हाला ठेवायच्या किंवा वगळायच्या कॉलम्स निवडण्यास मदत करते.\n",
|
|
"\n",
|
|
"तुमच्या डेटा फ्रेमसोबत काम करणे सोपे करण्यासाठी, `select()` वापरून त्यातील काही कॉलम्स काढून टाका आणि फक्त तुम्हाला आवश्यक असलेले कॉलम्स ठेवा.\n",
|
|
"\n",
|
|
"उदाहरणार्थ, या व्यायामात, आमच्या विश्लेषणात `Package`, `Low Price`, `High Price` आणि `Date` हे कॉलम्स समाविष्ट असतील. चला हे कॉलम्स निवडूया.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "x3VGMAGBZiUr"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Select desired columns\n",
|
|
"pumpkins <- pumpkins %>% \n",
|
|
" select(Package, `Low Price`, `High Price`, Date)\n",
|
|
"\n",
|
|
"\n",
|
|
"# Print data set\n",
|
|
"pumpkins %>% \n",
|
|
" slice_head(n = 5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "F_FgxQnVZnM0"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"#### dplyr::mutate()\n",
|
|
"\n",
|
|
"`mutate()` ही `dplyr` पॅकेजमधील एक फंक्शन आहे जी तुम्हाला नवीन कॉलम तयार करण्यासाठी किंवा विद्यमान कॉलम बदलण्यासाठी मदत करते, विद्यमान कॉलम कायम ठेवून.\n",
|
|
"\n",
|
|
"`mutate` चा सामान्य संरचना खालीलप्रमाणे आहे:\n",
|
|
"\n",
|
|
"`data %>% mutate(new_column_name = what_it_contains)`\n",
|
|
"\n",
|
|
"चला `Date` कॉलम वापरून `mutate` वापरून काही ऑपरेशन्स करून पाहू:\n",
|
|
"\n",
|
|
"1. तारीख (सध्या कॅरेक्टर प्रकारात आहे) महिन्याच्या स्वरूपात रूपांतरित करा (या US तारखा आहेत, त्यामुळे स्वरूप `MM/DD/YYYY` आहे).\n",
|
|
"\n",
|
|
"2. तारखांमधून महिन्याची माहिती नवीन कॉलममध्ये काढा.\n",
|
|
"\n",
|
|
"R मध्ये, [lubridate](https://lubridate.tidyverse.org/) पॅकेज डेट-टाइम डेटा सोप्या पद्धतीने हाताळण्यासाठी उपयुक्त आहे. त्यामुळे, `dplyr::mutate()`, `lubridate::mdy()`, `lubridate::month()` वापरून वरील उद्दिष्टे कशी साध्य करायची ते पाहू. आपण Date कॉलम काढून टाकू शकतो कारण पुढील ऑपरेशन्ससाठी त्याची गरज नाही.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "2KKo0Ed9Z1VB"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Load lubridate\n",
|
|
"library(lubridate)\n",
|
|
"\n",
|
|
"pumpkins <- pumpkins %>% \n",
|
|
" # Convert the Date column to a date object\n",
|
|
" mutate(Date = mdy(Date)) %>% \n",
|
|
" # Extract month from Date\n",
|
|
" mutate(Month = month(Date)) %>% \n",
|
|
" # Drop Date column\n",
|
|
" select(-Date)\n",
|
|
"\n",
|
|
"# View the first few rows\n",
|
|
"pumpkins %>% \n",
|
|
" slice_head(n = 7)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "5joszIVSZ6xe"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"व्वा! 🤩\n",
|
|
"\n",
|
|
"आता, नवीन स्तंभ `Price` तयार करूया, जो भोपळ्याच्या सरासरी किंमतीचे प्रतिनिधित्व करतो. आता, `Low Price` आणि `High Price` या स्तंभांचा सरासरी घेऊन नवीन Price स्तंभ भरूया. \n"
|
|
],
|
|
"metadata": {
|
|
"id": "nIgLjNMCZ-6Y"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Create a new column Price\n",
|
|
"pumpkins <- pumpkins %>% \n",
|
|
" mutate(Price = (`Low Price` + `High Price`)/2)\n",
|
|
"\n",
|
|
"# View the first few rows of the data\n",
|
|
"pumpkins %>% \n",
|
|
" slice_head(n = 5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "Zo0BsqqtaJw2"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"येस्स!💪\n",
|
|
"\n",
|
|
"\"पण थांबा!\", तुम्ही `View(pumpkins)` वापरून संपूर्ण डेटा सेट पाहिल्यानंतर म्हणाल, \"इथे काहीतरी विचित्र आहे!\"🤔\n",
|
|
"\n",
|
|
"जर तुम्ही `Package` कॉलमकडे पाहिलं, तर कळेल की भोपळे वेगवेगळ्या प्रकारांमध्ये विकले जात आहेत. काही `1 1/9 bushel` मोजमापात विकले जातात, काही `1/2 bushel` मोजमापात, काही प्रति भोपळा, काही प्रति पाउंड, आणि काही मोठ्या बॉक्समध्ये वेगवेगळ्या रुंदीमध्ये विकले जातात.\n",
|
|
"\n",
|
|
"चला हे तपासून पाहू:\n"
|
|
],
|
|
"metadata": {
|
|
"id": "p77WZr-9aQAR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Verify the distinct observations in Package column\n",
|
|
"pumpkins %>% \n",
|
|
" distinct(Package)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "XISGfh0IaUy6"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"अप्रतिम!👏\n",
|
|
"\n",
|
|
"फळकुटे (Pumpkins) सतत एकसारखे वजन करणे कठीण वाटते, त्यामुळे आपण त्यांना फिल्टर करूया. `Package` स्तंभामध्ये *bushel* हा शब्द असलेल्या फळकुट्यांची निवड करून त्यांना एका नवीन डेटा फ्रेममध्ये `new_pumpkins` ठेवूया.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "7sMjiVujaZxY"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"#### dplyr::filter() आणि stringr::str_detect()\n",
|
|
"\n",
|
|
"[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html): डेटा सेटमधून फक्त त्या **ओळी** निवडतो ज्या तुमच्या अटी पूर्ण करतात. या प्रकरणात, `Package` कॉलममध्ये *bushel* हा शब्द असलेल्या pumpkins निवडतो.\n",
|
|
"\n",
|
|
"[stringr::str_detect()](https://stringr.tidyverse.org/reference/str_detect.html): एखाद्या स्ट्रिंगमध्ये एखाद्या पॅटर्नची उपस्थिती किंवा अनुपस्थिती शोधतो.\n",
|
|
"\n",
|
|
"[`stringr`](https://github.com/tidyverse/stringr) पॅकेज सामान्य स्ट्रिंग ऑपरेशन्ससाठी सोप्या फंक्शन्स प्रदान करते.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "L8Qfcs92ageF"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Retain only pumpkins with \"bushel\"\n",
|
|
"new_pumpkins <- pumpkins %>% \n",
|
|
" filter(str_detect(Package, \"bushel\"))\n",
|
|
"\n",
|
|
"# Get the dimensions of the new data\n",
|
|
"dim(new_pumpkins)\n",
|
|
"\n",
|
|
"# View a few rows of the new data\n",
|
|
"new_pumpkins %>% \n",
|
|
" slice_head(n = 5)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "hy_SGYREampd"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"आपण पाहू शकता की आम्ही सुमारे 415 ओळींच्या डेटावर पोहोचलो आहोत ज्यामध्ये मोठ्या प्रमाणात भोपळ्यांचा समावेश आहे.🤩\n"
|
|
],
|
|
"metadata": {
|
|
"id": "VrDwF031avlR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"#### dplyr::case_when()\n",
|
|
"\n",
|
|
"**पण थांबा! अजून एक गोष्ट करायची आहे**\n",
|
|
"\n",
|
|
"तुमच्या लक्षात आलं का की प्रत्येक रांगेत बशेलची मात्रा वेगळी आहे? तुम्हाला किंमत प्रति बशेल दाखवायची आहे, 1 1/9 किंवा 1/2 बशेलसाठी नाही. किंमतींचे प्रमाण एकसमान करण्यासाठी गणित करायची वेळ आली आहे.\n",
|
|
"\n",
|
|
"आपण [`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html) फंक्शन वापरणार आहोत *Price* कॉलम बदलण्यासाठी, काही अटींवर आधारित. `case_when` तुम्हाला अनेक `if_else()` स्टेटमेंट्स व्हेक्टराइझ करण्याची परवानगी देते.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "mLpw2jH4a0tx"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Convert the price if the Package contains fractional bushel values\n",
|
|
"new_pumpkins <- new_pumpkins %>% \n",
|
|
" mutate(Price = case_when(\n",
|
|
" str_detect(Package, \"1 1/9\") ~ Price/(1 + 1/9),\n",
|
|
" str_detect(Package, \"1/2\") ~ Price/(1/2),\n",
|
|
" TRUE ~ Price))\n",
|
|
"\n",
|
|
"# View the first few rows of the data\n",
|
|
"new_pumpkins %>% \n",
|
|
" slice_head(n = 30)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "P68kLVQmbM6I"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"आता आपण त्यांच्या बुशेल मोजमापावर आधारित प्रति युनिट किंमतीचे विश्लेषण करू शकतो. मात्र, कद्दूंच्या बुशेलचा अभ्यास करताना हे स्पष्ट होते की `तुमच्या डेटाचा स्वभाव समजून घेणे` किती `महत्त्वाचे` आहे!\n",
|
|
"\n",
|
|
"> ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) नुसार, बुशेलचे वजन उत्पादनाच्या प्रकारावर अवलंबून असते, कारण ते एक प्रमाण मोजमाप आहे. \"उदाहरणार्थ, टोमॅटोचा बुशेल ५६ पाउंड वजनाचा असतो... पाने आणि हिरव्या भाज्या अधिक जागा घेतात पण कमी वजन असते, त्यामुळे पालकाचा बुशेल फक्त २० पाउंड असतो.\" हे सगळं खूपच गुंतागुंतीचं आहे! चला बुशेल-टू-पाउंड रूपांतरण करण्याचा विचार न करता बुशेलनुसार किंमत ठरवूया. कद्दूंच्या बुशेलचा अभ्यास करताना हे स्पष्ट होते की तुमच्या डेटाचा स्वभाव समजून घेणे किती महत्त्वाचे आहे!\n",
|
|
">\n",
|
|
"> ✅ तुम्हाला लक्षात आले का की अर्ध्या बुशेलने विकले जाणारे कद्दू खूप महाग आहेत? तुम्ही याचे कारण शोधू शकता का? सूचक: लहान कद्दू मोठ्या कद्दूपेक्षा खूप महाग असतात, कदाचित कारण एका बुशेलमध्ये मोठ्या पोकळ पाई कद्दूने घेतलेल्या जागेमुळे लहान कद्दूंची संख्या जास्त असते.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "pS2GNPagbSdb"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"आता शेवटी, फक्त साहसासाठी 💁♀️, चला `Month` कॉलमला पहिल्या स्थानावर हलवूया म्हणजेच `Package` कॉलमच्या `आधी`.\n",
|
|
"\n",
|
|
"`dplyr::relocate()` वापरून कॉलमची स्थानं बदलली जातात.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "qql1SowfbdnP"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Create a new data frame new_pumpkins\n",
|
|
"new_pumpkins <- new_pumpkins %>% \n",
|
|
" relocate(Month, .before = Package)\n",
|
|
"\n",
|
|
"new_pumpkins %>% \n",
|
|
" slice_head(n = 7)"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "JJ1x6kw8bixF"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"छान काम केले!👌 आता तुमच्याकडे एक स्वच्छ, व्यवस्थित डेटासेट आहे ज्यावर तुम्ही तुमचा नवीन रिग्रेशन मॉडेल तयार करू शकता!\n"
|
|
],
|
|
"metadata": {
|
|
"id": "y8TJ0Za_bn5Y"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## 4. ggplot2 सह डेटा व्हिज्युअलायझेशन\n",
|
|
"\n",
|
|
"<p >\n",
|
|
" <img src=\"../../images/data-visualization.png\"\n",
|
|
" width=\"600\"/>\n",
|
|
" <figcaption>डासानी मदीपल्ली यांचे माहितीपट</figcaption>\n",
|
|
"\n",
|
|
"\n",
|
|
"<!--{width=\"600\"}-->\n",
|
|
"\n",
|
|
"एक *शहाणपणाचे* वाक्य असे आहे:\n",
|
|
"\n",
|
|
"> \"साधा ग्राफ डेटाच्या विश्लेषकाच्या मनात इतर कोणत्याही साधनापेक्षा जास्त माहिती पोहोचवतो.\" --- जॉन टुकी\n",
|
|
"\n",
|
|
"डेटा सायंटिस्टच्या भूमिकेचा एक भाग म्हणजे त्यांनी काम करत असलेल्या डेटाची गुणवत्ता आणि स्वरूप प्रदर्शित करणे. हे करण्यासाठी, ते अनेकदा डेटाचे वेगवेगळे पैलू दाखवणारे मनोरंजक व्हिज्युअलायझेशन, प्लॉट्स, ग्राफ्स आणि चार्ट तयार करतात. अशा प्रकारे, ते नातेसंबंध आणि अंतर सहजपणे उघड करू शकतात जे अन्यथा शोधणे कठीण असते.\n",
|
|
"\n",
|
|
"व्हिज्युअलायझेशन मशीन लर्निंग तंत्र ठरवण्यासाठी देखील उपयुक्त ठरू शकते, जे डेटासाठी सर्वात योग्य आहे. उदाहरणार्थ, जर स्कॅटरप्लॉट एका रेषेचे अनुसरण करत असल्याचे दिसत असेल, तर याचा अर्थ असा होतो की डेटा लीनियर रिग्रेशनसाठी चांगला उमेदवार आहे.\n",
|
|
"\n",
|
|
"R मध्ये ग्राफ तयार करण्यासाठी अनेक प्रणाली उपलब्ध आहेत, परंतु [`ggplot2`](https://ggplot2.tidyverse.org/index.html) ही सर्वात मोहक आणि बहुपयोगी प्रणालींपैकी एक आहे. `ggplot2` तुम्हाला **स्वतंत्र घटक एकत्र करून** ग्राफ तयार करण्याची परवानगी देते.\n",
|
|
"\n",
|
|
"चला, Price आणि Month कॉलमसाठी एक साधा स्कॅटर प्लॉट तयार करून सुरुवात करूया.\n",
|
|
"\n",
|
|
"या प्रकरणात, आपण [`ggplot()`](https://ggplot2.tidyverse.org/reference/ggplot.html) सह सुरुवात करू, डेटासेट आणि सौंदर्यात्मक मॅपिंग (सह [`aes()`](https://ggplot2.tidyverse.org/reference/aes.html)) पुरवू आणि नंतर स्कॅटर प्लॉटसाठी [`geom_point()`](https://ggplot2.tidyverse.org/reference/geom_point.html) सारख्या लेयर्स जोडू.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "mYSH6-EtbvNa"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Set a theme for the plots\n",
|
|
"theme_set(theme_light())\n",
|
|
"\n",
|
|
"# Create a scatter plot\n",
|
|
"p <- ggplot(data = new_pumpkins, aes(x = Price, y = Month))\n",
|
|
"p + geom_point()"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "g2YjnGeOcLo4"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"हा उपयुक्त प्लॉट आहे का 🤷? यात काही आश्चर्यकारक गोष्ट आहे का?\n",
|
|
"\n",
|
|
"हा विशेषतः उपयुक्त नाही कारण तो फक्त तुमच्या डेटामधील एका महिन्यातील पॉइंट्सचा प्रसार दाखवतो. \n"
|
|
],
|
|
"metadata": {
|
|
"id": "Ml7SDCLQcPvE"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### **हे उपयुक्त कसे बनवायचे?**\n",
|
|
"\n",
|
|
"चार्ट्समध्ये उपयुक्त डेटा दाखवण्यासाठी, तुम्हाला सहसा डेटा कशातरी प्रकारे गटबद्ध करावा लागतो. उदाहरणार्थ, आमच्या बाबतीत, प्रत्येक महिन्यासाठी भोपळ्यांची सरासरी किंमत शोधणे आमच्या डेटामधील अंतर्निहित नमुन्यांबद्दल अधिक अंतर्दृष्टी प्रदान करेल. यामुळे आम्हाला **dplyr** चा आणखी एक झलक मिळतो:\n",
|
|
"\n",
|
|
"#### `dplyr::group_by() %>% summarize()`\n",
|
|
"\n",
|
|
"R मध्ये गटबद्ध संकलन सहजपणे खालीलप्रमाणे गणना करता येते:\n",
|
|
"\n",
|
|
"`dplyr::group_by() %>% summarize()`\n",
|
|
"\n",
|
|
"- `dplyr::group_by()` विश्लेषणाची एकक संपूर्ण डेटासेटवरून वैयक्तिक गटांमध्ये बदलते, जसे की प्रति महिना.\n",
|
|
"\n",
|
|
"- `dplyr::summarize()` एक नवीन डेटा फ्रेम तयार करते ज्यामध्ये प्रत्येक गटबद्ध व्हेरिएबलसाठी एक कॉलम आणि तुम्ही निर्दिष्ट केलेल्या प्रत्येक सारांश आकडेवारीसाठी एक कॉलम असतो.\n",
|
|
"\n",
|
|
"उदाहरणार्थ, आपण `dplyr::group_by() %>% summarize()` वापरून **Month** कॉलमवर आधारित भोपळ्यांना गटांमध्ये विभागू शकतो आणि प्रत्येक महिन्यासाठी **mean price** शोधू शकतो.\n"
|
|
],
|
|
"metadata": {
|
|
"id": "jMakvJZIcVkh"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Find the average price of pumpkins per month\r\n",
|
|
"new_pumpkins %>%\r\n",
|
|
" group_by(Month) %>% \r\n",
|
|
" summarise(mean_price = mean(Price))"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "6kVSUa2Bcilf"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"संक्षिप्त!✨\n",
|
|
"\n",
|
|
"महिने यांसारख्या श्रेणीसंबंधी वैशिष्ट्यांचे बार प्लॉट 📊 वापरून चांगले प्रतिनिधित्व करता येते. बार चार्टसाठी जबाबदार असलेल्या स्तरांमध्ये `geom_bar()` आणि `geom_col()` यांचा समावेश आहे. अधिक माहितीसाठी `?geom_bar` पाहा.\n",
|
|
"\n",
|
|
"चला, एक तयार करूया!\n"
|
|
],
|
|
"metadata": {
|
|
"id": "Kds48GUBcj3W"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"source": [
|
|
"# Find the average price of pumpkins per month then plot a bar chart\r\n",
|
|
"new_pumpkins %>%\r\n",
|
|
" group_by(Month) %>% \r\n",
|
|
" summarise(mean_price = mean(Price)) %>% \r\n",
|
|
" ggplot(aes(x = Month, y = mean_price)) +\r\n",
|
|
" geom_col(fill = \"midnightblue\", alpha = 0.7) +\r\n",
|
|
" ylab(\"Pumpkin Price\")"
|
|
],
|
|
"outputs": [],
|
|
"metadata": {
|
|
"id": "VNbU1S3BcrxO"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"🤩🤩हे अधिक उपयुक्त डेटा व्हिज्युअलायझेशन आहे! असे दिसते की सप्टेंबर आणि ऑक्टोबरमध्ये भोपळ्यांची सर्वाधिक किंमत असते. हे तुमच्या अपेक्षांना पूर्ण करते का? का किंवा का नाही?\n",
|
|
"\n",
|
|
"दुसरा धडा पूर्ण केल्याबद्दल अभिनंदन 👏! तुम्ही मॉडेल तयार करण्यासाठी तुमचा डेटा तयार केला, आणि नंतर व्हिज्युअलायझेशनचा वापर करून अधिक अंतर्दृष्टी शोधल्या!\n"
|
|
],
|
|
"metadata": {
|
|
"id": "zDm0VOzzcuzR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\n"
|
|
]
|
|
}
|
|
]
|
|
} |