CodeBlanks Logo Icon CodeBlanks

KMeans

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ümesi

predict 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üşük

Kü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

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

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

Soru
etiket = KMeans(n_clusters=3, n_init=10).____(X)
Cevap
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

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