包已经解压到文件夹F:\R2009b\toolbox\svmmatlab中SVM工具箱的使用方法1,下载SVM工具箱:/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.m3,用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 p2p1=3;p2=1;然后,在matlab中输入:[nsv alpha bias] = svc(X,Y,ker,C),回车之后,会显示:Support Vector Classification_____________________________Constructing ...Optimising ...Execution time: 1.9 secondsStatus : OPTIMAL_SOLUTION|w0|^2 : 0.418414Margin : 3.091912Sum alpha : 0.418414Support Vectors : 3 (3.0%)nsv =3alpha =0.00000.00000.00000.00000.00002)输入预测函数,可以得到与预想的分类结果进行比较.输入:predictedY = svcoutput(X,Y,X,ker,alpha,bias),回车后得到:predictedY =1111111113)画图输入:svcplot(X,Y,ker,alpha,bias),回车补充:X和Y为数据,m*n:m为样本数,n为特征向量数比如:取20组训练数据X,10组有故障,10组无故障的,每个训练数据有13个特征参数,则m=20,n=13Y为20*1的矩阵,其中,10组为1,10组为-1.对于测试数据中,如果取6组测试数据,3组有故障,3组无故障的,则m=6,n=13Y中,m=6,n=1/SV M_soft.htmlSVM - Support Vector MachinesSoftwareTrain support vector machine classifier/access/helpdesk/help/toolbox/bioinfo/ref/svmtrain.html一些问题???????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@)这个问题解决了...我运行下面的文件通过(该文件从网所搜索测试,作者没有求证,感谢原作者)。
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)注:有的读者通过google或者百度搜索,??? Invalid MEX-file 找不到指定的程序,找到这里来了,呵呵。
其实该文章是对svm的matlab工具包编写的。
解决:???Invalid MEX-file 的一个共性就是,版本问题,您可以尝试更换matlab版本。
例如您的mex dll在6.5版本中编写的,请不要使用7.4版本去调用,matlab就这一点很讨厌人...FrysooSVM 函数详解支持向量机分类的相关函数1. [nsv alpha bias] = svc(X,Y,ker,C)X 是训练样本Y 是训练样本的输出,即Labelker 为核函数,支持向量机的工具箱支持如下几种核函数:linear poly rbf sigmoid spline bspline fourier erfb anova其中,除了linear和spline两个核函数之外,其他的核函数还需要设定一些参数。
例如核函数poly的阶数、径向基函数rbf的宽度等。
这些参数的设置在工具箱中的全局变量p1,p2中设置。
Values for ker: linear -poly - p1 is degree of polynomialrbf - p1 is width of rbfs (sigma)sigmoid - p1 is scale, p2 is offsetspline -bspline - p1 is degree of bsplinefourier - p1 is degreeerfb - p1 is width of rbfs (sigma)anova - p1 is max order of termsnsv 是svc函数返回的训练样本中支持向量的个数alpha 是svc函数返回的每个训练样本对应的拉格朗日乘子,拉格朗日乘子不为零的向量即为支持向量bias 是偏置量2. predictedY = svcoutput(trnX,trnY,tstX,ker,alpha,bias,actfunc)trnX 训练数据trnY 训练数据类别tstX 测试数据ker 核函数alpha 拉格朗日乘子Lagrange Multipliersbias 偏置量actfunc 激励函数:0(默认值) hard; 1 soft 平滑该函数根据训练样本得到的最优分类面计算实际样本的输出。
利用它还可以得到测试样本的分类情况,对最优分类面进行测试。
3. [h] = svcplot(X,Y,ker,alpha,bias,aspect,mag,xaxis,yaxis,input)支持向量机分类绘图函数svcplot,用于绘制最优分类面,并标识出支持向量X 训练数据Y 训练数据类别ker 核函数alpha 拉格朗日乘子bias 偏置量aspect 图像纵横比: 0(默认) fixed; 1 variablemag 缩放率0.1默认xaxis 1(默认)yaxis 2(默认)input vector of input values (default: zeros(no_of_inputs))4. err = svcerror(trnX,trnY,tstX,tstY,ker,alpha,bias)统计测试样本分类错误数量的函数,用于统计利用已知的最优分类面对测试样本进行分类,发生错误分类的数目trnX 训练数据trnY 训练目标类别tstX 预测数据tstY 预测目标类别ker 核函数alpha 拉格朗日乘子bias 偏置量5. uiclass简易图形用户界面函数。