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.
338 lines
47 KiB
338 lines
47 KiB
# கிளஸ்டரிங் அறிமுகம்
|
|
|
|
கிளஸ்டரிங் என்பது [அன்சூப்பர்வைஸ்டு லெர்னிங்](https://wikipedia.org/wiki/Unsupervised_learning) வகையைச் சேர்ந்தது, இது ஒரு தரவுத்தொகுப்பு லேபிள் செய்யப்படாதது அல்லது அதன் உள்ளீடுகள் முன்கூட்டியே வரையறுக்கப்பட்ட வெளியீடுகளுடன் பொருந்தவில்லை என்று கருதுகிறது. இது பல்வேறு الگாரிதங்களைப் பயன்படுத்தி லேபிள் செய்யப்படாத தரவுகளைத் துலக்கி, அதில் கண்டறியப்படும் முறைப்படி குழுக்களை வழங்குகிறது.
|
|
|
|
[](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://youtu.be/esmzYhuFnds "கிளஸ்டரிங் அறிமுகம்")
|
|
|
|
> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து வீடியோவைப் பாருங்கள்: MIT-இன் ஜான் குட்டாக் கிளஸ்டரிங்கை அறிமுகப்படுத்துகிறார்.
|
|
|
|
தொழில்முறை சூழலில், கிளஸ்டரிங் சந்தை பிரிவினைத் தீர்மானிக்க, எந்த வயது குழுக்கள் எந்த பொருட்களை வாங்குகின்றன என்பதைத் தீர்மானிக்க, உதாரணமாக பயன்படுத்தப்படலாம். மற்றொரு பயன்பாடு மோசடிகளை கண்டறிதல், உதாரணமாக கிரெடிட் கார்டு பரிவர்த்தனைகளின் தரவுத்தொகுப்பில் இருந்து மோசடிகளை கண்டறிய. அல்லது நீங்கள் மருத்துவ ஸ்கேன் தொகுப்பில் கட்டிகள் இருப்பதைத் தீர்மானிக்க கிளஸ்டரிங்கைப் பயன்படுத்தலாம்.
|
|
|
|
✅ நீங்கள் வங்கிகள், e-commerce அல்லது வணிக சூழலில் 'வனத்தில்' கிளஸ்டரிங்கை எப்படி சந்தித்திருக்கிறீர்கள் என்று ஒரு நிமிடம் யோசிக்கவும்.
|
|
|
|
> 🎓 சுவாரஸ்யமாக, கிளஸ்டர் பகுப்பாய்வு 1930-களில் மனிதவியல் மற்றும் உளவியல் துறைகளில் தோன்றியது. இது எப்படி பயன்படுத்தப்பட்டிருக்கலாம் என்று நீங்கள் கற்பனை செய்ய முடியுமா?
|
|
|
|
மாற்றாக, நீங்கள் தேடல் முடிவுகளை குழுவாக்குவதற்கு பயன்படுத்தலாம் - ஷாப்பிங் இணைப்புகள், படங்கள் அல்லது மதிப்பீடுகள் மூலம், உதாரணமாக. ஒரு பெரிய தரவுத்தொகுப்பை குறைக்கவும் மேலும் நுணுக்கமான பகுப்பாய்வைச் செய்யவும் நீங்கள் விரும்பினால், கிளஸ்டரிங் பயனுள்ளதாக இருக்கும், எனவே இந்த தொழில்நுட்பத்தை மற்ற மாடல்கள் உருவாக்கப்படும் முன் தரவுகளைப் பற்றி அறிய பயன்படுத்தலாம்.
|
|
|
|
✅ உங்கள் தரவுகள் கிளஸ்டர்களில் ஒழுங்குபடுத்தப்பட்டவுடன், நீங்கள் அதற்கு ஒரு கிளஸ்டர் ஐடியை ஒதுக்குகிறீர்கள், மேலும் இந்த தொழில்நுட்பம் ஒரு தரவுத்தொகுப்பின் தனியுரிமையைப் பாதுகாக்க உதவுகிறது; நீங்கள் அதற்குப் பதிலாக கிளஸ்டர் ஐடியை குறிப்பிடலாம், மேலும் வெளிப்படையான அடையாள தரவைக் குறிப்பிடாமல். கிளஸ்டர் ஐடியை குறிப்பிடுவதற்கான மற்ற காரணங்களை நீங்கள் யோசிக்க முடியுமா?
|
|
|
|
கிளஸ்டரிங் தொழில்நுட்பங்களைப் பற்றிய உங்கள் புரிதலை இந்த [கற்றல் தொகுதியில்](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 | பொதுவான நோக்கம், inductive |
|
|
| Affinity propagation | பல, சமமற்ற கிளஸ்டர்கள், inductive |
|
|
| Mean-shift | பல, சமமற்ற கிளஸ்டர்கள், inductive |
|
|
| Spectral clustering | சில, சமமான கிளஸ்டர்கள், transductive |
|
|
| Ward hierarchical clustering | பல, கட்டுப்படுத்தப்பட்ட கிளஸ்டர்கள், transductive |
|
|
| Agglomerative clustering | பல, கட்டுப்படுத்தப்பட்ட, non Euclidean தூரங்கள், transductive |
|
|
| DBSCAN | non-flat geometry, சமமற்ற கிளஸ்டர்கள், transductive |
|
|
| OPTICS | non-flat geometry, சமமற்ற கிளஸ்டர்கள் மாறுபட்ட அடர்த்தியுடன், transductive |
|
|
| Gaussian mixtures | flat geometry, inductive |
|
|
| BIRCH | பெரிய தரவுத்தொகுப்பு வெளிப்புறங்களுடன், inductive |
|
|
|
|
> 🎓 கிளஸ்டர்களை உருவாக்குவது எப்படி என்பதைப் பற்றி நாம் தரவுப் புள்ளிகளை குழுக்களாகச் சேர்க்கும் முறையுடன் தொடர்புடையது. சில சொற்களைப் புரிந்துகொள்வோம்:
|
|
>
|
|
> 🎓 ['Transductive' vs. 'inductive'](https://wikipedia.org/wiki/Transduction_(machine_learning))
|
|
>
|
|
> Transductive inference என்பது குறிப்பிட்ட சோதனை வழக்குகளுக்கு பொருந்தும் பயிற்சி வழக்குகளிலிருந்து பெறப்படுகிறது. Inductive inference என்பது பொதுவான விதிகளை உருவாக்க பயிற்சி வழக்குகளிலிருந்து பெறப்படுகிறது, பின்னர் அவை சோதனை வழக்குகளுக்கு மட்டுமே பொருந்தும்.
|
|
>
|
|
> ஒரு உதாரணம்: உங்கள் தரவுத்தொகுப்பு பகுதியளவில் லேபிள் செய்யப்பட்டுள்ளது என்று கற்பனை செய்யுங்கள். சிலவற்றை 'records', சிலவற்றை 'cds', மற்றும் சிலவற்றை வெறுமையாகக் குறிப்பிடப்பட்டுள்ளது. உங்கள் வேலை வெறுமையானவற்றுக்கு லேபிள்களை வழங்குவது. நீங்கள் ஒரு inductive அணுகுமுறையைத் தேர்ந்தெடுத்தால், 'records' மற்றும் 'cds' தேடுவதற்கான ஒரு மாடலைப் பயிற்சி செய்து, உங்கள் லேபிள் செய்யப்படாத தரவுக்கு அந்த லேபிள்களைப் பயன்படுத்துவீர்கள். இந்த அணுகுமுறை உண்மையில் 'cassettes' என்று வகைப்படுத்துவதில் சிக்கல்களைச் சந்திக்கும். மற்றவொரு பக்கம், transductive அணுகுமுறை இந்த தெரியாத தரவுகளை மேலும் திறமையாகக் கையாளுகிறது, இது ஒரே மாதிரியான பொருட்களை ஒன்றாகக் குழுவாக்க முயற்சிக்கிறது, பின்னர் ஒரு குழுவுக்கு ஒரு லேபிளை வழங்குகிறது. இந்த வழக்கில், கிளஸ்டர்கள் 'round musical things' மற்றும் 'square musical things' ஆகியவற்றை பிரதிபலிக்கலாம்.
|
|
>
|
|
> 🎓 ['Non-flat' vs. 'flat' geometry](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)
|
|
>
|
|
> கணிதவியல் சொற்களிலிருந்து பெறப்பட்ட, non-flat vs. flat geometry என்பது புள்ளிகளுக்கிடையிலான தூரத்தை 'flat' ([Euclidean](https://wikipedia.org/wiki/Euclidean_geometry)) அல்லது 'non-flat' (non-Euclidean) கணிதவியல் முறைகளால் அளவிடுவது.
|
|
>
|
|
>'Flat' இந்த சூழலில் Euclidean geometry (இதில் சில 'plane' geometry எனக் கற்பிக்கப்படுகிறது) மற்றும் non-flat non-Euclidean geometry-யை குறிக்கிறது. கணிதவியல் மற்றும் மெஷின் லெர்னிங் ஆகிய இரு துறைகள் கணிதவியல் அடிப்படையில் உள்ளதால், கிளஸ்டர்களில் புள்ளிகளுக்கிடையிலான தூரத்தை அளவிட ஒரு பொதுவான வழி இருக்க வேண்டும், மேலும் தரவின் தன்மையைப் பொறுத்து அதை 'flat' அல்லது 'non-flat' முறையில் செய்யலாம். [Euclidean distances](https://wikipedia.org/wiki/Euclidean_distance) என்பது இரண்டு புள்ளிகளுக்கிடையிலான கோடு பகுதியின் நீளமாக அளவிடப்படுகிறது. [Non-Euclidean distances](https://wikipedia.org/wiki/Non-Euclidean_geometry) ஒரு வளைவின் sepanjang அளவிடப்படுகிறது. உங்கள் தரவுகள், காட்சிப்படுத்தப்பட்டவை, ஒரு தளத்தில் இல்லை என்று தோன்றினால், அதைச் சமாளிக்க ஒரு சிறப்பு الگாரிதத்தைப் பயன்படுத்த வேண்டும்.
|
|
>
|
|

|
|
> [Dasani Madipalli](https://twitter.com/dasani_decoded) உருவாக்கிய தகவல்படம்
|
|
>
|
|
> 🎓 ['Distances'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)
|
|
>
|
|
> கிளஸ்டர்கள் தங்கள் தூர அட்டவணையால் வரையறுக்கப்படுகின்றன, உதாரணமாக புள்ளிகளுக்கிடையிலான தூரங்கள். இந்த தூரம் சில வழிகளில் அளவிடப்படலாம். Euclidean கிளஸ்டர்கள் புள்ளி மதிப்புகளின் சராசரியால் வரையறுக்கப்படுகின்றன, மேலும் 'centroid' அல்லது மைய புள்ளி கொண்டுள்ளன. எனவே அந்த centroid-க்கு தூரம் அளவிடப்படுகிறது. Non-Euclidean தூரங்கள் 'clustroids' எனக் குறிப்பிடப்படும், மற்ற புள்ளிகளுக்கு மிக அருகிலுள்ள புள்ளி. Clustroids மாறுபட்ட வழிகளில் வரையறுக்கப்படலாம்.
|
|
>
|
|
> 🎓 ['Constrained'](https://wikipedia.org/wiki/Constrained_clustering)
|
|
>
|
|
> [Constrained Clustering](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) இந்த அன்சூப்பர்வைஸ்டு முறையில் 'semi-supervised' கற்றலை அறிமுகப்படுத்துகிறது. புள்ளிகளுக்கிடையிலான உறவுகள் 'cannot link' அல்லது 'must-link' எனக் குறிக்கப்படுகின்றன, எனவே சில விதிகள் தரவுத்தொகுப்பில் கட்டாயமாக்கப்படுகின்றன.
|
|
>
|
|
>ஒரு உதாரணம்: ஒரு الگாரிதம் லேபிள் செய்யப்படாத அல்லது பகுதியளவில் லேபிள் செய்யப்பட்ட தரவுகளில் விடப்பட்டால், அது உருவாக்கும் கிளஸ்டர்கள் தரமற்றதாக இருக்கலாம். மேலே உள்ள உதாரணத்தில், கிளஸ்டர்கள் 'round music things' மற்றும் 'square music things' மற்றும் 'triangular things' மற்றும் 'cookies' ஆகியவற்றை குழுவாக்கலாம். சில கட்டுப்பாடுகள் அல்லது விதிகளை பின்பற்ற 'கட்டுப்படுத்தப்பட்ட' தரவுத்தொகுப்பில் கொடுக்கப்பட்டால், இது الگாரிதம் சிறந்த தேர்வுகளைச் செய்ய உதவுகிறது.
|
|
>
|
|
> 🎓 'Density'
|
|
>
|
|
> 'சத்தமுள்ள' என்று கருதப்படும் தரவுகள் 'அடர்த்தியான'தாகக் கருதப்படுகின்றன. அதன் கிளஸ்டர்களில் உள்ள புள்ளிகளுக்கிடையிலான தூரங்கள், ஆய்வின் போது, மேலும் அல்லது குறைவாக அடர்த்தியாக இருக்கலாம், அல்லது 'கூட்டமாக' இருக்கலாம், எனவே இந்த தரவுகளை சரியான கிளஸ்டரிங் முறையைப் பயன்படுத்தி பகுப்பாய்வு செய்ய வேண்டும். [இந்த கட்டுரை](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) சமமற்ற கிளஸ்டர் அடர்த்தியுடன் கூடிய சத்தமுள்ள தரவுத்தொகுப்பை ஆராய K-Means கிளஸ்டரிங் மற்றும் HDBSCAN الگாரிதங்களைப் பயன்படுத்துவதற்கான வேறுபாட்டை விளக்குகிறது.
|
|
|
|
## கிளஸ்டரிங் الگாரிதங்கள்
|
|
|
|
100-க்கும் மேற்பட்ட கிளஸ்டரிங் الگாரிதங்கள் உள்ளன, மேலும் அவற்றின் பயன்பாடு தரவின் தன்மையைப் பொறுத்தது. முக்கியமான சிலவற்றைப் பற்றி பேசுவோம்:
|
|
|
|
- **Hierarchical clustering**. ஒரு பொருள் அருகிலுள்ள பொருளுக்கு அதன் அருகாமையை அடிப்படையாகக் கொண்டு வகைப்படுத்தப்பட்டால், கிளஸ்டர்கள் அதன் உறுப்பினர்களின் தூரத்தை அடிப்படையாகக் கொண்டு உருவாக்கப்படுகின்றன. Scikit-learn-இன் agglomerative clustering hierarchical ஆகும்.
|
|
|
|

|
|
> [Dasani Madipalli](https://twitter.com/dasani_decoded) உருவாக்கிய தகவல்படம்
|
|
|
|
- **Centroid clustering**. இந்த பிரபல الگாரிதம் 'k', அல்லது உருவாக்க வேண்டிய கிளஸ்டர்களின் எண்ணிக்கையைத் தேர்ந்தெடுக்க வேண்டும், அதன் பிறகு الگாரிதம் ஒரு கிளஸ்டரின் மைய புள்ளியைத் தீர்மானித்து அந்த புள்ளியைச் சுற்றி தரவுகளைச் சேர்க்கிறது. [K-means clustering](https://wikipedia.org/wiki/K-means_clustering) என்பது centroid clustering-இன் பிரபலமான பதிப்பு. மையம் அருகிலுள்ள சராசரியால் தீர்மானிக்கப்படுகிறது, எனவே பெயர். கிளஸ்டரிலிருந்து சதுர தூரம் குறைக்கப்படுகிறது.
|
|
|
|

|
|
> [Dasani Madipalli](https://twitter.com/dasani_decoded) உருவாக்கிய தகவல்படம்
|
|
|
|
- **Distribution-based clustering**. புள்ளி ஒரு கிளஸ்டருக்கு சொந்தமான சாத்தியக்கூறுகளைத் தீர்மானிக்க மற்றும் அதற்கேற்ப ஒதுக்குவதில் மையமாக இருக்கும் புள்ளிவிவர மாடலிங் அடிப்படையில் உள்ளது. Gaussian mixture முறைகள் இந்த வகையைச் சேர்ந்தவை.
|
|
|
|
- **Density-based clustering**. தரவுப் புள்ளிகள் அவற்றின் அடர்த்தியை அடிப்படையாகக் கொண்டு, அல்லது ஒன்றுக்கொன்று சுற்றி குழுக்களை அடிப்படையாகக் கொண்டு கிளஸ்டர்களுக்கு ஒதுக்கப்படுகின்றன. குழுவிலிருந்து தொலைவில் உள்ள தரவுப் புள்ளிகள் வெளிப்புறங்கள் அல்லது சத்தமாகக் கருதப்படுகின்றன. DBSCAN, Mean-shift மற்றும் OPTICS இந்த வகை கிளஸ்டரிங்கைச் சேர்ந்தவை.
|
|
|
|
- **Grid-based clustering**. பல-பரிமாண தரவுத்தொகுப்புகளுக்கு, ஒரு கிரிட் உருவாக்கப்படுகிறது மற்றும் தரவுகள் கிரிட் செல்களில் பிரிக்கப்படுகின்றன, இதனால் கிளஸ்டர்கள் உருவாக்கப்படுகின்றன.
|
|
|
|
## பயிற்சி - உங்கள் தரவுகளை கிளஸ்டர் செய்யுங்கள்
|
|
|
|
கிளஸ்டரிங் ஒரு தொழில்நுட்பமாக சரியான காட்சிப்படுத்தலால் மிகவும் உதவப்படுகிறது, எனவே நம் இசை தரவுகளை காட்சிப்படுத்துவதன் மூலம் தொடங்குவோம். இந்த பயிற்சி இந்த தரவின் தன்மைக்கு எந்த கிளஸ்டரிங் முறைகளை மிகவும் பயனுள்ளதாகப் பயன்படுத்த வேண்டும் என்பதைத் தீர்மானிக்க உதவும்.
|
|
|
|
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) பாடல் தரவுகளை இணைக்கவும். பாடல்களின் தரவுகளுடன் ஒரு dataframe ஐ ஏற்றவும். நூலகங்களை இறக்குமதி செய்து தரவுகளை வெளியிடுவதன் மூலம் இந்த தரவுகளை ஆராய தயாராகுங்கள்:
|
|
|
|
```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. DataFrame பற்றிய தகவல்களை பெற `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 |
|
|
|
|
> 🤔 க்ளஸ்டரிங் என்பது லேபிள் செய்யப்பட்ட தரவுகளை தேவையற்ற ஒரு கண்காணிக்கப்படாத முறை என்றால், ஏன் லேபிள்களுடன் இந்த தரவுகளை காட்டுகிறோம்? தரவுகளை ஆராயும் கட்டத்தில், அவை பயனுள்ளதாக இருக்கும், ஆனால் க்ளஸ்டரிங் அல்காரிதம்கள் செயல்பட அவசியமில்லை. நீங்கள் கால் தலைகளை நீக்கி, தரவுகளை கால் எண் மூலம் குறிப்பிடலாம்.
|
|
|
|
தரவின் பொதுவான மதிப்புகளை பாருங்கள். `popularity` '0' ஆக இருக்கலாம், இது எந்த தரவரிசையும் இல்லாத பாடல்களை காட்டுகிறது. அதை விரைவில் நீக்குவோம்.
|
|
|
|
1. மிகவும் பிரபலமான இசை வகைகளை கண்டறிய ஒரு barplot பயன்படுத்தவும்:
|
|
|
|
```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' என விவரிக்கப்படும் இசை வகை 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')
|
|
```
|
|
|
|
இப்போது இசை வகைகளை மீண்டும் சரிபார்க்கவும்:
|
|
|
|

|
|
|
|
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)
|
|
```
|
|
|
|

|
|
|
|
`energy` மற்றும் `loudness` இடையே மட்டுமே வலுவான தொடர்பு உள்ளது, இது ஆச்சரியமாக இல்லை, ஏனெனில் சத்தமான இசை பொதுவாக மிகவும் ஆற்றல்மிக்கதாக இருக்கும். இல்லையெனில், தொடர்புகள் ஒப்பீட்டளவில் பலவீனமாக உள்ளன. இந்த தரவிலிருந்து க்ளஸ்டரிங் அல்காரிதம் என்ன கண்டறிய முடியும் என்பதைப் பார்க்க ஆர்வமாக உள்ளது.
|
|
|
|
> 🎓 தொடர்பு காரணத்தை குறிக்காது! நமக்கு தொடர்பு பற்றிய ஆதாரம் உள்ளது, ஆனால் காரணத்தை குறிக்கும் ஆதாரம் இல்லை. [ஒரு சுவாரஸ்யமான இணையதளம்](https://tylervigen.com/spurious-correlations) இந்த புள்ளியை வலியுறுத்தும் காட்சிகளை வழங்குகிறது.
|
|
|
|
இந்த தரவுத்தொகுப்பில் ஒரு பாடலின் `popularity` மற்றும் `danceability` பற்றிய கருத்தில் ஏதேனும் ஒருமித்த நிலை உள்ளதா? ஒரு FacetGrid காட்டுகிறது, இசை வகையை பொருட்படுத்தாமல் ஒரே வட்டங்கள் வரிசையாக உள்ளன. இந்த வகைக்கு நைஜீரியர்களின் விருப்பங்கள் ஒரு குறிப்பிட்ட `danceability` நிலைக்கு ஒருமித்தமாக இருக்கிறதா?
|
|
|
|
✅ வேறு தரவுப் புள்ளிகள் (energy, loudness, speechiness) மற்றும் மேலும் அல்லது வேறு இசை வகைகளை முயற்சிக்கவும். நீங்கள் என்ன கண்டறிய முடியும்? தரவுப் புள்ளிகளின் பொதுவான பரவலைப் பார்க்க `df.describe()` அட்டவணையைப் பாருங்கள்.
|
|
|
|
### பயிற்சி - தரவுப் பரவல்
|
|
|
|
இந்த மூன்று இசை வகைகள், `danceability` பற்றிய கருத்தில், `popularity` அடிப்படையில் குறிப்பிடத்தக்க வித்தியாசம் உள்ளதா?
|
|
|
|
1. நமது மூன்று முக்கியமான இசை வகைகளின் `popularity` மற்றும் `danceability` தரவுப் பரவலை x மற்றும் y அச்சில் ஆராயவும்.
|
|
|
|
```python
|
|
sns.set_theme(style="ticks")
|
|
|
|
g = sns.jointplot(
|
|
data=df,
|
|
x="popularity", y="danceability", hue="artist_top_genre",
|
|
kind="kde",
|
|
)
|
|
```
|
|
|
|
நீங்கள் ஒரு பொதுவான ஒருமித்த புள்ளியைச் சுற்றியுள்ள வட்டங்களை கண்டறியலாம், இது புள்ளிகளின் பரவலைக் காட்டுகிறது.
|
|
|
|
> 🎓 இந்த எடுத்துக்காட்டில், தரவுகளை தொடர்ச்சியான probability density curve மூலம் பிரதிநிதித்துவப்படுத்தும் KDE (Kernel Density Estimate) கிராஃபை பயன்படுத்துகிறது. பல பரவல்களுடன் வேலை செய்யும்போது தரவுகளை விளக்க இது உதவுகிறது.
|
|
|
|
பொதுவாக, மூன்று இசை வகைகள் `popularity` மற்றும் `danceability` அடிப்படையில் சற்றே ஒருமித்தமாக இணைகின்றன. இந்த சற்றே இணைந்த தரவுகளில் க்ளஸ்டர்களைத் தீர்மானிப்பது ஒரு சவாலாக இருக்கும்:
|
|
|
|

|
|
|
|
1. ஒரு scatter plot உருவாக்கவும்:
|
|
|
|
```python
|
|
sns.FacetGrid(df, hue="artist_top_genre", height=5) \
|
|
.map(plt.scatter, "popularity", "danceability") \
|
|
.add_legend()
|
|
```
|
|
|
|
அதே அச்சுகளின் scatterplot ஒரே மாதிரியான ஒருமித்த முறைமையை காட்டுகிறது
|
|
|
|

|
|
|
|
பொதுவாக, க்ளஸ்டரிங் செய்ய, தரவுக் க்ளஸ்டர்களைக் காட்ட scatterplots பயன்படுத்தலாம், எனவே இந்த வகை காட்சியமைப்பை கையாள்வதில் நிபுணத்துவம் பெறுவது மிகவும் பயனுள்ளதாக இருக்கும். அடுத்த பாடத்தில், இந்த வடிகட்டப்பட்ட தரவுகளை எடுத்து, k-means clustering பயன்படுத்தி, இந்த தரவுகளில் ஒருமித்தமான முறையில் ஒட்டுமொத்தமாக உள்ள interesting குரூப்புகளை கண்டறிவோம்.
|
|
|
|
---
|
|
|
|
## 🚀சவால்
|
|
|
|
அடுத்த பாடத்திற்கான தயாரிப்பில், உற்பத்தி சூழலில் நீங்கள் கண்டறிந்து பயன்படுத்தக்கூடிய பல்வேறு க்ளஸ்டரிங் அல்காரிதம்கள் பற்றிய ஒரு வரைபடத்தை உருவாக்கவும். க்ளஸ்டரிங் எந்த வகையான பிரச்சினைகளை தீர்க்க முயற்சிக்கிறது?
|
|
|
|
## [பாடத்திற்குப் பிந்தைய வினாடி வினா](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](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கின்றோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளுங்கள். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. |