क्लस्टरिंग का मूल्यांकन

Python में Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

क्लस्टरिंग का मूल्यांकन

  • उदाहरण के लिए iris species से मिलान जाँच सकते हैं
  • ... पर अगर तुलना के लिए species ही न हों तो?
  • क्लस्टरिंग की गुणवत्ता मापें
  • कितने क्लस्टर्स चुनने हैं, यह तय करने में मदद मिलती है
Python में Unsupervised Learning

Iris: क्लस्टर्स बनाम species

  • k-means ने iris samples में 3 क्लस्टर पाए
  • क्या क्लस्टर species से मेल खाते हैं?
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14
Python में Unsupervised Learning

pandas से cross tabulation

  • क्लस्टर्स बनाम species एक "cross-tabulation" है
  • pandas लाइब्रेरी का उपयोग करें
  • हर sample की species सूची species के रूप में दी है
print(species)
['setosa', 'setosa', 'versicolor', 'virginica', ... ]
Python में Unsupervised Learning

labels और species को संरेखित करना

import pandas as pd
df = pd.DataFrame({'labels': labels, 'species': species})
print(df)
     labels     species
0         1      setosa
1         1      setosa
2         2  versicolor
3         2   virginica
4         1      setosa
...
Python में Unsupervised Learning

labels और species का Crosstab

ct = pd.crosstab(df['labels'], df['species'])
print(ct)
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14

यदि species की जानकारी न हो, तो क्लस्टरिंग का मूल्यांकन कैसे करेंगे?

Python में Unsupervised Learning

क्लस्टरिंग गुणवत्ता मापना

  • केवल samples और उनके cluster labels का उपयोग करें

  • अच्छी क्लस्टरिंग में क्लस्टर कॉम्पैक्ट होते हैं

  • हर क्लस्टर के samples पास-पास होते हैं

Python में Unsupervised Learning

Inertia क्लस्टरिंग गुणवत्ता मापता है

  • मापता है कि क्लस्टर कितने फैले हैं (नीचे हो तो बेहतर)
  • हर sample से उसके क्लस्टर के centroid तक की दूरी
  • fit() के बाद attribute inertia_ में उपलब्ध
  • k-means क्लस्टर चुनते समय inertia को न्यूनतम करने की कोशिश करता है
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
print(model.inertia_)
78.9408414261
Python में Unsupervised Learning

क्लस्टर्स की संख्या

  • iris डेटासेट की क्लस्टरिंग, अलग-अलग क्लस्टर संख्याओं के साथ
  • ज्यादा क्लस्टर होने पर inertia कम होता है
  • सबसे अच्छा क्लस्टर संख्या क्या है?

क्लस्टर्स की संख्या बनाम inertia की लाइन प्लॉट

Python में Unsupervised Learning

कितने क्लस्टर चुनें?

  • अच्छी क्लस्टरिंग में क्लस्टर टाइट होते हैं (तो inertia कम)
  • ... पर बहुत ज्यादा क्लस्टर भी न हों!
  • inertia प्लॉट में "elbow" चुनें
  • जहाँ inertia धीमी दर से घटने लगे
  • जैसे iris डेटासेट के लिए 3 अच्छा चुनाव है

क्लस्टर्स की संख्या बनाम inertia की लाइन प्लॉट

Python में Unsupervised Learning

अभ्यास करते हैं!

Python में Unsupervised Learning

Preparing Video For Download...