Tahmin
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 73/112
- 7 dk
Model ile tahmin yaparsın.
Tahmin ve olasılık
Eğitilmiş pipeline yeni örnekleri doğrudan ham ölçümlerle alır. predict_proba kararın ne kadar emin olduğunu gösterir:
p = model.predict(X_test[:5])
print(p)
print(model.predict_proba(X_test[:2]).round(2))KNN'de olasılıklar komşu oylarının oranıdır; 5 komşuda değerler 0.2'nin katlarıdır.
Hatalı tahminleri bulmak
Boolean maske ile yanlış tahmin edilen örneklerin indeksleri bulunur; sonra bu örneklerin olasılıkları incelenerek modelin nerede kararsız kaldığı anlaşılır:
tahmin = model.predict(X_test)
yanlis = np.where(tahmin != y_test)[0]
print(yanlis)
print(model.predict_proba(X_test[yanlis]).round(2))Hataların çoğu genellikle iki komşu sınıf arasındadır; karmaşıklık matrisi bunu doğrular.
Uygulama Hataları incele
Test kümesi için tahminleri al. Yanlış tahmin sayısını, ardından yanlış tahmin edilen örneklerin gerçek sınıflarını (y_test[yanlis]) yazdır.
Başlangıç kodu
import numpy as np
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42, stratify=y)
model = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=5)).fit(X_train, y_train)
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42, stratify=y)
model = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=5)).fit(X_train, y_train)
tahmin = model.predict(X_test)
yanlis = np.where(tahmin != y_test)[0]
print(len(yanlis))
print(y_test[yanlis])Beklenen çıktı
3 [1 2 1]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 5 komşulu KNN'de bir sınıfın olasılığı hangisi olamaz?
- 0.5 Doğru cevap
- 0.4
- 0.6
- 1.0
Açıklama: Olasılık k/5 biçimindedir: 0, 0.2, 0.4, 0.6, 0.8, 1.0.
2 Yanlış tahminlerin indekslerini al.
yanlis = np.where(tahmin ____ y_test)[0]
yanlis = np.where(tahmin != y_test)[0]
Açıklama: != eleman bazlı farklılık maskesi üretir.
3 İfadeleri eşleştir.
| Kavram | Anlamı |
|---|---|
model.predict |
Sınıf kararı |
model.predict_proba |
Komşu oy oranları |
tahmin != y_test |
Hata maskesi |
np.where(...)[0] |
Hata indeksleri |