Bir kümelemenin değerlendirilmesi

Python'da Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

Bir kümelemenin değerlendirilmesi

  • Örn. iris türleriyle eşleşmeyi kontrol edebilirsiniz
  • ... peki karşılaştıracak tür bilgisi yoksa?
  • Bir kümelemenin kalitesini ölçün
  • Kaç küme arayacağınıza karar vermeye yardım eder
Python'da Unsupervised Learning

Iris: kümeler vs. türler

  • k-means iris örneklerinde 3 küme buldu
  • Kümeler türlerle örtüşüyor mu?
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14
Python'da Unsupervised Learning

pandas ile çapraz tablo

  • Kümeler vs türler bir "çapraz tablo"dur
  • pandas kütüphanesini kullanın
  • Her örneğin türü species listesi olarak verilsin
print(species)
['setosa', 'setosa', 'versicolor', 'virginica', ... ]
Python'da Unsupervised Learning

Etiketler ve türleri hizalama

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'da Unsupervised Learning

Etiketler ve türlerin çapraz tablosu

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

Tür bilgisi olmasaydı bir kümelemeyi nasıl değerlendirirdiniz?

Python'da Unsupervised Learning

Kümeleme kalitesini ölçmek

  • Yalnızca örnekler ve küme etiketleri kullanılır

  • İyi bir kümeleme sıkı kümelere sahiptir

  • Her kümedeki örnekler birbirine yakındır

Python'da Unsupervised Learning

Atalet (inertia) kümeleme kalitesini ölçer

  • Kümelerin ne kadar yayıldığını ölçer (daha düşük daha iyidir)
  • Her örnekten kümesinin merkeze (centroid) uzaklığı
  • fit() sonrası inertia_ niteliği olarak bulunur
  • k-means kümeleri seçerken ataletı en aza indirmeye çalışır
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
print(model.inertia_)
78.9408414261
Python'da Unsupervised Learning

Küme sayısı

  • Iris veri kümesinde farklı küme sayılarıyla kümelemeler
  • Daha çok küme, daha düşük atalet demektir
  • En iyi küme sayısı nedir?

Küme sayısı ile ataletin çizgi grafiği

Python'da Unsupervised Learning

Kaç küme seçilmeli?

  • İyi bir kümeleme sıkı kümelere sahiptir (yani düşük atalet)
  • ... ama çok fazla küme de olmamalı!
  • Atalet grafiğinde bir "dirsek" seçin
  • Ataletin daha yavaş azalmaya başladığı yer
  • Örn. iris için 3 iyi bir seçimdir

Küme sayısı ile ataletin çizgi grafiği

Python'da Unsupervised Learning

Hadi pratik yapalım!

Python'da Unsupervised Learning

Preparing Video For Download...