libsvm学习记录(二)libsvm的使用以及参数意义
来源:互联网 发布:windows自带录音机 编辑:程序博客网 时间:2024/05/22 09:51
传送门:
[教程] 如何使用libsvm进行分类
http://www.matlabsky.com/forum-viewthread-tid-12379-fromuid-18677.html
[教程] 利用libsvm-mat建立分类模型model参数解密【by faruto】
http://www.matlabsky.com/thread-12649-1-1.html
以下为转载内容:(稍作删减修改)
使用libsvm进行分类很简单,只需要有属性矩阵和标签,然后就可以建立分类模型(model),然后利用得到的这个model进行分类预测。
举个简单栗子:
一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中
如果我们将男生定义为1,女生定义为-1,并将上面的数据放入矩阵data中,即在label中存入男女生类别标签(1、-1),即这样上面的data矩阵就是一个属性矩阵,行数4代表有4个样本,列数2表示属性有两个,label就是标签(1、-1表示有两个类别:男生、女生)。
有了上面的属性矩阵data,和标签label就可以利用libsvm建立分类模型了,简要代码如下:
有了model我们就可以做分类预测,比如此时该班级又转来一个新学生,其身高190cm,体重85kg
我们想通过上面这些信息就给出其标签(想知道其是男【1】还是女【-1】)
比如 令 testdata = [190 85]; 由于其标签我们不知道,我们假设其标签为-1(也可以假设为1) ,即testdatalabel = -1;
然后利用libsvm来预测这个新来的学生是男生还是女生,代码如下:
下面使用libsvm工具箱本身带的测试数据heart_scale来实际进行一下测试:
运行结果:上面的代码基本我不想多说什么。只是说一下参数输入的意义:
1.svmtrain函数第三个参数意义
- % 利用训练集合建立分类模型
- model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8');
2.model结构体中各种参数意义
2.1 Parameters: [5x1 double]
- >> model.Parameters
- ans =
- 0
- 2.0000
- 3.0000
- 2.8000
- 0
-s svm类型:SVM设置类型(默认0)
-t 核函数类型:核函数设置类型(默认2)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
2.2 nr_class: 2
- >> model.nr_class
- ans =
- 2
2.3totalSV: 197
model.totalSV代表总共的支持向量的数目,这里共有197个支持向量;
2.4rho: 0.0583
model.rho是决策函数中的常数项的相反数(-b)
2.5Label: [2x1 double]
- Label =
- 1
- -1
2.6
- ProbA: []
- ProbB: []
2.7nSV: [2x1 double]
- nSV =
- 89
- 108
注意:这里model.nSV所代表的顺序是和model.Label相对应的。
2.8sv_coef: [197x1 double]
model.sv_coef是一个259*1的矩阵,承装的是259个支持向量在决策函数中的系数;
2.9SVs: [197x13 double]
model.SVs是一个259*13的稀疏矩阵,承装的是259个支持向量。
最终的决策函数为:
在由于我们使用的是RBF核函数(前面参数设置 –t 2),故这里的决策函数即为:
其中|| x-y ||是二范数距离 ;
这里面的
好的下面我们通过model提供的信息自己建立上面的决策函数如下:有了这个决策函数,我们就可以自己预测相应样本的标签了:
最终可以看到 flag = 270 ,即自己建立的决策函数是正确的,可以得到和svmpredict得到的一样的样本的预测标签,事实上svmpredict底层大体也就是这样实现的。
3.svmpredict得到的返回参数意义
- Accuracy = 99.6296% (269/270) (classification)
- accuracy =
- 99.6296
- 0.0148
- 0.9851
分类准率(分类问题中用到的参数指标)
平均平方误差(MSE (mean squared error)) [回归问题中用到的参数指标]
平方相关系数(r2 (squared correlation coefficient))[回归问题中用到的参数指标]
4.运行后的返回值
#iter:迭代次数,
nu:设置nu - SVC、one-class-SVM 与nu - SVR 中参数nu ,默认值0.5,
obj:SVM文件转换为的二次规划求解得到的最小值,
rho:判决函数的常数项b,
nSV:支持向量个数,
nBSV:边界上的支持向量个数,
Total nSV:支持向量总个数。
上述例子中有些数据可能对不上,因为是两篇文章整合在一起的,不用细抠具体数字正确与否,意思到了就行
- libsvm学习记录(二)libsvm的使用以及参数意义
- libsvm参数的意义
- LIBSVM中参数的意义
- libsvm支持向量机参数的意义
- libsvm学习记录(三)svm参数寻优
- LIBSVM学习笔记(二)
- LibSVM学习(二)——第一次体验libSvm
- LibSVM学习(二)——第一次体验libSvm
- LibSVM学习(二)——第一次体验libSvm
- LibSVM学习(二)——第一次体验libSvm
- LibSVM学习(二)——第一次体验libSvm
- LibSVM学习(二)——第一次体验libSvm
- LIBSVM学习(二)在linux环境下安装LIBSVM
- LIBSVM学习记录
- LIBSVM学习记录
- LibSVM使用记录
- LibSVM学习1:Libsvm工具箱的下载、安装和使用
- LibSVM学习(三)——LibSVM使用规范
- 反馈博客bug专用,
- skynet中使用websocket和wss
- Scala学习(五)---Scala中的类
- LWC 63:748. Shortest Completing Word
- Ubuntu下编译opencv各版本
- libsvm学习记录(二)libsvm的使用以及参数意义
- 在决定使用ClickOnce发布你的软件前,应该知道的一些事情(一些常见问题解决方法)
- C语言实现的BP神经网络算法(1)-BPANN原理
- String的endsWith/startsWith
- ubuntukylin32位系统使用libcurl库
- 大规模分布式应用之海量数据和高并发解决方案总结一二
- 如何安装mongodb服务以及如何使用可视化工具连接mongodb数据库
- 安徽省谷歌地球高程DEM等高线下载
- 第五章,文件权限与类型