Python 如何调整支持向量机参数以更好地训练
我正在研究线性支持向量机,我正在使用Opencv和Python,我试图调整参数以获得更好的训练,但仍然没有得到好的结果,我感觉我经历了错误的参数设置Python 如何调整支持向量机参数以更好地训练,python,opencv,image-processing,svm,training-data,Python,Opencv,Image Processing,Svm,Training Data,我正在研究线性支持向量机,我正在使用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.setC
# 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)
我正在使用上述参数,并从中获得了很多帮助。使用搜索最佳参数值会获得更好的结果。您不能从其他应用程序复制参数值,并期望在自己的数据上获得良好的结果 当调用say
svm.getType()
时,会得到一个int值,例如100。要了解该类型,请参见公共类型下的:
枚举类型{C_SVC=100,NU_SVC=101,ONE_CLASS=102,EPS\u SVR=103,NU\u SVR=104} 因此,100表示
C_SVC
。对于您找到的内核类型:
枚举核类型{CUSTOM=-1,LINEAR=0,POLY=1,RBF
=2,SIGMOID=3,CHI2=4,INTER=5}
那么2意味着RBF核在数据上产生了最好的精度。trainAuto也在预测时提出了问题,当我们使用
hog.setsvmdeter(svm_new)
探测器大小时,当我尝试使用trainAuto
获取类型和核时,它显示打印(svm.getType())#100
print类型的100个值和print(svm.getKernelType())#2
2 KernelType的值。