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)

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


其中一些输出含义:

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里面加上我们的参数,再次运行即可。

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

  • 16
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值