CodeBlanks Logo Icon CodeBlanks

KNN nedir?

KNN (K-Nearest Neighbors), bir örneği en yakın k komşusunun çoğunluğuna göre sınıflandırır.

KNN nedir?

K en yakın komşu (KNN), bir örneğin sınıfını ona en yakın K eğitim örneğinin çoğunluk oyuyla belirler. "Bana arkadaşını söyle, sana kim olduğunu söyleyeyim" fikrinin algoritmasıdır.

from sklearn.neighbors import KNeighborsClassifier
X = [[1, 1], [1, 2], [6, 6], [6, 7]]
y = ["A", "A", "B", "B"]
m = KNeighborsClassifier(n_neighbors=3).fit(X, y)
print(m.predict([[2, 2]]))   # ['A']

KNN'in eğitimi yoktur denebilir: fit yalnızca veriyi saklar, asıl iş tahmin anında yapılır. Bu yüzden "tembel öğrenici" diye anılır.

Güçlü ve zayıf yanlar

KNN basittir ve karmaşık sınır şekillerini öğrenebilir. Ama:

  • Tahmin yavaştır: her sorgu için tüm eğitim örnekleriyle mesafe hesaplanır.
  • Ölçeğe duyarlıdır: büyük birimli özellik (maaş) küçük birimliyi (yaş) bastırır.
  • Çok boyutlu veride "en yakın" kavramı anlamını yitirir (boyutun laneti).

Bu yüzden KNN'den önce genellikle ölçeklendirme yapılır.

Uygulama İlk KNN

KNeighborsClassifier(n_neighbors=3) eğit ve [[2, 2]] ile [[6, 5]] noktalarının sınıflarını tek predict çağrısıyla yazdır.

Başlangıç kodu

model.py
from sklearn.neighbors import KNeighborsClassifier

X = [[1, 1], [1, 2], [2, 1], [6, 6], [6, 7], [7, 6]]
y = ["A", "A", "A", "B", "B", "B"]

# buraya yaz

Örnek çözüm

model.py
from sklearn.neighbors import KNeighborsClassifier

X = [[1, 1], [1, 2], [2, 1], [6, 6], [6, 7], [7, 6]]
y = ["A", "A", "A", "B", "B", "B"]

m = KNeighborsClassifier(n_neighbors=3).fit(X, y)
print(m.predict([[2, 2], [6, 5]]))

Beklenen çıktı

['A' 'B']

Soru ve cevaplar

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

1 KNN'de <code>fit</code> çağrısı ne yapar?

  • Veriyi kümeler
  • Eğitim verisini saklar Doğru cevap
  • Ağırlık öğrenir
  • Bir doğru uydurur

Açıklama: Mesafeler tahmin anında, saklanan tüm örneklere göre hesaplanır.

2 5 komşulu bir KNN sınıflandırıcısı oluştur.

Soru
m = KNeighborsClassifier(____=5)
Cevap
m = KNeighborsClassifier(n_neighbors=5)

Açıklama: Komşu sayısı n_neighbors parametresiyle verilir; varsayılanı 5'tir.

3 Kavramları eşleştir.

Kavram Anlamı
K Oy veren komşu sayısı
çoğunluk oyu Sınıf kararı
tembel öğrenici Eğitimde yalnızca saklar
boyutun laneti Çok boyutta mesafe sorunu

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