# क्लस्टरिंगची ओळख क्लस्टरिंग हा [अनसुपरवाइज्ड लर्निंग](https://wikipedia.org/wiki/Unsupervised_learning) चा एक प्रकार आहे, जो गृहीत धरतो की डेटासेट लेबल नसलेला आहे किंवा त्याच्या इनपुट्सना पूर्वनिर्धारित आउटपुट्सशी जुळवलेले नाही. हा विविध अल्गोरिदम्सचा वापर करून लेबल नसलेल्या डेटामधून गट तयार करतो, जे डेटामधील पॅटर्न्सवर आधारित असतात. [![PSquare च्या "No One Like You"](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "PSquare च्या 'No One Like You' गाण्याचा व्हिडिओ") > 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी. क्लस्टरिंगसह मशीन लर्निंग शिकताना, काही नायजेरियन डान्स हॉल गाणी ऐका - हे PSquare चं 2014 मधील खूप लोकप्रिय गाणं आहे. ## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) ### परिचय [क्लस्टरिंग](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) डेटाच्या शोधासाठी खूप उपयुक्त आहे. चला पाहूया की नायजेरियन प्रेक्षक संगीत कसे ऐकतात यामध्ये ट्रेंड्स आणि पॅटर्न्स शोधण्यात ते कसे मदत करू शकते. ✅ क्लस्टरिंगच्या उपयोगांबद्दल विचार करण्यासाठी एक मिनिट घ्या. वास्तविक जीवनात, क्लस्टरिंग तेव्हा होते जेव्हा तुमच्याकडे कपड्यांचा ढीग असतो आणि तुम्हाला तुमच्या कुटुंबातील सदस्यांचे कपडे वेगळे करायचे असतात 🧦👕👖🩲. डेटा सायन्समध्ये, क्लस्टरिंगचा उपयोग वापरकर्त्याच्या पसंतींचे विश्लेषण करण्यासाठी किंवा कोणत्याही लेबल नसलेल्या डेटासेटच्या वैशिष्ट्यांचा निर्धारण करण्यासाठी होतो. एका प्रकारे, क्लस्टरिंग गोंधळाला समजून घेण्यास मदत करते, जसे की सॉक्सच्या ड्रॉवरला. [![मशीन लर्निंगची ओळख](https://img.youtube.com/vi/esmzYhuFnds/0.jpg)](https://youtu.be/esmzYhuFnds "क्लस्टरिंगची ओळख") > 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: MIT चे जॉन गुटटॅग क्लस्टरिंगची ओळख करून देतात. व्यावसायिक सेटिंगमध्ये, क्लस्टरिंगचा उपयोग बाजार विभागणीसाठी, कोणत्या वयोगटातील लोक कोणती उत्पादने खरेदी करतात हे ठरवण्यासाठी केला जाऊ शकतो. आणखी एक उपयोग म्हणजे अनोमली डिटेक्शन, जसे की क्रेडिट कार्ड व्यवहारांच्या डेटासेटमधून फसवणूक शोधणे. किंवा तुम्ही वैद्यकीय स्कॅन्सच्या बॅचमधून ट्युमर्स शोधण्यासाठी क्लस्टरिंगचा उपयोग करू शकता. ✅ विचार करा की तुम्ही बँकिंग, ई-कॉमर्स किंवा व्यवसायाच्या सेटिंगमध्ये 'क्लस्टरिंग' कधी अनुभवले आहे का? > 🎓 मनोरंजक गोष्ट म्हणजे, क्लस्टर विश्लेषणाची सुरुवात 1930 च्या दशकात मानववंशशास्त्र आणि मानसशास्त्राच्या क्षेत्रांमध्ये झाली. तुम्ही कल्पना करू शकता का की त्याचा उपयोग कसा केला गेला असेल? याशिवाय, तुम्ही शोध परिणाम गटबद्ध करण्यासाठी याचा उपयोग करू शकता - जसे की खरेदीसाठी लिंक्स, प्रतिमा किंवा पुनरावलोकने. जेव्हा तुमच्याकडे मोठा डेटासेट असतो आणि तुम्हाला तो कमी करायचा असतो आणि त्यावर अधिक सखोल विश्लेषण करायचे असते, तेव्हा क्लस्टरिंग उपयुक्त ठरते. त्यामुळे इतर मॉडेल्स तयार करण्यापूर्वी डेटाबद्दल शिकण्यासाठी ही तंत्रे वापरली जाऊ शकतात. ✅ एकदा तुमचा डेटा क्लस्टर्समध्ये आयोजित झाला की, तुम्ही त्याला क्लस्टर आयडी असाइन करता. ही तंत्रे डेटासेटची गोपनीयता जपण्यासाठी उपयुक्त ठरू शकतात; तुम्ही क्लस्टरमधील इतर घटकांऐवजी डेटा पॉइंटला त्याच्या क्लस्टर आयडीने संदर्भित करू शकता. तुम्ही इतर कोणत्या कारणांसाठी क्लस्टर आयडीचा उपयोग करू शकता याचा विचार करा. क्लस्टरिंग तंत्रांचा सखोल अभ्यास करण्यासाठी [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) पहा. ## क्लस्टरिंग सुरू करणे [Scikit-learn मध्ये](https://scikit-learn.org/stable/modules/clustering.html) क्लस्टरिंग करण्यासाठी अनेक पद्धती आहेत. तुम्ही कोणती पद्धत निवडाल हे तुमच्या उपयोगाच्या प्रकरणावर अवलंबून असेल. डॉक्युमेंटेशननुसार, प्रत्येक पद्धतीचे विविध फायदे आहेत. Scikit-learn द्वारे समर्थित पद्धती आणि त्यांच्या योग्य उपयोग प्रकरणांचे एक साधे टेबल येथे दिले आहे: | पद्धतीचे नाव | उपयोग प्रकरण | | :--------------------------- | :-------------------------------------------------------------------- | | K-Means | सामान्य उपयोग, इंडक्टिव | | Affinity propagation | अनेक, असमान क्लस्टर्स, इंडक्टिव | | Mean-shift | अनेक, असमान क्लस्टर्स, इंडक्टिव | | Spectral clustering | काही, समान क्लस्टर्स, ट्रान्सडक्टिव | | Ward hierarchical clustering | अनेक, मर्यादित क्लस्टर्स, ट्रान्सडक्टिव | | Agglomerative clustering | अनेक, मर्यादित, नॉन-युक्लिडियन अंतर, ट्रान्सडक्टिव | | DBSCAN | नॉन-फ्लॅट जिओमेट्री, असमान क्लस्टर्स, ट्रान्सडक्टिव | | OPTICS | नॉन-फ्लॅट जिओमेट्री, असमान क्लस्टर्स, बदलत्या घनतेसह, ट्रान्सडक्टिव | | Gaussian mixtures | फ्लॅट जिओमेट्री, इंडक्टिव | | BIRCH | मोठा डेटासेट, आउटलायर्ससह, इंडक्टिव | > 🎓 क्लस्टर्स कसे तयार करायचे हे डेटापॉइंट्सना गटांमध्ये कसे एकत्र करायचे यावर अवलंबून असते. चला काही शब्दसंग्रह समजून घेऊया: > > 🎓 ['ट्रान्सडक्टिव' वि. 'इंडक्टिव'](https://wikipedia.org/wiki/Transduction_(machine_learning)) > > ट्रान्सडक्टिव इनफरन्स हे विशिष्ट टेस्ट केसेसशी जुळणाऱ्या निरीक्षित ट्रेनिंग केसेसवरून तयार होते. इंडक्टिव इनफरन्स हे सामान्य नियमांवरून तयार होते, जे नंतर टेस्ट केसेसवर लागू केले जातात. > > उदाहरण: समजा तुमच्याकडे अर्धवट लेबल असलेला डेटासेट आहे. काही गोष्टी 'रेकॉर्ड्स', काही 'सीडीज', आणि काही रिकाम्या आहेत. तुमचे काम म्हणजे रिकाम्यांना लेबल देणे. जर तुम्ही इंडक्टिव दृष्टिकोन निवडला, तर तुम्ही 'रेकॉर्ड्स' आणि 'सीडीज' शोधण्यासाठी एक मॉडेल ट्रेन कराल आणि तुमच्या लेबल नसलेल्या डेटावर ती लेबल्स लागू कराल. हा दृष्टिकोन 'कॅसेट्स' वर्गीकृत करण्यात अडचणीत येईल. ट्रान्सडक्टिव दृष्टिकोन मात्र, अशा अज्ञात डेटाला अधिक प्रभावीपणे हाताळतो, कारण तो समान वस्तूंना गटांमध्ये एकत्र करतो आणि नंतर गटाला लेबल लागू करतो. या प्रकरणात, क्लस्टर्स 'गोल संगीत गोष्टी' आणि 'चौरस संगीत गोष्टी' यांचे प्रतिबिंबित करू शकतात. > > 🎓 ['नॉन-फ्लॅट' वि. 'फ्लॅट' जिओमेट्री](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering) > > गणितीय संज्ञांमधून व्युत्पन्न, नॉन-फ्लॅट वि. फ्लॅट जिओमेट्री म्हणजे पॉइंट्समधील अंतर मोजण्याच्या पद्धतींना सूचित करते, ज्या 'फ्लॅट' ([युक्लिडियन](https://wikipedia.org/wiki/Euclidean_geometry)) किंवा 'नॉन-फ्लॅट' (नॉन-युक्लिडियन) असतात. > >'फ्लॅट' म्हणजे युक्लिडियन जिओमेट्री (ज्याचा काही भाग 'प्लेन' जिओमेट्री म्हणून शिकवला जातो), आणि 'नॉन-फ्लॅट' म्हणजे नॉन-युक्लिडियन जिओमेट्री. मशीन लर्निंगमध्ये जिओमेट्रीचा काय संबंध? गणितावर आधारित या दोन क्षेत्रांमध्ये, क्लस्टर्समधील पॉइंट्समधील अंतर मोजण्यासाठी एक सामान्य पद्धत असणे आवश्यक आहे, आणि ती डेटा निसर्गावर अवलंबून 'फ्लॅट' किंवा 'नॉन-फ्लॅट' पद्धतीने केली जाऊ शकते. [युक्लिडियन अंतर](https://wikipedia.org/wiki/Euclidean_distance) दोन पॉइंट्समधील रेषेच्या लांबीने मोजले जाते. [नॉन-युक्लिडियन अंतर](https://wikipedia.org/wiki/Non-Euclidean_geometry) वक्रावरून मोजले जाते. जर तुमचा डेटा, व्हिज्युअलायझेशननुसार, प्लेनवर दिसत नसेल, तर तुम्हाला त्यासाठी विशेष अल्गोरिदम वापरण्याची गरज असू शकते. > ![फ्लॅट वि. नॉनफ्लॅट जिओमेट्री इन्फोग्राफिक](../../../../5-Clustering/1-Visualize/images/flat-nonflat.png) > इन्फोग्राफिक: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) > > 🎓 ['अंतर'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf) > > क्लस्टर्स त्यांच्या अंतर मॅट्रिक्सद्वारे परिभाषित केले जातात, उदा. पॉइंट्समधील अंतर. हे अंतर काही पद्धतींनी मोजले जाऊ शकते. युक्लिडियन क्लस्टर्स पॉइंट व्हॅल्यूजच्या सरासरीने परिभाषित केले जातात, आणि त्यात 'सेंट्रॉइड' किंवा मध्यबिंदू असतो. अंतर त्या सेंट्रॉइडपर्यंतच्या अंतराने मोजले जाते. नॉन-युक्लिडियन अंतर 'क्लस्ट्रॉइड्स'द्वारे परिभाषित केले जाते, जे इतर पॉइंट्सच्या जवळचे पॉइंट असते. क्लस्ट्रॉइड्स विविध पद्धतींनी परिभाषित केले जाऊ शकतात. > > 🎓 ['मर्यादित'](https://wikipedia.org/wiki/Constrained_clustering) > > [मर्यादित क्लस्टरिंग](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) 'सेमी-सुपरवाइज्ड' लर्निंगला या अनसुपरवाइज्ड पद्धतीत आणते. पॉइंट्समधील नातेसंबंध 'कॅनॉट लिंक' किंवा 'मस्ट-लिंक' म्हणून फ्लॅग केले जातात, त्यामुळे डेटासेटवर काही नियम लादले जातात. > >उदाहरण: जर एखाद्या अल्गोरिदमला लेबल नसलेल्या किंवा अर्धवट लेबल असलेल्या डेटावर सोडले गेले, तर त्याने तयार केलेले क्लस्टर्स खराब दर्जाचे असू शकतात. वरील उदाहरणात, क्लस्टर्स 'गोल संगीत गोष्टी', 'चौरस संगीत गोष्टी', 'त्रिकोणी गोष्टी' आणि 'कुकीज' असे गट तयार करू शकतात. जर काही मर्यादा, किंवा नियम दिले गेले ("आयटम प्लास्टिकचे असले पाहिजे", "आयटम संगीत तयार करू शकले पाहिजे") तर यामुळे अल्गोरिदमला चांगले निर्णय घेण्यास मदत होऊ शकते. > > 🎓 'घनता' > > 'गोंधळलेला' डेटा 'घन' मानला जातो. त्याच्या क्लस्टर्समधील पॉइंट्समधील अंतर अधिक किंवा कमी घन असू शकते, किंवा 'गर्दी' असलेले असू शकते, आणि त्यामुळे अशा डेटाचे विश्लेषण योग्य क्लस्टरिंग पद्धतीने करणे आवश्यक आहे. [हा लेख](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) असमान क्लस्टर घनतेसह गोंधळलेल्या डेटासेटचा शोध घेण्यासाठी K-Means क्लस्टरिंग वि. HDBSCAN अल्गोरिदम्सचा उपयोग कसा करावा हे दर्शवतो. ## क्लस्टरिंग अल्गोरिदम्स क्लस्टरिंगसाठी 100 हून अधिक अल्गोरिदम्स आहेत, आणि त्यांचा उपयोग डेटाच्या स्वरूपावर अवलंबून असतो. चला काही प्रमुख अल्गोरिदम्सबद्दल चर्चा करूया: - **हायरार्किकल क्लस्टरिंग**. जर एखादी वस्तू तिच्या जवळच्या वस्तूशी असलेल्या जवळीकतेने वर्गीकृत केली गेली, तर क्लस्टर्स त्यांच्या सदस्यांच्या इतर वस्तूंशी असलेल्या अंतरावर आधारित तयार होतात. Scikit-learn चा agglomerative clustering हा हायरार्किकल आहे. ![हायरार्किकल क्लस्टरिंग इन्फोग्राफिक](../../../../5-Clustering/1-Visualize/images/hierarchical.png) > इन्फोग्राफिक: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) - **सेंट्रॉइड क्लस्टरिंग**. हा लोकप्रिय अल्गोरिदम 'k', किंवा तयार करायच्या क्लस्टर्सच्या संख्येची निवड करण्याची आवश्यकता करतो, त्यानंतर अल्गोरिदम क्लस्टरचा मध्यबिंदू ठरवतो आणि त्या बिंदूभोवती डेटा गोळा करतो. [K-means clustering](https://wikipedia.org/wiki/K-means_clustering) हा सेंट्रॉइड क्लस्टरिंगचा लोकप्रिय प्रकार आहे. मध्यबिंदू जवळच्या सरासरीने ठरवला जातो, म्हणूनच हे नाव. क्लस्टरपासूनचे चौरस अंतर कमी केले जाते. ![सेंट्रॉइड क्लस्टरिंग इन्फोग्राफिक](../../../../5-Clustering/1-Visualize/images/centroid.png) > इन्फोग्राफिक: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) - **डिस्ट्रिब्युशन-आधारित क्लस्टरिंग**. सांख्यिकी मॉडेलिंगवर आधारित, डिस्ट्रिब्युशन-आधारित क्लस्टरिंग क्लस्टरशी संबंधित असण्याची शक्यता ठरवते आणि त्यानुसार डेटा पॉइंट असाइन करते. Gaussian mixture पद्धती या प्रकारात येतात. - **डेंसिटी-आधारित क्लस्टरिंग**. डेटा पॉइंट्स त्यांच्या घनतेच्या आधारावर क्लस्टर्समध्ये असाइन केले जातात, किंवा ते एकमेकांभोवती कसे गटबद्ध होतात यावर आधारित असतात. गटापासून दूर असलेले डेटा पॉइंट्स आउटलायर्स किंवा गोंधळ मानले जातात. DBSCAN, Mean-shift आणि OPTICS या प्रकारात येतात. - **ग्रिड-आधारित क्लस्टरिंग**. बहु-आयामी डेटासेटसाठी, एक ग्रिड तयार केला जातो आणि डेटा ग्रिडच्या सेल्समध्ये विभागला जातो, ज्यामुळे क्लस्टर्स तयार होतात. ## व्यायाम - तुमचा डेटा क्लस्टर करा क्लस्टरिंग ही तंत्रे योग्य व्हिज्युअलायझेशनने खूप मदत होते, त्यामुळे चला आपल्या संगीत डेटाचे व्हिज्युअलायझेशन करून सुरुवात करूया. हा व्यायाम आपल्याला ठरवण्यास मदत करेल की या डेटाच्या स्वरूपासाठी कोणती क्लस्टरिंग पद्धत सर्वात प्रभावीपणे वापरावी. 1. या फोल्डरमधील [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/notebook.ipynb) फाईल उघडा. 1. चांगल्या डेटा व्हिज्युअलायझेशनसाठी `Seaborn` पॅकेज आयात करा. ```python !pip install seaborn ``` 1. [_nigerian-songs.csv_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/data/nigerian-songs.csv) मधून गाण्यांचा डेटा जोडा. गाण्यांबद्दल काही डेटासह एक डेटा फ्रेम लोड करा. लायब्ररी आयात करून आणि डेटा डंप करून हा डेटा एक्सप्लोर करण्यासाठी तयार व्हा: ```python import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv("../data/nigerian-songs.csv") df.head() ``` डेटाच्या पहिल्या काही ओळी तपासा: | | नाव | अल्बम | कलाकार | कलाकाराचा टॉप जॉनर | रिलीज डेट | लांबी | लोकप्रियता | डान्सेबिलिटी | अकॉस्टिकनेस | ऊर्जा | इन्स्ट्रुमेंट | 2 | LITT! | LITT! | AYLØ | इंडी आर&बी | 2018 | 207758 | 40 | 0.836 | 0.272 | 0.564 | 0.000537 | 0.11 | -7.127 | 0.0424 | 130.005 | 4 | | 3 | Confident / Feeling Cool | Enjoy Your Life | Lady Donli | नायजेरियन पॉप | 2019 | 175135 | 14 | 0.894 | 0.798 | 0.611 | 0.000187 | 0.0964 | -4.961 | 0.113 | 111.087 | 4 | | 4 | wanted you | rare. | Odunsi (The Engine) | अफ्रोपॉप | 2018 | 152049 | 25 | 0.702 | 0.116 | 0.833 | 0.91 | 0.348 | -6.044 | 0.0447 | 105.115 | 4 | 1. डेटा फ्रेमबद्दल माहिती मिळवा, `info()` कॉल करून: ```python df.info() ``` आउटपुट असे दिसेल: ```output RangeIndex: 530 entries, 0 to 529 Data columns (total 16 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 name 530 non-null object 1 album 530 non-null object 2 artist 530 non-null object 3 artist_top_genre 530 non-null object 4 release_date 530 non-null int64 5 length 530 non-null int64 6 popularity 530 non-null int64 7 danceability 530 non-null float64 8 acousticness 530 non-null float64 9 energy 530 non-null float64 10 instrumentalness 530 non-null float64 11 liveness 530 non-null float64 12 loudness 530 non-null float64 13 speechiness 530 non-null float64 14 tempo 530 non-null float64 15 time_signature 530 non-null int64 dtypes: float64(8), int64(4), object(4) memory usage: 66.4+ KB ``` 1. शून्य मूल्यांसाठी पुन्हा तपासा, `isnull()` कॉल करून आणि त्याची बेरीज 0 असल्याची खात्री करून: ```python df.isnull().sum() ``` सर्व काही व्यवस्थित दिसत आहे: ```output name 0 album 0 artist 0 artist_top_genre 0 release_date 0 length 0 popularity 0 danceability 0 acousticness 0 energy 0 instrumentalness 0 liveness 0 loudness 0 speechiness 0 tempo 0 time_signature 0 dtype: int64 ``` 1. डेटा वर्णन करा: ```python df.describe() ``` | | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature | | ----- | ------------ | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- | | count | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | | mean | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 | | std | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 | | min | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 | | 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 | | 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 | | 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 | | max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 | > 🤔 जर आपण क्लस्टरिंगसारख्या अनसुपरवाइज्ड पद्धतीसह काम करत असू, ज्यासाठी लेबल केलेल्या डेटाची आवश्यकता नाही, तर आपण हे लेबल्ससह डेटा का दाखवत आहोत? डेटा एक्सप्लोरेशन टप्प्यात ते उपयुक्त ठरतात, परंतु क्लस्टरिंग अल्गोरिदमसाठी ते आवश्यक नाहीत. आपण कॉलम हेडर्स काढून टाकू शकता आणि डेटा कॉलम क्रमांकाने संदर्भित करू शकता. डेटाच्या सामान्य मूल्यांकडे लक्ष द्या. लक्षात घ्या की लोकप्रियता '0' असू शकते, जी अशा गाण्यांचे प्रतिनिधित्व करते ज्यांना कोणतीही रँकिंग नाही. चला ती लवकरच काढून टाकूया. 1. बारप्लॉट वापरून सर्वात लोकप्रिय शैली शोधा: ```python import seaborn as sns top = df['artist_top_genre'].value_counts() plt.figure(figsize=(10,7)) sns.barplot(x=top[:5].index,y=top[:5].values) plt.xticks(rotation=45) plt.title('Top genres',color = 'blue') ``` ![most popular](../../../../5-Clustering/1-Visualize/images/popular.png) ✅ जर तुम्हाला आणखी टॉप मूल्ये पाहायची असतील, तर टॉप `[:5]` मोठ्या मूल्याने बदला किंवा सर्व पाहण्यासाठी ते काढून टाका. लक्षात घ्या, जेव्हा टॉप शैली 'Missing' म्हणून वर्णन केली जाते, याचा अर्थ Spotify ने ती वर्गीकृत केलेली नाही, म्हणून ती काढून टाकूया. 1. गहाळ डेटा फिल्टर करून काढून टाका: ```python df = df[df['artist_top_genre'] != 'Missing'] top = df['artist_top_genre'].value_counts() plt.figure(figsize=(10,7)) sns.barplot(x=top.index,y=top.values) plt.xticks(rotation=45) plt.title('Top genres',color = 'blue') ``` आता शैली पुन्हा तपासा: ![most popular](../../../../5-Clustering/1-Visualize/images/all-genres.png) 1. आतापर्यंत, टॉप तीन शैली या डेटासेटमध्ये वर्चस्व गाजवतात. चला `afro dancehall`, `afropop`, आणि `nigerian pop` यावर लक्ष केंद्रित करूया, तसेच डेटासेटमधून 0 लोकप्रियता मूल्य असलेले काहीही काढून टाकूया (याचा अर्थ डेटासेटमध्ये लोकप्रियतेसह वर्गीकृत केले गेले नाही आणि आपल्या उद्दिष्टांसाठी ते नॉईज मानले जाऊ शकते): ```python df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')] df = df[(df['popularity'] > 0)] top = df['artist_top_genre'].value_counts() plt.figure(figsize=(10,7)) sns.barplot(x=top.index,y=top.values) plt.xticks(rotation=45) plt.title('Top genres',color = 'blue') ``` 1. डेटा कोणत्याही विशेषतः मजबूत पद्धतीने संबंधित आहे का हे पाहण्यासाठी एक जलद चाचणी करा: ```python corrmat = df.corr(numeric_only=True) f, ax = plt.subplots(figsize=(12, 9)) sns.heatmap(corrmat, vmax=.8, square=True) ``` ![correlations](../../../../5-Clustering/1-Visualize/images/correlation.png) `energy` आणि `loudness` यांच्यातील एकमेव मजबूत संबंध आहे, जे आश्चर्यकारक नाही, कारण जोरात संगीत सहसा खूप उर्जावान असते. अन्यथा, संबंध तुलनेने कमकुवत आहेत. क्लस्टरिंग अल्गोरिदम या डेटामधून काय शोधू शकतो हे पाहणे मनोरंजक असेल. > 🎓 लक्षात घ्या की संबंध म्हणजे कारण नसते! आपल्याकडे संबंधाचा पुरावा आहे परंतु कारणाचा पुरावा नाही. [एक मनोरंजक वेबसाइट](https://tylervigen.com/spurious-correlations) काही व्हिज्युअल्ससह हे मुद्दा अधोरेखित करते. या डेटासेटमध्ये गाण्याच्या लोकप्रियतेच्या आणि नृत्यक्षमतेच्या धारणा याभोवती कोणतेही अभिसरण आहे का? एक FacetGrid दर्शवते की, शैलीच्या बाबतीतही, एकसंध वर्तुळे दिसतात. नायजेरियन आवडी या शैलीसाठी नृत्यक्षमतेच्या विशिष्ट पातळीवर अभिसरण करतात का? ✅ वेगवेगळ्या डेटा पॉइंट्स (energy, loudness, speechiness) आणि अधिक किंवा वेगळ्या संगीत शैलींचा प्रयत्न करा. तुम्हाला काय सापडते? डेटा पॉइंट्सच्या सामान्य पसरटपणाचे निरीक्षण करण्यासाठी `df.describe()` टेबलकडे लक्ष द्या. ### व्यायाम - डेटा वितरण लोकप्रियतेच्या आधारे या तीन शैली त्यांच्या नृत्यक्षमतेच्या धारणा यामध्ये लक्षणीय भिन्न आहेत का? 1. दिलेल्या x आणि y अक्षांवर लोकप्रियता आणि नृत्यक्षमता यासाठी आमच्या टॉप तीन शैलींच्या डेटाचे वितरण तपासा. ```python sns.set_theme(style="ticks") g = sns.jointplot( data=df, x="popularity", y="danceability", hue="artist_top_genre", kind="kde", ) ``` तुम्हाला अभिसरणाच्या सामान्य बिंदूभोवती एकसंध वर्तुळे सापडतील, जी पॉइंट्सचे वितरण दर्शवतात. > 🎓 लक्षात घ्या की या उदाहरणात KDE (Kernel Density Estimate) ग्राफ वापरला जातो, जो डेटा सतत संभाव्यता घनतेच्या वक्राचा वापर करून दर्शवतो. हे आपल्याला एकाधिक वितरणांवर काम करताना डेटा समजून घेण्यास अनुमती देते. एकूणच, लोकप्रियता आणि नृत्यक्षमता याच्या बाबतीत तीन शैली सैलपणे संरेखित होतात. या सैल-संरेखित डेटामध्ये क्लस्टर ठरवणे एक आव्हान असेल: ![distribution](../../../../5-Clustering/1-Visualize/images/distribution.png) 1. स्कॅटर प्लॉट तयार करा: ```python sns.FacetGrid(df, hue="artist_top_genre", height=5) \ .map(plt.scatter, "popularity", "danceability") \ .add_legend() ``` त्याच अक्षांवरील स्कॅटरप्लॉट समान अभिसरण पॅटर्न दर्शवतो: ![Facetgrid](../../../../5-Clustering/1-Visualize/images/facetgrid.png) सामान्यतः, क्लस्टरिंगसाठी, तुम्ही डेटा क्लस्टर्स दर्शविण्यासाठी स्कॅटरप्लॉट्स वापरू शकता, त्यामुळे या प्रकारच्या व्हिज्युअलायझेशनमध्ये प्रवीण होणे खूप उपयुक्त आहे. पुढील धड्यात, आम्ही हे फिल्टर केलेले डेटा घेऊ आणि k-means क्लस्टरिंग वापरून या डेटामध्ये ओव्हरलॅप होणाऱ्या गटांचा शोध घेऊ. --- ## 🚀 आव्हान पुढील धड्यासाठी तयारी करताना, तुम्ही उत्पादन वातावरणात शोधू शकता आणि वापरू शकता अशा विविध क्लस्टरिंग अल्गोरिदम्सबद्दल चार्ट तयार करा. क्लस्टरिंग कोणत्या प्रकारच्या समस्यांचे निराकरण करण्याचा प्रयत्न करत आहे? ## [पोस्ट-लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/) ## पुनरावलोकन आणि स्व-अभ्यास क्लस्टरिंग अल्गोरिदम लागू करण्यापूर्वी, आपण शिकलो आहोत की, आपल्या डेटासेटच्या स्वरूपाचे समजून घेणे चांगले आहे. या विषयावर अधिक वाचा [येथे](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html) [हा उपयुक्त लेख](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/) तुम्हाला वेगवेगळ्या डेटाच्या आकारांनुसार विविध क्लस्टरिंग अल्गोरिदम्स कसे वागतात याबद्दल मार्गदर्शन करतो. ## असाइनमेंट [क्लस्टरिंगसाठी इतर व्हिज्युअलायझेशन शोधा](assignment.md) --- **अस्वीकरण**: हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.