n_init
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 55/112
- 5 dk
n_init, KMeans'in farklı başlatma sayısını belirler.
n_init
n_init, KMeans'in farklı başlangıçlarla kaç kez çalıştırılacağıdır; en düşük inertia'yı veren çözüm tutulur. Yerel en iyiye karşı en basit ve en etkili sigortadır:
km = KMeans(n_clusters=5, n_init=10, random_state=0).fit(X)
# 10 ayrı başlangıç, en iyisi seçilirscikit-learn'ün yeni sürümlerinde varsayılan n_init="auto"'dur: k-means++ ile 1, rastgele başlatmayla 10 çalıştırma.
Süre ve kalite
n_init büyüdükçe süre doğrusal artar, kazanç ise azalarak gelir. Büyük veri setlerinde MiniBatchKMeans, her turda verinin küçük bir parçasıyla güncelleme yaparak çok daha hızlı çalışır:
from sklearn.cluster import MiniBatchKMeans
mb = MiniBatchKMeans(n_clusters=5, batch_size=256, n_init=3, random_state=0).fit(X)
print(round(mb.inertia_)) # KMeans'e yakın, çok daha hızlıMilyonlarca örnekte MiniBatchKMeans pratik tek seçenek olabilir.
Uygulama n_init'in etkisi
init="random" ile n_init = 1, 5, 20 için KMeans (5 küme, random_state=2) eğit. Her satırda n_init'i ve inertia'yı round ile tam sayı olarak 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)
for n in [1, 5, 20]:
km = KMeans(n_clusters=5, init="random", n_init=n, random_state=2).fit(X)
print(n, round(km.inertia_))Beklenen çıktı
1 2221 5 1000 20 1000
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>n_init=10</code> ile hangi çözüm döndürülür?
- En düşük inertia'lı olan Doğru cevap
- Son çalıştırma
- Ortalaması
- İlk çalıştırma
Açıklama: Her çalıştırma bağımsızdır; en iyisi seçilir.
2 Algoritmayı 20 farklı başlangıçla çalıştır.
km = KMeans(n_clusters=5, ____=20, random_state=0)
km = KMeans(n_clusters=5, n_init=20, random_state=0)
Açıklama: n_init başlangıç sayısıdır; max_iter tek çalıştırmadaki tur sınırıdır.
3 Parametreleri eşleştir.
| Kavram | Anlamı |
|---|---|
n_init |
Başlangıç sayısı |
max_iter |
Tur sınırı |
MiniBatchKMeans |
Parçalı hızlı sürüm |
batch_size |
Parça boyutu |