MATLAB 中的 10 倍 SVM 分类示例 [英] Example of 10-fold SVM classification in MATLAB

查看:39
本文介绍了MATLAB 中的 10 倍 SVM 分类示例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一个以某种方式描述的示例,展示如何对两个类别的数据集进行 10 倍 SVM 分类.MATLAB 文档中只有一个示例,但不是 10 倍.有人可以帮我吗?

I need a somehow descriptive example showing how to do a 10-fold SVM classification on a two class set of data. there is just one example in the MATLAB documentation but it is not with 10-fold. Can someone help me?

推荐答案

这是一个完整的示例,使用了 Bioinformatics Toolbox 中的以下函数:SVMTRAIN, SVMCLASSIFY, CLASSPERF, CROSSVALIND.

Here's a complete example, using the following functions from the Bioinformatics Toolbox: SVMTRAIN, SVMCLASSIFY, CLASSPERF, CROSSVALIND.

load fisheriris                              %# load iris dataset
groups = ismember(species,'setosa');         %# create a two-class problem

%# number of cross-validation folds:
%# If you have 50 samples, divide them into 10 groups of 5 samples each,
%# then train with 9 groups (45 samples) and test with 1 group (5 samples).
%# This is repeated ten times, with each group used exactly once as a test set.
%# Finally the 10 results from the folds are averaged to produce a single 
%# performance estimation.
k=10;

cvFolds = crossvalind('Kfold', groups, k);   %# get indices of 10-fold CV
cp = classperf(groups);                      %# init performance tracker

for i = 1:k                                  %# for each fold
    testIdx = (cvFolds == i);                %# get indices of test instances
    trainIdx = ~testIdx;                     %# get indices training instances

    %# train an SVM model over training instances
    svmModel = svmtrain(meas(trainIdx,:), groups(trainIdx), ...
                 'Autoscale',true, 'Showplot',false, 'Method','QP', ...
                 'BoxConstraint',2e-1, 'Kernel_Function','rbf', 'RBF_Sigma',1);

    %# test using test instances
    pred = svmclassify(svmModel, meas(testIdx,:), 'Showplot',false);

    %# evaluate and update performance object
    cp = classperf(cp, pred, testIdx);
end

%# get accuracy
cp.CorrectRate

%# get confusion matrix
%# columns:actual, rows:predicted, last-row: unclassified instances
cp.CountingMatrix

输出:

ans =
      0.99333
ans =
   100     1
     0    49
     0     0

我们获得了 99.33% 准确率,只有一个 'setosa' 实例被错误分类为 'non-setosa'

we obtained 99.33% accuracy with only one 'setosa' instance mis-classified as 'non-setosa'

更新:SVM 函数已移至 R2013a 中的统计工具箱

UPDATE: SVM functions have moved to Statistics toolbox in R2013a

这篇关于MATLAB 中的 10 倍 SVM 分类示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆