matlab-SVM学习记1

来源:互联网 发布:mac bash 3.2解除密码 编辑:程序博客网 时间:2024/06/05 18:31

一:下载安装SVM工具箱

通用工具箱网址:http://see.xidian.edu.cn/faculty/chzheng/bishe/indexfiles/indexl.htm

添加路径:add path~

检验安装成功,运行代码:which svcoutput

二:测试数据SVM分类

%输入参数: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;
    [nsv alpha bias] = svc(X,Y,ker,C);  %训练
    predictedY = svcoutput(X,Y,X,ker,alpha,bias);%预测
    figure
    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

三:运行SVM包出错

错误为:

Error in ==> svc at 60
[alpha lambda how] = qp(H, c, A, b, vlb, vub, x0, neqcstr);

原因分析:matlab版本问题,版本太高。

解决措施:重新编译dll文件

输入代码:

    cd 'C:\Program Files\MATLAB\toolbox\svm\Optimiser'
    mex -v qp.c pr_loqo.c 

运行成功后将Optimiser文件夹中的qp.mexw64重命名并复制替换svm文件夹下的qp.dll

注意:是替换svm中的dll不是Optimiser文件夹,Optimiser文件夹的qp.mexw64不要删除


1 0