當要使用SVM將資料分成多類時,有兩種方法,一種是一對一,另外一種是一對多。
以下是介紹一對一的方式,當有n個features時,會建立(n * n-1)/2個分類器。
以下使用scikit-learn的紅酒資料庫,紅酒資料庫中的分類結果中共有三類。
from sklearn import svm
from sklearn import datasets
from sklearn.model_selection import train_test_split
wine = datasets.load_wine() #load進wine的資料庫
X = wine.data
y = wine.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
clf = svm.SVC(gamma=0.001, decision_function_shape='ovo')
clf.fit(X_train, y_train)
dec = clf.decision_function(X_test)
dec.shape[1] #n_class * (n_class - 1) / 2 = 3*2/2 = 3