CodeBlanks Logo Icon CodeBlanks

n_init

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çilir

scikit-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

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

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

Soru
km = KMeans(n_clusters=5, ____=20, random_state=0)
Cevap
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

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