predict metodu
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 4/112
- 5 dk
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.
Başlangıç kodu
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)
# buraya yazÖrnek çözüm
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))))Beklenen çıktı
5.457 0.996 True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 İkili lojistik regresyonda <code>decision_function</code> değeri 0 ise olasılık kaçtır?
- 0.5 Doğru cevap
- 0
- 1
- Tanımsız
Açıklama: Olasılık sigmoid(skor)'dur; sigmoid(0) = 0.5, yani karar sınırı.
2 Tek örneği iki boyutlu yap.
m.predict(ornek.reshape(____))
m.predict(ornek.reshape(1, -1))
Açıklama: reshape(1, -1) tek satır, gerektiği kadar sütun üretir.
3 Yöntemleri eşleştir.
| Kavram | Anlamı |
|---|---|
predict |
Etiket |
predict_proba |
Olasılıklar |
decision_function |
Ham skor |
classes_ |
Sütun sırası |