Makine Öğrenmesi
predict metodu
predict() metodu yeni veriler için tahmin yapar.
predict ailesi
Sınıflandırıcıların birkaç tahmin yöntemi vardır:
predict: sınıf etiketi.predict_proba: sınıf olasılıkları (sütun sırası classes_).decision_function: eşik öncesi ham skor; SVM ve doğrusal modellerde.
m = LogisticRegression(max_iter=1000).fit(X_train, y_train)
print(m.predict(X_test[:2]))
print(m.predict_proba(X_test[:2]).round(3))
print(m.decision_function(X_test[:2]).round(2))
SVC varsayılan olarak predict_proba sunmaz; probability=True ile açılır ama eğitim yavaşlar.
Tahmin girdisinin şekli
predict her zaman eğitimdeki sütun sayısında iki boyutlu girdi ister. Tek bir örnek için reshape(1, -1) ya da X[i:i+1] dilimi kullanılır:
ornek = X_test[0] # şekil (4,)
m.predict(ornek.reshape(1, -1)) # şekil (1, 4)
m.predict(X_test[0:1]) # aynısı
Dilim X[0:1] iki boyutu korur; indeks X[0] bir boyut düşürür.
Uygulama Skor ve olasılık
Meme kanseri verisinde ölçekli lojistik regresyonu eğit. İlk test örneği için decision_function skorunu ve predict_proba[:, 1] olasılığını round(..., 3) ile aynı satırda yazdır. Ardından olasılığın 1 / (1 + np.exp(-skor)) ile aynı olduğunu np.isclose ile yazdır.
Örnek çözümü göster
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
m = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)
skor = m.decision_function(X_test[:1])[0]
olasilik = m.predict_proba(X_test[:1])[0, 1]
print(round(skor, 3), round(olasilik, 3))
print(np.isclose(olasilik, 1 / (1 + np.exp(-skor))))
Kendini test et
-
İkili lojistik regresyonda <code>decision_function</code> değeri 0 ise olasılık kaçtır?
Cevabı göster
0.5 — Olasılık sigmoid(skor)'dur; sigmoid(0) = 0.5, yani karar sınırı.
-
Tek örneği iki boyutlu yap.
m.predict(ornek.reshape(____))
Cevabı göster
m.predict(ornek.reshape(1, -1))
-
Yöntemleri eşleştir.
- predict
- Etiket
- predict_proba
- Olasılıklar
- decision_function
- Ham skor
- classes_
- Sütun sırası
Sıradaki ders: score metodu