您的位置:首页 > 其它

支持向量机

2015-05-22 15:26 232 查看
本文转自 http://blog.chinaunix.net/uid/22414998.html
http://my.csdn.net/lqhbupt
http://blog.csdn.net/lqhbupt/article/details/8599295

毋庸置疑,LibSVM是台湾牛人为世界机器学习的卓越贡献之一。一般都是基于Matlab的,其实LibSVM也可以用Python跑。
第一步,确定本机Python的版本:



32位的最易配置,哈哈,我的机器就是这么的古董。64位的童鞋请Google。

第二步,到官网http://www.csie.ntu.edu.tw/~cjlin/libsvm/,来下载LibSVM软件包,我选择的是zip包。



第三步,将zip包解压到一个特定位置,我放到了C:盘根目录,当然也可以放到program files中。



第四步,就可以测试一下LibSVM是否可用了,打开Python IDE,输入以下代码:



能够看到输出,84%的分类准确性。

第五步,使用我的个人数据
libsvm的数据格式如下:



第一列代表标签,第二列是第一个特征值,第三列是第二个特征值。所以,先要把数据按规定格式整理好。然后开始训练。

import os

import sys

os.chdir('C:\libsvm-3.17\python')

from svmutil import *

y, x = svm_read_problem('../lkagain.txt')

m = svm_train(y[:275], x[:275], '-c 5')

y, x = svm_read_problem('../lk2.txt')

p_label, p_acc, p_val = svm_predict(y[0:], x[0:], m)

print p_label

print p_acc

print p_val

第六步,Python接口
在libsvm-3.16的python文件夹下主要包括了两个文件svm.py和svmutil.py。
svmutil.py接口主要包括了high-level的函数,这些函数的使用和LIBSVM的MATLAB接口大体类似
svmutil中主要包含了以下几个函数:
svm_train() : train an SVM model
svm_predict() : predict testing data
svm_read_problem() : read the data from a LIBSVM-format file.
svm_load_model() : load a LIBSVM model.
svm_save_model() : save model to a file.
evaluations() : evaluate prediction results.

在LIBSVM中-t用来指定核函数类型(默认值是2)。
0)线性核函数
1)多项式核函数
2)RBF核函数
3)sigmoid核函数
4)自定义核函数

常用的四种核函数对应的公式如下:


首先介绍下与核函数相对应的参数:
1)对于线性核函数,没有专门需要设置的参数
2)对于多项式核函数,有三个参数。-d用来设置多项式核函数的最高此项次数,也就是公式中的d,默认值是3。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认值是0。
3)对于RBF核函数,有一个参数。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。
4)对于sigmoid核函数,有两个参数。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认值是0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息