CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

model.py
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

# buraya yaz

Örnek çözüm

model.py
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))

Beklenen çıktı

5 1.0
8 0.801

Soru ve cevaplar

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

1 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 Doğru cevap
  • Kümeler tamamen farklı

Açıklama: ARI numaralandırmadan bağımsızdır.

2 Sonucu tekrarlanabilir yap.

Soru
km = KMeans(n_clusters=5, n_init=10, ____=42)
Cevap
km = KMeans(n_clusters=5, n_init=10, random_state=42)

Açıklama: random_state başlatma rastgeleliğini sabitler.

3 Durumları eşleştir.

Kavram Anlamı
Aynı tohum Aynı etiketler
Farklı tohum, ARI = 1 Kararlı çözüm
Farklı tohum, ARI düşük Kararsız, k şüpheli
random_state yok Tekrarlanamaz

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