求多分类孪生支持向量机的python代码,要求多分类方式为one vs one

参考文献为[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))

```