LIBSVM工具箱简单分类与回归实例

SVM可用于分类和回归。

1.分类实例

需要训练数据和测试数据的数据及标签。

clear;
clc;
close all;
%训练数据及标签
data = [176 70;180 80;161 45;163 47;];
label = [1;1;-1;-1];
model = svmtrain(label,data);
%测试数据及标签
testdata = [190 85];
testdatalabel = -1;

[predictlabel,accurary,decision_values] = svmpredict(testdatalabel,testdata,model);

predictlabel
if 1 == predictlabel
    disp('==该生为男生');
end
if -1 == predictlabel
    disp('==该生为女生');
end

两个函数svmtrain、svmpredict。

model = svmtrain(label,data,parameters);

该方法中常见参数为c、g、t;

t为核函数;

c为惩罚参数;

g为核函数参数;

[predictlabel,accurary,decision_values] = svmpredict(label,data,model);

accuracy =

  99.6296

  0.0148

  0.9851

返回参数accuracy从上到下的意义依次是:

分类准确率

平均平法误差(mean squared error,MSE)

平方相关系数(squared correlation coefficient,r2)

2.回归实例

分类问题和回归问题本质是一样的,就是有一个输入(属性矩阵或者自变量)又有输出(分类输出是分类标签,回归输出是因变量),也就是相当于一个函数映射:y = f(x)

下面实例中x相当于上面分类小例子中的属性矩阵data,y相当于小例子中的label;相应的回归问题中x就是自变量,y就是因变量。


<pre name="code" class="plain">clear;
clc;
close all;
%生成待回归的数据x = (-1:.1:1)';y = -x.^2;%建模回归模型model = svmtrain(y,x,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');%利用建立的模型看其在训练集合上的回归效果[py,mse,prob_estimates] = svmpredict(y,x,model);scrsz = get(0,'ScreenSize');figure('Position',[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);plot(x,y,'o');hold on;plot(x,py,'r*');legend('原始数据','回归数据');grid on;%进行测试testx = 1.1;display('真实数据');testy = -testx.^2;[ptesty,tmse,prob_estimates] = svmpredict(testy,testx,model);display('预测数据');ptesty
 
 

你可能感兴趣的:(matlab,libsvm,回归)