CodeBlanks Logo Icon CodeBlanks

Sınıflandırma

SVM, ikili ve çok sınıflı sınıflandırmada kullanılır.

SVM ile sınıflandırma

Uygulamada SVM her zaman ölçekleyiciyle bir pipeline'da kullanılır. Çok sınıflı problemlerde SVC içeride bire-bir (OvO) stratejisi uygular: her sınıf çifti için bir model.

m = make_pipeline(StandardScaler(), SVC()).fit(X_train, y_train)
print(m.score(X_test, y_test))
print(m.decision_function(X_test[:1]).shape)   # (1, sınıf_sayısı)

Olasılık gerekirse SVC(probability=True) kullanılır; bu, içeride ek bir CV ile kalibrasyon yaptığı için eğitimi yavaşlatır.

Regresyon: SVR

Aynı fikir regresyonda SVR'dır: tahminin etrafında genişliği epsilon olan bir tüp vardır; tüp içindeki hatalar cezalandırılmaz, yalnızca dışarı taşanlar destek vektörü olur:

from sklearn.svm import SVR
r = make_pipeline(StandardScaler(), SVR(C=10, epsilon=0.1)).fit(X, y)

epsilon büyüdükçe daha az destek vektörü ve daha düzgün bir fonksiyon elde edilir.

Uygulama Şarapta SVM

Şarap verisini test_size=0.3, random_state=0, stratify=y ile böl. make_pipeline(StandardScaler(), SVC()) eğit; test doğruluğunu round(..., 3) ile ve ilk test örneğinin decision_function sonucunun şeklini yazdır.

Başlangıç kodu

model.py
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.svm import SVC

X, y = load_wine(return_X_y=True)

# buraya yaz

Örnek çözüm

model.py
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.svm import SVC

X, y = load_wine(return_X_y=True)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
m = make_pipeline(StandardScaler(), SVC()).fit(X_train, y_train)
print(round(m.score(X_test, y_test), 3))
print(m.decision_function(X_test[:1]).shape)

Beklenen çıktı

1.0
(1, 3)

Soru ve cevaplar

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

1 4 sınıflı bir problemde bire-bir strateji kaç ikili model eğitir?

  • 16
  • 6 Doğru cevap
  • 4
  • 3

Açıklama: Sınıf çifti sayısı 4·3/2 = 6'dır.

2 SVC'nin olasılık üretmesini sağla.

Soru
m = SVC(____=True)
Cevap
m = SVC(probability=True)

Açıklama: probability=True ek bir iç CV ile Platt kalibrasyonu yapar.

3 Kavramları eşleştir.

Kavram Anlamı
SVC SVM sınıflandırıcı
SVR SVM regresör
epsilon Cezasız tüp genişliği
OvO Sınıf çifti başına model

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