logo资料库

用LIBSVM做回归和预测的步骤.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
用LIBSVM做回归和预测的步骤
用 LIBSVM 做回归和预测的步骤 <1> 下载 Libsvm、Python 和 Gnuplot。我用的版本分别是:Libsvm(2.8.1), Python(2.4),Gnuplot(3.7.3)。注意:Gnuplot 一定要用 3.7.3 版, 3.7.1 版的有 bug. <2> 修改训练和测试数据的格式(可以自己用 perl 编个小程序): 目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值 ... ... 例如: 2.3 1:5.6 2:3.2 表示训练用的特征有两维,第一维是 5.6,第二维是 3.2,目标值是 2.3 注意:训练和测试数据的格式必须相同,都如上所示。测试数据中的目标值是为 了计算误差用 <3> 分别使用 Libsvm 中的 Windows 版本的工具 svmscale.exe 进行训练和 测试数据的归一化,svmtrain.exe 进行模型训练,svmpredict.exe 进行预测 (1)svmscale.exe 的用法:svmscale.exe feature.txt feature.scaled 默认的归一化范围是[-1,1],可以用参数-l 和-u 分别调整上界和下 届,feature.txt 是输入特征文件名 输出的归一化特征名为 feature.scaled (2)svmtrtrain.exe 训练模型 我习惯写个批处理小程序,处理起来比较方便。例如 svm_train.bat 中训练语 句为: svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled 训练得到的模型为 feature.scaled.model 具体的参数含义可以参考帮助文档。这里-s 是选择 SVM 的类型。对于回归来说, 只能选 3 或者 4,3 表示 epsilon-support vector regression, 4 表示 nu-support vector regression。-t 是选择核函数,通常选用 RBF 核函数, 原因在“A Practical Guide support vector classification”中已经简单介绍过 了。-p 尽量选个比较小的数字。需要仔细调整的重要参数是-c 和-g。除非用 gridregression.py 来搜索最优参数,否则只能自己慢慢试了。 用 gridregression.py 搜索最优参数的方法如下: python.exe gridregression.py -svmtrain H:\SVM\libsvm-2.81\windows\svmtrain.exe -gnuplot C:\gp373w32\pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:\SVM\libsvm-2.81\windows\feature.scaled > gridregression_feature.parameter
注意:-svmtrain 是给出 svmtrain.exe 所在路径,一定要是完整的全路径 -gnuplot 是给出 pgnuplot.exe 所在路径。这里要用 pgnuplot.exe 这种命令 行形式的,不要用 wgnupl32.exe,这个是图形界面的。 -log2c 是给出参数 c 的范围和步长 -log2g 是给出参数 g 的范围和步长 -log2p 是给出参数 p 的范围和步长 上面三个参数可以用默认范围和步长 -s 选择 SVM 类型,也是只能选 3 或者 4 -t 是选择核函数 -v 10 将训练数据分成 10 份做交叉验证。默认为 5 最后给出归一化后训练数据的全路径 搜索最优参数的过程写入文件 gridregression_feature.parameter(注意别 少了这个>符号啊) 根据搜索到的最优参数修改 feature.scaled.model 中的参数 (3)用 svmpredict.exe 进行预测 svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted 其中 feature_test.scaled 是归一化后的测试特征文件名, feature.scaled.model 是训练好的模型,SVM 预测的值在 feature_test.predicted 中。
分享到:
收藏