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.
671 lines
38 KiB
671 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-09-04T01:46:12+00:00",
|
|
"source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb",
|
|
"language_code": "hi"
|
|
}
|
|
},
|
|
"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",
|
|
"आइए `mutate` का उपयोग करके `Date` कॉलम पर निम्नलिखित कार्य करें:\n",
|
|
"\n",
|
|
"1. तारीखों को (जो वर्तमान में character प्रकार की हैं) महीने के प्रारूप में बदलें (ये अमेरिकी तारीखें हैं, इसलिए प्रारूप `MM/DD/YYYY` है)।\n",
|
|
"\n",
|
|
"2. तारीखों से महीने को निकालकर एक नए कॉलम में डालें।\n",
|
|
"\n",
|
|
"R में, [lubridate](https://lubridate.tidyverse.org/) पैकेज Date-time डेटा के साथ काम करना आसान बनाता है। तो, आइए `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",
|
|
"<br>\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",
|
|
"कद्दू का वजन लगातार मापना काफी मुश्किल लगता है, तो चलिए उन्हें छांटते हैं। इसके लिए, `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* स्ट्रिंग वाले कद्दू।\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",
|
|
"<br>\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 कॉलम को *mutate* किया जा सके। `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) के अनुसार, बुशल का वजन उत्पाद के प्रकार पर निर्भर करता है, क्योंकि यह एक आयतन माप है। \"उदाहरण के लिए, टमाटर का एक बुशल 56 पाउंड वजन का होता है... पत्तियां और साग अधिक जगह लेते हैं लेकिन वजन कम होता है, इसलिए पालक का एक बुशल केवल 20 पाउंड का होता है।\" यह सब काफी जटिल है! चलिए बुशल-से-पाउंड रूपांतरण करने की झंझट में न पड़ें और इसके बजाय बुशल के आधार पर मूल्य निर्धारण करें। कद्दू के बुशल का यह सारा अध्ययन, हालांकि, यह दिखाने के लिए है कि अपने डेटा की प्रकृति को समझना कितना महत्वपूर्ण है!\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",
|
|
"<br>\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) से शुरू करेंगे, एक डेटा सेट और एस्थेटिक मैपिंग (with [`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** कॉलम के आधार पर समूहों में विभाजित कर सकते हैं और फिर प्रत्येक महीने के लिए **औसत कीमत** निकाल सकते हैं।\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"
|
|
]
|
|
}
|
|
]
|
|
} |