|
|
# క్లస్టరింగ్కు పరిచయం
|
|
|
|
|
|
క్లస్టరింగ్ అనేది ఒక రకమైన [Unsupervised Learning](https://wikipedia.org/wiki/Unsupervised_learning) దీనిలో ఒక డేటాసెట్ లేబుల్ చేయబడలేదు లేదా దాని ఇన్పుట్లు ముందుగా నిర్ణయించబడిన అవుట్పుట్స్కి సరిపోలడం లేదు అని فرضించబడుతుంది. ఇది వివిధ ఆల్గోరిథమ్స్ ఉపయోగించి లేబుల్ చేయబడని డేటాలోనూ జరిగే నమూనాలను గుర్తించి గుంపులను ఏర్పరుస్తుంది.
|
|
|
|
|
|
[](https://youtu.be/ty2advRiWJM "No One Like You by PSquare")
|
|
|
|
|
|
> 🎥 పై చిత్రాన్ని క్లిక్ చేసి వీడియోను చూడండి. మీరు క్లస్టరింగ్తో మెషిన్ లెర్నింగ్ చదువుతున్నప్పుడు, కొన్ని నైజీరియన్ డాన్స్ హాల్ పాటలను ఆనందించండి - ఇది 2014లో PSquare నుండి చాలా అభినందన పొందిన పాట.
|
|
|
|
|
|
## [పాఠం ముందు క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
### పరిచయం
|
|
|
|
|
|
[క్లస్టరింగ్](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) డేటా అన్వేషణకు చాలా ఉపయోగకరంగా ఉంటుంది. నైజీరియన్ ప్రేక్షకులు సంగీతాన్ని ఎలా వినిపిస్తారో దాని ధోరణులు మరియు నమూనాలను కనుగొనడంలో ఇది సహాయపడవచ్చా చూద్దాం.
|
|
|
|
|
|
✅ క్లస్టరింగ్ ఉపయోగాల గురించి ఒక నిమిషం ఆలోచించండి. నిజ జీవితంలో, మీరు ఒక పెద్ద లాండ్రీ ఉన్నప్పుడు మీ కుటుంబ సభ్యుల బట్టలను వేరు చేయాల్సినప్పుడు క్లస్టరింగ్ జరుగుతుంది 🧦👕👖🩲. డేటా సైన్స్లో, యూజర్ ఇష్టాలను విశ్లేషించేటప్పుడు లేదా ఏదైనా లేబుల్ చేయబడని డేటాసెట్ లక్షణాలను నిర్ధారించేటప్పుడు క్లస్టరింగ్ జరుగుతుంది. క్లస్టరింగ్ ఒక విధంగా, షాక్డ్రాయర్లాగా ఉన్న గందరగోళాన్ని అర్థం చేసుకోవడంలో సహాయపడుతుంది.
|
|
|
|
|
|
[](https://youtu.be/esmzYhuFnds "Introduction to Clustering")
|
|
|
|
|
|
> 🎥 పై చిత్రాన్ని క్లిక్ చేసి వీడియో చూడండి: MITలో జాన్ గట్టాగ్ క్లస్టరింగ్ పరిచయం చేస్తున్నారు
|
|
|
|
|
|
ప్రొఫెషనల్ వాతావరణంలో, మార్కెట్ సెగ్మెంటేషన్, వయసు సమూహాలు ఏ వస్తువుల్ని కొంటారో నిర్ణయించడం వెలుపులో క్లస్టరింగ్ ఉపయోగపడుతుంది. మరో ఉపయోగం అనామలీ డిటెక్షన్ కోసం ఉండవచ్చు, ఉదాహరణకు క్రెడిట్ కార్డ్ లావాదేవీల డేటా నుంచి మోసం గుర్తించేందుకు. లేదా మీరింత ఎప్పుడు వైద్య స్కాన్లలో ట్యూమర్లు గుర్తించడానికి క్లస్టరింగ్ చేయవచ్చు.
|
|
|
|
|
|
✅ మీరు బ్యాంకింగ్, ఈ-కామర్స్ లేదా వ్యాపార పరిస్థితుల్లో క్లస్టరింగ్ను 'వైల్డ్లో' ఎలా ఎదుర్కొన్నట్టు అనిపించిందో ఒక నిమిషం ఆలోచించండి.
|
|
|
|
|
|
> 🎓 ఆసక్తికరంగా, 1930లలో మానవ శాస్త్రం మరియు మానసికశాస్త్రంలో క్లస్టర్ విశ్లేషణ ప్రారంభమైంది. ఇది ఎలా ఉపయోగించబడిందో ఊహించగలరా?
|
|
|
|
|
|
ఇంకొకవైపు, మీరు సెర్చ్ ఫలితాలను గుంపులను (ఉదా: షాపింగ్ లింకులు, చిత్రాలు, సమీక్షలు) వేరు చేసేలా ఉపయోగించవచ్చు. పెద్ద డేటాసెట్ ను తగ్గించడానికి మరియు మరింత స్పష్టమైన విశ్లేషణ చేయడానికి క్లస్టరింగ్ సాంకేతికత ఉపయోగా ఉంటుంది, దాంతో ఈ పద్ధతి ఇతర మోడళ్ళు నిర్మించబోయేముందు డేటాను అధ్యయనం చేయడంలో సహాయపడుతుంది.
|
|
|
|
|
|
✅ ఒకసారి మీ డేటా క్లస్టర్లలో ఏర్పడిన తర్వాత, మీరు దానికి క్లస్టర్ IDని ఇవ్వాలి, మరియు ఈ సాంకేతికత డేటాసెట్ గోప్యతను కాపాడటంలో ఉపయోగపడవచ్చు; మీరు డేటా పాయింట్ను మరింత వెల్లడించే గుణాలు కాకుండా దాని క్లస్టర్ IDతో సూచించవచ్చు. మీరు ఇతర కారణాలు కూడా ఆలోచించగలరా మీరే?
|
|
|
|
|
|
ఈ [సწავర్థ మాడ్యూల్](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 | పెద్ద డేటాసెట్ దుష్టాంశాలతో, పరిశీలనాత్మక |
|
|
|
|
|
|
> 🎓 మనం క్లస్టర్లను ఎలా సృష్టిస్తామో అది డేటా పాయింట్లను గుంపులుగా ఎలా సమీకరిస్తామో ఆధారపడి ఉంటుంది. కొన్ని పదాలు అర్థం చేసుకుందాం:
|
|
|
>
|
|
|
> 🎓 ['Transductive' vs. 'inductive'](https://wikipedia.org/wiki/Transduction_(machine_learning))
|
|
|
>
|
|
|
> ప్రసారాత్మక (Transductive) సూచనాలు నిర్ధారించబడిన శిక్షణ కేసుల్లో తలపడి ఉంటాయి, అవి ప్రత్యేక పరీక్ష కేసులకు మ్యాప్ అవుతాయి. పరిశీలనాత్మక (Inductive) సూచనా శిక్షణ కేసుల నుంచి సాధారణ నియమాలుగా పొందబడి, ఆ తర్వాత మాత్రమే పరీక్ష కేసులకు వర్తింపజేయబడతాయి.
|
|
|
>
|
|
|
> ఉదాహరణ: మీ దగ్గర భాగస్వామ్యంగా లేబుల్స్ ఉన్న డేటాసెట్ ఉందని ఊహించండి. కొన్ని ‘రికార్డులు’, కొన్ని ‘సీడీలుగా’ లేబుల్స్ ఉన్నాయి, మరికొన్ని ఖాళీగా ఉన్నాయి. మీరు ఖాళీ ఉన్న వాటికి లేబుల్స్ ఇవ్వాలి. మీరు పరిశీలనాత్మక విధానం తీసుకుంటే, మీరు 'రికార్డులు' మరియు 'సీడీలు' ఉన్న డేటాను శిక్షణ ఇస్తారు తరువాత అవి లేబుల్స్ లేని డేటాకు వర్తిస్తారు. కానీ ఇది ‘కాసెట్లు’ వంటి వస్తువులను తరగతీకరించడంలో ప్రమాదం ఉంటుంది. ప్రసారాత్మక పద్ధతి, మరోవైపు, ఈ అజ్ఞాత డేటాను మరింత సమర్థవంతంగా నిర్వహిస్తుంది, ఎందుకంటే ఇది సమానమైన అంశాలను ముందుగానే గుంపుగా కూర్చి ఆ గుంపుకు ఒక లేబుల్ సృష్టిస్తుంది. ఈ సందర్భంలో క్లస్టర్లు ‘వృత్తాకార సంగీత వస్తువులు’ మరియు ‘చతురస్ర సంగీత వస్తువులు’ను సూచించవచ్చు.
|
|
|
>
|
|
|
> 🎓 ['Non-flat' vs. 'flat' geometry](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)
|
|
|
>
|
|
|
> గణిత శాస్త్ర పదజాలం నుండి పొడవుగా లేని (non-flat) మరియు పొడవుగా ఉన్న (flat) ఆకృతులు పాయింట్ల మధ్య దూరాలను కొలవడానికి సూచిస్తాయి, అవి వేరుసరైన (Euclidean) లేదా అసంపూర్ణ (non-Euclidean) గణితరీతులు అయి ఉంటాయి.
|
|
|
>
|
|
|
> ఇక్కడ 'flat' అంటే యూక్లిడియన్ హెచ్చుతగ్గుల గణితం (అందులోని కొంత ‘విమాన’ గణితంగా నేర్పబడుతుంది), non-flat అంటే non-Euclidean గణితం. మెషిన్ లెర్నింగ్ తో గణిత శాస్త్రం సంబంధం ఏమిటి? డేటా మధ్య దూరాలు కొలవడానికి సరైన పద్ధతి అవసరం ఉంటుంది, అది డేటా స్వభావాన్ని బట్టి ‘flat’ లేదా ‘non-flat’ అయి ఉంటుంది. [Euclidean distances](https://wikipedia.org/wiki/Euclidean_distance) రెండు పాయింట్ల మధ్య సোজు రేఖ పొడవును కొలుస్తుంది. [Non-Euclidean distances](https://wikipedia.org/wiki/Non-Euclidean_geometry) వక్రీకృత మార్గం పొడవును కొలుస్తుంది. మీరు డేటాను చూసి అది ఒక ప్లేన్లో (పుటారంలో) లేనట్టుంటే, మీరు ప్రత్యేక అల్గోరిథమ్ ఉపయోగించాలి.
|
|
|
>
|
|
|
>
|
|
|
> ఇంఫోగ్రాఫిక్: [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded)
|
|
|
>
|
|
|
> 🎓 ['Distances'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)
|
|
|
>
|
|
|
> క్లస్టర్లు దూరాల మ్యాట్రిక్స్ (distance matrix) ద్వారా నిర్వచించబడతాయి, ఉదా: పాయింట్ల మధ్య దూరాలు. ఈ దూరం కొలవడానికి పలు విధానాలు ఉన్నాయి. యూక్లిడియన్ క్లస్టర్లు పాయింట్ల సగటు విలువల ద్వారా నిర్వచించబడతాయి, మరియు ‘సెంట్రాయిడ్’ (గుండ్రని కేంద్రీయ బిందువు) ఉంటుంది. దూరాలు ఆ సెంట్రాయిడ్ నుంచి కొలుస్తారు. నాన్-యూక్లిడియన్ దూరాలు ‘క్లస్ట్రాయిడ్స్’ ను సూచిస్తాయి, ఇవి సమీప పాయింట్లకు అత్యంత దగ్గరగా ఉన్న బిందువులు. క్లస్ట్రాయిడ్స్ వివిధ రీతులుగా నిర్వచించబడవచ్చు.
|
|
|
>
|
|
|
> 🎓 ['Constrained'](https://wikipedia.org/wiki/Constrained_clustering)
|
|
|
>
|
|
|
> [Constrained Clustering](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) అనేది ఈ unsupervised పద్ధతిలో ‘semi-supervised’ నేర్పుదలని ప్రవేశపెడుతుంది. పాయింట్ల మధ్య సంబంధాలను ‘cannot link’ లేదా ‘must-link’ గా మార్క్ చేయబడతాయి, కాబట్టి కొన్ని నియమాలు డేటాసెట్కు అమలు చేయబడతాయి.
|
|
|
>
|
|
|
> ఉదాహరణ: ఒక ఆల్గోరిథమ్ పూర్తి లేబుల్స్ లేకపోయిన లేదా చాల భాగస్వామ్య లేబుల్స్ ఉన్న డేటా పై అమలు చేసినప్పుడు, అది తక్కువ నాణ్యత గల క్లస్టర్లను ఉత్పత్తి చేస్తుంది. పై ఉదాహరణలో, క్లస్టర్లు ‘వృత్తాకార సంగీత వస్తువులు’, ‘చతురస్ర సంగీత వస్తువులు’, ‘త్రికోణాకారాలు’ మరియు ‘కుకీస్’ గా ఏర్పడవచ్చు. కొన్ని నియమాలు ఉంటే ("ఆ వస్తువు ప్లాస్టిక్ పర్యాయంగా ఉండాలి", "ఆ వస్తువు సంగీతాన్ని ఉత్పత్తి చేయగలగాలి") ఆ నియమాలు ఆల్గోరిథమ్ను మెరుగైన ఎంపికలు చేయడానికి సహాయపడతాయి.
|
|
|
>
|
|
|
> 🎓 'Density'
|
|
|
>
|
|
|
> ‘నోయిజీ’ (శబ్దతరంగంతో) ఉన్న డేటాను ‘dense’ అని పిలుస్తారు. క్లస్టర్లలో పాయింట్ల మధ్య దూరాలు సన్నిహితంగా లేదా రద్దీగా ఉంటే, ఆ డేటా సరైన క్లస్టరింగ్ పద్ధతితో విశ్లేషించడం అవసరం. [ఈ వ్యాసం](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) శబ్దతో కూడిన అసమాన క్లస్టర్ సాంద్రత ఉన్న డేటాను K-Means క్లస్టరింగ్ మరియు HDBSCAN ఆల్గోరిథమ్స్ తో ఎలా విశ్లేషించాలో వివరించును.
|
|
|
|
|
|
## క్లస్టరింగ్ ఆల్గోరిథమ్స్
|
|
|
|
|
|
దశల వందలకు పైగా క్లస్టరింగ్ ఆల్గోరిథమ్స్ ఉన్నాయి, మరియు వాటి ఉపయోగం డేటా స్వభావంపై ఆధారపడి ఉంటుంది. ప్రధానమైన వాటిని చర్చిద్దాం:
|
|
|
|
|
|
- **హైరార్కికల్ క్లస్టరింగ్**. ఒక వస్తువు సమీపంలోని మరొక వస్తువు దగ్గరగా ఉందా అని ఆధారంగా వర్గీకరించబడితే, వారి పాయింట్ల మధ్య దూరాల ఆధారంగా క్లస్టర్లు ఏర్పడతాయి. Scikit-learn యొక్క అగ్గ్లోమరేటివ్ క్లస్టరింగ్ హైరార్కికల్ తరహా.
|
|
|
|
|
|

|
|
|
> ఇంఫోగ్రాఫిక్: [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded)
|
|
|
|
|
|
- **సెంట్రాయిడ్ క్లస్టరింగ్**. ఈ ప్రాచుర్యం పొందిన ఆల్గోరిథమ్ ‘k’ లేదా గుంపుల సంఖ్యను ఎంచుకోవాలి, ఆ తర్వాత అ الگోరిథమ్ ఒక గుంపుకు కేంద్రీయ బిందువు నిర్ణయించి ఆ చుట్టూ డేటాను సేకరిస్తుంది. [K-means క్లస్టరింగ్](https://wikipedia.org/wiki/K-means_clustering) సెంట్రాయిడ్ క్లస్టరింగ్కు ప్రముఖ రూపం. కేంద్ర బిందువు సమీప సగటు ద్వారా నిర్ణయించబడుతుంది. క్లస్టర్ నుంచి చతురస్ర దూరం తగ్గించడం లక్ష్యం.
|
|
|
|
|
|

|
|
|
> ఇంఫోగ్రాఫిక్: [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded)
|
|
|
|
|
|
- **వితరణ ఆధారిత క్లస్టరింగ్**. గణాంక మోడలింగ్ ఆధారంగా, వితరణ ఆధారిత క్లస్టరింగ్ డేటా పాయింట్ ఒక క్లస్టర్ కి చెందే అవకాశం నిర్ణయించి దానికి అనుగుణంగా కేటాయిస్తుంది. Gaussian మిశ్రమ పద్ధతులు దీనిలో ఉంటాయి.
|
|
|
|
|
|
- **సాంద్రత ఆధారిత క్లస్టరింగ్**. డేటా పాయింట్లు తమ సాంద్రత, లేదా పరస్పరం చుట్టూ ఏర్పడే గుంపుపై ఆధారపడి కేటాయించబడతాయి. గుంపుకు దూరమైన పాయింట్లు అవుట్లయర్లు లేదా శబ్దం అనిపిస్తాయి. 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Ø | ఇండీ ఆర్&బి | 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 | లేడీ డోన్లీ | నైజీరియన్ పాప్ | 2019 | 175135 | 14 | 0.894 | 0.798 | 0.611 | 0.000187 | 0.0964 | -4.961 | 0.113 | 111.087 | 4 |
|
|
|
| 4 | wanted you | rare. | ఒడున్సి (ది ఇంజిన్) | ఆఫ్రోపాప్ | 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. NULL విలువలు ఉన్నాయా లేదో డబుల్ చెక్ చేయడానికి `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')
|
|
|
```
|
|
|
|
|
|

|
|
|
|
|
|
✅ మీరు ఇంకా ఎక్కువ టాప్ విలువలు చూడాలనుకుంటే, టాప్ `[: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')
|
|
|
```
|
|
|
|
|
|
ఇప్పుడు జానర్లను మళ్ళీ చెక్ చేయండి:
|
|
|
|
|
|

|
|
|
|
|
|
1. ఈ డేటాసెట్లో టాప్ మూడు జానర్లు ఎంతో ప్రాబల్యం కలిగి ఉన్నాయి. `ఆఫ్రో డాన్స్హాల్`, `ఆఫ్రోపాప్`, మరియు `నైజీరియన్ పాప్` మీద దృష్టి పెట్టండి, అదనంగా పాపులారిటీ విలువ 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)
|
|
|
```
|
|
|
|
|
|

|
|
|
|
|
|
ఒకే బలమైన సంబంధం `ఎనర్జీ` మరియు `లౌడ్నెస్` మధ్య ఉంది, ఇది ఆశ్చర్యానికి కారణం కాదు, ఎందుకంటే గట్టిగా మాట్లాడే సంగీతం సాధారణంగా చాలా ఉత్సాహభరితంగా ఉంటుంది. మిగిలిన సంబంధాలు తక్కువగా ఉన్నాయి. ఈ డేటాను ఒక క్లస్టరింగ్ అల్గోరిథమ్ ఎలా చూడగలదో చూడడం ఆసక్తికరం.
|
|
|
|
|
|
> 🎓 సంబంధం కారణాన్ని సూచించదు! మనకు సంబంధం ఉందనే సాక్ష్యం ఉంది కానీ కారణం లేదని సాక్ష్యం లేదు. ఒక [ఆహ్లాదకర వెబ్ సైట్](https://tylervigen.com/spurious-correlations) ఈ అంశాన్ని బలపరుస్తుంది.
|
|
|
|
|
|
ఈ డేటాసెట్లో పాట పాపులారిటీ మరియు డాన్సబిలిటీ మధ్య ఎలాంటి సారూప్యత ఉంది? ఒక FacetGrid సూచిస్తుంది అన్ని జానర్లకు సంబంధం లేకుండా ఒకే కేంద్రవృత్తాలు ఉన్నాయి. నైజీరియన్ రుచులు ఈ జానర్ కోసం ఒక నిర్దిష్ట డాన్సబిలిటీ స్థాయిలో కలుసుకుంటున్నాయా?
|
|
|
|
|
|
✅ వేరే డేటాపాయింట్లు (ఎనర్జీ, లౌడ్నెస్, స్పీచినెస్) మరియు మరిన్ని లేదా వేరే సంగీత జానర్లను ప్రయత్నించండి. మీరు ఏమి కనుగొంటారో చూడండి. సాధారణ డేటా పంపిణీ కోసం `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 (కెernel Density Estimate) గ్రాఫ్ ఉపయోగిస్తుంది, ఇది డేటాను నిరంతర సాంఖ్యిక సంభావ్యత వక్రం ద్వారా ప్రదర్శిస్తుంది. ఇది అనేక పంపిణీలతో పనిచేసేప్పుడు డేటాను అర్థం చేసుకోవడంలో సహాయపడుతుంది.
|
|
|
|
|
|
సాధారణంగా, ఈ మూడు జానర్లు వారి పాపులారిటీ మరియు డాన్సబిలిటీ విషయంలో సన్నిహితంగా సరిపోతాయి. ఈ సన్నిహిత పంపిణీ డేటాలో క్లస్టర్లను నిర్ధారించడం ఒక సవాలు:
|
|
|
|
|
|

|
|
|
|
|
|
1. ఒక స్కాటర్ ప్లాట్ సృష్టించండి:
|
|
|
|
|
|
```python
|
|
|
sns.FacetGrid(df, hue="artist_top_genre", height=5) \
|
|
|
.map(plt.scatter, "popularity", "danceability") \
|
|
|
.add_legend()
|
|
|
```
|
|
|
|
|
|
అదే అక్షాల స్కాటర్ప్లాట్ సన్నిహితత్వం వంటి నమూనాను చూపిస్తుంది
|
|
|
|
|
|

|
|
|
|
|
|
సాధారణంగా, క్లస్టరింగ్ కోసం, మీరు క్లస్టర్లను చూపించడానికి స్కాటర్ప్లాట్లను ఉపయోగించవచ్చు, కాబట్టి ఈ ప్రকার విజువలైజేషన్ నైపుణ్యం అవసరం. తదుపరి పాఠంలో, ఈ ఫిల్టర్ చేయబడిన డేటాను తీసుకుని, k-means క్లస్టరింగ్ ఉపయోగించి ఆసక్తికరమైన రీతుల్లో ఓవర్ల్యాప్ అవుతున్న డేటాలో గుంపులను కనుగొంటాం.
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀సవాలు
|
|
|
|
|
|
తదుపరి పాఠం కోసం, మీరు కనుగొని ఉత్పాదక వాతావరణంలో ఉపయోగించే వివిధ క్లస్టరింగ్ అల్గోరిథమ్స్ గురించిన ఒక చార్ట్ తయారుచేయండి. ఏ రకాల సమస్యలను క్లస్టరింగ్ పరిష్కరించడానికి ప్రయత్నిస్తుంది?
|
|
|
|
|
|
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## సమీక్ష & స్వీయ అధ్యయనం
|
|
|
|
|
|
మనం క్లస్టరింగ్ అల్గోరిథమ్స్ని వర్తించే ముందు, మన dataset యొక్క స్వభావాన్ని అర్థం చేసుకోవటం మంచిది. ఈ విషయం పైపైన చదవండి [ఇక్కడ](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 --> |