||
Libsvm有两个参数需要用户指定:c和gamma。实际上在LibSVM中用户需要给出一个c和gamma的区间,LibSVM采用交叉验证cross-validation accuracy的方法确定分类效果最好的c和gamma。
举个例子说明什么是交叉验证,假如把训练样本集拆成三组,然后拿 1 跟 2 来 train model 并 predict 3 以得到正确率; 再来拿 2 跟 3 train 并 predict 1 ,最后 1,3 train 并 predict 2 ,最后取预测精度最高的那组c和gamma。
测试过程:libsvm文件夹下有一个heart_scale测试文件
(1)安装python2.7.6
(2)下载libsvm,进入到tools文件夹下,修改grid.py
(3)gnuplot_exe = r"c:tmpgnuplotbinpgnuplot.exe" 修改gunplot路径
(4) 进入命令行,运行 python grid.py ../heart_scale
运行结束之后,会得到预测精度最高的c和gamma,也就是等高线最高处那时的参数。
但是,仍旧需要进一步调整。
grid.py -log2c 9.25,12.75,0.25 -log2g -11.25,-14.75,-0.25 ../heart_scale
libsvm /windows
生成model的命令:svm-train -c 2048 -g 0.000244140625 ../heart_scale 会得到一个预测model
进行预测的命令:svm-predict ../heart_scale heart_scale.model heart_scale.out
SVM scale:对数据进行规范化 (v-min)/(max-min)
svm-scale -l 0 -u 1 -s german.range german.train >german.train.scale
svm-scale l 0 -u 1 -r german.range german.test > german.test.scale
-b 1是SVM option(具有概率值的预测比没有的结果好)
grid.py -b 1 -v 10 ../heart_sacle
svm-train -b 1 -c g 0.03125 ../heart_scale
svm -predict -b 1 ../heart-scale heart_scale.model
参考:
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
http://www.cnblogs.com/zhangchaoyang/articles/2189606.html
http://baike.baidu.com/link?url=TnWbAaLRe3McQljIQAflAkqyX4ZNZ_B_6X2RoYvJsQrNFKTP7Ts1oVa7xXcoGbxT
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-21 18:24
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社