Avantajlar
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 63/112
- 5 dk
Hiyerarşik kümeleme, k önceden belirtmeden küme yapısını gösterir.
Hiyerarşik kümelemenin avantajları
Hiyerarşik kümeleme şu durumlarda öne çıkar:
- k bilinmiyorsa: dendrogram farklı seviyelerdeki yapıyı birlikte gösterir.
- İç içe yapı anlamlıysa: tür-cins-aile gibi sınıflandırmalar, ürün kategorileri.
- Küçük-orta veri: birkaç bin örneğe kadar rahat çalışır.
- Deterministik: rastgele başlatma yoktur, her çalıştırma aynı sonucu verir.
Dezavantajları: büyük veride yavaşlık ve yeni örneklere uygulanamaması.
Küme etiketleriyle sınıflandırıcı
Yeni örnekleri kümelere atamak için hiyerarşik kümelemenin bulduğu etiketlerle bir sınıflandırıcı eğitmek yaygın bir kalıptır:
etiket = AgglomerativeClustering(n_clusters=3).fit_predict(X)
from sklearn.neighbors import KNeighborsClassifier
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, etiket)
print(atayici.predict(X_yeni))Böylece kümeleme bir kez yapılır, sonraki atamalar hızlı ve tutarlı olur.
Uygulama Kümeyi yeni veriye taşı
Yapay veride AgglomerativeClustering(n_clusters=3) ile etiketleri bul ve bu etiketlerle KNeighborsClassifier(n_neighbors=5) eğit. X[:5] için atayıcının tahminlerinin özgün etiketlerle aynı olduğunu (... == ...).all() ile yazdır. Ardından aynı kümelemeyi tekrar çalıştırıp etiketlerin değişmediğini 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)
from sklearn.neighbors import KNeighborsClassifier
# 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)
from sklearn.neighbors import KNeighborsClassifier
etiket = AgglomerativeClustering(n_clusters=3).fit_predict(X)
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, etiket)
print((atayici.predict(X[:5]) == etiket[:5]).all())
print((AgglomerativeClustering(n_clusters=3).fit_predict(X) == etiket).all())Beklenen çıktı
True True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hiyerarşik kümelemede random_state neden gerekmez?
- Algoritma deterministiktir Doğru cevap
- Kümeler her zaman 2'dir
- Veri karıştırılmaz
- Gerekir
Açıklama: Her adımda en yakın çift seçilir; rastgelelik yoktur.
2 Küme etiketleriyle bir atayıcı eğit.
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, ____)
atayici = KNeighborsClassifier(n_neighbors=5).fit(X, etiket)
Açıklama: Küme etiketleri sınıflandırıcının hedefi olur.
3 Durumları eşleştir.
| Kavram | Anlamı |
|---|---|
k bilinmiyor |
Dendrogram |
İç içe kategoriler |
Hiyerarşi |
Milyonlarca örnek |
MiniBatchKMeans |
Yeni örnek atama |
Etiketlerle KNN |