the computational time may be different. For data with many

时间:2022-05-31 05:35:16

一、官方介绍

libsvm主页:https://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html

libsvm介绍文档:~cjlin/papers/libsvm.pdf

官方关于更有效地使用libsvm的使用说明:~cjlin/papers/guide/guide.pdf (很有须要看)

数据库:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/

关于二分类的实例:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary.html

关于多分类实例:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html

常见问答:~cjlin/libsvm/faq.html ? (这里能够帮你解决好多疑惑)

有用工具列表:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/ (guide提到的liblinear在此)


二、必要软件

libsvm-3.20:~cjlin/libsvm/libsvm-3.20.zip
python-2.7.10:https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi(挪用python工具时使用)
gnuplot5.0.1:(用画图展示整个搜索最佳參数过程)



三、训练过程说明
——(以后输入命令以.bat格局存储就可以使用)

1、提取数据形式的特征:(类别标签 特征序号:特征值)
1 1:2.111 2:3.567 3:-0.125
...
0 1:2.156 2:3.259 3:0.258
...
分袂将训练样本数据和測试样本数据存成名为train的文件和名为test的文件(仅为了便利区分)

2、对特征数据进行缩放(提高运算效率)
svm-scale -l -1 -u 1 -s rangetrain >train.scale (-1~1暗示缩放范畴 -l表low -u表up -s表save 将调动后区间存为range ?train是原始特征数据 train.scale是缩放后的数据)
svm-scale -r range1test>test.scale(-r 表read 将test的数据按同一range进行缩放)
说明:区间[0,1]和[-1,1]的效果是一样的,,仅仅是[0,1]的运算效率更高


3、寻找最优c、g參数
python grid.pytrain.scale(运算结束后,会供给最优參数c和g.比喻运算功效是2.0 1.0 96.8922,96.8922为交叉验证准确率)

4、使用最优參数进行训练
svm-train -c 2 -g1train.scale(会生成一个名为train.scale.model文件,文件參数说明见兴许增补说明.这里我们使用了默认核函数RBF。一般RBF是效果最好的)

5、拿训练功效进行測试
svm-predict test.scale train.scale.model test.predict(得预測功效test.predict文件以及正确率)



四、增补说明:

1、窜改交叉验证
svm-scale -l -1 -u 1 train >train.scale?

svm-train -v 6 train.scale(交叉验证是为了得到更好的參数)

python grid.pytrain.scale
svm-train -c 2 -g 2 train.scale

2、关于/libsvm-3.20/tools/中的easy.py和grid.py
安置完python和gnuplot后,将E:\Program Files\Python,F:\libsvm-3.20\windows,E:\Program Files\gnuplot\bin三个目录插手到系统路径里面,窜改上两个py文件里关于libsvm的路径和gnuplot的路径.
easy.py中:gnuplot_exe = r"e:\Program Files\gnuplot\bin\gnuplot.exe"
grid.py中:#svmtrain_pathname = r‘f:\libsvm-3.20\windows\svm-train.exe‘
? ? ? ? ?? self.gnuplot_pathname = r‘e:\Program Files\gnuplot\bin\gnuplot.exe‘
能够依照guide.pdf,用easy.py測试guide中的实例。guide中尝试数据链接:~cjlin/papers/guide/data/

3、关于model文件里的參数说明
svm_type c_svc ? (svc表用SVM作分类器,svr表用SVM作回归,c_svc 表用异常值惩办因子C进行不全然分类)
kernel_type rbf ? ? (径向基核,对付大大都情况都是一个较好的选择:d(x,y) = exp(-gamma*|x-y|2))
gamma 0.03125核函数的參数)
nr_class 2类别数)
total_sv 287撑持向量总数)
rho 102.102判决函数的常数项b)
label 1 0类标签)
nr_sv 144 143各个类中落在界限上的向量个数)
SVSV以下枚举了全部的撑持向量)
8192 1:-1 2:-0.688314 3:0.595954 4:0.416735

...


4、svmscale.exe參数说明 "-l?lower : x scaling lower limit (default -1)\n"
"
-u upper : x scaling upper limit (default +1)\n"
"
-y y_lower y_upper : y scaling limits (default: no y scaling)\n"
"
-s save_filename : save scaling parameters to save_filename\n"
"
-r restore_filename : restore scaling parameters from restore_filename\n"

5、svmtrain.exe的參数列表