SVM之matlab与python对比测试

 python 下与matlab下SVM 使用结果对比:

1、matlab测试code:

       scores_train = ones(28,1)*0.8
       scores_train(1,1)=6
       scores_train(2,1)=4
    
    
       score_size=  size(scores_train)
       D=ones(28,5)*0.2

       scores_train
       svm_model = svmtrain(scores_train, D, '-s 4 -t 0');  %svmtrain
       [scores_pred, ~,~] = svmpredict(scores_train, D, svm_model,'-q');
       abs(scores_pred - scores_train)
       svm_err = (sum(abs(scores_pred - scores_train))) / length(scores_train)

2、python测试代码: 

def Train_SVR( ):


    store_D1 = np.ones((28,5))*0.2

    store_score1 = np.ones((28, 1)) * 0.8
    store_score1[0, 0] =6
    store_score1[1,0] =4
    store_score1= store_score1.ravel()


    print("store_D1", store_D1)
    print("store_score1", store_score1)

    # svr = GridSearchCV(SVR(kernel='linear'), cv=3, # param_grid={"C": [0.01, 0.1, 1, 10]})
    #                    param_grid={"C": [1e0, 1e1, 1e2, 1e3]})
    # 训练
    svr = SVR(kernel="linear", epsilon=-0.0, C=0.1)
    svr.fit( store_D1, store_score1 )
    y_svr = svr.predict(store_D1)
    print("y_svr ***************************》  ", y_svr)

    print(" len(store_score1)",  len(store_score1))
    abs_value= abs(y_svr - store_score1)
    print("abs_value ", abs_value)
    svm_err = (sum(abs_value) )/ len(store_score1)
    print("svm error  ", svm_err)

    return  svr

起初,测试发现python预测的结果总是过拟合,查看y_svr, 总是比matlab中多个0.1, 很是纳闷,改变对离散点的惩罚项C, 不起任何作用, 最后通过通过matlab的输出,发现是默认epsilon=0.1.

参考链接:

[1]、python机器学习库scikit-learn:SVR的基本应用_python

猜你喜欢

转载自blog.csdn.net/ljh618625/article/details/106395926
今日推荐