异度部落格

学习是一种生活态度。

0%

机器学习 支持向量机(SVM)

SVM 方法的基本思想是:定义最优线性超平面,并把寻找最优线性超平面的算法归结为求解一个凸规划问题。进而基于 Mercer 核展开定理,通过非线性映射 φ,把样本空间映射到一个高维乃至于无穷维的特征空间(Hilbert 空间),使在特征空间中可以应用线性学习机的方法解决样本空间中的高度非线性分类和回归等问题。

使用工具:
1)Libsvm:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
2)python:版本为 2.6.x 或 2.7 都可以
3)gnuplot:http://www.gnuplot.info/

数据样本下载:http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
(建议成对下载训练样本和测试样本)

配置环境:
将一下变量添加到环境变量中:
C:/Program Files/Python27;
C:/gnuplot/binary;
C:/libsvm-3.0/libsvm-3.0/windows

1、  利用 svm-train 训练样本并生成训练模型
Dos 中输入:svm-train.exe –c 512 –g 0.002 data1.train
image1
将生成一个后缀为 model 的文件
image2

2、  利用 svm-predict 预测测试数据
在 dos 中输入:svm-predict.exe data1.testing data1.train.model data1.out image3

3、  使用 grid.py 获取最佳参数
这边令参数 c 为 512,g 为 0.002 并不是最佳参数,后面将介绍使用 grid.py 来获取最佳参数
转到 tools 目录下 cd C:/libsvm-3.0/libsvm-3.0/tools
打开 grid.py 修改 gnuplot_exe 的路径,将路径改为和你的 gnuplot 路径一致
gnuplot_exe = r"C:/gnuplot/binary/pgnuplot.exe"
在 dos 中执行:python grid.py data1.train
等个几分钟就会获得一个最佳参数并生成一张分析过程图片

4、  使用 easy.py 一步到位
要是觉得前面的过程过于繁琐的话,可以使用 easy.py 进行直接处理
首先还是修改 gnuplot_exe 路径
然后在 dos 中执行:python easy.py data1.train data1.testing

image4