CodeBlanks Logo Icon CodeBlanks

Tahmin

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

model.py
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

model.py
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.

Soru
yanlis = np.where(tahmin ____ y_test)[0]
Cevap
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

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