使用 SVM 时如何计算分数?



我是机器学习的新手,我对 sklearn 关于如何在使用sklearn.svm.SVC时获取分数的文档感到有点困惑。

这是我的代码

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.30)
for _c in [0.4,0.6,0.8,1.0,1.2,1.4]:
svm=SVC(C=_c,kernel='linear')
svm.fit(x_train,y_train)
result=svm.predict(x_test)
print('C value is {} and score is {}'.format(_c,svm.score(x_test,y_test)))

这是输出

C value is 0.4 and score is 0.0091324200913242
C value is 0.6 and score is 0.0091324200913242
C value is 0.8 and score is 0.0091324200913242
C value is 1.0 and score is 0.0091324200913242
C value is 1.2 and score is 0.0091324200913242
C value is 1.4 and score is 0.0091324200913242

我看到所有的分数都是一样的,我的问题如何确定我的模型的最佳分数?

  1. 我是否应该将预测值传递给 svm.score y 值,即

    result=svm.predict(x_test)
    svm.score(x_test,result))
    
  2. 我应该传递x_test和y_test值,即

    svm.score(x_test,y_test))
    

对于您的问题:

  1. 这是错误的,您无法将x的功能与目标y进行比较
  2. 1 中的错误相同。

您必须使用:

for _c in [0.4,0.6,0.8,1.0,1.2,1.4]:
svm=SVC(C=_c,kernel='linear')
svm.fit(x_train,y_train)
result=svm.predict(x_test)
print('C value is {} and score is {}'.format(_c,svm.score(y_test,result)))

这会将您的原始目标值与y_test的预测值进行比较result。这就是测试的想法,你根据原始值测试你的预测,看看你的预测有多好/多坏。

最新更新