libsvm for python使用流程

安装libsvm

https://blog.csdn.net/he99774/article/details/80388612


处理成libsvm数据格式

https://blog.csdn.net/he99774/article/details/80389490


实验(训练、预测)

所需数据集在网盘:https://pan.baidu.com/s/14R4nMlwjDio8OHilhWa9Cg(处理libsvm格式后的为.txt,原始为.data)


一、进行简单的训练和预测

from svmutil import *

y, x = svm_read_problem('dataset/train.txt')
yt, xt = svm_read_problem('dataset/test.txt')
model = svm_train(y, x)

p_label, p_acc, p_val = svm_predict(yt[0:117], xt[0:117], model)

不设置参数的训练与预测,得到的输出结果如下:

扫描二维码关注公众号,回复: 1498065 查看本文章


其中一些输出含义:

iter:迭代次数

nu:SVM对应类型的参数

obj:SVM文件转换为的二次规划求解得到的最小值

rho:判决函数的常数项b

nSV:支持向量个数, nBSV:边界上的支持向量个数

Total nSV:支持向量总个数

Accuracy:测试准确率


二、使用grip.py工具得到最优参数c和g

grip.py 是libsvm里面含有的,libsvm包下载:https://www.csie.ntu.edu.tw/~cjlin/libsvm/oldfiles/(下载最新版本即可)

解压后,在tools文件夹里面可以看到grip.py 和 easy.py,下面介绍python的使用方法。

1.首先安装gnuplot:http://www.gnuplot.info/ (下载最新版本即可)

2.打开grip.py,修改路径


也可以顺便把easy.py的路径改了


3.将训练集和测试集放在tools目录下,打开cmd,通过cd命令打开tools文件夹,之后用python运行

 python grid.py train.txt

这样运行后可以得到最优的c和g

4.可以使用easy.py训练并测试

python easy.py train.txt test.txt

5.得到c和g参数后,我们可以回到代码中

y, x = svm_read_problem('dataset/train.txt')
yt, xt = svm_read_problem('dataset/test.txt')
parameter = '-c 2048.0 -g 0.0078125'
model = svm_train(y, x, parameter)

p_label, p_acc, p_val = svm_predict(yt[0:], xt[0:], model)

在parameter里面加上我们的参数,再次运行即可。

注:因提供的数据集有一些问题,所以测试优化后的正确率难以看出差距。

猜你喜欢

转载自blog.csdn.net/he99774/article/details/80389698