Makine Öğrenmesi
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.
Örnek çözümü göster
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))
Kendini test et
-
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ş
- Tamamen yanlış
- Yarı yarıya
Cevabı göster
Kusursuz; yalnızca numaralar yer değiştirmiş — Gruplar aynı, adları farklı; ARI = 1 olur.
-
İki etiketlemenin uyumunu ölç.
ari = ____(y_gercek, km.labels_)
Cevabı göster
ari = adjusted_rand_score(y_gercek, km.labels_)
-
Ölçütleri eşleştir.
- ARI = 1
- Tam uyum
- ARI ≈ 0
- Rastgele düzey
- accuracy_score
- Kümelemede yanıltıcı
- siluet
- Etiketsiz iç ölçüt
Sıradaki ders: Özet - Kümeleme