CodeBlanks Logo Icon CodeBlanks

Dendrogram

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 kes

Uzun 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üme

fcluster 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

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

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

Soru
etiket = fcluster(Z, t=2, criterion=____)
Cevap
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

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