CodeBlanks Logo Icon CodeBlanks

Hiyerarşik kümeleme nedir?

Hiyerarşik kümeleme, veriyi ağaç benzeri bir yapıda gruplara ayırır.

Hiyerarşik kümeleme nedir?

Hiyerarşik kümeleme tek bir bölümleme değil, iç içe kümelerden oluşan bir ağaç üretir. Birleştirici (agglomerative) yaklaşımda her örnek kendi kümesiyle başlar; her adımda en yakın iki küme birleşir, sonunda tek küme kalır.

from scipy.cluster.hierarchy import linkage
Z = linkage(X, method="ward")
print(Z.shape)   # (n-1, 4): her satır bir birleşme

Ağacı istenen seviyede "keserek" istenen sayıda küme elde edilir; KMeans'in aksine k'yı baştan vermek gerekmez.

Bağlantı matrisi Z

linkage çıktısının her satırı bir birleşmedir: [küme_a, küme_b, mesafe, yeni_kümedeki_örnek_sayısı]. n'den küçük numaralar özgün örneklerdir; n ve üstü önceki adımlarda oluşan kümelerdir.

print(Z[:3])
# [[0. 1. 1. 2.]   örnek 0 ve 1, mesafe 1, 2 örnek
#  ...           ]

Mesafeler satırdan satıra artar; büyük bir sıçrama, birbirinden uzak iki grubun birleştirildiğini gösterir ve iyi bir kesim noktasıdır.

Uygulama Bağlantıyı incele

linkage(X, method="single") ile bağlantı matrisini hesapla. Şeklini ve son birleşmenin mesafesini round(..., 2) ile alt alta yazdır. Ardından ardışık mesafe farklarının en büyüğünün hangi satırdan sonra olduğunu np.diff(Z[:, 2]).argmax() ile 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="single")
print(Z.shape)
print(round(Z[-1, 2], 2))
print(np.diff(Z[:, 2]).argmax())

Beklenen çıktı

(7, 4)
7.21
4

Soru ve cevaplar

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

1 8 örnekli bir veride birleştirici kümeleme kaç birleşme yapar?

  • 7 Doğru cevap
  • 8
  • 4
  • 28

Açıklama: Her birleşme küme sayısını bir azaltır: 8'den 1'e 7 adım.

2 Bağlantı matrisini Ward yöntemiyle hesapla.

Soru
Z = ____(X, method="ward")
Cevap
Z = linkage(X, method="ward")

Açıklama: linkage, scipy.cluster.hierarchy içindedir.

3 Z sütunlarını eşleştir.

Kavram Anlamı
Z[:, 0], Z[:, 1] Birleşen kümeler
Z[:, 2] Birleşme mesafesi
Z[:, 3] Örnek sayısı
n-1 satır Toplam birleşme

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