Makine Öğrenmesi
random_state
random_state, KMeans sonuçlarını tekrarlanabilir yapar.
random_state ve tekrarlanabilirlik
KMeans'in başlatması rastgeledir; random_state verilmezse her çalıştırmada farklı merkezler ve etiket numaraları çıkabilir. Rapor ve test için tohum sabitlenmelidir:
a = KMeans(n_clusters=5, n_init=10, random_state=42).fit(X).labels_
b = KMeans(n_clusters=5, n_init=10, random_state=42).fit(X).labels_
print((a == b).all()) # True
Farklı tohumlarla etiket numaraları değişse bile kümeler aynıysa ARI = 1 olur; bu, çözümün kararlı olduğunu gösterir.
Kararlılık testi
Bir kümelemenin güvenilir olup olmadığını anlamanın yolu, farklı tohumlar ya da verinin alt örneklemleri üzerinde tekrar çalıştırıp sonuçların ne kadar uyuştuğuna bakmaktır:
ref = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
for rs in range(1, 5):
diger = KMeans(n_clusters=k, n_init=10, random_state=rs).fit_predict(X)
print(rs, adjusted_rand_score(ref, diger))
Yanlış k seçildiğinde sonuçlar tohumdan tohuma değişir; doğru k'da kararlıdır. Bu, k seçimi için ek bir ipucudur.
Uygulama Kararlılık
k = 5 ve k = 8 için, n_init=1 ile tohum 0'ın etiketlerini tohum 1-4'ün etiketleriyle ARI ile karşılaştır. Her k için ortalama ARI'yi round(..., 3) ile, k ile birlikte bir satırda yazdır.
Örnek çözümü göster
import numpy as np
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
X, _ = make_blobs(n_samples=500, centers=5, cluster_std=1.0, random_state=3)
from sklearn.metrics import adjusted_rand_score
for k in [5, 8]:
ref = KMeans(n_clusters=k, n_init=1, random_state=0).fit_predict(X)
ari = [adjusted_rand_score(ref, KMeans(n_clusters=k, n_init=1, random_state=rs).fit_predict(X)) for rs in range(1, 5)]
print(k, round(np.mean(ari), 3))
Kendini test et
-
Farklı tohumlarla ARI 1 çıkıyor ama etiket dizileri farklıysa ne olmuştur?
- Hata var
- ARI yanlış hesaplandı
- Aynı kümeler bulundu, yalnızca numaralar değişti
- Kümeler tamamen farklı
Cevabı göster
Aynı kümeler bulundu, yalnızca numaralar değişti — ARI numaralandırmadan bağımsızdır.
-
Sonucu tekrarlanabilir yap.
km = KMeans(n_clusters=5, n_init=10, ____=42)
Cevabı göster
km = KMeans(n_clusters=5, n_init=10, random_state=42)
-
Durumları eşleştir.
- Aynı tohum
- Aynı etiketler
- Farklı tohum, ARI = 1
- Kararlı çözüm
- Farklı tohum, ARI düşük
- Kararsız, k şüpheli
- random_state yok
- Tekrarlanamaz
Sıradaki ders: Özet - KMeans