在matlab中如何使用SVM工具箱

一、SVM下载

http://see.xidian.edu.cn/faculty/chzheng/bishe/indexfiles/indexl.htm

二、在MATLAB中添加svm工具箱

参考:

http://jingyan.baidu.com/article/a501d80cf764c3ec630f5ef5.htm

1、首先需要MATLAB SVM Toolbox,将其中的文件解压并命名为svm

2、将文件拷到E:\matlab\toolbox (我的是在E:\MATLAB\R2013a\toolbox)
3、打开matlab点击set path---->add folder 然后把你的工具箱文件夹添加进去就可以了
4、路径加进去后在file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下。
5、最后在matlab的命令栏中输入which svcoutput可以查看路径E:\matlab\toolbox\svm\svcoutput.m就可以了

三、如何使用SVM

原文地址:

http://blog.sina.com.cn/s/blog_5bd2cb260100eo2y.html

1,下载SVM工具箱:http://see.xidian.edu.cn/faculty/chzheng/bishe/indexfiles/indexl.htm

2,安装到matlab文件夹中

  1)将下载的SVM工具箱的文件夹放在\matlab71\toolbox\下

  2)打开matlab->File->Set Path中添加SVM工具箱的文件夹

  现在,就成功的添加成功了.

  可以测试一下:在matlab中输入which svcoutput 回车,如果可以正确显示路径,就证明添加成功了,例如:

 C:\Program Files\MATLAB71\toolbox\svm\svcoutput.m

3,用SVM做分类的使用方法

  1)在matlab中输入必要的参数:X,Y,ker,C,p1,p2

    我做的测试中取的数据为:

    N = 50;

    n=2*N;
    randn('state',6);
    x1 = randn(2,N)
    y1 = ones(1,N);
    x2 = 5+randn(2,N);
    y2 = -ones(1,N);

    figure;
    plot(x1(1,:),x1(2,:),'bx',x2(1,:),x2(2,:),'k.');
    axis([-3 8 -3 8]);
    title('C-SVC')
    hold on;

    X1 = [x1,x2];

    Y1 = [y1,y2];  

    X=X1';

    Y=Y1';

    其中,X是100*2的矩阵,Y是100*1的矩阵

    C=Inf;

    ker='linear';

    global p1 p2

    p1=3;

    p2=1;

    然后,在matlab中输入:[nsv alpha bias] = svc(X,Y,ker,C),回车之后,会显示:

   

Support Vector Classification
_____________________________
Constructing ...
Optimising ...
Execution time:  1.9 seconds
Status : OPTIMAL_SOLUTION
|w0|^2    : 0.418414
Margin    : 3.091912
Sum alpha : 0.418414
Support Vectors : 3 (3.0%)

nsv =

     3


alpha =

    0.0000
    0.0000
    0.0000
    0.0000
    0.0000

    2)输入预测函数,可以得到与预想的分类结果进行比较.

      输入:predictedY = svcoutput(X,Y,X,ker,alpha,bias),回车后得到:

    

predictedY =

     1
     1
     1
     1
     1
     1
     1
     1
     1

    3)画图

      输入:svcplot(X,Y,ker,alpha,bias),回车

 补充:

X和Y为数据,m*n:m为样本数,n为特征向量数

比如:取20组训练数据X,10组有故障,10组无故障的,每个训练数据有13个特征参数,则m=20,n=13

Y为20*1的矩阵,其中,10组为1,10组为-1.

对于测试数据中,如果取6组测试数据,3组有故障,3组无故障的,则m=6,n=13

Y中,m=6,n=1

    


四、在Matlab中最初使用SVM出现的问题

原文地址:http://www.ilovematlab.cn/thread-265034-1-1.html


??? Undefined function or method 'qp' for input arguments of type 'double'.
看到论坛有很多人问这个问题[1],其实出现这个问题的根本原因是:matlab 5.X 的qp函数在matlab 6.0以上版本被quadprog函数取代[2].

解决办法:
[alpha lambda how] = quadprog(H, c, A, b,  [], [], vlb, vub, x0, neqcstr);
替换svc函数中的72行: [alpha lambda how] = qp(H, c, A, b, vlb, vub, x0, neqcstr);

我在测试的时候,发现[alpha lambda how] = qp(H, c, A, b, vlb, vub, x0, neqcstr);在svc函数的第60行。应该是svm的版本不同造成的。

猜你喜欢

转载自blog.csdn.net/u011473714/article/details/80354966