CodeBlanks Logo Icon CodeBlanks

İkili sınıflandırma

İkili sınıflandırmada iki sınıf vardır: pozitif ve negatif.

İkili sınıflandırma

İki sınıflı problemlerde sınıflar genellikle 0 (negatif) ve 1 (pozitif) olarak kodlanır. "Pozitif" iyi ya da kötü anlamına gelmez; aradığımız olaydır: hastalık var, işlem sahte, müşteri ayrılacak.

m = LogisticRegression().fit(X, y)
print(m.predict_proba([[5]]))   # [[P(0), P(1)]]
print(m.predict([[5]]))         # P(1) > 0.5 ise 1

predict_proba iki sütun döndürür; pozitif sınıf olasılığı [:, 1] ile alınır.

Karar eşiği

0.5 yalnızca varsayılan eşiktir. Kanser taramasında bir hastayı kaçırmak pahalıysa eşik düşürülür; daha çok kişi pozitif işaretlenir:

p = m.predict_proba(X_test)[:, 1]
karar = (p >= 0.3).astype(int)   # daha hassas eşik

Eşik değiştirmek modeli yeniden eğitmeden kararların dengesini değiştirir; değerlendirme dersinde bunun metriklerle bağlantısını göreceksin.

Uygulama Eşikle karar

LogisticRegression eğit. X_yeni için pozitif sınıf olasılıklarını np.round(..., 2) ile yazdır. Ardından 0.3 eşiğiyle verilen kararları ((p >= 0.3).astype(int)) yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.linear_model import LogisticRegression

X = np.array([[1], [2], [3], [4], [5], [6], [7], [8]])
y = np.array([0, 0, 0, 0, 1, 1, 1, 1])
X_yeni = np.array([[3.5], [4.2], [6.0]])

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.linear_model import LogisticRegression

X = np.array([[1], [2], [3], [4], [5], [6], [7], [8]])
y = np.array([0, 0, 0, 0, 1, 1, 1, 1])
X_yeni = np.array([[3.5], [4.2], [6.0]])

m = LogisticRegression().fit(X, y)
p = m.predict_proba(X_yeni)[:, 1]
print(np.round(p, 2))
print((p >= 0.3).astype(int))

Beklenen çıktı

[0.24 0.41 0.85]
[0 1 1]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>predict_proba</code> sonucu <code>[[0.3, 0.7]]</code> ise <code>predict</code> ne döndürür?

  • [1] Doğru cevap
  • [0]
  • [0.7]
  • [0.3]

Açıklama: Pozitif sınıf olasılığı 0.7 > 0.5 olduğu için sınıf 1 seçilir.

2 Pozitif sınıfın olasılık sütununu al.

Soru
p = m.predict_proba(X_test)[____]
Cevap
p = m.predict_proba(X_test)[:, 1]

Açıklama: İkinci sütun classes_ içindeki ikinci sınıfa, yani 1'e aittir.

3 Terimleri eşleştir.

Kavram Anlamı
pozitif sınıf Aranan olay (1)
negatif sınıf Olayın yokluğu (0)
predict_proba[:, 1] Pozitif olasılığı
eşik Olasılıktan karara geçiş

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