您的位置:首页 > 编程语言 > MATLAB

matlab-SVM学习记1

2017-05-10 10:42 197 查看
一:下载安装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不要删除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 svm class 测试