# Scikit-learn वापरून एक रिग्रेशन मॉडेल तयार करा: डेटा तयार करा आणि व्हिज्युअलाइझ करा ![डेटा व्हिज्युअलायझेशन इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png) इन्फोग्राफिक: [दसानी मदीपल्ली](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 सोल्यूशन्स लागू करताना, योग्य प्रश्न विचारणे खूप महत्त्वाचे आहे, जेणेकरून तुमच्या डेटासेटची क्षमता योग्य प्रकारे उलगडता येईल. या धड्यात, तुम्ही शिकाल: - मॉडेल तयार करण्यासाठी तुमचा डेटा कसा तयार करायचा. - डेटा व्हिज्युअलायझेशनसाठी 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 प्रिंट केल्यास, तुम्हाला एक स्वच्छ, व्यवस्थित डेटासेट दिसेल, ज्यावर तुम्ही तुमचे नवीन रिग्रेशन मॉडेल तयार करू शकता. ### पण थांबा! येथे काहीतरी विचित्र आहे जर तुम्ही `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 प्रमाणे किंमत ठरवूया. भोपळ्यांच्या bushels चा अभ्यास करताना, तुमच्या डेटाच्या स्वरूपाचे समजून घेणे किती महत्त्वाचे आहे हे लक्षात येते! आता, तुम्ही 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 चे प्रदर्शन करण्यासाठी काही मूलभूत प्लॉट्स तयार करण्याचा प्रयत्न करा. मूलभूत 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](../../../../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 विविध प्रकारच्या व्हिज्युअलायझेशन ऑफर करते. कोणते प्रकार रिग्रेशन समस्यांसाठी सर्वात योग्य आहेत? ## [व्याख्यानानंतरची प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) ## पुनरावलोकन आणि स्व-अभ्यास डेटा व्हिज्युअलायझेशनचे विविध मार्ग पाहा. उपलब्ध विविध लायब्ररींची यादी तयार करा आणि कोणत्या प्रकारच्या टास्कसाठी कोणत्या लायब्ररी सर्वोत्तम आहेत ते नोंदवा, उदाहरणार्थ 2D व्हिज्युअलायझेशन विरुद्ध 3D व्हिज्युअलायझेशन. तुम्हाला काय सापडते? ## असाइनमेंट [व्हिज्युअलायझेशन एक्सप्लोर करणे](assignment.md) --- **अस्वीकरण**: हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.