You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/mr/5-Clustering/1-Visualize/README.md

340 lines
42 KiB

# क्लस्टरिंग परिचय
क्लस्टरिंग हा [अनसुपरवाइज्ड लर्निंग](https://wikipedia.org/wiki/Unsupervised_learning) चा एक प्रकार आहे जो गृहित धरतो की डेटा सेट अनलेबल्ड आहे किंवा त्याचे इनपुट पूर्वनिर्धारित आउटपुटसह जुळलेले नाहीत. यासाठी विविध अल्गोरिदम वापरून अनलेबल्ड डेटामध्येून सॉर्टिंग केले जाते आणि डेटामध्ये दिसणाऱ्या नमुन्यांनुसार गट तयार केले जातात.
[![नो वन लाईक यू बाय PSquare](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "नो वन लाईक यू बाय PSquare")
> 🎥 व्हिडिओसाठी वरच्या चित्रावर क्लिक करा. तुम्ही जेव्हा क्लस्टरिंगसह मशीन लर्निंगचा अभ्यास करत असाल, तेव्हा काही नायजेरियन डान्स हॉल ट्रॅकचा आनंद घ्या - हा PSquare चा २०१४ मधील अत्यंत लोकप्रिय गाणं आहे.
## [प्रि-लेक्चर क्विझ](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 चे John Guttag क्लस्टरिंग सादर करतात
व्यावसायिक वातावरणात, क्लस्टरिंगचा वापर मार्केट सेगमेंटेशन सारख्या गोष्टी ठरवण्यासाठी होतो, उदाहरणार्थ वेगवेगळ्या वयोगटातील लोक कोणत्या वस्तू खरेदी करतात. आणखी एक उपयोग म्हणजे अनोमली डिटेक्शन, कदाचित क्रेडिट कार्ड व्यवहारांच्या डेटामधून फसवणूक ओळखण्यासाठी. किंवा तुम्ही क्लस्टरिंग वापरू शकता वैद्यकीय स्कॅनच्या गटातील ट्यूमर्स ओळखण्यासाठी.
✅ बँकिंग, ई-कॉमर्स, किंवा व्यवसायाच्या सेटिंगमध्ये तुम्हाला क्लस्टरिंग कशी दिसली असू शकते याचा एक मिनिट विचार करा.
> 🎓 रोचक बाब म्हणजे क्लस्टर विश्लेषण १९३० च्या दशकात मानवशास्त्र आणि मानसशास्त्र क्षेत्रातून सुरू झाले. तुम्हाला कसे वापरले गेले असावे असा विचार येतो का?
पर्यायी, तुम्ही ते शोध परिणामांना गटबद्ध करण्यासाठी वापरू शकता - खरेदी लिंक्स, प्रतिमा, किंवा पुनरावलोकने या प्रमाणे. क्लस्टरिंग उपयोगी आहे जेव्हा तुमच्याकडे मोठा डेटा सेट असतो ज्याला कमी करायचे असते आणि ज्यावर अधिक तपशीलवार विश्लेषण करायचे असते, त्यामुळे ही तंत्रशास्त्र इतर मॉडेल्स तयार करण्यापूर्वी डेटाबद्दल शिकण्यासाठी वापरली जाते.
✅ एकदा तुमचा डेटा क्लस्टर्समध्ये आयोजित झाला की, तुम्ही त्याला क्लस्टर आयडी देता, आणि ही तंत्रशास्त्र डेटासेटची गोपनीयता राखण्यासाठी उपयोगी ठरू शकते; तुम्ही डेटा पॉइंटला त्याच्या ओळख पटवणाऱ्या डेटाऐवजी क्लस्टर आयडीने संदर्भित करू शकता. आणखी कोणत्या कारणांमुळे तुम्ही क्लस्टर आयडी वापराल याचा विचार करा.
क्लस्टरिंग तंत्रे अधिक सखोल समजून घ्या या [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) म्हणजे वक्ररेषेवर मोजले जाते. जर तुमचा डेटा विमानावर नसलेला दर्शवत असेल, तर तुम्हाला विशेष अल्गोरिदम वापरावा लागू शकतो.
>
![फ्लॅट वि नॉनफ्लॅट भौमिती इन्फोग्राफिक](../../../../translated_images/mr/flat-nonflat.d1c8c6e2a96110c1.webp)
> इन्फोग्राफिक: [Dasani Madipalli](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) या अनसुपरवाइज्ड पद्धतीमध्ये 'सेमी-सुपरवाइज्ड' शिक्षण आणते. पॉइंट्समधील नाते 'कनॉट लिंक' किंवा 'मस्ट लिंक' म्हणून ठरवले जाते, जे डेटासेटवर काही नियम लागू करतात.
>
> उदाहरण: जर एखाद्या अल्गोरिदमला अनलेबल्ड किंवा अर्धवट लेबल केलेल्या डेटावर मोकळा सोडले गेले, तर त्याने तयार केलेले क्लस्टर्स गुणवत्तेपासून कमी असू शकतात. वर दिलेल्या उदाहरणात, क्लस्टर्स 'गोल संगीत आयटम', 'चौरस संगीत आयटम', 'त्रिकोणी आयटम' आणि 'कुकीज' याप्रमाणे असू शकतात. पण काही मर्यादा, जसे "आयटम प्लास्टिकचा असावा", "आयटम संगीत निर्माण करू शकावा" यांसारखे नियम दिल्यास अल्गोरिदमला अधिक चांगले निर्णय घेण्यास मदत होऊ शकते.
>
> 🎓 'घनता'
>
> 'गोंधळ' असलेला डेटा घन (dense) मानला जातो. त्याच्या क्लस्टर्समधील पॉइंट्समधील अंतर तपासल्यावर ते अधिक किंवा कमी घन असू शकते, त्यामुळे योग्य क्लस्टरिंग पद्धत वापरणे गरजेचे ठरते. [हा लेख](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) K-Means क्लस्टरिंग व HDBSCAN अल्गोरिदमचा वापर करून आवाज असलेल्या डेटामधील असमान घनता कशी वेगळी आहे हे दर्शवितो.
## क्लस्टरिंग अल्गोरिदम
१०० पेक्षा जास्त क्लस्टरिंग अल्गोरिदम्स आहेत, आणि त्यांचा वापर डेटाच्या स्वरूपावर अवलंबून असतो. काही महत्त्वाच्या यावर चर्चा करूया:
- **हायरार्किकल क्लस्टरिंग**. जर एखाद्या ऑब्जेक्टची वर्गवारी जवळच्या ऑब्जेक्टच्या जवळीकनुसार केली जाते, दूरच्या नाही, तर क्लस्टर्स त्यांच्या सदस्यांच्या अंतरानुसार तयार होतात. Scikit-learn ची agglomerative clustering ही हायरार्किकल आहे.
![हायरार्किकल क्लस्टरिंग इन्फोग्राफिक](../../../../translated_images/mr/hierarchical.bf59403aa43c8c47.webp)
> इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded)
- **सेंट्रोइड क्लस्टरिंग**. ही लोकप्रिय पद्धत 'k' निवडण्याची आवश्यकता असते, म्हणजे तयार होणाऱ्या क्लस्टर्सची संख्या, ज्यानंतर अल्गोरिदम एका क्लस्टरचा केंद्र बिंदू ठरवतो आणि त्या बिंदूपाशी डेटा जमवतो. [K-means क्लस्टरिंग](https://wikipedia.org/wiki/K-means_clustering) ही सेंट्रोइड क्लस्टरिंगची एक लोकप्रिय आवृत्ती आहे. केंद्र नजीकच्या सरासरीने ठरवले जाते, त्यामुळे नाव. वर्गापासूनचा वर्गफळ अंतर कमी करावा लागतो.
![सेंट्रोइड क्लस्टरिंग इन्फोग्राफिक](../../../../translated_images/mr/centroid.097fde836cf6c918.webp)
> इन्फोग्राफिक: [Dasani Madipalli](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()
```
डेटा पुढीलप्रमाणे तपासा:
| | name | album | artist | artist_top_genre | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature |
| --- | ------------------------ | ---------------------------- | ------------------- | ---------------- | ------------ | ------ | ---------- | ------------ | ------------ | ------ | ---------------- | -------- | -------- | ----------- | ------- | -------------- |
| 0 | Sparky | Mandy & The Jungle | Cruel Santino | alternative r&b | 2019 | 144000 | 48 | 0.666 | 0.851 | 0.42 | 0.534 | 0.11 | -6.699 | 0.0829 | 133.015 | 5 |
| 1 | shuga rush | EVERYTHING YOU HEARD IS TRUE | Odunsi (The Engine) | afropop | 2020 | 89488 | 30 | 0.71 | 0.0822 | 0.683 | 0.000169 | 0.101 | -5.64 | 0.36 | 129.993 | 3 |
| 2 | LITT! | LITT! | AYLØ | indie r&b | 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 | nigerian pop | 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) | afropop | 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
<class 'pandas.core.frame.DataFrame'>
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 |
> 🤔 जर आपण क्लस्टरिंगसह काम करत असू, जे एक अनसुपर्व्हाइज्ड पद्धत आहे जे लेबल केलेल्या डेटाची गरज नाही, तर आपण हा डेटा लेबल्ससह का दाखवत आहोत? डेटाचा अन्वेषण टप्प्यात हे उपयुक्त ठरते, पण क्लस्टरिंग अल्गोरिदमसाठी ते आवश्यक नाही. तुम्ही फक्त कॉलम हेडर्स काढून फक्त कॉलम नंबरने डेटाकडे संदर्भ देऊ शकता.
डेटाच्या सामान्य मूल्यांकडे पाहा. लक्षात ठेवा की popularity '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](../../../../translated_images/mr/popular.9c48d84b3386705f.webp)
✅ अधिक टॉप मूल्ये पाहण्यासाठी, top `[:5]` मध्ये मोठी संख्या वापरा, किंवा ते काढून सर्व पाहा.
नोट करा, जेव्हा टॉप शैली 'Missing' म्हणून दिली जाते, म्हणजे स्पॉटिफायने त्याची वर्गवारी केलेली नाही, तर ती काढून टाका.
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](../../../../translated_images/mr/all-genres.1d56ef06cefbfcd6.webp)
1. या डेटासेटमध्ये टॉप तीन शैली बहुमत आहेत. आपण `afro dancehall`, `afropop` आणि `nigerian pop` यांवर लक्ष केंद्रित करूया, आणि तसेच 0 popularity मूल्य असलेली कोणतीही नोंद काढून टाकूया (म्हणजे त्यात लोकप्रियता वर्गवारी नव्हती आणि आपल्यासाठी ती नॉईज मानली जाऊ शकते):
```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](../../../../translated_images/mr/correlation.a9356bb798f5eea5.webp)
एकमेव ठळक संवाद ऊर्जा (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 (कर्नेल डेन्सिटी एस्टिमेट) ग्राफ वापरते, जी सतत शक्यता घनतेचा वक्र वापरून डेटा दर्शविते. हे आपल्याला अनेक वितरणांसोबत काम करताना डेटा समजावण्यास मदत करते.
सर्वसाधारणपणे, तीनही शैली लोकप्रियता आणि नृत्यशीलतेच्या दृष्टीने थोडक्यात एकरूप आहेत. या थोडक्यात एकरूप डेटामध्ये क्लस्टर शोधणे आव्हानात्मक ठरेल:
![distribution](../../../../translated_images/mr/distribution.9be11df42356ca95.webp)
1. एक स्कॅटर प्लॉट तयार करा:
```python
sns.FacetGrid(df, hue="artist_top_genre", height=5) \
.map(plt.scatter, "popularity", "danceability") \
.add_legend()
```
त्या अक्षांचे स्कॅटरप्लॉट समान एकरूपतेचा नमुना दर्शवितो
![Facetgrid](../../../../translated_images/mr/facetgrid.9b2e65ce707eba1f.webp)
सामान्यत: क्लस्टरिंगसाठी, तुम्ही डेटा क्लस्टर दाखवण्यासाठी स्कॅटरप्लॉट्स वापरू शकता, त्यामुळे या प्रकारच्या व्हिज्युअलायझेशनवर प्रभुत्व मिळवणे खूप उपयुक्त आहे. पुढील धड्यात, आपण हा फिल्टर केलेला डेटा घेऊन 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)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**अस्वीकरण**:
हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->