# Scikit-learn प्रयोग गरेर Regression मोडेल बनाउने: डेटा तयार पार्ने र दृश्यात्मक बनाउने ![डेटा दृश्यात्मकता इन्फोग्राफिक](../../../../translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ne.png) इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [पाठ अघि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/) > ### [यो पाठ 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/) प्रयोग गरौं, जुन डेटा आकार दिनका लागि धेरै उपयोगी उपकरण हो, र यस कद्दू डेटालाई विश्लेषण र तयार पारौं। ### पहिलो, हराएका मितिहरू जाँच गर्नुहोस् तपाईंले पहिले हराएका मितिहरू जाँच गर्नका लागि केही कदम चाल्नुपर्नेछ: 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-देखि-पाउन्ड रूपान्तरण नगरी, प्रति 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 प्रयोग गरेर डेटा दृश्यात्मकता") > 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा दृश्यात्मकता गर्ने छोटो भिडियो हेर्नुहोस्। दृश्यात्मकताले मेसिन लर्निङ प्रविधि छनोट गर्न पनि मद्दत गर्न सक्छ। उदाहरणका लागि, यदि स्क्याटरप्लटले रेखा पछ्याएजस्तो देखिन्छ भने, डेटा linear regression अभ्यासका लागि उपयुक्त छ। Jupyter नोटबुकमा राम्रोसँग काम गर्ने डेटा दृश्यात्मकता पुस्तकालय [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. सम्पूर्ण नोटबुक पुन: चलाउनुहोस्। 1. नोटबुकको तल, डेटालाई बक्सको रूपमा प्लट गर्न एउटा सेल थप्नुहोस्: ```python price = new_pumpkins.Price month = new_pumpkins.Month plt.scatter(price, month) plt.show() ``` ![मूल्य र महिनाको सम्बन्ध देखाउने स्क्याटरप्लट](../../../../translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ne.png) के यो उपयोगी प्लट हो? यसले तपाईंलाई के अचम्मित गरायो? यो विशेष रूपमा उपयोगी छैन, किनभने यसले तपाईंको डेटालाई महिनामा बिन्दुको रूपमा मात्र देखाउँछ। ### यसलाई उपयोगी बनाउनुहोस् चार्टहरूले उपयोगी डेटा प्रदर्शन गर्न, तपाईंले प्रायः डेटालाई कुनै न कुनै रूपमा समूह गर्न आवश्यक पर्छ। महिनाहरू y-अक्षमा देखाउने र डेटा वितरण प्रदर्शन गर्ने प्लट सिर्जना गरौं। 1. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` ![मूल्य र महिनाको सम्बन्ध देखाउने बार चार्ट](../../../../translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ne.png) यो अधिक उपयोगी डेटा दृश्यात्मकता हो! यसले देखाउँछ कि कद्दूको उच्चतम मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षासँग मेल खान्छ? किन? --- ## 🚀 चुनौती Matplotlib ले प्रदान गर्ने विभिन्न प्रकारका दृश्यात्मकताहरू अन्वेषण गर्नुहोस्। Regression समस्याहरूका लागि कुन प्रकारका दृश्यात्मकता सबैभन्दा उपयुक्त छन्? ## [पाठपछि क्विज](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/) ## समीक्षा र आत्म अध्ययन डेटा दृश्यात्मकताका विभिन्न तरिकाहरूको अध्ययन गर्नुहोस्। उपलब्ध विभिन्न पुस्तकालयहरूको सूची बनाउनुहोस् र कुन पुस्तकालय कुन प्रकारका कार्यहरूको लागि उपयुक्त छ भनेर नोट गर्नुहोस्, जस्तै 2D दृश्यात्मकता बनाम 3D दृश्यात्मकता। तपाईंले के पत्ता लगाउनुहुन्छ? ## असाइनमेन्ट [दृश्यात्मकता अन्वेषण गर्नुहोस्](assignment.md) --- **अस्वीकरण**: यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी यथासम्भव शुद्धता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।