libsvm使用方法
所需要软件下载:
这里只考虑windows的环境:
操作方法
- 01
下载libsvm的zip包,只要解压到某个文件夹就好就好(随便D:\gjs\libsvm)
- 02
安装python
- 03
下载好gnuplot ,直接解压就好,无需安装(C:\gnuplot)
- 04
.数据格式说明 0 1:5.1 2:3.5 3:1.4 4:0.22 1:4.9 2:3.0 3:1.4 4:0.21 1:4.7 2:3.2 3:1.3 4:0.2[label] [Index1]:[value1] [index2]:[value2] [index3]:[value3] [label]:类别(通常是整数)[index n]: 有顺序的索引 [value n] 可能需要自己转换训练以及测试数据的格式。
- 05
1. windows cmd命令窗口 下载的libsvm包里面已经为我们编译好了(windows)。 进入libsvm\windows,可以看到这几个exe文件: 1.svm-predict: svmpredict test_file mode_file output_file 依照已经train好的model ,输入新的数据,并输出预测新数据的类别。 2.svm-scale: 有时候特征值的波动范围比较大需要对特征数据进行缩放,可以缩放到0--1之间(自己定义)。 3.svm-toy:似乎是图形界面,可以自己画点,产生数据等。 4.svm-train: svmtrain [option] train_file [model_file] train 会接受特定格式的输入,产生一个model 文件。 第一步:可以自己生成数据,使用svm-toy: 双击svm-toy,点击change可以在画布上画点:
- 06
点击run,其实就是train的过程,划分的区域:
- 07
点击save可以保存数据(假设保存的数据在D://libsvm.txt)。 第二步:使用训练数据libsvm.txt进行建模,使用svm-train: 使用cmd命令进入到我们解压的libsvm目录中的windows目录,使用svm-train,如下:
- 08
其中, #iter为迭代次数, nu 是你选择的核函数类型的参数, obj为SVM文件转换为的二次规划求解得到的最小值, rho为判决函数的偏置项b, nSV 为标准支持向量个数(0<a[i]<c), nBSV为边界上的支持向量个数(a[i]=c), Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和 同时在该目录下会生成一个训练好的model(libsvm.txt.model)可以打开文件查看里面的内容,主要包括一些参数和支持向量等 第三步:使用建好的model进行预测,使用svm-predict
- 09
同时会生成一个输出文件(libsvm.txt.out),每行代表该行的预测值类别。 参数优化: svm的参数优化很重要,libsvm包里面包含了参数的优化函数,主要是暴力求解参数。一般来说我们会使用高斯核函数,包含两个参数(c 和 g) 使用gird.py文件进行参数优化选择: grid.py在libsvm/tools里面,首先需要修改gird.py中的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录:
- 10
进入grid.py的相应目录,执行grid.py D://libsvm.txt
- 11
前面两个分别是c 跟g的值,这时候我们重新训练模型(加上参数c g)
- 12
可以看到,准确率有了显著的提升, 其实这些步骤完全可以使用easy.py进行实现,同理也需要修改eays.py里面的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录:
- 13
步骤总结如下: 1.转换训练数据为相应的格式。 2.有时候可能需要使用 svm-scale对数据进行相应的缩放,有利于训练建模。
- 14
3.使用grid.py或者easy.py进行参数优化。 4.使用svm-train建模和svm-predict进行预测。