胜景 2022-08-17 10:12 采纳率: 0%
浏览 42
已结题

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

参考文献为[1] Tomar D , Agarwal S . Multi-class Twin Support Vector Machine for Pattern Classification. 2016.

  • 写回答

1条回答 默认 最新

  • 王大师王文峰 企业官方账号 2022-08-19 10:54
    关注

    一对一法(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))
    
    

    ```

    评论

报告相同问题?

问题事件

  • 系统已结题 8月25日
  • 修改了问题 8月17日
  • 创建了问题 8月17日