Agglomerative
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 61/112
- 5 dk
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
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
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.
ag = AgglomerativeClustering(n_clusters=None, ____=10)
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 |