matlab下libSVM的用法

来源:互联网 发布:tp框架源码 编辑:程序博客网 时间:2024/05/17 01:40

libSVM的安装、编译有问题的可以百度。下面给出一个简单的例子,并对libSVM训练后的model内部的几个参数加以说明

%% 自定义的三个向量
x=[3 3;4 3; 1 1];
y=[1;1;-1];
[m,n]=size(x);
hold on;
axis([0 5 0 4]); % axis([xmin,xmax,ymin,ymax])
set(gca,'XTick',[0:1:5]) %改变x轴坐标间隔显示

for i=1:m
    if y(i)==1
        plot(x(i,1),x(i,2),'+');
    else
        plot(x(i,1),x(i,2),'o');
    end
end

%% 用libsvm训练样本,并进行正确率分析
model = svmtrain(y, x,'-s 0 -t 0'); %训练svm模型
[predict_label]=svmpredict(y,x,model);%用训练好的svm模型,预测数据

经过svmtrain后,得到svm的模型model。这个模型的几个主要参数及意义:
rho:表示截距b,符号与一般教材上的公式相反。
sv_indices:表示求得的支持向量的索引
sv_coef:表示对应支持向量的系数ai,而且这些系数是已经和对应的标签相乘过的。
SVs:表示具体的支持向量

有了这些信息后,可自行做预测(当然直接用svmpredict更简单)
做线性预测时,假设查询点为x,预测结果=sum(ai*xi.*x)-rho,而不是sum(ai*yi*xi.*x)-rho
0 0
原创粉丝点击