inertia_
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 56/112
- 5 dk
inertia_, kümeler içi toplam kare mesafeyi verir.
inertia_
inertia_, örneklerin atandıkları merkeze kare mesafelerinin toplamıdır. Küçük olması kümelerin sıkı olduğunu gösterir ama tek başına kaliteyi ölçmez: k arttıkça her zaman azalır ve verinin ölçeğine bağlıdır.
km = KMeans(n_clusters=5, n_init=10, random_state=0).fit(X)
d = km.transform(X).min(axis=1)
print(np.isclose((d ** 2).sum(), km.inertia_)) # Truescore(X) aynı değerin negatifini döndürür; scikit-learn'ün "büyük daha iyi" kuralına uyum içindir.
Diğer iç ölçütler
Ölçeğe bağımlılığı azaltan iç ölçütler de vardır:
from sklearn.metrics import calinski_harabasz_score, davies_bouldin_score
print(calinski_harabasz_score(X, km.labels_)) # büyük daha iyi
print(davies_bouldin_score(X, km.labels_)) # küçük daha iyiCalinski-Harabasz kümeler arası ile küme içi yayılımın oranıdır; Davies-Bouldin her kümenin en benzer kümeye ortalama benzerliğidir. Siluetle birlikte k seçiminde kullanılırlar.
Uygulama Inertia doğrulaması
KMeans (5 küme) eğit. km.transform(X).min(axis=1) mesafelerinin kareleri toplamının inertia_'a eşit olduğunu np.isclose ile, ardından km.score(X)'un -inertia_ olduğunu np.isclose ile alt alta yazdır.
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)
km = KMeans(n_clusters=5, n_init=10, random_state=0).fit(X)
d = km.transform(X).min(axis=1)
print(np.isclose((d ** 2).sum(), km.inertia_))
print(np.isclose(km.score(X), -km.inertia_))Beklenen çıktı
True True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Veri 10 ile çarpılırsa (her özellik) inertia nasıl değişir?
- 10 katına çıkar
- Değişmez
- Azalır
- 100 katına çıkar Doğru cevap
Açıklama: Mesafeler 10 kat, kare mesafeler 100 kat büyür.
2 Küçüğü iyi olan iç ölçütü hesapla.
db = ____(X, km.labels_)
db = davies_bouldin_score(X, km.labels_)
Açıklama: Davies-Bouldin 0'a yaklaştıkça kümeler daha iyi ayrılmıştır.
3 Ölçütleri yönleriyle eşleştir.
| Kavram | Anlamı |
|---|---|
inertia_ |
Küçük daha sıkı |
silhouette_score |
Büyük daha iyi (≤1) |
calinski_harabasz_score |
Büyük daha iyi |
davies_bouldin_score |
Küçük daha iyi |