CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

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

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

Soru
m.predict(ornek.reshape(____))
Cevap
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ı

Orta seviye bölümündeki tüm dersler