如何调整SVM参数以进行更好的训练

时间:2019-08-03 19:38:36

标签: python opencv image-processing svm training-data

我正在开发线性SVM,并且正在将Opencv与Python配合使用,我正在尝试调整参数以进行更好的训练,但仍然无法获得良好的结果,我感觉自己的参数设置有误,

# Create SVM classifier
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_EPS_SVR)
svm.setKernel(cv2.ml.SVM_LINEAR)
#cv2.ml.SVM_LINEAR
svm.setDegree(3)
svm.setGamma(1)
svm.setCoef0(0.0)
svm.setC(0.01)
svm.setNu(0.5)
svm.setP(0.1)
#svm.setClassWeights(0)

我正在使用上述参数,并从here那里获得了很多帮助。

1 个答案:

答案 0 :(得分:2)

使用trainAuto搜索最佳参数值会得到更好的结果。您无法从其他应用程序复制参数值,并期望在自己的数据上获得良好的结果。

当您说svm.getType()时,您会得到一个整数值,例如100。要了解类型,请参见this page,在公共类型下,您会发现:

  

枚举类型{C_SVC = 100,NU_SVC = 101,ONE_CLASS = 102,
  EPS_SVR = 103,NU_SVR = 104}

因此,100表示​​C_SVC。对于内核类型,您可以找到:

  

枚举KernelTypes {自定义= -1,线性= 0,多边= 1,RBF   = 2,SIGMOID = 3,CHI2 = 4,INTER = 5}

然后2表示RBF内核可为您的数据提供最佳准确性。