SVM实现多分类:libsvm的安装以及使用

由于要用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格式,可使用如下文件测试:

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%,因为这里把训练数据作为了测试数据。




  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值