SVM实现多分类:libsvm的安装以及使用
2016-04-27 16:50
597 查看
由于要用SVM实现多分类,而matlab自带的SVM只能实现二分类,使用libsvm就可以实现多分类,下载地址如下:
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
/////-------------------------------------------------安装-------------------------////
下载完成后解压到matlab目录:D:\MATLAB2013\toolbox下面,然后切换workspace到这个目录,然后在命令行里面输入:mex -setup,选择编译器。
然后将当前目录设置成:D:\MATLAB2013\toolbox\libsvm-3.21\matlab
在命令行里面输入:make,这个时候你会看到当前目录生成了四个二进制文件:
libsvmread.mexw64
libsvmwrite.mexw64
svmpredict.mexw64
svmtrain.mexw64
将当前目录添加到matlab路径即可。
/////-------------------------------------------------使用-------------------------////
注意到D:\MATLAB2013\toolbox\libsvm-3.21目录下有一个数据文件,名称为heart_scale,是一个libsvm的数据文件,可使用libsvmread将其转换为matlab格式,可使用如下文件测试:
以下为自定义数据测试:
输出如下代表运行成功:
其中Accuracy代表识别精度,这里为100%,因为这里把训练数据作为了测试数据。
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
/////-------------------------------------------------安装-------------------------////
下载完成后解压到matlab目录:D:\MATLAB2013\toolbox下面,然后切换workspace到这个目录,然后在命令行里面输入:mex -setup,选择编译器。
然后将当前目录设置成:D:\MATLAB2013\toolbox\libsvm-3.21\matlab
在命令行里面输入:make,这个时候你会看到当前目录生成了四个二进制文件:
libsvmread.mexw64
libsvmwrite.mexw64
svmpredict.mexw64
svmtrain.mexw64
将当前目录添加到matlab路径即可。
/////-------------------------------------------------使用-------------------------////
注意到D:\MATLAB2013\toolbox\libsvm-3.21目录下有一个数据文件,名称为heart_scale,是一个libsvm的数据文件,可使用libsvmread将其转换为matlab格式,可使用如下文件测试:
clc; clear; [heart_scale_label,heart_scale_inst]=libsvmread('heart_scale'); model = svmtrain(heart_scale_label,heart_scale_inst) [predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model)在workspace输出如下:
model = Parameters: [5x1 double] nr_class: 2 totalSV: 132 rho: 0.4245 Label: [2x1 double] sv_indices: [132x1 double] ProbA: [] ProbB: [] nSV: [2x1 double] sv_coef: [132x1 double] SVs: [132x13 double] Accuracy = 86.6667% (234/270) (classification)代表运行成功,就可以在matlab中使用libsvm了!
以下为自定义数据测试:
% X为300*2 矩阵 2个特征 300个样本 group=zeros(300,1); for i=1:300 if i<=100 %第一类 group(i)=1; else if i<=200 %第二类 group(i)=2; else group(i)=3; %第三类 end end end svmStruct=svmtrain(group,X,'-s 0 -t 2 -c 1.2 -g 2.8')%train [predict_label, accuracy, dec_values] =svmpredict(group, X, svmStruct) % test
输出如下代表运行成功:
svmStruct = Parameters: [5x1 double] nr_class: 3 totalSV: 144 rho: [3x1 double] Label: [3x1 double] sv_indices: [144x1 double] ProbA: [] ProbB: [] nSV: [3x1 double] sv_coef: [144x2 double] SVs: [144x2 double] Accuracy = 100% (300/300) (classification)
其中Accuracy代表识别精度,这里为100%,因为这里把训练数据作为了测试数据。
相关文章推荐
- JAVA语言赋值运算 自右至左是什么意思?
- 献给23岁的我
- javascript弹出模态窗口,获取父页面的元素
- inno setup详细使用教程
- ACM竞赛常用单词
- css style
- hdu 2089 不要62 几种ac的方法
- 容器、接口、注册订阅、组合实现驱动层隔离
- 如何打出j间隔符号‘·’
- log4j.properties和junit笔记
- JAVA嵌入运行Groovy脚本
- JavaPersistenceWithMyBatis3笔记-第1章-001
- 如何将pdf文件转换成word格式
- 重新学javaweb----EL表达式(1)
- 智能指针
- Cocosd2d-js 异常处理
- HTML5 video标签播放本地视频只有声音没有图像 解决办法
- 【扩展欧几里得算法】(瞎几把乱搞式)
- java复习二—— 类与对象
- MySQL多表操作