將SVM分類器視爲在類別之間擬合可能的最寬的街道
二分類問題
其他分類算法:
軟間隔分類
Scikit_learn代碼 :
加載數據集,縮放特徵,訓練一個線性SVM模型
import numpy as np
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
iris = datasets.load_iris()
X = iris["data"][:,(2,3)]
y = (iris["target"]==2).astype(np.float64)
svm_clf = Pineline((
("scaler",StandardScaler()),
("linear_svc",LinearSVC(c=1,loss="hinge")),
))
svm_clf.fit(x_scaled,y)
非線性SVM分類
處理非線性數據集的方法之一是添加更多特徵
用衛星數據集測試一下
from sklearn.datasets import make_moons
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
polynomial_svm_clf = Pipeline((
("poly_features",PolynomialFeatures(degree=3) )
("scaler",StandardScaler() )
("svm_clf",LinearSVC(c=10,loss="hinge"))
))
polynomial_svm_clf.fit(x,y)
多項式核
from sklearn.svm import SVC
poly_kernel_svm_clf = Pipeline((
(“scaler”,StandardScaler() )
(“svm_clf”,SVC(kernal=“poly”,degree=3,coefo=1,c=5))
))
這段代碼使用了一個3階多項式內核訓練SVM分類器。
模型過度擬合,應該降低多項式階數,擬合不足則提升
解決非線性問題的另一種技術是添加相似特徵。
相似函數可以測量每個實例與一個特定地標之間的相似度。