SVM的设置(仅做记忆)和安装LIBSVM工具包

LIBSVM 使用的一般步骤是:

1)按照LIBSVM软件包所要求的格式准备数据集;

2)对数据进行简单的缩放操作;

3)首要考虑选用RBF 核函数;

4)采用交叉验证选择最佳参数C与g ;

5)采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型;

6)利用获取的模型进行测试与预测。

1)LIBSVM使用的数据格式

该软件使用的训练数据和检验数据文件格式如下:

[label] [index1]:[value1] [index2]:[value2] …

[label] [index1]:[value1] [index2]:[value2] …

一行一条记录数据,如:

+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1

这里(x,y)à((0.708,1,1, -0.320, -0.105, -1), +1)

label 或说是class, 就是你要分类的种类,通常是一些整数。

index 是有順序的索引,通常是连续的整数。

value 就是用来 train 的数据,通常是一堆实数。

2)对数据进行简单的缩放操作

扫描数据. 因为原始数据可能范围过大或过小, svmscale可以先将数据重新scale (縮放) 到适当范围使训练与预测速度更快。

svmscale.exe的用法:svmscale.exe feature.txt feature.scaled

默认的归一化范围是[-1,1],可以用参数-l和-u分别调整上界和下届,feature.txt是输入特征文件名 输出的归一化特征名为feature.scaled

3) 考虑选用RBF 核函数

训练数据形成模型(model),实质是算出了wx+b=0中的w,b.

Svmtrain的用法:svmtrain [options] training_set_file [model_file]

其中options涵义如下:

-s svm类型:设置SVM 类型,默认值为0,可选类型有:

0 – C- SVC

1 – nu - SVC

2 – one-class-SVM

3 – e - SVR

4 – nu-SVR

-t 核函数类型:设置核函数类型,默认值为2,可选类型有:

0 – 线性核:u’*v

1 – 多项式核:(g*u’*v+ coef0)degree

2 – RBF 核:exp(-||u-v||||u-v||/gg)

3 – sigmoid 核:tanh(g*u’*v+ coef 0)

-d degree:核函数中的degree设置,默认值为3;

-g r(gama):核函数中的函数设置(默认1/ k);

-r coef 0:设置核函数中的coef0,默认值为0;

-c cost:设置C- SVC、e - SVR、n - SVR中从惩罚系数C,默认值为1;

-n nu :设置nu - SVC、one-class-SVM 与nu - SVR 中参数nu ,默认值0.5;

-p e :核宽,设置e - SVR的损失函数中的e ,默认值为0.1;

-m cachesize:设置cache内存大小,以MB为单位(默认40):

-e e :设置终止准则中的可容忍偏差,默认值为0.001;

-h shrinking:是否使用启发式,可选值为0 或1,默认值为1;

-b 概率估计:是否计算SVC或SVR的概率估计,可选值0 或1,默认0;

-wi weight:对各类样本的惩罚系数C加权,默认值为1;

-v n:n折交叉验证模式。

其中-g选项中的k是指输入数据中的属性数。操作参数 -v 随机地将数据剖分为n 部分并计算交叉检验准确度和均方根误差。以上这些参数设置可以按照SVM 的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM 类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。training_set_file是要进行训练的数据 集;model_file是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。举个例子如下:

C:\libsvm-2.85\windows>svmtrain heart_scale

optimization finished, #iter = 162

nu = 0.431029

obj = -100.877288, rho = 0.424462

nSV = 132, nBSV = 107

Total nSV = 132

现简单对屏幕回显信息进行说明:

#iter为迭代次数,

nu 与前面的操作参数-n nu 相同,

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

rho 为判决函数的常数项b,

nSV 为支持向量个数,

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

Total nSV为支持向量总个数。

训练后的模型保存为文件*.model,用记事本打开其内容如下:

svm_type c_svc % 训练所采用的svm类型,此处为C- SVC

kernel_type rbf %训练采用的核函数类型,此处为RBF核

gamma 0.0769231 %设置核函数中的g ,默认值为1/ k

nr_class 2 %分类时的类别数,此处为两分类问题

total_sv 132 %总共的支持向量个数

rho 0.424462 %决策函数中的常数项b

label 1 -1%类别标签

nr_sv 64 68 %各类别标签对应的支持向量个数
optimization finished, #iter = 480 迭代次数
nu = 0.909091 SVC ,one-class-SVM, SVR 参数
obj = -108.333321 二次规划的最小值
rho = -0.166667 决策函数常数项
nSV = 220 支持向量数
nBSV = 100 边界上支持向量数
Total nSV = 220 支持向量总数
Accuracy = 100% (220/220) (classification) 分类精度

matlab安装LIBSVM工具包
https://blog.csdn.net/weixin_42561730/article/details/104963856

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值