KMeans
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 48/112
- 5 dk
KMeans, veriyi k kümeye bölen popüler bir kümeleme algoritmasıdır.
KMeans
KMeans, her örneği en yakın küme merkezine atar ve merkezleri atanan örneklerin ortalamasına taşır; bu iki adım merkezler değişmeyene kadar tekrarlanır. Amaç, örneklerin merkezlerine olan kare mesafelerinin toplamını en küçük yapmaktır.
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
print(km.cluster_centers_) # 3 merkez
print(km.predict([[0, 0]])) # yeni noktanın kümesipredict yeni örnekleri en yakın merkeze atar; KMeans bu yüzden yeni veriye uygulanabilir.
KMeans'in varsayımları
KMeans kümelerin yuvarlak, benzer boyutlu ve benzer yoğunlukta olduğunu varsayar. Ay biçimli ya da iç içe halka kümelerde başarısız olur:
from sklearn.datasets import make_moons
Xm, ym = make_moons(200, noise=0.05, random_state=0)
print(adjusted_rand_score(ym, KMeans(2, n_init=10).fit_predict(Xm))) # düşükKüme sayısı n_clusters önceden verilmelidir; bunun nasıl seçileceğini elbow yöntemi dersinde göreceksin.
Uygulama Merkezleri bul
Üç belirgin gruplu küçük veride KMeans(n_clusters=3, n_init=10, random_state=0) eğit. Merkezleri ilk koordinata göre sıralayıp (c[np.argsort(c[:, 0])]) np.round(..., 2) ile yazdır. Ardından [[5, 5]] noktasının kümesinin, [[5.2, 4.9]] ile aynı olduğunu yazdır.
Başlangıç kodu
import numpy as np
from sklearn.cluster import KMeans
X = np.array([[0, 0], [0, 1], [1, 0], [5, 5], [5, 6], [6, 5], [10, 0], [10, 1], [11, 0]])
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.cluster import KMeans
X = np.array([[0, 0], [0, 1], [1, 0], [5, 5], [5, 6], [6, 5], [10, 0], [10, 1], [11, 0]])
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
c = km.cluster_centers_
print(np.round(c[np.argsort(c[:, 0])], 2))
print(km.predict([[5, 5]])[0] == km.predict([[5.2, 4.9]])[0])Beklenen çıktı
[[ 0.33 0.33] [ 5.33 5.33] [10.33 0.33]] True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 KMeans'te merkez güncelleme adımında merkez nereye taşınır?
- Atanan örneklerin ortalamasına Doğru cevap
- En uzak örneğe
- Rastgele bir noktaya
- Orijine
Açıklama: Kare mesafe toplamını en küçük yapan nokta ortalamadır.
2 Eğit ve etiketleri tek adımda al.
etiket = KMeans(n_clusters=3, n_init=10).____(X)
etiket = KMeans(n_clusters=3, n_init=10).fit_predict(X)
Açıklama: fit_predict, fit + labels_ ile aynıdır.
3 Adımları eşleştir.
| Kavram | Anlamı |
|---|---|
atama |
En yakın merkeze |
güncelleme |
Ortalamaya taşı |
cluster_centers_ |
Merkezler |
predict |
Yeni örneği ata |