# Scikit-learn वापरून Regression मॉडेल तयार करा: डेटा तयार करा आणि व्हिज्युअलाइझ करा ![डेटा व्हिज्युअलायझेशन इन्फोग्राफिक](../../../../translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.mr.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 सोल्यूशन्स लागू करताना, योग्य प्रश्न विचारणे खूप महत्त्वाचे आहे, जेणेकरून तुमच्या डेटासेटची क्षमता योग्य प्रकारे उघडता येईल. या धड्यात, तुम्ही शिकाल: - मॉडेल तयार करण्यासाठी डेटा कसा तयार करायचा. - डेटा व्हिज्युअलायझेशनसाठी 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 च्या स्टँडर्ड लायब्ररी वापरून कच्चा डेटा कसा तयार करायचा ते शिकाल. तुम्ही डेटा व्हिज्युअलायझेशनसाठी विविध तंत्रे देखील शिकाल. ## केस स्टडी: 'भोपळ्यांचा बाजार' या फोल्डरमध्ये, तुम्हाला `data` फोल्डरच्या मूळ भागात [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नावाचा .csv फाइल सापडेल, ज्यामध्ये शहरांनुसार गटांमध्ये वर्गीकृत केलेल्या भोपळ्यांच्या बाजाराबद्दल 1757 ओळींचा डेटा आहे. हा डेटा [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) कडून काढलेला आहे, जो United States Department of Agriculture द्वारे वितरित केला जातो. ### डेटा तयार करणे हा डेटा सार्वजनिक डोमेनमध्ये आहे. तो USDA वेबसाइटवरून वेगवेगळ्या शहरांनुसार अनेक फाइल्समध्ये डाउनलोड केला जाऊ शकतो. खूप वेगळ्या फाइल्स टाळण्यासाठी, आम्ही सर्व शहरांचा डेटा एका स्प्रेडशीटमध्ये एकत्र केला आहे, त्यामुळे आम्ही आधीच डेटा थोडासा _तयार_ केला आहे. आता, डेटा अधिक जवळून पाहूया. ### भोपळ्यांचा डेटा - प्राथमिक निरीक्षणे तुम्हाला या डेटाबद्दल काय दिसते? तुम्ही आधीच पाहिले आहे की स्ट्रिंग्स, संख्या, रिकाम्या जागा आणि विचित्र मूल्यांचे मिश्रण आहे, ज्याचा अर्थ लावणे आवश्यक आहे. Regression तंत्र वापरून तुम्ही या डेटावर कोणता प्रश्न विचारू शकता? "एखाद्या महिन्यात विक्रीसाठी भोपळ्याची किंमत काय असेल?" हा प्रश्न विचारता येईल. पुन्हा डेटा पाहिल्यास, तुम्हाला डेटा संरचना तयार करण्यासाठी काही बदल करावे लागतील. ## व्यायाम - भोपळ्यांचा डेटा विश्लेषण करा आता [Pandas](https://pandas.pydata.org/) वापरूया, (याचा अर्थ `Python Data Analysis`) डेटा आकार देण्यासाठी उपयुक्त साधन, भोपळ्यांचा डेटा विश्लेषण आणि तयार करण्यासाठी. ### प्रथम, गहाळ तारखा तपासा तुम्हाला प्रथम गहाळ तारखा तपासण्यासाठी काही पावले उचलावी लागतील: 1. तारखांना महिन्याच्या स्वरूपात रूपांतरित करा (या US तारखा आहेत, त्यामुळे स्वरूप `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` फंक्शन वापरून, जे मूळ dataframe मधून ओळींचा गट (पहिला पॅरामीटर म्हणून पास केला जातो) आणि कॉलम्स (दुसरा पॅरामीटर म्हणून पास केला जातो) काढते. खालील प्रकरणात `:` चा अर्थ "सर्व ओळी" असा आहे. ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` ### दुसरे, भोपळ्याची सरासरी किंमत ठरवा एखाद्या महिन्यात भोपळ्याची सरासरी किंमत कशी ठरवाल याचा विचार करा. या कार्यासाठी तुम्ही कोणते कॉलम निवडाल? सूचना: तुम्हाला 3 कॉलम्सची आवश्यकता असेल. उपाय: `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)] ``` जर तुम्ही डेटा प्रिंट केला, तर तुम्हाला फक्त 415 ओळींचा डेटा दिसेल, ज्यामध्ये फक्त bushel मध्ये विकलेले भोपळे आहेत. ### पण थांबा! अजून एक गोष्ट करायची आहे तुम्ही लक्षात घेतले का की bushel प्रमाण प्रत्येक ओळीत वेगळे आहे? तुम्हाला किंमती normalize करायच्या आहेत, त्यामुळे तुम्ही bushel प्रमाणे किंमती दाखवू शकता. त्यामुळे किंमती standardize करण्यासाठी गणित करा. 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 प्रमाणे किंमत मोजूया. भोपळ्यांच्या bushels चा अभ्यास करताना, तुमच्या डेटाच्या स्वरूपाचे महत्त्व समजणे किती महत्त्वाचे आहे हे लक्षात येते! आता, तुम्ही bushel मोजमापाच्या आधारावर युनिटप्रमाणे किंमतींचे विश्लेषण करू शकता. जर तुम्ही डेटा पुन्हा प्रिंट केला, तर तुम्हाला तो standardize झालेला दिसेल. ✅ तुम्ही लक्षात घेतले का की अर्ध्या-bushel ने विकले जाणारे भोपळे खूप महाग आहेत? तुम्ही याचे कारण शोधू शकता का? सूचना: लहान भोपळे मोठ्या भोपळ्यांपेक्षा खूप महाग असतात, कदाचित कारण bushel मध्ये मोठ्या पोकळ pie भोपळ्यामुळे अधिक जागा वाया जाते. ## व्हिज्युअलायझेशन धोरणे डेटा सायंटिस्टची भूमिका म्हणजे ते ज्या डेटावर काम करत आहेत त्याची गुणवत्ता आणि स्वरूप दाखवणे. हे करण्यासाठी, ते डेटाचे वेगवेगळे पैलू दाखवणारे प्लॉट्स, ग्राफ्स, आणि चार्ट्स तयार करतात. यामुळे, ते नातेसंबंध आणि अंतर दाखवू शकतात, जे अन्यथा शोधणे कठीण असते. [![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 चे प्रदर्शन करण्यासाठी काही मूलभूत प्लॉट्स तयार करण्याचा प्रयत्न करा. मूलभूत line plot काय दाखवेल? 1. फाइलच्या सुरुवातीला Pandas आयाताखाली Matplotlib आयात करा: ```python import matplotlib.pyplot as plt ``` 1. संपूर्ण notebook पुन्हा चालवा. 1. notebook च्या तळाशी, डेटा box म्हणून प्लॉट करण्यासाठी एक सेल जोडा: ```python price = new_pumpkins.Price month = new_pumpkins.Month plt.scatter(price, month) plt.show() ``` ![प्राइस-टू-मंथ रिलेशनशिप दाखवणारा scatterplot](../../../../translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.mr.png) हा प्लॉट उपयुक्त आहे का? याबद्दल तुम्हाला काही आश्चर्य वाटते का? हा फारसा उपयुक्त नाही, कारण तो फक्त तुमच्या डेटामधील एका महिन्यातील पॉइंट्सचा प्रसार दाखवतो. ### याला उपयुक्त बनवा डेटा उपयुक्ततेने प्रदर्शित करण्यासाठी, तुम्हाला सहसा डेटा गटबद्ध करावा लागतो. चला एक प्लॉट तयार करण्याचा प्रयत्न करूया, जिथे y अक्ष महिन्यांना दर्शवतो आणि डेटा वितरण दर्शवतो. 1. गटबद्ध बार चार्ट तयार करण्यासाठी एक सेल जोडा: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` ![प्राइस-टू-मंथ रिलेशनशिप दाखवणारा बार चार्ट](../../../../translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.mr.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) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.