CodeBlanks Logo Icon CodeBlanks

Avantajlar

Hiyerarşik kümeleme, k önceden belirtmeden küme yapısını gösterir.

Hiyerarşik kümelemenin avantajları

Hiyerarşik kümeleme şu durumlarda öne çıkar:

  • k bilinmiyorsa: dendrogram farklı seviyelerdeki yapıyı birlikte gösterir.
  • İç içe yapı anlamlıysa: tür-cins-aile gibi sınıflandırmalar, ürün kategorileri.
  • Küçük-orta veri: birkaç bin örneğe kadar rahat çalışır.
  • Deterministik: rastgele başlatma yoktur, her çalıştırma aynı sonucu verir.

Dezavantajları: büyük veride yavaşlık ve yeni örneklere uygulanamaması.

Küme etiketleriyle sınıflandırıcı

Yeni örnekleri kümelere atamak için hiyerarşik kümelemenin bulduğu etiketlerle bir sınıflandırıcı eğitmek yaygın bir kalıptır:

etiket = AgglomerativeClustering(n_clusters=3).fit_predict(X)
from sklearn.neighbors import KNeighborsClassifier
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, etiket)
print(atayici.predict(X_yeni))

Böylece kümeleme bir kez yapılır, sonraki atamalar hızlı ve tutarlı olur.

Uygulama Kümeyi yeni veriye taşı

Yapay veride AgglomerativeClustering(n_clusters=3) ile etiketleri bul ve bu etiketlerle KNeighborsClassifier(n_neighbors=5) eğit. X[:5] için atayıcının tahminlerinin özgün etiketlerle aynı olduğunu (... == ...).all() ile yazdır. Ardından aynı kümelemeyi tekrar çalıştırıp etiketlerin değişmediğini yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import make_blobs
from sklearn.cluster import AgglomerativeClustering
from sklearn.metrics import adjusted_rand_score

X, y = make_blobs(n_samples=300, centers=3, cluster_std=[0.5, 1.5, 0.8], random_state=4)
from sklearn.neighbors import KNeighborsClassifier

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import make_blobs
from sklearn.cluster import AgglomerativeClustering
from sklearn.metrics import adjusted_rand_score

X, y = make_blobs(n_samples=300, centers=3, cluster_std=[0.5, 1.5, 0.8], random_state=4)
from sklearn.neighbors import KNeighborsClassifier

etiket = AgglomerativeClustering(n_clusters=3).fit_predict(X)
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, etiket)
print((atayici.predict(X[:5]) == etiket[:5]).all())
print((AgglomerativeClustering(n_clusters=3).fit_predict(X) == etiket).all())

Beklenen çıktı

True
True

Soru ve cevaplar

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

1 Hiyerarşik kümelemede random_state neden gerekmez?

  • Algoritma deterministiktir Doğru cevap
  • Kümeler her zaman 2'dir
  • Veri karıştırılmaz
  • Gerekir

Açıklama: Her adımda en yakın çift seçilir; rastgelelik yoktur.

2 Küme etiketleriyle bir atayıcı eğit.

Soru
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, ____)
Cevap
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, etiket)

Açıklama: Küme etiketleri sınıflandırıcının hedefi olur.

3 Durumları eşleştir.

Kavram Anlamı
k bilinmiyor Dendrogram
İç içe kategoriler Hiyerarşi
Milyonlarca örnek MiniBatchKMeans
Yeni örnek atama Etiketlerle KNN

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