Dendrogram
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 60/112
- 5 dk
Dendrogram, hiyerarşik kümeleme sonucunu ağaç olarak görselleştirir.
Dendrogram
Dendrogram, birleşme ağacının çizimidir: yaprakların örnekler, yatay çizgilerin birleşmeler, çizgi yüksekliğinin birleşme mesafesi olduğu bir grafik. Yatay bir çizgiyle kesildiğinde kestiği dikey çizgi sayısı küme sayısını verir.
from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
dendrogram(Z, ax=ax)
ax.axhline(4, color="r", linestyle="--") # bu yükseklikte kesUzun dikey dallar, iyi ayrılmış kümelerin işaretidir.
fcluster ile kesim
Ağacı koddan kesmek için fcluster kullanılır: ya bir mesafe eşiğiyle (criterion="distance") ya da istenen küme sayısıyla (criterion="maxclust"):
from scipy.cluster.hierarchy import fcluster
etiket = fcluster(Z, t=4, criterion="distance") # 4'ten yüksek birleşmeleri kes
etiket2 = fcluster(Z, t=3, criterion="maxclust") # en fazla 3 kümefcluster etiketleri 1'den başlatır; scikit-learn ise 0'dan.
Uygulama Ağacı kes
Ward bağlantısıyla ağacı kur. fcluster ile önce t=3, criterion="maxclust", sonra t=10, criterion="distance" kesimi yap; iki etiket dizisini alt alta yazdır.
Başlangıç kodu
import numpy as np
from scipy.cluster.hierarchy import linkage, fcluster
X = np.array([[0, 0], [0, 1], [1, 0], [5, 5], [5, 6], [6, 5], [12, 0], [12, 1]])
# buraya yazÖrnek çözüm
import numpy as np
from scipy.cluster.hierarchy import linkage, fcluster
X = np.array([[0, 0], [0, 1], [1, 0], [5, 5], [5, 6], [6, 5], [12, 0], [12, 1]])
Z = linkage(X, method="ward")
print(fcluster(Z, t=3, criterion="maxclust"))
print(fcluster(Z, t=10, criterion="distance"))Beklenen çıktı
[2 2 2 3 3 3 1 1] [2 2 2 3 3 3 1 1]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Dendrogramda bir yatay kesim 3 dikey çizgiyi kesiyorsa kaç küme elde edilir?
- 2
- 4
- Belirlenemez
- 3 Doğru cevap
Açıklama: Kesimin altındaki her bağımsız dal bir kümedir.
2 Ağacı en fazla 2 küme olacak biçimde kes.
etiket = fcluster(Z, t=2, criterion=____)
etiket = fcluster(Z, t=2, criterion="maxclust")
Açıklama: "maxclust" t'yi küme sayısı olarak yorumlar.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
yaprak |
Tek örnek |
çizgi yüksekliği |
Birleşme mesafesi |
yatay kesim |
Küme sayısını belirler |
uzun dal |
İyi ayrılmış küme |