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
39 KiB
668 lines
39 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:05:52+00:00",
|
|
"source_file": "2-Regression/2-Data/solution/R/lesson_2-R.ipynb",
|
|
"language_code": "ne"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# रिग्रेसन मोडेल बनाउनुहोस्: डेटा तयार पार्नुहोस् र भिजुअलाइज गर्नुहोस्\n",
|
|
"\n",
|
|
"## **कद्दूहरूको लागि रेखीय रिग्रेसन - पाठ २**\n",
|
|
"#### परिचय\n",
|
|
"\n",
|
|
"अब तपाईं Tidymodels र Tidyverse को साथ मेसिन लर्निङ मोडेल निर्माण गर्न आवश्यक उपकरणहरूसँग तयार हुनुहुन्छ, तपाईं आफ्नो डेटासँग प्रश्न सोध्न सुरु गर्न तयार हुनुहुन्छ। जब तपाईं डेटासँग काम गर्नुहुन्छ र ML समाधानहरू लागू गर्नुहुन्छ, सही प्रश्न सोध्न जान्नु अत्यन्त महत्त्वपूर्ण छ ताकि तपाईंको डेटासेटको सम्भावनाहरू सही रूपमा अनलक गर्न सकियोस्।\n",
|
|
"\n",
|
|
"यस पाठमा, तपाईंले सिक्नुहुनेछ:\n",
|
|
"\n",
|
|
"- मोडेल निर्माणको लागि आफ्नो डेटा कसरी तयार गर्ने।\n",
|
|
"\n",
|
|
"- डेटा भिजुअलाइजेसनको लागि `ggplot2` कसरी प्रयोग गर्ने।\n",
|
|
"\n",
|
|
"तपाईंले उत्तर खोज्न चाहेको प्रश्नले कुन प्रकारको ML एल्गोरिदम प्रयोग गर्ने निर्धारण गर्नेछ। र तपाईंले पाउने उत्तरको गुणस्तर तपाईंको डेटाको प्रकृतिमा धेरै हदसम्म निर्भर हुनेछ।\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": [
|
|
"## १. कद्दूको डेटा आयात गर्दै र टाइडिवर्सलाई बोलाउँदै\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": [
|
|
"## २. हराएको डाटाको जाँच गर्नुहोस्\n",
|
|
"\n",
|
|
"डाटा वैज्ञानिकहरूले प्रायः सामना गर्नुपर्ने समस्याहरू मध्ये एक अधुरो वा हराएको डाटा हो। R ले हराएको वा अज्ञात मानहरूलाई विशेष संकेत मान `NA` (Not Available) को रूपमा प्रतिनिधित्व गर्छ।\n",
|
|
"\n",
|
|
"त्यसो भए हामी कसरी थाहा पाउने कि डाटा फ्रेममा हराएका मानहरू छन्?\n",
|
|
"<br>\n",
|
|
"- एउटा सोझो तरिका भनेको `anyNA` नामक base R function प्रयोग गर्नु हो, जसले `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. मिति (हाल क्यारेक्टर प्रकारको)लाई महिना स्वरूपमा परिवर्तन गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले स्वरूप `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",
|
|
"कद्दूहरूलाई स्थिर रूपमा तौल गर्न धेरै गाह्रो देखिन्छ, त्यसैले हामी तिनीहरूलाई फिल्टर गरेर `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): स्ट्रिङमा कुनै ढाँचा (pattern) को उपस्थिति वा अनुपस्थिति पत्ता लगाउँछ।\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": [
|
|
"तपाईं देख्न सक्नुहुन्छ कि हामीले करिब ४१५ पङ्क्तिहरूमा सीमित गरेका छौं जसमा बुसलको आधारमा कद्दूहरू छन्।🤩 \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 स्तम्भलाई केही सर्तहरूमा निर्भर गर्दै। `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": [
|
|
"महिनाको स्तम्भलाई पहिलो स्थानमा सार्नको लागि, अर्थात् `Package` स्तम्भभन्दा अगाडि, `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": [
|
|
"## ४. 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** स्तम्भको आधारमा कद्दूहरूलाई समूहबद्ध गर्न सक्छौं र त्यसपछि प्रत्येक महिनाको लागि **औसत मूल्य** पत्ता लगाउन सक्छौं।\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"
|
|
]
|
|
}
|
|
]
|
|
} |