Başlatma
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 54/112
- 5 dk
KMeans başlatma yöntemi k-means++ varsayılan olarak kullanılır.
Başlatmanın önemi
Lloyd algoritması başlangıç merkezlerine bağlıdır. Kötü başlangıç (örneğin iki merkezin aynı gerçek kümeye düşmesi) yerel bir en iyide takılır: bir küme ikiye bölünür, iki küme birleşir.
for rs in range(3):
km = KMeans(n_clusters=5, init="random", n_init=1, random_state=rs).fit(X)
print(rs, round(km.inertia_)) # tohuma göre farklı sonuçBu yüzden başlatma yöntemi ve tekrar sayısı KMeans'in en önemli ayarlarıdır.
k-means++
scikit-learn'ün varsayılan başlatması k-means++'tır: ilk merkez rastgele seçilir, sonraki her merkez mevcut merkezlere uzak noktalardan, uzaklığın karesiyle orantılı olasılıkla seçilir. Merkezler baştan yayılmış olur:
km = KMeans(n_clusters=5, init="k-means++", n_init=1, random_state=0)
# init="random": örnekler arasından düzgün rastgelek-means++ hem daha iyi çözüm hem de genellikle daha az tur sağlar.
Uygulama Başlatmaları karşılaştır
Tohum 0-9 için init="random" ve init="k-means++" ile birer n_init=1 KMeans (5 küme) eğit. Her yöntem için en kötü (en büyük) inertia'yı round ile tam sayı olarak aynı satırda yazdır (önce random).
Başlangıç kodu
import numpy as np
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
X, _ = make_blobs(n_samples=500, centers=5, cluster_std=1.0, random_state=3)
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
X, _ = make_blobs(n_samples=500, centers=5, cluster_std=1.0, random_state=3)
kotu = []
for init in ["random", "k-means++"]:
kotu.append(round(max(KMeans(n_clusters=5, init=init, n_init=1, random_state=rs).fit(X).inertia_ for rs in range(10))))
print(*kotu)Beklenen çıktı
2224 2145
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Rastgele başlatmanın tipik hatası nedir?
- Hata vermesi
- İki merkezin aynı kümeye düşmesi Doğru cevap
- Algoritmanın yakınsamaması
- Merkezlerin silinmesi
Açıklama: Bu durumda bir gerçek küme bölünür, başka bir yerde iki küme birleşir.
2 Merkezleri yayılmış biçimde başlat.
km = KMeans(n_clusters=5, init=____)
km = KMeans(n_clusters=5, init="k-means++")
Açıklama: "k-means++" varsayılandır.
3 Başlatmaları eşleştir.
| Kavram | Anlamı |
|---|---|
init="random" |
Düzgün rastgele örnek |
init="k-means++" |
Uzaklıkla orantılı seçim |
kötü başlangıç |
Yerel en iyi |
n_iter_ |
Gereken tur |