# Scikit-learn प्रयोग गरेर Regression मोडेल बनाउने: डेटा तयार पार्ने र दृश्यात्मक बनाउने ![डेटा दृश्यात्मकता इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png) इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) > ### [यो पाठ R मा पनि उपलब्ध छ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## परिचय अब तपाईं Scikit-learn प्रयोग गरेर मेसिन लर्निङ मोडेल निर्माण गर्न आवश्यक उपकरणहरूसँग तयार हुनुहुन्छ। तपाईं आफ्नो डेटासँग प्रश्न सोध्न र ML समाधानहरू लागू गर्न तयार हुनुहुन्छ। डेटा प्रयोग गर्दा र ML समाधानहरू लागू गर्दा, सही प्रश्न सोध्न जान्नु अत्यन्त महत्त्वपूर्ण छ ताकि तपाईं आफ्नो डेटासेटको सम्भावनाहरू सही रूपमा अनलक गर्न सक्नुहुन्छ। यस पाठमा, तपाईं सिक्नुहुनेछ: - मोडेल निर्माणका लागि डेटा कसरी तयार गर्ने। - डेटा दृश्यात्मकताका लागि Matplotlib कसरी प्रयोग गर्ने। ## आफ्नो डेटासँग सही प्रश्न सोध्ने तपाईंलाई चाहिएको उत्तरले तपाईंले कुन प्रकारको ML एल्गोरिदम प्रयोग गर्ने निर्धारण गर्दछ। र तपाईंले पाउने उत्तरको गुणस्तर तपाईंको डेटाको प्रकृतिमा धेरै निर्भर गर्दछ। यस पाठका लागि दिइएको [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) हेर्नुहोस्। तपाईं यो .csv फाइललाई VS Code मा खोल्न सक्नुहुन्छ। छिटो हेर्दा नै देखिन्छ कि यसमा खाली ठाउँहरू छन्, स्ट्रिङ र संख्यात्मक डेटाको मिश्रण छ। त्यहाँ 'Package' नामको एउटा अचम्मको स्तम्भ पनि छ, जहाँ डेटा 'sacks', 'bins' र अन्य मानहरूको मिश्रण छ। वास्तवमा, यो डेटा अलि अस्तव्यस्त छ। [![ML for beginners - डेटासेट विश्लेषण र सफा गर्ने](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - डेटासेट विश्लेषण र सफा गर्ने") > 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा तयार गर्ने छोटो भिडियो हेर्नुहोस्। सामान्यतया, तपाईंलाई पूर्ण रूपमा तयार डेटासेट प्राप्त हुँदैन, जसलाई सीधा ML मोडेल बनाउन प्रयोग गर्न सकिन्छ। यस पाठमा, तपाईंले कच्चा डेटासेटलाई मानक Python पुस्तकालयहरू प्रयोग गरेर कसरी तयार गर्ने सिक्नुहुनेछ। साथै, डेटा दृश्यात्मक बनाउन विभिन्न प्रविधिहरू पनि सिक्नुहुनेछ। ## केस अध्ययन: 'कद्दू बजार' यस फोल्डरमा, तपाईंलाई [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नामक .csv फाइल फोल्डरको `data` रुटमा भेट्नुहुनेछ। यसमा कद्दू बजारको बारेमा 1757 पङ्क्तिहरूको डेटा समावेश छ, जुन शहरअनुसार समूहमा वर्गीकृत गरिएको छ। यो डेटा [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) बाट निकालिएको हो, जुन संयुक्त राज्यको कृषि विभागद्वारा वितरण गरिएको हो। ### डेटा तयार पार्दै यो डेटा सार्वजनिक डोमेनमा छ। यसलाई USDA वेबसाइटबाट प्रत्येक शहरका लागि छुट्टाछुट्टै फाइलहरूमा डाउनलोड गर्न सकिन्छ। धेरै छुट्टाछुट्टै फाइलहरूबाट बच्नका लागि, हामीले सबै शहरको डेटा एक स्प्रेडशीटमा जोड्यौं। यसरी, हामीले डेटा पहिले नै _थोरै तयार_ गरिसकेका छौं। अब, डेटा नजिकबाट हेरौं। ### कद्दू डेटा - प्रारम्भिक निष्कर्ष तपाईंले यस डेटामा के देख्नुभयो? तपाईंले पहिले नै देख्नुभयो कि यसमा स्ट्रिङ, नम्बर, खाली ठाउँ र अचम्मका मानहरूको मिश्रण छ, जसलाई बुझ्न आवश्यक छ। Regression प्रविधि प्रयोग गरेर तपाईं यस डेटाबाट कुन प्रश्न सोध्न सक्नुहुन्छ? "दिइएको महिनामा बिक्रीका लागि कद्दूको मूल्यको भविष्यवाणी गर्नुहोस्" भन्ने प्रश्न कस्तो होला? फेरि डेटालाई हेर्दा, तपाईंले यो कार्यका लागि आवश्यक डेटा संरचना बनाउन केही परिवर्तन गर्नुपर्नेछ। ## अभ्यास - कद्दू डेटा विश्लेषण गर्नुहोस् आउनुहोस्, [Pandas](https://pandas.pydata.org/) प्रयोग गरौं, (यसको नाम `Python Data Analysis` बाट आएको हो) जुन डेटा आकार दिनका लागि धेरै उपयोगी उपकरण हो, र यस कद्दू डेटालाई विश्लेषण र तयार गरौं। ### पहिलो, हराएका मितिहरू जाँच गर्नुहोस् तपाईंले पहिले हराएका मितिहरू जाँच गर्नका लागि केही कदम चाल्नुपर्नेछ: 1. मितिहरूलाई महिना ढाँचामा रूपान्तरण गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले ढाँचा `MM/DD/YYYY` हो)। 2. नयाँ स्तम्भमा महिना निकाल्नुहोस्। _नोटबुक.ipynb_ फाइललाई Visual Studio Code मा खोल्नुहोस् र स्प्रेडशीटलाई नयाँ Pandas dataframe मा आयात गर्नुहोस्। 1. `head()` फङ्क्सन प्रयोग गरेर पहिलो पाँच पङ्क्तिहरू हेर्नुहोस्। ```python import pandas as pd pumpkins = pd.read_csv('../data/US-pumpkins.csv') pumpkins.head() ``` ✅ कुन फङ्क्सन प्रयोग गरेर अन्तिम पाँच पङ्क्तिहरू हेर्न सकिन्छ? 1. हालको dataframe मा हराएको डेटा छ कि छैन जाँच गर्नुहोस्: ```python pumpkins.isnull().sum() ``` हराएको डेटा छ, तर यो कार्यका लागि सायद महत्त्वपूर्ण नहोला। 1. आफ्नो dataframe लाई सजिलो बनाउन, `loc` फङ्क्सन प्रयोग गरेर तपाईंलाई चाहिने स्तम्भहरू मात्र चयन गर्नुहोस्। `:` ले सबै पङ्क्तिहरूलाई जनाउँछ। ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` ### दोस्रो, कद्दूको औसत मूल्य निर्धारण गर्नुहोस् दिइएको महिनामा कद्दूको औसत मूल्य निर्धारण गर्न सोच्नुहोस्। यस कार्यका लागि कुन स्तम्भहरू चयन गर्नुहुन्छ? संकेत: तपाईंलाई ३ स्तम्भहरू चाहिन्छ। समाधान: `Low Price` र `High Price` स्तम्भहरूको औसत लिएर नयाँ Price स्तम्भमा राख्नुहोस्, र Date स्तम्भलाई मात्र महिना देखाउने गरी रूपान्तरण गर्नुहोस्। माथिको जाँच अनुसार, मिति वा मूल्यहरूको लागि हराएको डेटा छैन। 1. औसत गणना गर्न, निम्न कोड थप्नुहोस्: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 month = pd.DatetimeIndex(pumpkins['Date']).month ``` ✅ कुनै पनि डेटा जाँच गर्न `print(month)` प्रयोग गर्न स्वतन्त्र महसुस गर्नुहोस्। 2. अब, आफ्नो रूपान्तरण गरिएको डेटा नयाँ Pandas dataframe मा प्रतिलिपि गर्नुहोस्: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` आफ्नो dataframe प्रिन्ट गर्दा, तपाईंले सफा र व्यवस्थित डेटासेट देख्नुहुनेछ, जसमा तपाईं नयाँ regression मोडेल निर्माण गर्न सक्नुहुन्छ। ### तर पर्खनुहोस्! यहाँ केही अचम्मको कुरा छ यदि तपाईं `Package` स्तम्भलाई हेर्नुहुन्छ भने, कद्दूहरू धेरै फरक कन्फिगरेसनमा बेचिन्छन्। केही '1 1/9 bushel' मा, केही '1/2 bushel' मा, केही प्रति कद्दू, केही प्रति पाउन्ड, र केही ठूला बक्सहरूमा बेचिन्छन्। > कद्दूलाई स्थिर रूपमा तौल गर्न गाह्रो देखिन्छ मूल डेटामा हेर्दा, `Unit of Sale` 'EACH' वा 'PER BIN' भएका वस्तुहरूमा `Package` प्रकार इन्च, बिन, वा 'each' हुन्छ। कद्दूलाई स्थिर रूपमा तौल गर्न गाह्रो देखिन्छ, त्यसैले `Package` स्तम्भमा 'bushel' स्ट्रिङ भएका कद्दूहरू मात्र चयन गरेर फिल्टर गरौं। 1. .csv आयातको सुरुमा फिल्टर थप्नुहोस्: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` अब डेटा प्रिन्ट गर्दा, तपाईंले 'bushel' भएका करिब 415 पङ्क्तिहरू मात्र देख्नुहुनेछ। ### तर पर्खनुहोस्! अझै केही गर्न बाँकी छ के तपाईंले देख्नुभयो कि प्रत्येक पङ्क्तिमा bushel को मात्रा फरक छ? तपाईंले मूल्यलाई प्रति bushel सामान्यीकृत गर्न आवश्यक छ, त्यसैले मूल्यलाई मानकीकरण गर्न केही गणना गर्नुहोस्। 1. नयाँ_pumpkins dataframe बनाउने ब्लकपछि यी लाइनहरू थप्नुहोस्: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` ✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) अनुसार, bushel को तौल उत्पादनको प्रकारमा निर्भर गर्दछ, किनभने यो भोल्युम मापन हो। "टमाटरको bushel, उदाहरणका लागि, 56 पाउन्ड तौल हुनुपर्छ... पात र हरियो सागले बढी ठाउँ लिन्छन् तर कम तौल हुन्छ, त्यसैले पालुङ्गोको bushel मात्र 20 पाउन्ड हुन्छ।" यो सबै धेरै जटिल छ! bushel-to-pound रूपान्तरण नगरी, प्रति bushel मूल्य निर्धारण गरौं। कद्दूको bushel को अध्ययनले देखाउँछ कि तपाईंको डेटाको प्रकृति बुझ्न कति महत्त्वपूर्ण छ! अब, तपाईं bushel मापनको आधारमा प्रति एकाइ मूल्य विश्लेषण गर्न सक्नुहुन्छ। डेटा फेरि प्रिन्ट गर्दा, तपाईंले यसलाई मानकीकृत देख्नुहुनेछ। ✅ के तपाईंले देख्नुभयो कि आधा-bushel मा बेचिएका कद्दूहरू धेरै महँगा छन्? किन यस्तो होला? संकेत: साना कद्दूहरू ठूला कद्दूहरूभन्दा धेरै महँगा हुन्छन्, सायद किनभने प्रति bushel धेरै साना कद्दूहरू हुन्छन्, जबकि ठूला कद्दूहरूले धेरै ठाउँ लिन्छन्। ## दृश्यात्मकता रणनीतिहरू डेटा वैज्ञानिकको भूमिकाको एक हिस्सा भनेको उनीहरूले काम गरिरहेको डेटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यात्मकता, जस्तै प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डेटाका विभिन्न पक्षहरू देखाउँछ। यसरी, उनीहरूले दृश्यात्मक रूपमा सम्बन्ध र खाडलहरू देखाउन सक्छन्, जुन अन्यथा पत्ता लगाउन गाह्रो हुन्छ। [![ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता") > 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा दृश्यात्मकता गर्ने छोटो भिडियो हेर्नुहोस्। दृश्यात्मकताले मेसिन लर्निङ प्रविधि निर्धारण गर्न पनि मद्दत गर्न सक्छ। उदाहरणका लागि, यदि scatterplot ले रेखा पछ्याएजस्तो देखिन्छ भने, डेटा linear regression अभ्यासका लागि उपयुक्त छ। Jupyter notebooks मा राम्रोसँग काम गर्ने डेटा दृश्यात्मकता पुस्तकालय [Matplotlib](https://matplotlib.org/) हो (जसलाई तपाईंले अघिल्लो पाठमा पनि देख्नुभयो)। > डेटा दृश्यात्मकतामा थप अनुभव लिन [यी ट्युटोरियलहरू](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) हेर्नुहोस्। ## अभ्यास - Matplotlib सँग प्रयोग गर्नुहोस् तपाईंले भर्खरै सिर्जना गर्नुभएको नयाँ dataframe प्रदर्शन गर्न केही आधारभूत प्लटहरू बनाउन प्रयास गर्नुहोस्। आधारभूत लाइन प्लटले के देखाउँछ? 1. फाइलको माथि, Pandas आयात अन्तर्गत Matplotlib आयात गर्नुहोस्: ```python import matplotlib.pyplot as plt ``` 1. सम्पूर्ण notebook पुन: चलाउनुहोस्। 1. notebook को तल, डेटालाई बक्सको रूपमा प्लट गर्न एउटा सेल थप्नुहोस्: ```python price = new_pumpkins.Price month = new_pumpkins.Month plt.scatter(price, month) plt.show() ``` ![मूल्य र महिनाको सम्बन्ध देखाउने scatterplot](../../../../2-Regression/2-Data/images/scatterplot.png) के यो उपयोगी प्लट हो? यसले तपाईंलाई के अचम्मित गराउँछ? यो विशेष रूपमा उपयोगी छैन, किनभने यसले तपाईंको डेटालाई महिनामा बिन्दुहरूको रूपमा मात्र देखाउँछ। ### यसलाई उपयोगी बनाउनुहोस् चार्टहरूले उपयोगी डेटा प्रदर्शन गर्न, तपाईंले प्रायः डेटालाई कुनै न कुनै रूपमा समूह गर्न आवश्यक पर्छ। y अक्षले महिनाहरू देखाउने र डेटा वितरण प्रदर्शन गर्ने प्लट सिर्जना गरौं। 1. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` ![मूल्य र महिनाको सम्बन्ध देखाउने बार चार्ट](../../../../2-Regression/2-Data/images/barchart.png) यो उपयोगी डेटा दृश्यात्मकता हो! यसले संकेत गर्छ कि कद्दूको सबैभन्दा उच्च मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षासँग मेल खान्छ? किन वा किन होइन? --- ## 🚀 चुनौती Matplotlib ले प्रदान गर्ने विभिन्न प्रकारका दृश्यात्मकता अन्वेषण गर्नुहोस्। Regression समस्याहरूका लागि कुन प्रकारका दृश्यात्मकता सबैभन्दा उपयुक्त छन्? ## [पाठपछि क्विज](https://ff-quizzes.netlify.app/en/ml/) ## समीक्षा र आत्म-अध्ययन डेटा दृश्यात्मकताका विभिन्न तरिकाहरू हेर्नुहोस्। उपलब्ध विभिन्न पुस्तकालयहरूको सूची बनाउनुहोस् र कुन प्रकारका कार्यहरूको लागि कुन पुस्तकालय सबैभन्दा उपयुक्त छ भनेर नोट गर्नुहोस्, जस्तै 2D दृश्यात्मकता बनाम 3D दृश्यात्मकता। तपाईंले के पत्ता लगाउनुहुन्छ? ## असाइनमेन्ट [दृश्यात्मकता अन्वेषण गर्दै](assignment.md) --- **अस्वीकरण**: यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं।