CodeBlanks Logo Icon CodeBlanks

Elbow yöntemi

Elbow yöntemi, en uygun k değerini bulmak için kullanılır.

Elbow yöntemi

KMeans'in küme sayısını kendisi bulamaz. Elbow yöntemi farklı k değerleri için toplam kare mesafeyi (inertia_) çizer. k arttıkça inertia hep düşer; düşüşün belirgin yavaşladığı "dirsek" noktası makul bir k'dır:

for k in range(1, 8):
    km = KMeans(n_clusters=k, n_init=10, random_state=0).fit(X)
    print(k, round(km.inertia_))

Dirsek her zaman net değildir; bu durumda siluet skoru gibi ek ölçütlere bakılır.

Siluet skoru

Siluet skoru her örnek için "kendi kümesine ne kadar yakın, en yakın komşu kümeye ne kadar uzak" sorusunu -1 ile 1 arasında ölçer. Ortalaması en yüksek olan k tercih edilir:

from sklearn.metrics import silhouette_score
for k in range(2, 7):
    etiket = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
    print(k, round(silhouette_score(X, etiket), 3))

Siluet en az 2 küme ister; 1'e yakın değerler iyi ayrılmış, 0 civarı örtüşen kümeleri gösterir.

Uygulama En iyi k

k = 2-6 için KMeans(n_clusters=k, n_init=10, random_state=0) eğit. Her satırda k'yı, inertia_ değerini (round ile tam sayı) ve siluet skorunu round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

X, y_gercek = make_blobs(n_samples=300, centers=4, cluster_std=0.8, random_state=0)
from sklearn.metrics import silhouette_score

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

X, y_gercek = make_blobs(n_samples=300, centers=4, cluster_std=0.8, random_state=0)
from sklearn.metrics import silhouette_score

for k in range(2, 7):
    km = KMeans(n_clusters=k, n_init=10, random_state=0).fit(X)
    print(k, round(km.inertia_), round(silhouette_score(X, km.labels_), 3))

Beklenen çıktı

2 1349 0.496
3 709 0.515
4 370 0.58
5 326 0.503
6 292 0.43

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Neden en küçük inertia'yı veren k seçilmez?

  • Inertia artar
  • Seçilir
  • k = örnek sayısında inertia 0 olur; anlamsızdır Doğru cevap
  • Hesaplanamaz

Açıklama: Her örnek kendi kümesi olursa mesafeler sıfırdır ama hiçbir şey öğrenilmemiştir.

2 Ortalama siluet skorunu hesapla.

Soru
s = ____(X, etiket)
Cevap
s = silhouette_score(X, etiket)

Açıklama: silhouette_score veri ve etiketleri alır.

3 Ölçütleri eşleştir.

Kavram Anlamı
inertia_ Kare mesafe toplamı
dirsek Düşüşün yavaşladığı yer
siluet ≈ 1 İyi ayrılmış kümeler
siluet ≈ 0 Örtüşen kümeler

Orta seviye bölümündeki tüm dersler