libsvm学习(一)
libsvm学习(一)
2011年12月27日
(记录下过程,以备使用的时候查阅)
一、所需三个软件:
python3.1.2 下载链接:http://www.python.org/ftp/python/3.1.2/
libsvm2.9 下载链接:http://download.csdn.net/download/phoeni_seu/1857117
gnuplot软件 下载链接:http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/g/project/gn/gnuplot/gnuplot/4.2.3/
python需要安装,其他两个解压即可使用。当然亦可以选择java、VC环境。
二、一般过程
LibSVM 使用的一般步骤是:
1 )按照 LIBSVM 软件包所要求的格式准备数据集;
2 )对数据进行简单的缩放操作;
3 )首要考虑选用 RBF 核函数;
4 )采用交叉验证选择最佳参数 C 与 g ;
5 )采用最佳参数 C 与 g 对整个训练集进行训练获取支持向量机模型;
6 )利用获取的模型进行测试与预测。
三、注意事项
1、LibSVM的输入有格式要求,可以按照格式要求编写程序实现,也可以参考http://download.csdn.net/detail/dadaadao/1571409  在excel中直接生成libsvm所用格式数据。
2、配置
修改easy.py和grid.py最上方两行有关libsvm、python和gnuplot的路径的代码。其中,svmpath 代表 svmscale.exe、svmtrain.exe 等可执行文件的路径,pythonpath 代表easy.py和grid.py等脚本文件路径,gnuplotpath 代表 pgnuplot.exe 的路径。
这里,我把easy.py和grid.py复制到\libsvm-2.9\python下,然后修改这两个文件中的路径代码(记得用绝对路径,也可以设置成环境变量后使用相对路径),如下:
//easy.py修改
else:
# example for windows
svmscale_exe = r"d:\libsvm-2.9\windows\svm-scale.exe"
svmtrain_exe = r"d:\libsvm-2.9\windows\svm-train.exe"
svmpredict_exe = r"d:\libsvm-2.9\windows\svm-predict.exe"
gnuplot_exe = r"d:\gnuplot\bin\pgnuplot.exe"
grid_py = r"d:\libsvm-2.9\python\grid.py"
//grid.py修改
else:
# example for windows
svmtrain_exe = r"d:\libsvm-2.9\windows\svm-train.exe"
gnuplot_exe = r"d:\gnuplot\bin\pgnuplot.exe"
四、至此环境算是搭好了,下面可以开始进行分类、回归、预测等试验。
使用时,可以直接使用easy.py,或者手动进行,步骤如下:
规范化训练样本、交叉验证寻找最合适参数、利用寻找到的参数进行模型训练、规范化测试样本、使用模型进行分类预测。
刚开始接触,直接使用easy.py执行,
命令行为:
cmd
cd d:\python31
python d:\libsm-2.9\python\easy.py d:\libsm-2.9\python\heart_scale
回车执行,dos运行结果
Scaling training data...
Cross validation...
Best c=2048.0, g=0.0001220703125 CV rate=84.0741
Training...
Output model: heart_scale.model
执行后可以得到相应的结果,结果保存在python31目录下,产生了5个新文件train.libsvm.model(预测模型)、train.libsvm.range(缩放规则)、train.libsvm.scale(缩放结果)、train.libsvm.scale.out(规范化结果)、train.libsvm.scale.png(寻参图示)。
解释下.modle中训练结果头部几个字段,
svm_typec_svc // 所选择的 svm 类型,默认为 c_svc
kernel_typerbf // 训练采用的核函数类型,此处为 RBF 核
gamma0.000122071 //RBF 核的参数 γ
nr_class2 // 类别数,此处为两分类问题
total_sv103 // 支持向量总个数
rho1.61698 // 判决函数的偏置项 b
label 1-1 // 原始文件中的类别标识
nr_sv 51 52 // 每个类的支持向量机的个数
SV // 以下为各个类的权系数及相应的支持向量
 ...........
五、学习情况(待续)


猜你喜欢
转载自bos274km.iteye.com/blog/1357903
今日推荐
周排行