# क्लस्टरिङ्को परिचय क्लस्टरिङ्को प्रकार हो [अनुपर्यवेक्षित सिकाइ](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 को John Guttag ले क्लस्टरिङ्गको परिचय गराउँछन् पेशागत परिवेशमा, क्लस्टरिङ बजार खंडीकरण जस्ता कुरा निर्धारण गर्न प्रयोग गरिन्छ, जस्तै कुन उमेर समूहले कुन वस्तुहरू किन्छ। अर्को उपयोग अनियमितता पत्ता लगाउने जस्तै क्रेडिट कार्ड कारोबार डेटा सेटबाट ठगी पत्ता लगाउन सकिन्छ। वा तपाईं मेडिकल स्क्यानहरूको ब्याचमा ट्युमरहरू पत्ता लगाउन क्लस्टरिङ प्रयोग गर्न सक्नुहुन्छ। ✅ सोच्नुहोस् तपाईंले बैंकिङ, ई-वाणिज्य, वा व्यवसाय सेटिङमा 'जङ्गल'मा क्लस्टरिङ कसरी भेट्टाउनुभएको छ। > 🎓 रोचक कुरा, क्लस्टर विश्लेषण 1930 को दशकमा मानवशास्त्र र मनोविज्ञानका क्षेत्रहरूमा उत्पन्न भएको थियो। तपाईं सोच्न सक्नुहुन्छ यसलाई कसरी प्रयोग गरिएको हुनसक्छ? अर्को विकल्पको रूपमा, तपाईं खोजी परिणामहरूलाई समूह गर्न सक्नुहुन्छ - उदाहरणका लागि किनमेल लिङ्कहरू, तस्वीरहरू, वा समीक्षा द्वारा। ठूलो डेटा सेट हुनुहुँदा यसलाई कम गर्न र थप सूक्ष्म विश्लेषण गर्न क्लस्टरिङ उपयोगी हुन्छ, यसैले यो प्रविधि अरू मोडेल निर्माण गर्नु अघि डेटा बारे सिक्न प्रयोग गर्न सकिन्छ। ✅ एकपटक तपाईंको डेटा क्लस्टरहरूमा व्यवस्थित भएपछि, तपाईंले यसलाई क्लस्टर आइडि दिनुहुन्छ र यो प्रविधि डेटा सेटको गोपनीयता सुरक्षित राख्न पनि उपयोगी हुन्छ; तपाईं डेटा पोइन्टलाई पहिचानयोग्य डाटाको सट्टा क्लस्टर आइडिले जनाउन सक्नुहुन्छ। अरू के कारणहरूले तपाईंलाई क्लस्टर आइडि प्रयोग गर्न प्रेरित गर्नेछन्? क्लस्टरिङ प्रविधिहरूको थप बुझाइका लागि यो [Learn मोड्युल](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/ne/flat-nonflat.d1c8c6e2a96110c1.webp) > इन्फोग्राफिक द्वारा [दासानी मडिपल्ली](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 एल्गोरिदम प्रयोग गरेर यस्तो शोरयुक्त डेटा सेटको असमान क्लस्टर घनत्वलाई कसरी व्याख्या गर्ने देखाउँछ। ## क्लस्टरिङ एल्गोरिदमहरू १०० भन्दा बढी क्लस्टरिङ एल्गोरिदमहरू छन्, र तिनीहरूको प्रयोग डेटा को प्रकृतिमा निर्भर हुन्छ। केही प्रमुख एल्गोरिदमहरू छलफल गरौं: - **हायरेरार्किकल क्लस्टरिङ**। यदि कुनै वस्तु नजिकैको वस्तुसँगको नजिकाइले वर्गीकृत गरिएको हो भने, यो वस्तुको सदस्यहरूको दूरी अनुसार अन्य वस्तुसँग क्लस्टरहरू बनाइन्छ। Scikit-learn को agglomerative क्लस्टरिङ हायरेरार्किकल हो। ![हायरेरार्किकल क्लस्टरिङ इन्फोग्राफिक](../../../../translated_images/ne/hierarchical.bf59403aa43c8c47.webp) > इन्फोग्राफिक द्वारा [दासानी मडिपल्ली](https://twitter.com/dasani_decoded) - **सेंट्रोइड क्लस्टरिङ**। यो लोकप्रिय एल्गोरिदम क्लस्टरहरूको संख्या 'k' छान्न आवश्यक छ, त्यसपछि एल्गोरिदमले क्लस्टरको केन्द्र बिन्दु निर्धारण गर्छ र त्यस वरिपरि डाटा जम्मा गर्छ। [K-means क्लस्टरिङ](https://wikipedia.org/wiki/K-means_clustering) सेंट्रोइड क्लस्टरिङको लोकप्रिय रूप हो। केन्द्र सबैभन्दा नजिकको औसत द्वारा निर्धारण हुन्छ। वर्गमूल दूरी न्यूनतम गरिन्छ। ![सेंट्रोइड क्लस्टरिङ इन्फोग्राफिक](../../../../translated_images/ne/centroid.097fde836cf6c918.webp) > इन्फोग्राफिक द्वारा [दासानी मडिपल्ली](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() ``` डेटा को केही पहिलो पंक्तिहरू जाँच गर्नुहोस्: | | नाम | एल्बम | कलाकार | कलाकार_शीर्ष_शैली | रिलिज_मिति | अवधि | लोकप्रियता | नृत्यशीलता | ध्वनिकता | ऊर्जा | वाद्यत्व | जीवितता | तीव्रता | भाषणशीलता | टेम्पो | समय-हस्ताक्षर | | --- | ------------------------ | -------------------------- | ------------------- | ----------------- | ----------- | ------ | ----------- | ------------ | ------------ | -------- | ----------------- | -------- | ---------- | ------------ | --------- | --------------- | | 0 | Sparky | Mandy & The Jungle | Cruel Santino | वैकल्पिक आर&बी | 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) | अफ्रोपप | 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 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') ``` ![most popular](../../../../translated_images/ne/popular.9c48d84b3386705f.webp) ✅ यदि तपाईं बढी शीर्ष मानहरू हेर्न चाहनुहुन्छ भने, शीर्ष `[: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](../../../../translated_images/ne/all-genres.1d56ef06cefbfcd6.webp) 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](../../../../translated_images/ne/correlation.a9356bb798f5eea5.webp) एकमात्र कडा सम्बन्ध `energy` र `loudness` बीच छ, जुन आश्चर्यजनक छैन, किनकि जोरदार संगीत प्रायः ऊर्जा सम्पन्न हुन्छ। अन्यथा, सम्बन्धहरू तुलनात्मक रुपमा कमजोर छन्। यो डाटाबाट क्लस्टरिङ एल्गोरिद्मले के बनाउन सक्छ हेरिनलाइ रोचक हुनेछ। > 🎓 कृपया ध्यान दिनुहोस् कि सम्बन्धले कारणत्वलाई जनाउँदैन! हामीसँग सम्बन्धको प्रमाण छ तर कारणत्वको प्रमाण छैन। एक [रोचक वेब साइट](https://tylervigen.com/spurious-correlations) ले यस बिन्दुमा जोड दिनका लागि केही दृश्य सामग्रीहरू छन्। के यो डेटासेटमा गीतको अनुभूत लोकप्रियता र नृत्ययोग्यता (danceability) बीच कुनै संगम छ? एक 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](../../../../translated_images/ne/distribution.9be11df42356ca95.webp) 1. स्क्याटर प्लट बनाउनुहोस्: ```python sns.FacetGrid(df, hue="artist_top_genre", height=5) \ .map(plt.scatter, "popularity", "danceability") \ .add_legend() ``` उही अक्षहरूको स्क्याटरप्लटले पनि समान संगमको ढाँचा देखाउँछ ![Facetgrid](../../../../translated_images/ne/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) --- **अस्वीकरण**: यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं।