KNN nedir?
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 47/112
- 5 dk
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
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
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.
m = KNeighborsClassifier(____=5)
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 |