CodeBlanks Logo Icon CodeBlanks

Etiketler

KMeans, her örneğe küme etiketi atar ve labels_ özelliğinde saklar.

Etiketleri yorumlamak

Küme etiketleri ad değil numaradır; aynı veride yeniden çalıştırınca 0 ile 2 yer değiştirebilir. Bu yüzden kümeler, numaralarıyla değil içerikleriyle (merkez, boyut, örnek özellikleri) tanımlanır.

for k in range(km.n_clusters):
    uyeler = X[km.labels_ == k]
    print(k, len(uyeler), uyeler.mean(axis=0).round(1))

Gerçek etiketler biliniyorsa (deneme amaçlı) karşılaştırma numaralardan bağımsız bir ölçütle yapılmalıdır.

Ayarlanmış Rand indeksi

adjusted_rand_score iki etiketlemenin ne kadar uyumlu olduğunu numaralardan bağımsız ölçer: 1 tam uyum, 0 rastgele düzey. Kümeleme yöntemlerini bilinen yapılı yapay veride karşılaştırmak için kullanılır:

from sklearn.metrics import adjusted_rand_score
print(adjusted_rand_score([0, 0, 1, 1], [1, 1, 0, 0]))   # 1.0
print(adjusted_rand_score(y_gercek, km.labels_))

Gerçek projelerde etiket yoktur; o zaman siluet gibi iç ölçütler ve alan bilgisi kullanılır.

Uygulama Kümeyi doğrula

Yapay veride KMeans(n_clusters=4, n_init=10, random_state=0) eğit. Gerçek etiketlerle ARI'yi round(..., 3) ile yazdır. Ardından düz accuracy_score(y_gercek, km.labels_) değerini round(..., 3) ile yazdır ve ikisinin neden farklı olduğunu gö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 adjusted_rand_score, accuracy_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 adjusted_rand_score, accuracy_score

km = KMeans(n_clusters=4, n_init=10, random_state=0).fit(X)
print(round(adjusted_rand_score(y_gercek, km.labels_), 3))
print(round(accuracy_score(y_gercek, km.labels_), 3))

Beklenen çıktı

0.946
0.497

Soru ve cevaplar

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

1 Gerçek etiketler [0, 0, 1, 1], küme etiketleri [1, 1, 0, 0] ise kümeleme ne kadar başarılıdır?

  • Değerlendirilemez
  • Kusursuz; yalnızca numaralar yer değiştirmiş Doğru cevap
  • Tamamen yanlış
  • Yarı yarıya

Açıklama: Gruplar aynı, adları farklı; ARI = 1 olur.

2 İki etiketlemenin uyumunu ölç.

Soru
ari = ____(y_gercek, km.labels_)
Cevap
ari = adjusted_rand_score(y_gercek, km.labels_)

Açıklama: ARI numaraların yer değiştirmesinden etkilenmez.

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

Kavram Anlamı
ARI = 1 Tam uyum
ARI ≈ 0 Rastgele düzey
accuracy_score Kümelemede yanıltıcı
siluet Etiketsiz iç ölçüt

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