matlab 中如何添加 svm 工具包?
1)登陆西安电子科技大学电子工程学院网站下的网页:
http://see.xidian.edu.cn/faculty/chzheng/bishe/indexfiles/indexl.htm
下载 SVM 通用工具箱;
3)解压,将解压后的 SVM 文件夹复制后加入 matlab 之下的 toolbox 文件夹如:C:\Program
Files\MATLAB\R2009a\toolbox;
4)打开 matlab->File->Set Path 中添加 SVM 工具箱的文件夹;
5)matlab 中输入 which svcoutput 回车,如果可以正确显示路径,就证明添加成功了
6)如果操作系统是 Vista,需在控制面板找到用户控制界面,取消默认的用户控制选项。不
然,操作系统将阻止改动 qp.dll 文件;
7)在 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 ...
1.9 seconds
Execution time:
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
使用第一个 steve gunn 's SVM 遇到一个问题。
??? Invalid file C:\Program Files\MATLAB\R2009a\toolbox\svm\qp.dll': 不 是 一 个 32 位
windows 程序
这个问题是由于版本问题引起的,我使用的是 Matlab R2009版。
问题描述: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 并复制到工具箱 svm 文件夹下,原先的 svm 文件夹下的 qp.dll 可以先改一
下名字。
注意,如果操作系统是 Vista,需在控制面板找到用户控制界面,取消默认的用户控制选项。
不然,操作系统将阻止将 qp.dll 改为 qp.dll.old,也就不能建立 qp.mexw32。
至此,以上程序就可以正常运行,这个问题解决了...