Support Vector Machine, Destek Vektör Makinesi olarak Türkçe'ye çevrilebilir. Sınıflandırma için kullanılan makine öğrenmesi yöntemlerden biridir.
NOT: SVM, binary classification için geliştirilmiştir. Yani 2 tane sınıfı tahmin etmek için geliştirilmiş olmasına karşın farklı SVM modellerini kullanarak çok sınıflı problemleri de SVM ile çözebiliyoruz.
SVM, Temel olarak iki sınıfı bir doğru ya da düzlem kullanarak ayırmaya çalışır. Bu ayırma işlemini sınırda ki elemanlara göre yapar.
En önemli ve güçlü Supervised Learning tekniklerinden birisidir. Hem Classification(Sınıflandırma) hem de Regression yapabilir ancak daha çok sınıflandırma yapar.
SVM'lerin önemli dezavantajlarından birisi verilerin önce standartlaştırılması gerekir.
Bu algoritma rakamsal tahminler yaparken regresyon algoritması SVR olarak kullanılır fakat sınıflandırma yapılmak istenirse SVM kullanılır.
#1. kutuphaneler
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
veriler=pd.read_csv("veriler.csv")
#ulke,boy,kilo,yas,cinsiyet
x=veriler.iloc[:,1:4].values
y=veriler.iloc[:,4:].values
#Şimdi Train ve Test olarak ayırma işlemi yapalım
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.33,random_state=0)
#STANDARTLAŞTIRMA
from sklearn.preprocessing import StandardScaler
sc=StandardScaler()
X_train=sc.fit_transform(x_train)#fit_transform
X_test=sc.transform(x_test)#transform
#SVM
from sklearn.svm import SVC
svc=SVC(kernel='linear')#linear,rbf,poly,sigmoid
svc.fit(X_train,y_train)#X den Y öğren
#şimdi öğrendiğin bilgi ile predict-tahmin yap
y_pred=svc.predict(X_test)
print(y_pred)
print(y_test)
#CONFUSION MATRİX-HATA MATRİSİ
from sklearn.metrics import confusion_matrix
cm=confusion_matrix(y_test,y_pred)
print(cm)
SVM'nin amacı veri seti içindeki en yüksek margin'e sahip hyperplane'i bulmaktır. Bu hyperplane öyle olmalıdır ki sınıflara ait Suppor Vector'lar arası mesafe max olmalıdır. Yani sınıfları en iyi ayıracak düzlem aranır.
Örnek 2
Şimdi basit bir örnek ile devam edelim. X ile bağımsız değişkenler tanımladıktan sonra y ile bu değişkenlerin ait olduğu sınıflar belirtilecek. Daha sonra yeni verilen parametrelerin sınıfı tahmin edilecek. İşte Python kodları:
from sklearn import svm
X =[
[-3,-1],
[0,-2],
[-2.5,2],
[-1,-1],
[3,.5],
[.5,3],
[-3,-3],
]
y = [0, 1, 0, 1, 1, 0, 1]
clf = svm.SVC(kernel ='linear').fit(X, y)
print(clf.predict([[2,4]]))#0