html
पाइथन में K-Means क्लस्टरिंग लागू करना: एक चरण-दर-चरण मार्गदर्शिका
क्लस्टरिंग एक मौलिक तकनीक है अनसुपरवाइज्ड मशीन लर्निंग में, जो डेटा बिंदुओं को उनकी अंतर्निहित समानताओं के आधार पर समूहित करने में सक्षम बनाती है। विभिन्न क्लस्टरिंग अल्गोरिदम के बीच, K-Means अपनी सरलता और दक्षता के लिए विशिष्ट है। इस लेख में, हम Python की scikit-learn लाइब्रेरी का उपयोग करके K-Means क्लस्टरिंग के कार्यान्वयन के माध्यम से चलेंगे, साथ ही Yellowbrick लाइब्रेरी का उपयोग करके विज़ुअलाइज़ेशन के साथ सबसे उपयुक्त क्लस्टर की संख्या निर्धारित करेंगे।
विषय सूची
- क्लस्टरिंग का परिचय
- पर्यावरण सेट करना
- डेटासेट बनाना और एक्सप्लोर करना
- एल्बो विधि के साथ क्लस्टरों की सर्वोत्तम संख्या निर्धारित करना
- K-Means क्लस्टरिंग लागू करना
- निष्कर्ष और अगले कदम
क्लस्टरिंग का परिचय
क्लस्टरिंग में एक डेटासेट को समूहों, या क्लस्टरों, में विभाजित करना शामिल है, जहां एक ही क्लस्टर के अंदर डेटा बिंदु एक-दूसरे की तुलना में अन्य क्लस्टरों के मुकाबले अधिक समान होते हैं। यह तकनीक विभिन्न अनुप्रयोगों में व्यापक रूप से उपयोग की जाती है, जिसमें ग्राहक विभाजन, छवि संपीड़न, और विसंगति पहचान शामिल हैं।
K-Means क्लस्टरिंग अपने कार्यान्वयन में सरलता और विस्तार क्षमता के कारण सबसे लोकप्रिय क्लस्टरिंग अल्गोरिदम में से एक है। यह n डेटा बिंदुओं को k क्लस्टरों में विभाजित करने का लक्ष्य रखता है, जहां प्रत्येक डेटा बिंदु उस क्लस्टर में शामिल होता है जिसका मध्यमान सबसे निकट होता है।
पर्यावरण सेट करना
क्लस्टरिंग में डुबकी लगाने से पहले, सुनिश्चित करें कि आपके पास आवश्यक Python लाइब्रेरी इंस्टॉल हैं। हम उपयोग करेंगे:
- डेटा मैनिपुलेशन के लिए pandas
- संख्यात्मक संचालन के लिए numpy
- विज़ुअलाइज़ेशन के लिए matplotlib और seaborn
- K-Means को लागू करने के लिए scikit-learn
- उन्नत विज़ुअलाइज़ेशन के लिए Yellowbrick
आप pip का उपयोग करके इन लाइब्रेरीज़ को इंस्टॉल कर सकते हैं:
1
pip install pandas numpy matplotlib seaborn scikit-learn yellowbrick
डेटासेट बनाना और एक्सप्लोर करना
डेमो उद्देश्यों के लिए, हम scikit-learn की make_blobs विधि का उपयोग करके एक सिंथेटिक डेटासेट बनाएंगे। यह विधि क्लस्टरिंग के लिए आइसोट्रोपिक गॉसियन ब्लॉब्स उत्पन्न करती है।
12345
import pandas as pdfrom sklearn.datasets import make_blobs # Create a synthetic datasetX, y = make_blobs(n_samples=300, centers=5, cluster_std=0.60, random_state=0)
वैकल्पिक रूप से, आप Kaggle पर उपलब्ध एक कस्टम डेटासेट का उपयोग कर सकते हैं। प्रदान किया गया डेटासेट शामिल है:
- ग्राहक आईडी: प्रत्येक ग्राहक के लिए अद्वितीय पहचानकर्ता।
- Instagram Visit Score: यह दर्शाता है कि एक उपयोगकर्ता कितनी बार Instagram विज़िट करता है, 0 से 100 के पैमाने पर।
- Spending Rank: उपयोगकर्ता की खर्च करने की रैंक को दर्शाता है, भी 0 से 100 के पैमाने पर।
डेटासेट लोड करना:
12345678
# Import necessary librariesimport pandas as pd # Read the CSV filedf = pd.read_csv('path_to_your_dataset.csv') # Display the first 20 rowsprint(df.head(20))
डेटा को समझना:
- User ID: एक पहचानकर्ता के रूप में कार्य करता है; क्लस्टरिंग में सीधे उपयोग नहीं किया जाता।
- Instagram Visit Score: Instagram के साथ उपयोगकर्ता की सगाई को मापता है।
- Spending Rank: उपयोगकर्ता के खर्च व्यवहार को दर्शाता है।
एल्बो विधि के साथ क्लस्टरों की सर्वोत्तम संख्या निर्धारित करना
सही क्लस्टरों की संख्या (k) का चयन प्रभावी क्लस्टरिंग के लिए महत्वपूर्ण है। एल्बो विधि इसको निर्धारित करने में मदद करती है, जिसमें Within-Cluster Sum of Squares (WCSS) को क्लस्टरों की संख्या के खिलाफ प्लॉट किया जाता है और "एल्बो प्वाइंट" की पहचान की जाती है जहां कमी की दर तेज़ी से बदलती है।
विज़ुअलाइज़ेशन के लिए Yellowbrick का उपयोग
1234567891011121314
from yellowbrick.cluster import KElbowVisualizerfrom sklearn.cluster import KMeansimport matplotlib.pyplot as plt # Prepare the dataX = df.iloc[:, [1, 2]].values # Assuming columns 1 and 2 are Instagram Visit Score and Spending Rank # Initialize KMeanskmeans = KMeans() # Use ElbowVisualizer to find the optimal number of clustersvisualizer = KElbowVisualizer(kmeans, k=(2,10))visualizer.fit(X)visualizer.show()
विज़ुअलाइज़ेशन की व्याख्या:
- एक्स-अक्ष क्लस्टरों की संख्या (k) को दर्शाता है।
- वाई-अक्ष में WCSS दिखाया गया है।
- "एल्बो" प्वाइंट सबसे उपयुक्त k को दर्शाता है। इस मामले में, क्लस्टरों की सर्वोत्तम संख्या 4 निर्धारित की गई है।
K-Means क्लस्टरिंग लागू करना
सर्वोत्तम क्लस्टरों की संख्या पहचानने के बाद, हम अब K-Means क्लस्टरिंग लागू कर सकते हैं।
123456789101112131415
from sklearn.cluster import KMeans # Initialize KMeans with the optimal number of clusterskmeans = KMeans(n_clusters=4, random_state=0) # Fit the model to the datakmeans.fit(X) # Retrieve cluster labelslabels = kmeans.labels_ # Add the cluster labels to the original dataframedf['Cluster'] = labels print(df.head())
मुख्य पैरामीटर:
- n_clusters: बनने वाले क्लस्टरों की संख्या (एल्बो विधि का उपयोग करके निर्धारित)।
- random_state: परिणामों की पुनरुत्पादनशीलता सुनिश्चित करता है।
क्लस्टरों को विज़ुअलाइज़ करना:
123456789
import seaborn as sns # Plotting the clusterssns.scatterplot(x=X[:,0], y=X[:,1], hue=labels, palette='viridis')plt.title('K-Means Clustering Results')plt.xlabel('Instagram Visit Score')plt.ylabel('Spending Rank')plt.legend(title='Cluster')plt.show()
यह विज़ुअलाइज़ेशन यह समझने में मदद करता है कि डेटा बिंदु कैसे समूहित हैं और क्लस्टरिंग की कितनी प्रभावशीलता है।
निष्कर्ष और अगले कदम
इस मार्गदर्शिका में, हमने सफलतापूर्वक Python की scikit-learn का उपयोग करके K-Means क्लस्टरिंग लागू की और Yellowbrick के साथ परिणामों को विज़ुअलाइज़ किया। एल्बो विधि का उपयोग करके क्लस्टरों की सर्वोत्तम संख्या निर्धारित करने के साथ, हमने सुनिश्चित किया कि हमारी क्लस्टरिंग न केवल सार्थक बल्कि प्रभावी भी थी।
अगले कदम:
- क्लस्टर सेंटर्स की व्याख्या: प्रत्येक क्लस्टर के केंद्रों का विश्लेषण करें ताकि प्रत्येक क्लस्टर की विशेषताओं को समझा जा सके।
- टारगेटेड मार्केटिंग: मार्केटिंग अभियानों के लिए विशिष्ट उपयोगकर्ता समूहों की पहचान और टारगेट करने के लिए क्लस्टरों का उपयोग करें।
- उन्नत क्लस्टरिंग तकनीकें: विभिन्न डेटा परिदृश्यों के लिए DBSCAN या हायरार्किकल क्लस्टरिंग जैसे अन्य क्लस्टरिंग अल्गोरिदम का अन्वेषण करें।
- फीचर स्केलिंग: क्लस्टरिंग प्रदर्शन में सुधार के लिए फीचर स्केलिंग लागू करें, विशेष रूप से जब फीचर्स के अलग-अलग इकाइयाँ या माप होते हैं।
क्लस्टरिंग डेटा वैज्ञानिक के संग्रह में एक शक्तिशाली उपकरण है, और इसके कार्यान्वयन में महारत हासिल करना मूल्यवान अंतर्दृष्टि और सूचित निर्णय लेने की क्षमता प्रदान कर सकता है।