如何在MATLAB中添加SVM函数工具箱

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 10:00   11   0

目的:SVM_SteveGunn添加至我的matlab工具箱内

工具/原料Matlab 2013B 、SVM工具箱

操作步骤:

1、下载svm工具包

地址:http://www.pudn.com/downloads343/sourcecode/math/detail1499382.html

2、解压工具包到E:\matlab\toolbox ,也可以解压后自己命名后复制过去。 (安装目录)

3、打开matlab点击set path---->add folder(也可以选择下面的addwithsubfolder) 然后把你的工具箱文件夹添加进去就可以了,保存。

4、刷新路径,这一步一定要做,路径加进去后在file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下。

5、验证是否添加成功,最后在matlab的命令栏中输入which svcoutput可以查看路径E:\matlab\toolbox\svm\svcoutput.m就可以了。

6、调用工具箱:

用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

可能出现的问题:

1.今天我在使用SVM通用工具箱对眼电的信号数据进行分类时出现如下错误:

Support Vector Classification
_____________________________
Constructing ...
Optimising ...
??? Dimension error (arg 3 and later).

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


不知道是什么原因?

答:今天上午终于找到出现这一错误的原因:它并不是SVM程序的问题,是我在整理样本时,把参数需要的样本行列颠倒所致。

此处X是样本特征(行向量),Y为对应样本的类别(一行对应X的一行样本)!

2.使用第一个steve gunn 's SVM 遇到一个问题。
??? Invalid MEX-file ‘××××\svm\qp.dll': The specified procedure could not be found.

??? Invalid MEX-file 'D:\Program Files\MATLAB\R2007a\toolbox\svm\qp.dll': 找不到指定的程序。
Error in ==> svc at 60
[alpha lambda how] = qp(H, c, A, b, vlb, vub, x0, neqcstr);

这个问题是由于版本问题引起的,我使用的是Matlab R2007版。我正在努力找解决方案,看看能否重新编译一下qp.dll。
查阅一晚上资料,终于找到如何解决这个简单的问题了。关键是一开始没有仔细看。

问题:??? Invalid MEX-file 'D:\Program Files\MATLAB\R2007a\toolbox\svm\qp.dll':找不到指定的程序。
问题描述:mex在不同windows OS下编译的结果,所以我们需要重新编译一下qp.dll
方法:steve gunn 的包下面有一个optimiser 文件夹,把current Diretory目录改为optimiser目录,例如D:\Program Files\MATLAB\R2007a\toolbox\svm\Optimiser,然后运行命令
>> mex -v qp.c pr_loqo.c
命令运行完毕后,你会发现原先的qp.dll变为qp.dll.old,还出现了qp.mexw32,我们把该文件改为qp.dll 复制到工具箱文件夹下。原先的工具箱文件qp.dll可以先改一下名字....(
Frysoo@hotmail.com)

这个问题解决了...
我运行下面的文件通过(该文件从网所搜索测试,作者没有求证,感谢原作者)。
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'; C=Inf; ker='linear';
global p1 p2
p1=3; p2=1;
[nsv alpha bias] = svc(X,Y,ker,C)






分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP