现在的位置: 首页 > 综合 > 正文

SVM工具箱快速入手简易教程

2013年10月18日 ⁄ 综合 ⁄ 共 3992字 ⁄ 字号 评论关闭

SVM工具箱快速入手简易教程(by faruto)
一. matlab 自带的函数(matlab帮助文件里的例子)[只有较新版本的matlab中有这两个SVM的函数]
=====
svmtrain svmclassify
=====简要语法规则====
svmtrain

Train support vector machine classifier
Syntax

SVMStruct = svmtrain(Training, Group)

SVMStruct = svmtrain(..., 'Kernel_Function', Kernel_FunctionValue, ...)
SVMStruct = svmtrain(..., 'RBF_Sigma', RBFSigmaValue, ...)
SVMStruct = svmtrain(..., 'Polyorder', PolyorderValue, ...)
SVMStruct = svmtrain(..., 'Mlp_Params', Mlp_ParamsValue, ...)
SVMStruct = svmtrain(..., 'Method', MethodValue, ...)
SVMStruct = svmtrain(..., 'QuadProg_Opts', QuadProg_OptsValue, ...)
SVMStruct = svmtrain(..., 'SMO_Opts', SMO_OptsValue, ...)
SVMStruct = svmtrain(..., 'BoxConstraint', BoxConstraintValue, ...)
SVMStruct = svmtrain(..., 'Autoscale', AutoscaleValue, ...)
SVMStruct = svmtrain(..., 'Showplot', ShowplotValue, ...)
---------------------
svmclassify

Classify data using support vector machine
Syntax

Group = svmclassify(SVMStruct, Sample)

Group = svmclassify(SVMStruct, Sample, 'Showplot', ShowplotValue)

============================实例研究====================
load fisheriris

%载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],得到的数据如下图:
tu1

1.jpg (7.94 KB)

2009-5-12 19:50

其中meas是150*4的矩阵代表着有150个样本每个样本有4个属性描述,species代表着这150个样本的分类.

data = [meas(:,1), meas(:,2)];

%在这里只取meas的第一列和第二列,即只选取前两个属性.

groups = ismember(species,'setosa');

%由于species分类中是有三个分类:setosa,versicolor,virginica,为了使问题简单,我们将其变为二分类问题:Setosa and non-Setosa.

[train, test] = crossvalind('holdOut',groups);
cp = classperf(groups);

%随机选择训练集合测试集[有关crossvalind的使用请自己help一下]
其中cp作用是后来用来评价分类器的.

svmStruct = svmtrain(data(train,:),groups(train),'showplot',true);

%使用svmtrain进行训练,得到训练后的结构svmStruct,在预测时使用.

训练结果如图:
tu2

2.jpg (26.86 KB)

2009-5-12 19:50

classes = svmclassify(svmStruct,data(test,:),'showplot',true);

%对于未知的测试集进行分类预测,结果如图:
tu3

3.jpg (37.34 KB)

2009-5-12 19:50

classperf(cp,classes,test);
cp.CorrectRate

ans =

    0.9867

%分类器效果测评,就是看测试集分类的准确率的高低.

二.台湾林智仁的libsvm工具箱
该工具箱下载[libsvm-mat-2.86-1]:
libsvm-mat-2.86-1.rar
(73.75 KB)

libsvm-mat-2.86-1.rar(73.75 KB)
下载次数: 373

2009-5-12 20:02


安装方法也很简单,解压文件,把当前工作目录调整到libsvm所在的文件夹下,再在set path里将libsvm所在的文件夹加到里面.然后
命令行里输入
mex -setup  %
选择一下编译
make
这样就可以了.
建议大家使用libsvm工具箱,这个更好用一些.可以进行分类[多类别],预测....
=========
svmtrain
svmpredict
================
简要语法:

Usage
=====

matlab> model = svmtrain(training_label_vector, training_instance_matrix [,'libsvm_options']);

        -training_label_vector:
            An m by 1 vector oftraining labels (type must be double).
        -training_instance_matrix:
            An m by n matrix of mtraining instances with n features.
            It can be dense or sparse(type must be double).
        -libsvm_options:
            A string of trainingoptions in the same format as that of LIBSVM.

matlab> [predicted_label, accuracy, decision_values/prob_estimates] =svmpredict(testing_label_vector, testing_instance_matrix, model [,'libsvm_options']);

        -testing_label_vector:
            An m by 1 vector ofprediction labels. If labels of test
            data are unknown, simplyuse any random values. (type must be double)
        -testing_instance_matrix:
            An m by n matrix of mtesting instances with n features.
            It can be dense or sparse.(type must be double)
        -model:
            The output of svmtrain.
        -libsvm_options:
            A string of testing optionsin the same format as that of LIBSVM.

Returned Model Structure
========================

实例研究:

load heart_scale.mat

%工具箱里自带的数据

如图:
tu4

4.jpg(9.36 KB)

2009-5-12 20:08


其中 heart_scale_inst是样本,heart_scale_label是样本标签

model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');

%训练样本,具体参数的调整请看帮助文件

[predict_label, accuracy, dec_values] = svmpredict(heart_scale_label,heart_scale_inst, model);

%分类预测,这里把训练集当作测试集,验证效果如下:
>> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label,heart_scale_inst, model); % test the training data
Accuracy = 86.6667% (234/270) (classification)

==============
这回把SVM这点入门的东西都说完了,大家可以参照着上手了,有关SVM的原理我下面有个简易的PPT,是以前做项目时我做的[当时我负责有关SVM这一块代码实现讲解什么的],感兴趣的你可以看看,都是上手较快的东西,想要深入学习SVM,你的学习统计学习理论什么的....挺多的呢..
SVM.ppt(391 KB)

SVM.ppt(391 KB)
下载次数: 429

2009-5-12 20:18

-----------有关SVM和libsvm的非常好的资料,想要详细研究SVM看这个------
libsvm_guide.pdf(194.53 KB)

libsvm_guide.pdf(194.53 KB)
下载次数:186

2009-8-19 14:58


libsvm_library.pdf(316.82 KB)

libsvm_library.pdf(316.82 KB)
下载次数: 137

2009-8-19 14:58


OptimizationSupportVectorMachinesandMachine

抱歉!评论已关闭.