# वर्गांचे अंदाज लावण्यासाठी लॉजिस्टिक रिग्रेशन ![लॉजिस्टिक वि. लीनियर रिग्रेशन माहितीपट](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png) ## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) > ### [हे धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html) ## परिचय रिग्रेशनवरील या अंतिम धड्यात, जो एक मूलभूत _क्लासिक_ मशीन लर्निंग तंत्र आहे, आपण लॉजिस्टिक रिग्रेशनकडे पाहू. तुम्ही हे तंत्र बायनरी वर्गांचे अंदाज लावण्यासाठी पॅटर्न शोधण्यासाठी वापराल. ही कँडी चॉकलेट आहे का नाही? हा रोग संसर्गजन्य आहे का नाही? हा ग्राहक हा उत्पादन निवडेल का नाही? या धड्यात, तुम्ही शिकाल: - डेटा व्हिज्युअलायझेशनसाठी नवीन लायब्ररी - लॉजिस्टिक रिग्रेशनसाठी तंत्र ✅ या प्रकारच्या रिग्रेशनवर काम करण्याचे तुमचे ज्ञान या [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) मध्ये अधिक सखोल करा. ## पूर्वतयारी कद्दूच्या डेटावर काम केल्यानंतर, आपण आता याबाबत पुरेसे परिचित आहोत की आपल्याकडे काम करण्यासाठी एक बायनरी वर्ग आहे: `Color`. चला लॉजिस्टिक रिग्रेशन मॉडेल तयार करूया जे काही व्हेरिएबल्स दिल्यास, _एखाद्या कद्दूचा रंग काय असेल याचा अंदाज लावेल_ (नारिंगी 🎃 किंवा पांढरा 👻). > आपण रिग्रेशनबद्दलच्या धड्यांमध्ये बायनरी वर्गीकरण का बोलतो आहोत? केवळ भाषिक सोयीसाठी, कारण लॉजिस्टिक रिग्रेशन [खरं तर एक वर्गीकरण पद्धत आहे](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), जरी ती लीनियर-आधारित आहे. डेटा वर्गीकृत करण्याच्या इतर पद्धतींबद्दल पुढील धड्यांमध्ये जाणून घ्या. ## प्रश्न परिभाषित करा आपल्या उद्देशांसाठी, आपण याला 'पांढरा' किंवा 'पांढरा नाही' असे बायनरी स्वरूपात व्यक्त करू. आपल्या डेटासेटमध्ये 'पट्टेदार' हा वर्ग देखील आहे, परंतु त्याचे उदाहरण कमी असल्याने आपण त्याचा वापर करणार नाही. डेटासेटमधून null मूल्ये काढून टाकल्यानंतर तो वर्ग आपोआप गाळला जातो. > 🎃 मजेदार तथ्य: आम्ही कधी कधी पांढऱ्या कद्दूला 'भूत' कद्दू म्हणतो. त्यांना कोरणे सोपे नसते, त्यामुळे ते नारिंगी कद्दूइतके लोकप्रिय नाहीत, पण ते छान दिसतात! त्यामुळे आपण आपला प्रश्न 'भूत' किंवा 'भूत नाही' असा देखील मांडू शकतो. 👻 ## लॉजिस्टिक रिग्रेशनबद्दल लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनपेक्षा काही महत्त्वाच्या बाबतीत वेगळे आहे, जे तुम्ही यापूर्वी शिकले होते. [![शिकण्यासाठी लॉजिस्टिक रिग्रेशन समजून घेणे](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "शिकण्यासाठी लॉजिस्टिक रिग्रेशन समजून घेणे") > 🎥 वरील प्रतिमेवर क्लिक करा लॉजिस्टिक रिग्रेशनचा संक्षिप्त व्हिडिओ पाहण्यासाठी. ### बायनरी वर्गीकरण लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनसारखी वैशिष्ट्ये देत नाही. लॉजिस्टिक रिग्रेशन बायनरी वर्गाचा अंदाज लावते ("पांढरा किंवा पांढरा नाही") तर लीनियर रिग्रेशन सतत मूल्यांचा अंदाज लावू शकते, उदाहरणार्थ कद्दूच्या उत्पत्ती आणि कापणीच्या वेळेनुसार, _त्याच्या किमतीत किती वाढ होईल_. ![कद्दू वर्गीकरण मॉडेल](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png) > माहितीपट: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) ### इतर वर्गीकरण लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील आहेत, जसे की मल्टिनॉमियल आणि ऑर्डिनल: - **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त वर्ग असतात - "नारिंगी, पांढरा, आणि पट्टेदार". - **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध वर्ग असतात, जेव्हा आपण आपल्या परिणामांना तार्किकरित्या क्रमबद्ध करू इच्छितो, जसे की कद्दूंचे आकार (लहान, मध्यम, मोठा, इत्यादी). ![मल्टिनॉमियल वि. ऑर्डिनल रिग्रेशन](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png) ### व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही तुम्हाला आठवत असेल की लीनियर रिग्रेशन अधिक सहसंबंधित व्हेरिएबल्ससह चांगले कार्य करते? लॉजिस्टिक रिग्रेशन याच्या उलट आहे - व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही. हे या डेटासाठी योग्य आहे ज्यामध्ये सहसंबंध तुलनेने कमकुवत आहेत. ### तुम्हाला स्वच्छ डेटाची गरज आहे लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अधिक अचूक परिणाम देते; आपले छोटे डेटासेट या कार्यासाठी आदर्श नाही, त्यामुळे हे लक्षात ठेवा. [![डेटा विश्लेषण आणि तयारी](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "डेटा विश्लेषण आणि तयारी") > 🎥 वरील प्रतिमेवर क्लिक करा लीनियर रिग्रेशनसाठी डेटा तयार करण्याचा व्हिडिओ पाहण्यासाठी. ✅ अशा प्रकारच्या डेटाचा विचार करा जो लॉजिस्टिक रिग्रेशनसाठी योग्य असेल. ## व्यायाम - डेटा स्वच्छ करा सुरुवातीला, डेटा थोडा स्वच्छ करा, null मूल्ये काढून टाका आणि फक्त काही स्तंभ निवडा: 1. खालील कोड जोडा: ```python columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color'] pumpkins = full_pumpkins.loc[:, columns_to_select] pumpkins.dropna(inplace=True) ``` नेहमीप्रमाणे, तुमच्या नवीन डेटाफ्रेमवर एक नजर टाका: ```python pumpkins.info ``` ### व्हिज्युअलायझेशन - श्रेणीबद्ध प्लॉट आता तुम्ही [स्टार्टर नोटबुक](../../../../2-Regression/4-Logistic/notebook.ipynb) पुन्हा लोड केले आहे आणि कद्दू डेटा स्वच्छ केला आहे, ज्यामुळे काही व्हेरिएबल्ससह डेटासेट जतन केले आहे, ज्यामध्ये `Color` समाविष्ट आहे. चला नोटबुकमध्ये डेटाफ्रेम व्हिज्युअलाइझ करूया, एका वेगळ्या लायब्ररीचा वापर करून: [Seaborn](https://seaborn.pydata.org/index.html), जी आपण यापूर्वी वापरलेल्या Matplotlib वर आधारित आहे. Seaborn तुमचा डेटा व्हिज्युअलाइझ करण्याचे काही छान मार्ग ऑफर करते. उदाहरणार्थ, तुम्ही `Variety` आणि `Color` च्या डेटाचे वितरण श्रेणीबद्ध प्लॉटमध्ये तुलना करू शकता. 1. `catplot` फंक्शन वापरून असा प्लॉट तयार करा, आपल्या कद्दू डेटाचा (`pumpkins`) वापर करा आणि प्रत्येक कद्दू श्रेणीसाठी (नारिंगी किंवा पांढरा) रंग मॅपिंग निर्दिष्ट करा: ```python import seaborn as sns palette = { 'ORANGE': 'orange', 'WHITE': 'wheat', } sns.catplot( data=pumpkins, y="Variety", hue="Color", kind="count", palette=palette, ) ``` ![व्हिज्युअलाइज्ड डेटाचा ग्रिड](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png) डेटा पाहून, तुम्ही `Color` डेटा `Variety` शी कसा संबंधित आहे हे पाहू शकता. ✅ या श्रेणीबद्ध प्लॉटवरून, तुम्ही कोणत्या मनोरंजक अन्वेषणांची कल्पना करू शकता? ### डेटा पूर्व-प्रक्रिया: फीचर आणि लेबल एन्कोडिंग आमच्या कद्दू डेटासेटमध्ये सर्व स्तंभांसाठी स्ट्रिंग मूल्ये आहेत. श्रेणीबद्ध डेटासह काम करणे मानवांसाठी सोपे आहे, परंतु मशीनसाठी नाही. मशीन लर्निंग अल्गोरिदम्ससाठी संख्यात्मक डेटा चांगला कार्य करतो. म्हणूनच, एन्कोडिंग हा डेटा पूर्व-प्रक्रिया टप्प्यातील एक महत्त्वाचा टप्पा आहे, कारण तो श्रेणीबद्ध डेटाला संख्यात्मक डेटामध्ये रूपांतरित करण्यास सक्षम करतो, कोणतीही माहिती गमावल्याशिवाय. चांगले एन्कोडिंग चांगले मॉडेल तयार करण्यास मदत करते. ... गोंधळ मॅट्रिक्सचा अचूकता आणि पुनर्प्राप्तीशी काय संबंध आहे? लक्षात ठेवा, वर प्रिंट केलेल्या वर्गीकरण अहवालाने अचूकता (0.85) आणि पुनर्प्राप्ती (0.67) दर्शवली होती. अचूकता = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461 पुनर्प्राप्ती = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666 ✅ प्रश्न: गोंधळ मॅट्रिक्सनुसार मॉडेलने कसे काम केले? उत्तर: वाईट नाही; बऱ्याच खऱ्या नकारात्मक आहेत पण काही खोट्या नकारात्मक देखील आहेत. चला गोंधळ मॅट्रिक्सच्या TP/TN आणि FP/FN मॅपिंगच्या मदतीने आपण पूर्वी पाहिलेल्या संज्ञा पुन्हा पाहूया: 🎓 अचूकता: TP/(TP + FP) पुनर्प्राप्त केलेल्या उदाहरणांमध्ये संबंधित उदाहरणांचे प्रमाण (उदा. कोणते लेबल योग्य प्रकारे लेबल केले गेले) 🎓 पुनर्प्राप्ती: TP/(TP + FN) पुनर्प्राप्त केलेल्या संबंधित उदाहरणांचे प्रमाण, योग्य प्रकारे लेबल केले गेले असो किंवा नसो 🎓 f1-स्कोअर: (2 * अचूकता * पुनर्प्राप्ती)/(अचूकता + पुनर्प्राप्ती) अचूकता आणि पुनर्प्राप्तीचे वजनित सरासरी, सर्वोत्तम 1 आणि सर्वात वाईट 0 🎓 समर्थन: पुनर्प्राप्त केलेल्या प्रत्येक लेबलच्या घटना संख्या 🎓 अचूकता: (TP + TN)/(TP + TN + FP + FN) नमुन्यासाठी अचूकपणे अंदाज केलेल्या लेबल्सचा टक्केवारी. 🎓 मॅक्रो सरासरी: प्रत्येक लेबलसाठी वजन न घेता मेट्रिक्सची सरासरी गणना, लेबल असमतोल विचारात न घेता. 🎓 वजनित सरासरी: प्रत्येक लेबलसाठी मेट्रिक्सची सरासरी गणना, समर्थनाने (प्रत्येक लेबलसाठी खऱ्या उदाहरणांची संख्या) त्यांना वजन देऊन लेबल असमतोल विचारात घेणे. ✅ तुम्हाला वाटते का की तुम्हाला तुमच्या मॉडेलने खोट्या नकारात्मक संख्या कमी करायची असल्यास कोणते मेट्रिक पाहावे? ## या मॉडेलचा ROC वक्र व्हिज्युअलाइझ करा [![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") > 🎥 ROC वक्रचे संक्षिप्त व्हिडिओ अवलोकन पाहण्यासाठी वरील प्रतिमेवर क्लिक करा चला आणखी एक व्हिज्युअलायझेशन करूया ज्यामध्ये तथाकथित 'ROC' वक्र पाहता येईल: ```python from sklearn.metrics import roc_curve, roc_auc_score import matplotlib import matplotlib.pyplot as plt %matplotlib inline y_scores = model.predict_proba(X_test) fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) fig = plt.figure(figsize=(6, 6)) plt.plot([0, 1], [0, 1], 'k--') plt.plot(fpr, tpr) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('ROC Curve') plt.show() ``` Matplotlib वापरून, मॉडेलचा [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) किंवा ROC प्लॉट करा. ROC वक्र सामान्यतः वर्गीकरणाच्या खऱ्या आणि खोट्या सकारात्मक बाबींचा आढावा घेण्यासाठी वापरले जातात. "ROC वक्रमध्ये सामान्यतः Y अक्षावर खऱ्या सकारात्मक दर आणि X अक्षावर खोट्या सकारात्मक दर असतो." त्यामुळे वक्राची तीव्रता आणि मध्यरेषा व वक्र यामधील जागा महत्त्वाची असते: तुम्हाला अशी वक्र हवी आहे जी लवकर वर आणि रेषेवर जाते. आमच्या बाबतीत, सुरुवातीला काही खोट्या सकारात्मक आहेत आणि नंतर रेषा योग्य प्रकारे वर जाते: ![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png) शेवटी, Scikit-learn च्या [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) वापरून प्रत्यक्ष 'Area Under the Curve' (AUC) गणना करा: ```python auc = roc_auc_score(y_test,y_scores[:,1]) print(auc) ``` परिणाम `0.9749908725812341` आहे. AUC 0 ते 1 पर्यंत असते, त्यामुळे तुम्हाला मोठा स्कोअर हवा आहे, कारण 100% अचूक अंदाज करणारे मॉडेल 1 चा AUC असेल; या प्रकरणात, मॉडेल _खूप चांगले_ आहे. वर्गीकरणावरील भविष्यातील धड्यांमध्ये, तुम्ही तुमच्या मॉडेलचे स्कोअर सुधारण्यासाठी पुनरावृत्ती कशी करायची ते शिकाल. पण सध्या, अभिनंदन! तुम्ही हे पुनरावृत्ती धडे पूर्ण केले आहेत! --- ## 🚀चॅलेंज लॉजिस्टिक रिग्रेशनबद्दल अजून बरेच काही समजून घेण्यासारखे आहे! पण शिकण्याचा सर्वोत्तम मार्ग म्हणजे प्रयोग करणे. अशा प्रकारच्या विश्लेषणासाठी योग्य असलेला डेटासेट शोधा आणि त्यावर मॉडेल तयार करा. तुम्हाला काय शिकायला मिळते? टिप: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) वर मनोरंजक डेटासेट्स शोधा. ## [पाठानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/) ## पुनरावलोकन आणि स्व-अभ्यास [स्टॅनफोर्डच्या या पेपर](https://web.stanford.edu/~jurafsky/slp3/5.pdf) च्या पहिल्या काही पृष्ठे वाचा ज्यामध्ये लॉजिस्टिक रिग्रेशनसाठी काही व्यावहारिक उपयोग दिले आहेत. आपण आतापर्यंत अभ्यासलेल्या रिग्रेशन प्रकारांपैकी कोणत्या प्रकारासाठी कोणते कार्य अधिक योग्य आहे याचा विचार करा. काय सर्वोत्तम कार्य करेल? ## असाइनमेंट [पुनरावृत्ती रिग्रेशन पुन्हा प्रयत्न करा](assignment.md) --- **अस्वीकरण**: हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.