SVM用于模式识别和回归时,SVM方法及其参数、内核函数的选择目前尚未定型,因此至今有各种形式的SVM。 libsvm就是其中之一,由台湾大学快乐酒馆教授等开发设计的,简单易用、快速有效的SVM模式识别和回归软件包。 他不仅提供了可以在编译的Windows系列系统上运行的文件,还提供了源代码,便于改进、修改和在其他操作系统上的应用---百度百科。
libsvm非常容易使用,通过利用所提供的默认参数可以解决很多问题,还可以解决C-SVM、v-SVM、-SVR、-SVR等问题的交互式检查(Cross-Validation )功能该软件还包括基于一对一算法的多类模式识别问题。
此外,结合使用gnuplot这种交互式绘图工具还可以更好地解决问题。
由于安装libsvm和gnuplot的过程非常简单,因此建议在libsvm上安装gnuplot以便以后调用。 将libsvm文件夹下的windows和tools文件夹添加到系统变量下的path下。
libsvm需要特定的数据格式。
一般的CSV格式在这里不好用,需要换个格式。 常用的方法是在网上下载FormatDataLibsvm.xls文件,然后使用宏命令修改文件格式。 或者编写自己重新格式化的代码。
转换完成后,需要将数据规范化。 有助于使用SVM。 标准化方法使用windows文件夹下的svm-scale.exe文件。 方法如下。
SVM比例“- l lower”“- u upper”“- YY _ lowery _ upper”“- s保存文件名”“- r恢复文件名”
-l )数据下限标志; lower :缩放后的数据下限;
-u :数据上限标志; upper :缩放后的数据上限;
-y :是否同时缩放目标值; y_lower为下限值,y_upper为上限值;
-s save_filename :表示将缩放规则另存为文件save_filename;
-r restore_filename :表示在加载缩放规则文件restore_filename后按下此缩放。
文件名:要缩放的数据文件。 必须满足上述格式
然后,libsvm提供文件grid (分类用)、gridregression (网格注册)、回归用)以寻找最佳参数,文件中的svm-train.exe和gnuploon
在使用grid寻找最佳参数的同时,也可以使用gnuplot描绘出最佳参数收敛过程。
收敛结果如下。
最后行为之后需要使用的c、p、g参数最有结果。
gnuplot表示以下收敛过程:
得到最佳解的结果后,可以使用svm-train.exe进行训练。
Svmtrain (训练建模(Svmtrain训练_集_档案)
Options :可用选项表示以下含义
SVM型: SVM设定型(默认值0 )
0 -- C-SVC
1 --v-SVC
2一种SVM
3 -- e -SVR
4 -- v-SVR
--t内核函数类型:内核函数设置类型(默认值2 )
0线性: u'v
1多项式: (r*u'v coef0) ^degree
2RBF函数: exp(-r|u-v|^2)。
3sigmoid:tanh (r * u ' v coef0) ) )。
-d degree :内核函数的degree设置(多项式内核函数时) (缺省值为3 ) ) ) )。
- gr (gamma ) )内核函数中的gamma函数的设置(多项式/rbf/sigmoid内核函数时) (缺省值的1/k ) ) ) ) ) ) ) ) ) ) ) ) ) )。
-r coef0:核函数的coef0设置(多项式/sigmoid核函数的情况下) ) (缺省值为0 ) ) ) ) ) ) ) ) )。
--ccost :设定v-SVR、e -SVR和v-SVR的参数(损失函数)。 (缺省值1 () ) ) )。
- nnu :设定v- SVR、一种SVM和v- SVR的参数。 (默认值0.5 ) (输出) (输出) ) ) ) )。
- PP :设定e-SVR中的损失函数p的值(默认值0.1 )
--m cachesize :以MB为单位设置cache的内存大小。 (缺省值为40 () ) ) ) )。
-e eps :设定允许的退出标准。 (默认值0.001 () ) () ) ) ) ) )。
-h shrinking :是否使用启发式、0或1 (默认值为1 )
-wi weight :设定类别数的参数c为weight*c(c-SVC的c ) )。 默认值1 ) ) )。
-v n: n-fold互检模式,n是fold的个数,必须在2以上
其中-g选项k表示输入数据中的属性数。 option -v将数据随机分割为n部分,计算相互检查精度和均方根误差。
然后保存模型,并在随后的svm-predict.exe文件中用于培训
[predict_label,accuracy,decision _ values/prob _ estimates ]=SVM predict (测试标签,测试矩阵,模型)
- -测试标签:测试标签
- -测试矩阵:测试数据
-model:培训的模式
培训和最终结果如下:
如果需要将libsvm和pycharm结合使用,则必须将其设置为pycharm。
pycharm现在可以识别libsvm函数了。