Model eğitimi
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 51/112
- 5 dk
KNN tembel (lazy) bir algoritmadır; eğitim verisini olduğu gibi saklar.
Ölçekle, sonra eğit
Mesafe tabanlı KNN, ölçeklenmemiş veride büyük birimli özelliğe göre karar verir. Önce StandardScaler ile her özellik ortalama 0, standart sapma 1 yapılır:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler().fit(X_train)
m = KNeighborsClassifier(5).fit(sc.transform(X_train), y_train)
print(m.score(sc.transform(X_test), y_test))Ölçekleyici yalnızca eğitim verisiyle fit edilir ve aynı dönüşüm test verisine uygulanır.
Iris veri seti
scikit-learn küçük örnek veri setleriyle gelir. Iris, 3 çiçek türünün 150 örneğini 4 ölçümle anlatır ve KNN için klasik bir deneme alanıdır:
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
print(X.shape, set(y)) # (150, 4) {0, 1, 2}return_X_y=True doğrudan X ve y dizilerini döndürür.
Uygulama Iris üzerinde KNN
Iris'i yükle, test_size=0.3, random_state=1, stratify=y ile böl. StandardScaler'ı eğitim verisinde fit et, KNeighborsClassifier(n_neighbors=5) eğit ve test doğruluğunu round(..., 3) ile yazdır.
Başlangıç kodu
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
X, y = load_iris(return_X_y=True)
# buraya yazÖrnek çözüm
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1, stratify=y)
sc = StandardScaler().fit(X_train)
m = KNeighborsClassifier(n_neighbors=5).fit(sc.transform(X_train), y_train)
print(round(m.score(sc.transform(X_test), y_test), 3))Beklenen çıktı
0.933
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yaş (20-60) ve maaş (10 000-90 000) özellikleriyle ölçeksiz KNN neye bakar?
- Hiçbirine
- Neredeyse yalnızca maaşa Doğru cevap
- Yalnızca yaşa
- İkisine eşit
Açıklama: Maaş farkları binlerce birimdir; yaş farkları mesafeye neredeyse hiç katkı vermez.
2 Test verisine eğitimde öğrenilen ölçeklemeyi uygula.
X_test_s = sc.____(X_test)
X_test_s = sc.transform(X_test)
Açıklama: Test verisinde yeniden fit yapılmaz.
3 Adımları eşleştir.
| Kavram | Anlamı |
|---|---|
load_iris |
Örnek veri |
StandardScaler |
Ortalama 0, std 1 |
sc.fit(X_train) |
Ölçeği öğren |
m.score(X_test_s, y_test) |
Test doğruluğu |