参考文献为[1] Tomar D , Agarwal S . Multi-class Twin Support Vector Machine for Pattern Classification. 2016.
一对一法(one-versus-one,简称1-v-1 SVMs, OVO SVMs, pairwise)。其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。Libsvm中的多类分类就是根据这个方法实现的。
望采纳,谢谢
X_train, X_test, y_train, y_test = train_test_split(feature, label, test_size=.2,random_state=0)
# 训练模型
model = OneVsRestClassifier(svm.SVC(kernel='linear',probability=True,random_state=random_state))
print("[INFO] Successfully initialize a new model !")
print("[INFO] Training the model…… ")
clt = model.fit(X_train,y_train)
print("[INFO] Model training completed !")
# 保存训练好的模型,下次使用时直接加载就可以了
joblib.dump(clt,"F:/python/model/conv_19_80%.pkl")
print("[INFO] Model has been saved !")
y_test_pred = clt.predict(X_test)
ov_acc = metrics.accuracy_score(y_test_pred,y_test)
print("overall accuracy: %f"%(ov_acc))
print("===========================================")
acc_for_each_class = metrics.precision_score(y_test,y_test_pred,average=None)
print("acc_for_each_class:\n",acc_for_each_class)
print("===========================================")
avg_acc = np.mean(acc_for_each_class)
print("average accuracy:%f"%(avg_acc))
```