MatlabSVM整理.docx
- 文档编号:4782347
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:22
- 大小:194.47KB
MatlabSVM整理.docx
《MatlabSVM整理.docx》由会员分享,可在线阅读,更多相关《MatlabSVM整理.docx(22页珍藏版)》请在冰豆网上搜索。
MatlabSVM整理
SVM整理
1各种svm程序包
1.1matlab高级版本中自带的svm函数
我现在使用的matlab版本为matlab7.6.0(R2008a)这个版本中已经自带svm算法,分别为生物信息工具箱(bioinformaticstoolbox)中svmclassify函数和svmtrain函数,为上下级关系。
SVMStruct=svmtrain(Training,Group)%svmtrain的输入为样本点training和样本的分类情况group,输出为一个分类器svmstruct.
核函数,核参数,和计算方法等都是可选的,如SVMStruct=svmtrain(…,‘Kernel_Function’,Kernel_FunctionValue,…)
但是切记切记一定要成对出现。
然后,将分类器和testingsample带入svmclassify中,可以得到分类结果和准确度。
举个例子
svmStruct=svmtrain(data(train,:
),groups(train),’Kernel_Function’,'rbf’,'Kernel_FunctionValue’,’5′,’showplot’,true);
%用了核宽为5的径向基核,且要求作图
%这里我觉得原作者的写法有误,应该是svmStruct=svmtrain(data(train,:
),groups(train),...
'Kernel_Function','rbf','RBF_Sigma',5,'showplot',true);
classes=svmclassify(svmStruct,data(test,:
),’showplot’,true);
%要求输出检测样本点的分类结果,且画图表示。
tip1:
有归一化scale功能,可以通过调参数实现
tip2:
计算方法可选qp,smo,ls
tip3:
有个关于softmargin的盒子条件,我不太明白是干嘛的,谁懂得话,就给我讲讲哈
tip4:
画出来的图很难看
tosumup:
挺好的
1.2较早使用的工具箱SVMandKernelMethodsMatlabToolbox
2005年法国人写的,最近的更新为20/02/2008
下载的地址为http:
//asi.insa-rouen.fr/enseignants/~arakotom/toolbox/index.html
这是我最早开始用的一个工具箱,我很喜欢,到现在还是,对于svm的初学者是个很好的toolbox.
有详细的说明和很多的demo和例子,
包含现今几乎所有的有关svm的成熟算法和数据预处理方法(pca及小波等)。
最最重要的是有回归
且函数简单,容易改动延伸。
最近我在弄模糊支持向量机,弄不出来,折腾的快死人了,那天突然发现其实在这个包的一个程序中改动下就可以达到模糊的效果了,开心啊。
。
。
且有多分类
且画出来的图好看。
强烈推荐
说下包中最重要的几个函数svmregsvmclasssvmval
其中,svmreg和svmclass的功能分别为训练出回归函数和分类器
Svmval将回归函数或分类器带入,对新样本点进行估计
1.3最富盛名的libsvm
本文来自:
高校自动化网(W)详细出处参考(转载请保留本链接):
业界很有名的一个包,主要是有各种各样的借口,现在最新的到python
主页及下载地址:
http:
//www.csie.ntu.edu.tw/~cjlin/libsvm/
但是,说实话呢,我真是用的不怎么上手
首先,实在是不怎么好篡改
其次,参数调起来挺麻烦。
但是有很详细的guidebook和例子
且主页上的例子很生动,随便点几下,就可以看到分类器产生的过程和效果。
业界用的非常多,应该svm在应用领域影响力最大的一个包了
据说(accordingto诺,井博士)linux下非常非常好使。
1.4osu-svmmatlabtoolbox
下载地址:
觉得和libsvm没什么太大的差别
有多分类且可以生成个阶梯图,我觉得这种图要比普通的分类平面图好些,好像可以看到更多的信息。
、
1.5spidermachinelearningmatlabtoolbox
主页:
那个是相当cool~啊
包括了迄今为止较为常用的machinelearningalgorithms
还有无监督的一些算法,如谱聚类
我研究了一小下,不太好篡改,但是很好用,我做多分类是就用了这个包,效果不好,但是挺好调整
本文来自:
高校自动化网(W)详细出处参考(转载请保留本链接):
1.6svc(注意版本)
包已经解压到文件夹F:
\R2009b\toolbox\svm
matlab中SVM工具箱的使用方法
1,下载SVM工具箱:
2,安装到matlab文件夹中
1)将下载的SVM工具箱的文件夹放在\matlab71\toolbox\下
2)打开matlab->File->SetPath中添加SVM工具箱的文件夹
现在,就成功的添加成功了.
可以测试一下:
在matlab中输入whichsvcoutput回车,如果可以正确显示路径,就证明添加成功了,例如:
C:
\ProgramFiles\MATLAB71\toolbox\svm\svcoutput.m
3,用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([-38-38]);
title('C-SVC')
holdon;
X1=[x1,x2];
Y1=[y1,y2];
X=X1';
Y=Y1';
其中,X是100*2的矩阵,Y是100*1的矩阵
C=Inf;
ker='linear';
globalp1p2
p1=3;
p2=1;
然后,在matlab中输入:
[nsvalphabias]=svc(X,Y,ker,C),回车之后,会显示:
SupportVectorClassification
_____________________________
Constructing...
Optimising...
Executiontime:
1.9seconds
Status:
OPTIMAL_SOLUTION
|w0|^2 :
0.418414
Margin :
3.091912
Sumalpha:
0.418414
SupportVectors:
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
http:
//www.support-vector-machines.org/SVM_soft.html
2原理详解
2.1SVM.ppt
2.2陆振波的SVM的MATLAB代码的解释
%构造训练样本
n=50;
randn('state',6);
x1=randn(2,n);%2行N列矩阵
y1=ones(1,n);%1*N个1
x2=5+randn(2,n);%2*N矩阵
y2=-ones(1,n);%1*N个-1
figure;
plot(x1(1,:
),x1(2,:
),'bx',x2(1,:
),x2(2,:
),'k.');
%x1(1,:
)为x1的第一行,x1(2,:
)为x1的第二行
axis([-38-38]);
title('C-SVC')
holdon;
X=[x1,x2];%训练样本d*n矩阵,n为样本个数,d为特征向量个数
Y=[y1,y2];%训练目标1*n矩阵,n为样本个数,值为+1或-1
%训练支持向量机
functionsvm=svmTrain(svmType,X,Y,ker,p1,p2)
options=optimset;%Options是用来控制算法的选项参数的向量
options.LargeScale='off';
options.Display='off';
switchsvmType
case'svc_c',
C=p1;
n=length(Y);
H=(Y'*Y).*kernel(ker,X,X);
f=-ones(n,1);%f为1*n个-1,f相当于Quadprog函数中的c
A=[];
b=[];
Aeq=Y;%相当于Quadprog函数中的A1,b1
beq=0;
lb=zeros(n,1);%相当于Quadprog函数中的LB,UB
ub=C*ones(n,1);
a0=zeros(n,1);%a0是解的初始近似值
[a,fval,eXitflag,output,lambda]=quadprog(H,f,A,b,Aeq,beq,lb,ub,a0,options);%a是输出变量,它是问题的解
%Fval是目标函数在解a处的值
%Exitflag>0,则程序收敛于解x
Exitflag=0,则函数的计算达到了最大次数
Exitflag<0,则问题无可行解,或程序运行失败
%Output输出程序运行的某些信息
%Lambda为在解a处的值Lagrange乘子
%支持向量机的数学表达式:
(i=1toL)
Quadprog函数:
St:
因此,H=(Y'*Y).*kernel(ker,X,X)
支持向量机的数学表达式中的最优解为
,
,
%寻找支持向量
a=svm.a;
epsilon=1e-8;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MatlabSVM 整理