libsvm回归分析步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Libsvm回归分析步骤:
1、数据准备
将数据整理成label index1:value1 index2:value2 ... indexn:valuen的格式
其中label为目标值,index1……indexn 从1到n的自然数,value为对应的特征值。
技巧:如何将要整理的数据从 label value1 value2 ... valuen 转成
label index1:value1 index2:value2 ... indexn:valuen
可在excel下添加辅助列,每列分别为1:, 2: , ……n:
然后使用 =concatenate(E1,B1)将两列拼接起来假设E1代表value1, B1代表index1,则得到的结果是 index1:value1
2、数据归一化
将1中得到的数据进行归一化,注意,将训练数据和测试数据一起归一化
为了方便,可写一个批处理文件如:
svm-scale -y -1 1 -s p.txt all.txt>all-scaled.txt //所有数据一起归一化,结果存放在
all-scaled.txt中,参数存放在p.txt中svm-scale -y -1 1 -r p.txt train.txt>train-scaled.txt //利用p.txt中参数归一化train.txt svm-scale -y -1 1 -r p.txt test.txt>test-scaled.txt //利用p.txt中参数归一化test.txt
注意:需要将归一化的数据,及批处理程序都放在 svm-scale.exe 所在的目录下,否则要写绝对路径。
3、寻找最优参数
所需调整的重要参数是-c 和–g,可以使用 gridregression.py寻找最优参数。
详细操作可参考用livsvm对下关水位的预测.pdf
若需对训练数据进行聚类,运行 b.txt(当时没取好名字☺)
除了大于……不聚类可不填外,其他参数必填。
参数说明:
维数如label 1:value1 2:value2 3:value3 的维数为4
结果存放在 result2.txt中
其中经过聚类后去除的项标为0,便于聚类前后比较和统计。
4、训练
进过第三不获取的参数进行训练。
如svm-train -s 3 -t 2 -c 4 -g 0.5 -p 0. 0.015625 train.txt
也要将训练数据放在svm-train.exe所在的目录下
具体参考用livsvm对下关水位的预测.pdf
5、预测
svm-predict test-scaled.txt train-scaled.txt.model test-scaled-output.txt>test-scaledResult.txt
test-scaled.txt为归一化后的测试数据
预测结果存放在test-scaledResult.txt
具体参考用livsvm对下关水位的预测.pdf
6、对预测结果反归一化
5中得到的预测结果也是归一化后的,所以需要进行反归一化
使用公式:(Value-lower)*(max-min)/(upper - lower)+ min
Value为需要反归一化的值,upper,lower分别为归一化的的最大最小值,如(1,-1)max,min为被归一化数据中的最大最小值
7、计算误差
在matlab下调用calcError.m
函数包含三个参数: obs-----目标值 pre------预测值threshold(可选参数)------用于统计大于某个值的所有数据的预测误差