CodeBlanks Logo Icon CodeBlanks

K parametresi

K, komşu sayısını belirler; küçük K fazla, büyük K az uyuma yol açar.

K seçimi

K küçükse model her gürültülü örneğe uyar (aşırı öğrenme); K büyükse uzaktaki örnekler de oy verir ve sınır fazla düzleşir (eksik öğrenme).

for k in [1, 5, 15]:
    m = KNeighborsClassifier(n_neighbors=k).fit(X_train, y_train)
    print(k, m.score(X_train, y_train), m.score(X_test, y_test))

K=1'de eğitim doğruluğu hep 1.0'dır, çünkü her eğitim noktasının en yakın komşusu kendisidir; bu yanıltıcıdır.

Tek sayı ve doğrulama

İki sınıflı problemlerde K tek sayı seçilir ki oylar eşit bölünmesin. En iyi K, test kümesine değil doğrulama ya da çapraz doğrulama sonuçlarına bakılarak seçilir:

from sklearn.model_selection import cross_val_score
for k in [1, 3, 5, 7, 9]:
    s = cross_val_score(KNeighborsClassifier(k), X, y, cv=5).mean()
    print(k, round(s, 3))

Çapraz doğrulamayı orta seviyede ayrıntılı göreceksin.

Uygulama K karşılaştır

K = 1, 3, 5 için birer model eğit ve her satırda K ile eğitim doğruluğunu yazdır.

Başlangıç kodu

model.py
from sklearn.neighbors import KNeighborsClassifier

X = [[1], [2], [3], [4], [5], [6], [7], [8]]
y = [0, 0, 1, 0, 1, 1, 0, 1]

# buraya yaz

Örnek çözüm

model.py
from sklearn.neighbors import KNeighborsClassifier

X = [[1], [2], [3], [4], [5], [6], [7], [8]]
y = [0, 0, 1, 0, 1, 1, 0, 1]

for k in [1, 3, 5]:
    m = KNeighborsClassifier(n_neighbors=k).fit(X, y)
    print(k, m.score(X, y))

Beklenen çıktı

1 1.0
3 0.625
5 0.625

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 K=1 iken eğitim doğruluğu neden genellikle 1.0 çıkar?

  • Her eğitim noktasının en yakın komşusu kendisidir Doğru cevap
  • Model mükemmeldir
  • Veri azdır
  • Mesafe sıfır olamaz

Açıklama: Model kendi etiketini okur; test doğruluğu ise genellikle daha düşüktür.

2 Komşu sayısını döngü değişkeninden al.

Soru
for k in [1, 3, 5]:
    m = KNeighborsClassifier(n_neighbors=____)
Cevap
for k in [1, 3, 5]:
    m = KNeighborsClassifier(n_neighbors=k)

Açıklama: Döngüdeki her k için ayrı bir model kurulur.

3 K değerlerini davranışla eşleştir.

Kavram Anlamı
K = 1 Gürültüye aşırı duyarlı
K çok büyük Sınır fazla düzleşir
K tek sayı Eşit oyu önler
Çapraz doğrulama K seçimi

Başlangıç bölümündeki tüm dersler