CodeBlanks Logo Icon CodeBlanks

Agglomerative

Agglomerative, her örneği bir küme olarak başlatıp birleştirir.

AgglomerativeClustering

scikit-learn'deki karşılığı AgglomerativeClustering'dir. Ya küme sayısı ya da mesafe eşiği verilir:

from sklearn.cluster import AgglomerativeClustering
ag = AgglomerativeClustering(n_clusters=3, linkage="ward")
etiket = ag.fit_predict(X)
ag2 = AgglomerativeClustering(n_clusters=None, distance_threshold=10).fit(X)
print(ag2.n_clusters_)   # eşikten çıkan küme sayısı

KMeans'in aksine predict yöntemi yoktur: yeni bir örnek ağaca eklenemez, yalnızca eğitim verisi etiketlenir.

Ölçek ve maliyet

Birleştirici kümeleme tüm çift mesafelerine ihtiyaç duyar; bellek ve süre örnek sayısının karesiyle büyür. On binlerce örnekte yavaşlar. Bir çözüm connectivity ile yalnızca komşular arasında birleşmeye izin vermektir:

from sklearn.neighbors import kneighbors_graph
bag = kneighbors_graph(X, n_neighbors=10, include_self=False)
ag = AgglomerativeClustering(n_clusters=3, connectivity=bag).fit(X)

Komşuluk grafı ayrıca uzun, kıvrımlı kümelerin bulunmasına yardım eder.

Uygulama Eşikle kümele

Yapay veride AgglomerativeClustering(n_clusters=None, distance_threshold=30) eğit; oluşan küme sayısını (n_clusters_) yazdır. Ardından n_clusters=3 ile eğitip gerçek etiketlerle ARI'yi round(..., 3) ile 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)

# 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)

ag = AgglomerativeClustering(n_clusters=None, distance_threshold=30).fit(X)
print(ag.n_clusters_)
etiket = AgglomerativeClustering(n_clusters=3).fit_predict(X)
print(round(adjusted_rand_score(y, etiket), 3))

Beklenen çıktı

3
0.932

Soru ve cevaplar

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

1 AgglomerativeClustering ile yeni bir örneği kümelemenin yolu nedir?

  • transform kullanmak
  • fcluster çağırmak
  • Doğrudan yoktur; yeniden eğitmek ya da etiketlerle bir sınıflandırıcı eğitmek gerekir Doğru cevap
  • predict kullanmak

Açıklama: Pratik çözüm: küme etiketleriyle bir KNN eğitip yeni örnekleri ona atamaktır.

2 Küme sayısı yerine mesafe eşiği ver.

Soru
ag = AgglomerativeClustering(n_clusters=None, ____=10)
Cevap
ag = AgglomerativeClustering(n_clusters=None, distance_threshold=10)

Açıklama: distance_threshold verilince n_clusters None olmalıdır.

3 Özellikleri eşleştir.

Kavram Anlamı
n_clusters Sabit küme sayısı
distance_threshold Eşikle kesim
n_clusters_ Oluşan küme sayısı
connectivity Komşulukla sınırlama

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