libsvm自动寻找最优参数
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane),svm有两个重要参数C(惩罚因子)和gamma(核函数参数)
C惩罚因子:取值越大对误差的容忍度越低,但容易出现过拟合;取值越小则容易出现欠拟合。
gamma:决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。
但对于这两个参数的确定,人为去寻找比较困难,并且很难找到最优的参数。而libsvm中有一个grid.py脚本,可以自动寻找出最优的参数。
1.下载安装libsvm,进入libsvm目录执行make。
2.安装gnuplot:pip install gnuplot。
3.修改tools下的grid.py文件:
主要修改svm-tain.c和gnuplot的路径,Linux默认的地址就是对的。Windows系统修改为svmtain.exe(libsvm/windows)和gnuplot.exe的路径。
4.运行grid.py进行参数寻找:
在tools下打开命令行运行grid.py:python grid.py heart_scale
heart_scale是训练数据(有一定格式)
5.运行完成后,最后一行会有三个数据,第一个为C,第二个为gamma,最后一个为交叉验证精度,在tools文件夹下会生成两个文件:heart_scale.out和,第一个文件就是搜索过程中的[local]和最优数据,第二文件就是gnuplot图像。

版权声明:本文为Power392413原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。