文档库 最新最全的文档下载
当前位置:文档库 › 基于Matlab的最小二乘支持向量机的工具箱及其应用

基于Matlab的最小二乘支持向量机的工具箱及其应用

基于Matlab的最小二乘支持向量机的工具箱及其应用
基于Matlab的最小二乘支持向量机的工具箱及其应用

基于Matlab的最小二乘支持向量机的工具箱及其应用

李方方,赵英凯,颜昕

1最小二乘支持向量机的原理

最小二乘支持向量机[2]是支持向量机的一种改进,它是将传统支持向量机中的不等式约束改为等式约束,且将误差平方和(Sum SquaresError)损失函数作为训练集的经验损失,这样就把解二次规划问题转化为求解线性方程组问题,提高求解问题的速度和收敛精度。设样本为n维向量,某区域的l个样本及其表示为: (x1,y1),…, (xl,yl)∈Rn×R,首先用一非线性映射ψ(·)把样本从原空间Rn映射到特征空间φ(xi),在这个高维特征空间中构造最优决策函数:

y(x) =ω·φ(x) +b(1)

这样非线性估计函数转化为高维特征空间的线性估计函数。利用结构风险最小化原则,寻找ω, b就是最小化:

其中‖ω‖2控制模型的复杂度, c是正规化参数,控制对超出误差样本的惩罚程度。Remp为误差控制函数,也即ε不敏感损失函数。常用的损失函数有线性ε损失函数,二次ε损失函数,Huber损失函数。选取了不同的损失函数,可构造不同形式的支持向量机。最小二乘支持向量机在优化目标失函数为误差ξi的二次项。故优化问题为:

式中,ξi为松弛因子。用拉格朗日法求解这个优化问题:

其中:αi(i =1,…, l)是拉格朗日乘子。

根据优化条件

可得到:

其中:αi= c·ξi,ω·φ(xi) +b +ξi-yi=0。

定义核函数K(xi,yi) =φ(xi)·φ(xj)是满足条件的对称函数。根据文献[6],优化问题转化为求解线性方程:

最后用最小二乘法求出a与b,最小二乘支持向量机也由此得名,并且得到非线性预测模型:

K(xi,x) =Φ(xi)·Φ(x)称为核函数,它是满足Mercer条件的任何对称的核函数对应于特征空间的点积。核函数的种类较多,常用的有:

(1)多项式函数:

(2)RBF函数:

(3)Sigmoid函数:

k(xi,x) =tanh(v(x·xi) +c)

(4)B样条函数:

K(x,y) =B2n(x-y)

2LS-SVMlab工具箱

基于Matlab的LS-SVMlab工具箱[3]主要包括分类、回归、时间序列预测和无监督学习。工具箱的代码都是用C语言编写的。工具箱根据不同计算机系统可以用于W indows版本和Linux版本,大多数函数都能计算20 000个数据。

LS-SVM工具箱有3个版本,基本的,高级的(代码可编辑,包括用于贝叶斯框架),还有一个是在C环境下运行的版本,每个不同的算法包含不同的函数。在LS-SVM工具箱外有一个C 程序的编译器,它会自动把Matlab程序编译成C程序,然后在C程序下进行计算,这样就大大提高了LS-SVM的运算效率。

图1是基于Matlab的LS-SVMlab工具箱的结构图,下面就对LS-SVMlab进行介绍。

2. 1训练数据的导入

要使用LS-SVM工具箱进行训练,就必须准备训练样本,对样本数据的获取,有以下几种方法供选择,具体采用哪种方法,取决于数据的多少和数据文件的格式等: (1)用元素列表方式直接输入数据; (2)创建数据文件,通过matlab提供的装载数据函数,从数据文件中读取。函数load适合从MA T文件、ASCII文件中读取数据,函数xlsread从. xls格式的文件中读取,函数csvread从. csv格式的文件中读取数据。

2. 2数据预处理

对要训练的输入和输出数据进行一定的预处理,可以加快训练速度。Matlab提供的数据预处理方法有归一化处理(把每组数据都变为-1~+1之间的数,所涉及到的函数有premnmx, postmnmx, tramnmx)、标准化处理(把每组数据都化为均值为0,方差为1的一组数据,所涉及到的函数有prestd,poatstd, trastd)和主成分分析(进行正交处理,减少输入数据的维数,所涉及到的函数有prepca, trapca)。当训练得到输出时,还必须进行数据的反归一化。

2. 3算法的训练和仿真

LS-SVMlab工具箱主要用来进行分类、函数的回归和利用核函数进行无监督学习。LS-SVMlab用于函数回归主要用到3个函数, trainlssvm函数用来训练建立模型, simlssvm函数用于预估模型, plotlssvm函数是LS-SVMlab工具箱的专用绘图函数。高版本的LS-SVMlab 工具箱还有贝叶斯框架下的最小二乘支持向量机,固定大小的最小二乘支持向量机等。

2. 4LS-SVM算法的改进

L ssvm.mex*是matlab训练时在UNIX /Linux环境下和C的接口。lssvm. dll是Matlab训

练时在W indows环境下和C的接口,有了这两个文件,就可以大大提高运行效率。模型的验证主要包括Crossvalidate、rcrossvalidation、leaveoneout是用交叉验证的各种改进方法进行寻优,gridsearch是在一定的范围内用来寻找最优的参数范围。

由于最小二乘支持向量回归估计将二次规划问题转变成线性方程组的求解,失去了支持向量解的稀疏性优点,此外,冗余信息的噪声被全部拟合到模型参数里,削弱了模型的鲁棒性,使辨识参数的推广能力下降。针对上述缺点,函数Tunelssvm, prunelssvm,weightedlssvm是对最小二乘支持向量机上述缺点的改进。

3LS-SVMlab在82B钢生产预测中的应用

3. 182B钢生产建模的必要性

提高产品性能一直是冶金工作者所致力追求的目标,为了达到这个目标,有必要在生产前对所要生产的产品性能进行预测,然后根据预测结果,设计钢种成分和加工工艺条件,从而降低研制成本,缩短开发时间。国内一些钢铁公司生产的82B钢存在着力学性能不稳定、拉拔断裂现象,而且钢铁的化学成分和轧制时的工艺参数影响着82B钢的力学性能,并且82B钢的化学成分和工艺参数与产品的力学性能的关系很难用传统的数学模型准确的表示出来,因此如何有效的建立82B钢生产的模型是一个亟待解决的问题。

3. 2输入输出变量的选择

原则上,建模可以输入各种影响相关研究课题的因素,但是考虑到实际生产情况和控制模型的收敛速度,故需要对各种因素进行充分的分析和筛选。对于82B钢的生产来说,影响性能的因素分为内因(钢种的化学成分)和外因(工艺条件)两个方面[4],金属本身的化学成分直接影响到82B钢的抗拉强度,延伸率,断面收缩率等最终性能。工艺条件就更加复杂如:加热时间的长短,轨道速度,吐丝温度的高低以及斯太尔摩冷却线上的风冷情况等都会对高速线材的最后力学性能造成影响。因此结合厂里工艺人员的经验,在建立82B钢的性能预报模型时可以将钢的化学成分包括:炭、硅、锰、氮、铬、磷、硫的百分含量以及开轧温度、精轧前温度、精轧后温度、吐丝温度一共13个变量作为神经网络的输入。从对82B钢的性能影响因素规律性的研究以及82B钢的力学性能可测的这一前提出发,我们将82B钢的力学性能即抗拉强度、延伸率、断面收缩率作为输出量建立模型进行预报。

3. 3LS-SVM工具箱在82B钢建模中的应用

从MySQL数据库导出的训练数据放在traindata. csv的文件中,导出的预估数据放在predic. csv文件中。假设训练据有200个,预估数据是70个。下面是利用LS-SVMlab工箱编写的程序来具体阐述设计的步骤:

(1)读取输入输出数据。

A=csvread(′traindata. csv′);

csv格式的文件是一种文本文件,占用空间小,而且可用. txt、. xls打开,并且有利于数据的读取,也便于做B/S网发布。

(2)对输入输出的数据进行归一化预处理[5]。

Ptrain0=A(:, [1: 13]);

Ttrain0=A(:, [14: 16);

[Ptrain,meanptrain, stdptrain] = prestd(Ptrain0′);

[Ttrain,meant, stdt]= prestd(Ttrain0′);

Prestd()是数据归一化函数,其中meanptrain是未归一数据之前的向量平均值stdptrain是未归一化数据之前的向标准差。

(3)设定最小二乘支持向量机的参数gam和相应的核数涉及到的参数。

gam=10; sig2=0. 5;

type=′function estimation′;

LS-SVM要求调的参数就两个。gam和sig2是最小二支持向量机的参数,其中gam是正则化参数,决定了适应差的最小化和平滑程度, sig2是RBF函数的参数。在工具中有一个函数gridsearch可以在一定的范围内用来寻找最的参数范围。type有两种类型,一种是classfication,用于类,一种是function estimation,用于函数回归。

(4)算法训练,建立模型。

建立模型用trainlssvm函数实现,它根据样本的输入输和预先已经设置好的训练函数的参数,对网络进行训练,得最小二乘支持向量机的支持向量和相应的阈值,见公式(8)[alpha, b] =trainlssvm({Ptrain′, Ttrain′, type, gam, sig′RBF_kernel′,′preprocess′});

Trainlssvm函数是LS-SVM工具箱的重要函数之一,是小二乘支持向量机的训练函数。其中′RBF_kernel′是表明函数是RBF函数。核函数还有Lin_kernel、Poly_kernel等。

alpha是支持向量, b是阈值。preprocess是表明数据经进行归一化,也可以是′original′,表明数据没有进行归化,缺省时是′preprocess′。

plotlssvm ({ P, T, type, gam, sig2,′RBF _ kernel′′preprocess′}, {alpha, b})

plotlssvm函数是LS-SVM工具箱特有的绘图函数,和p函数原理相近。

(5)读取预估数据的输入,进行数据预处理并进行模的预测。

其中smi lssvm函数类似于神经网络工具箱中的smi函数,来验证模型的准确性,用预估82B 钢生产得到的质量指标。

B=csvread(′predic. csv′);

Ptest0=B(:, [1: 13]);

Ttest0=B(:, [14: 16]);

[Ptest,meanptest, stdptest] = prestd(Ptest0′);

读取预估数据,并且进行数据预处理,进行归一化。

y1=simlssvm({Ptest’, T, type, gam, sig2,′RBF_kernel′′preprocess′}, {alpha, b}, Ptest) simlssvm函数也是LS-SVM工具箱的重要函数,其中的参数如上述所示,原理类似于神经网络工具箱中的sim函数。

通过调用trainlssvm函数和simlssvm函数我们可以看到最小二乘支持向量机和神经网络的结构有很多共同之处

(6)用plot函数进行绘图(略)。图2是82钢预估得到的质量指标。

从图2中真实值与预测值的拟合程度,我们看到用LS-SVMlab工具箱来预估82钢,能得到较好的预估结果,并且我们用神经网络的方法来进行比较,其中神经网络建立的模型要比LS-SVM好,但是在预估上, LS-SVM要优于神经网络,具有较好的泛化能力,而且训练速度要比神经网络快。

4结语

最小二乘支持向量机是用等式约束代替传统支持向量机中的不等式约束,求解过程从解QP问题编程一组等式方程,提高求解问题的速度和收敛精度。本文介绍了基于Matlab的最小二乘支持向量机的工具箱LS-SVMlab,并且针对最小二乘支持向量机在回归预测方面的应用,建立了82B钢生产的质量指标的预测模型。仿真结果表明最小二乘支持向量机建立的非线性模型是可行有效的,具有很好的泛化能力,计算速度快,并且简化了计算,占用较少的内存。参考文献:

[1]V APNIK V. The Nature of Statistical Learning Theory[M]. NY:SpringerVerlag, 1995.

[2]阎威武,邵惠鹤.支持向量机和最小二乘支持向量机的比较及应用研究[J].控制与决策,

2003. 18(3): 358-360.

[3]SUYKENS JAK. LS-SVMlabToolboxUser sGuide [EB /OL ].http: //www. esat. kuleuven. ac. be/sista/, 2005-12-10.

[4]冯贺滨,李连诗.基于人工神经网络的高碳钢高速线材控冷工艺参数优化[J].钢铁, 2000, 35(6): 37-40.

[5]罗成汉.基于MA TLAB神经网络工具箱的BP网络实现[J].计算机仿真, 2004, 21(5): 108-111.

支持向量机的matlab代码

支持向量机的matlab代码 Matlab中关于evalin帮助: EVALIN(WS,'expression') evaluates 'expression' in the context of the workspace WS. WS can be 'caller' or 'base'. It is similar to EVAL except that you can control which workspace the expression is evaluated in. [X,Y,Z,...] = EVALIN(WS,'expression') returns output arguments from the expression. EVALIN(WS,'try','catch') tries to evaluate the 'try' expression and if that fails it evaluates the 'catch' expression (in the current workspace). 可知evalin('base', 'algo')是对工作空间base中的algo求值(返回其值)。 如果是7.0以上版本 >>edit svmtrain >>edit svmclassify >>edit svmpredict function [svm_struct, svIndex] = svmtrain(training, groupnames, varargin) %SVMTRAIN trains a support vector machine classifier % % SVMStruct = SVMTRAIN(TRAINING,GROUP) trains a support vector machine % classifier using data TRAINING taken from two groups given by GROUP. % SVMStruct contains information about the trained classifier that is % used by SVMCLASSIFY for classification. GROUP is a column vector of % values of the same length as TRAINING that defines two groups. Each % element of GROUP specifies the group the corresponding row of TRAINING % belongs to. GROUP can be a numeric vector, a string array, or a cell % array of strings. SVMTRAIN treats NaNs or empty strings in GROUP as % missing values and ignores the corresponding rows of TRAINING. % % SVMTRAIN(...,'KERNEL_FUNCTION',KFUN) allows you to specify the kernel % function KFUN used to map the training data into kernel space. The % default kernel function is the dot product. KFUN can be one of the % following strings or a function handle: % % 'linear' Linear kernel or dot product % 'quadratic' Quadratic kernel % 'polynomial' Polynomial kernel (default order 3) % 'rbf' Gaussian Radial Basis Function kernel % 'mlp' Multilayer Perceptron kernel (default scale 1) % function A kernel function specified using @,

陆振波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([-3 8 -3 8]); title('C-SVC') hold on; X = [x1,x2]; %训练样本d*n矩阵,n为样本个数,d为特征向量个数 Y = [y1,y2]; %训练目标1*n矩阵,n为样本个数,值为+1或-1 %训练支持向量机 function svm = svmTrain(svmType,X,Y,ker,p1,p2) options = optimset; % Options是用来控制算法的选项参数的向量 https://www.wendangku.net/doc/3310225049.html,rgeScale = 'off'; options.Display = 'off'; switch svmType 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 输出程序运行的某些信息

支持向量机非线性回归通用MATLAB源码

支持向量机非线性回归通用MA TLAB源码 支持向量机和BP神经网络都可以用来做非线性回归拟合,但它们的原理是不相同的,支持向量机基于结构风险最小化理论,普遍认为其泛化能力要比神经网络的强。大量仿真证实,支持向量机的泛化能力强于BP网络,而且能避免神经网络的固有缺陷——训练结果不稳定。本源码可以用于线性回归、非线性回归、非线性函数拟合、数据建模、预测、分类等多种应用场合,GreenSim团队推荐您使用。 function [Alpha1,Alpha2,Alpha,Flag,B]=SVMNR(X,Y,Epsilon,C,TKF,Para1,Para2) %% % SVMNR.m % Support Vector Machine for Nonlinear Regression % All rights reserved %% % 支持向量机非线性回归通用程序 % GreenSim团队原创作品,转载请注明 % GreenSim团队长期从事算法设计、代写程序等业务 % 欢迎访问GreenSim——算法仿真团队→https://www.wendangku.net/doc/3310225049.html,/greensim % 程序功能: % 使用支持向量机进行非线性回归,得到非线性函数y=f(x1,x2,…,xn)的支持向量解析式,% 求解二次规划时调用了优化工具箱的quadprog函数。本函数在程序入口处对数据进行了% [-1,1]的归一化处理,所以计算得到的回归解析式的系数是针对归一化数据的,仿真测 % 试需使用与本函数配套的Regression函数。 % 主要参考文献: % 朱国强,刘士荣等.支持向量机及其在函数逼近中的应用.华东理工大学学报 % 输入参数列表 % X 输入样本原始数据,n×l的矩阵,n为变量个数,l为样本个数 % Y 输出样本原始数据,1×l的矩阵,l为样本个数 % Epsilon ε不敏感损失函数的参数,Epsilon越大,支持向量越少 % C 惩罚系数,C过大或过小,泛化能力变差 % TKF Type of Kernel Function 核函数类型 % TKF=1 线性核函数,注意:使用线性核函数,将进行支持向量机的线性回归 % TKF=2 多项式核函数 % TKF=3 径向基核函数 % TKF=4 指数核函数 % TKF=5 Sigmoid核函数 % TKF=任意其它值,自定义核函数 % Para1 核函数中的第一个参数 % Para2 核函数中的第二个参数 % 注:关于核函数参数的定义请见Regression.m和SVMNR.m内部的定义 % 输出参数列表 % Alpha1 α系数 % Alpha2 α*系数 % Alpha 支持向量的加权系数(α-α*)向量

Matlab数理统计工具箱常用函数命令大全

Matlab数理统计工具箱应用简介 1.概述 Matlab的数理统计工具箱是Matlab工具箱中较为简单的一个,其牵扯的数学知识是大家都很熟悉的数理统计,因此在本文中,我们将不再对数理统计的知识进行重复,仅仅列出数理统计工具箱的一些函数,这些函数的意义都很明确,使用也很简单,为了进一步简明,本文也仅仅给出了函数的名称,没有列出函数的参数以及使用方法,大家只需简单的在Matlab工作空间中输入“help 函数名”,便可以得到这些函数详细的使用方法。 2.参数估计 betafit 区间 3.累积分布函数 betacdf β累积分布函数 binocdf 二项累积分布函数 cdf 计算选定的累积分布函数 chi2cdf 累积分布函数2χ expcdf 指数累积分布函数 fcdf F累积分布函数 gamcdf γ累积分布函数 geocdf 几何累积分布函数 hygecdf 超几何累积分布函数 logncdf 对数正态累积分布函数 nbincdf 负二项累积分布函数 ncfcdf 偏F累积分布函数 nctcdf 偏t累积分布函数 ncx2cdf 偏累积分布函数2χ normcdf 正态累积分布函数 poisscdf 泊松累积分布函数 raylcdf Reyleigh累积分布函数 tcdf t 累积分布函数 unidcdf 离散均匀分布累积分布函数 unifcdf 连续均匀分布累积分布函数 weibcdf Weibull累积分布函数 4.概率密度函数 betapdf β概率密度函数 binopdf 二项概率密度函数 chi2pdf 概率密度函数2χ

exppdf 指数概率密度函数 fpdf F概率密度函数 gampdf γ概率密度函数 geopdf 几何概率密度函数 hygepdf 超几何概率密度函数 lognpdf 对数正态概率密度函数 nbinpdf 负二项概率密度函数 ncfpdf 偏F概率密度函数 nctpdf 偏t概率密度函数 ncx2pdf 偏概率密度函数2χ normpdf 正态分布概率密度函数 pdf 指定分布的概率密度函数 poisspdf 泊松分布的概率密度函数 raylpdf Rayleigh概率密度函数 tpdf t概率密度函数 unidpdf 离散均匀分布概率密度函数unifpdf 连续均匀分布概率密度函数weibpdf Weibull概率密度函数5.逆累积分布函数 Betainv 逆β累积分布函数 binoinv 逆二项累积分布函数 chi2inv 逆累积分布函数2χ expinv 逆指数累积分布函数 finv 逆F累积分布函数 gaminv 逆γ累积分布函数 geoinv 逆几何累积分布函数 hygeinv 逆超几何累积分布函数 logninv 逆对数正态累积分布函数 nbininv 逆负二项累积分布函数 ncfinv 逆偏F累积分布函数 nctinv 逆偏t累积分布函数 ncx2inv 逆偏累积分布函数2χ norminv 逆正态累积分布函数 possinv 逆正态累积分布函数 raylinv 逆Rayleigh累积分布函数 tinv 逆t累积分布函数 unidinv 逆离散均匀累积分布函数 unifinv 逆连续均匀累积分布函数 weibinv 逆Weibull累积分布函数

四种支持向量机用于函数拟合与模式识别的Matlab示

四种支持向量机用于函数拟合与模式识别的Matlab示四种支持向量机用于函数拟合与模式识 别的Matlab示 四种支持向量机用于函数拟合与模式识别的Matlab示例程序(转)2010-08-08 10:02使用要点: 应研学论坛人工智能与模式识别版主magic_217之约,写一个关于针对初学者的四种支持向量机工具箱的详细使用说明。同时也不断有网友向我反映看不懂我的源代码,以及询问如何将该工具箱应用到实际数据分析等问题,其中有相当一部分网友并不了解模式识别的基本概念,就急于使用这个工具箱。本文从模式识别的基本概念谈起,过渡到神经网络模式识别,逐步引入到这四种支持向量机工具箱的使用。 本文适合没有模式识别基础,而又急于上手的初学者。作者水平有限,欢迎同行批评指正~ 模式识别基本概念 [1] 模式识别的方法有很多,常用有:贝叶斯决策、神经网络、支持向量机等等。特别说明的是,本文所谈及的模式识别是指"有老师分类",即事先知道训练样本所属的类别,然后设计分类器,再用该分类器对测试样本进行识别,比较测试样本的实际所属类别与分类器输出的类别,进而统计正确识别率。正确识别率是反映分类器性能的主要指标。 分类器的设计虽然是模式识别重要一环,但是样本的特征提取才是模式识别最关键的环节。试想如果特征矢量不能有效地描述原样本,那么即使分类设计得再好也无法实现正确分类。工程中我们所遇到的样本一般是一维矢量,如:语音信号,或者是二维矩阵,如:图片等。特征提取就是将一维矢量或二维矩阵转化成一个维

数比较低的特征矢量,该特征矢量用于分类器的输入。关于特征提取,在各专业领域中也是一个重要的研究方向,如语音信号的谐振峰特征提取,图片的PCA特征提取等等。 [2]神经网络模式识别 神经网络模式识别的基本原理是,神经网络可以任意逼近一个多维输入输出函数。以三类分类:I、II、III为例,神经网络输入是样本的特征矢量,三类样本的神经网络输出可以是[1;0;0]、[0;1;0]、[0;0;1],也可以是[1;-1;-1]、[-1;1;-1]、[-1;-1;1]。将所有样本中一部分用来训练网络,另外一部分用于测试输出。通常情况下,正确分类的第I类样本的测试输出并不是[1;0;0]或是[1;-1;-1],而是如[0.1;0;-0.2]的输出。也是就说,认为输出矢量中最大的一个分量是1,其它分量是0或是-1就可以了。 [3]支持向量机的多类分类 支持向量机的基本理论是从二类分类问题提出的。我想绝大部分网友仅着重于理解二类分类问题上了,我当初也是这样,认识事物都有一个过程。二类分类的基本原理固然重要,我在这里也不再赘述,很多文章和书籍都有提及。我觉得对于工具箱的使用而言,理解如何实现从二类分类到多类分类的过渡才是最核心的内容。下面我仅以1-a-r算法为例,解释如何由二类分类器构造多类分类器。 二类支持向量机分类器的输出为[1,-1],当面对多类情况时,就需要把多类分类器分解成多个二类分类器。在第一种工具箱LS_SVMlab中,文件 Classification_LS_SVMlab.m中实现了三类分类。训练与测试样本分别为n1、 n2,它们是3 x15的矩阵,即特征矢量是三维,训练与测试样本数目均是15;由于是三类分类,所以训练与测试目标x1、x2的每一分量可以是1、2或是3,分别对应三类,如下所示: n1=[rand(3,5),rand(3,5)+1,rand(3,5)+2];

MATLAB-智能算法30个案例分析-终极版(带目录)

MATLAB 智能算法30个案例分析(终极版) 1 基于遗传算法的TSP算法(王辉) 2 基于遗传算法和非线性规划的函数寻优算法(史峰) 3 基于遗传算法的BP神经网络优化算法(王辉) 4 设菲尔德大学的MATLAB遗传算法工具箱(王辉) 5 基于遗传算法的LQR控制优化算法(胡斐) 6 遗传算法工具箱详解及应用(胡斐) 7 多种群遗传算法的函数优化算法(王辉) 8 基于量子遗传算法的函数寻优算法(王辉) 9 多目标Pareto最优解搜索算法(胡斐) 10 基于多目标Pareto的二维背包搜索算法(史峰) 11 基于免疫算法的柔性车间调度算法(史峰) 12 基于免疫算法的运输中心规划算法(史峰) 13 基于粒子群算法的函数寻优算法(史峰) 14 基于粒子群算法的PID控制优化算法(史峰) 15 基于混合粒子群算法的TSP寻优算法(史峰) 16 基于动态粒子群算法的动态环境寻优算法(史峰) 17 粒子群算法工具箱(史峰) 18 基于鱼群算法的函数寻优算法(王辉) 19 基于模拟退火算法的TSP算法(王辉) 20 基于遗传模拟退火算法的聚类算法(王辉) 21 基于模拟退火算法的HEV能量管理策略参数优化(胡斐)

22 蚁群算法的优化计算——旅行商问题(TSP)优化(郁磊) 23 基于蚁群算法的二维路径规划算法(史峰) 24 基于蚁群算法的三维路径规划算法(史峰) 25 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊) 26 有导师学习神经网络的分类——鸢尾花种类识别(郁磊) 27 无导师学习神经网络的分类——矿井突水水源判别(郁磊) 28 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断(郁磊) 29 支持向量机的回归拟合——混凝土抗压强度预测(郁磊) 30 极限学习机的回归拟合及分类——对比实验研究(郁磊) 智能算法是我们在学习中经常遇到的算法,主要包括遗传算法,免疫算法,粒子群算法,神经网络等,智能算法对于很多人来说,既爱又恨,爱是因为熟练的掌握几种智能算法,能够很方便的解决我们的论坛问题,恨是因为智能算法感觉比较“玄乎”,很难理解,更难用它来解决问题。 因此,我们组织了王辉,史峰,郁磊,胡斐四名高手共同写作MATLAB智能算法,该书包含了遗传算法,免疫算法,粒子群算法,鱼群算法,多目标pareto算法,模拟退火算法,蚁群算法,神经网络,SVM等,本书最大的特点在于以案例为导向,每个案例针对一

Matlab-SVM整理

SVM整理 1各种svm程序包 1.1 matlab高级版本中自带的svm函数 我现在使用的matlab版本为matlab 7.6.0(R2008a)这个版本中已经自带svm算法,分别为生物信息工具箱(bioinformatics toolbox)中svmclassify函数和svmtrain函数,为上下级关系。 SVMStruct=svmtrain(Training,Group)%svmtrain的输入为样本点training和样本的分类情况group,输出为一个分类器svmstruct. 核函数,核参数,和计算方法等都是可选的,如SVMStruct = svmtrain(…, ‘Kernel_Function’, Kernel_FunctionValue, …) 但是切记切记一定要成对出现。 然后,将分类器和testing sample带入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); %要求输出检测样本点的分类结果,且画图表示。 tip 1: 有归一化scale功能,可以通过调参数实现 tip 2: 计算方法可选qp,smo,ls tip 3: 有个关于soft margin的盒子条件,我不太明白是干嘛的,谁懂得话,就给我讲讲哈 tip 4: 画出来的图很难看 to sum up: 挺好的 1.2较早使用的工具箱SVM and Kernel Methods Matlab Toolbox 2005年法国人写的,最近的更新为20/02/2008 下载的地址为http://asi.insa-rouen.fr/enseignants/~arakotom/toolbox/index.html 这是我最早开始用的一个工具箱,我很喜欢,到现在还是,对于svm的初学者是个很好的toolbox. 有详细的说明和很多的demo和例子, 包含现今几乎所有的有关svm的成熟算法和数据预处理方法(pca及小波等)。 最最重要的是有回归!!! 且函数简单,容易改动延伸。

支持向量机matlab实现源代码知识讲解

支持向量机m a t l a b 实现源代码

edit svmtrain >>edit svmclassify >>edit svmpredict function [svm_struct, svIndex] = svmtrain(training, groupnames, varargin) %SVMTRAIN trains a support vector machine classifier % % SVMStruct = SVMTRAIN(TRAINING,GROUP) trains a support vector machine % classifier using data TRAINING taken from two groups given by GROUP. % SVMStruct contains information about the trained classifier that is % used by SVMCLASSIFY for classification. GROUP is a column vector of % values of the same length as TRAINING that defines two groups. Each % element of GROUP specifies the group the corresponding row of TRAINING % belongs to. GROUP can be a numeric vector, a string array, or a cell % array of strings. SVMTRAIN treats NaNs or empty strings in GROUP as % missing values and ignores the corresponding rows of TRAINING. % % SVMTRAIN(...,'KERNEL_FUNCTION',KFUN) allows you to specify the kernel % function KFUN used to map the training data into kernel space. The % default kernel function is the dot product. KFUN can be one of the % following strings or a function handle: % % 'linear' Linear kernel or dot product % 'quadratic' Quadratic kernel % 'polynomial' Polynomial kernel (default order 3) % 'rbf' Gaussian Radial Basis Function kernel % 'mlp' Multilayer Perceptron kernel (default scale 1) % function A kernel function specified using @, % for example @KFUN, or an anonymous function % % A kernel function must be of the form % % function K = KFUN(U, V) % % The returned value, K, is a matrix of size M-by-N, where U and V have M % and N rows respectively. If KFUN is parameterized, you can use % anonymous functions to capture the problem-dependent parameters. For % example, suppose that your kernel function is % % function k = kfun(u,v,p1,p2) % k = tanh(p1*(u*v')+p2); % % You can set values for p1 and p2 and then use an anonymous function: % @(u,v) kfun(u,v,p1,p2).

matlab四种支持向量机工具箱

matlab四种支持向量机工具箱 [b]使用要点:[/b] 应研学论坛<<人工智能与模式识别>>版主magic_217之约,写一个关于针对初学者的<<四种支持向量机工具箱>>的详细使用说明。同时也不断有网友向我反映看不懂我的源代码,以及询问如何将该工具箱应用到实际数据分析等问题,其中有相当一部分网友并不了解模式识别的基本概念,就急于使用这个工具箱。本文从模式识别的基本概念谈起,过渡到神经网络模式识别,逐步引入到这四种支持向量机工具箱的使用。 本文适合没有模式识别基础,而又急于上手的初学者。作者水平有限,欢迎同行批评指正! [1]模式识别基本概念 模式识别的方法有很多,常用有:贝叶斯决策、神经网络、支持向量机等等。特别说明的是,本文所谈及的模式识别是指“有老师分类”,即事先知道训练样本所属的类别,然后设计分类器,再用该分类器对测试样本进行识别,比较测试样本的实际所属类别与分类器输出的类别,进而统计正确识别率。正确识别率是反映分类器性能的主要指标。 分类器的设计虽然是模式识别重要一环,但是样本的特征提取才是模式识别最关键的环节。试想如果特征矢量不能有效地描述原样本,那么即使分类设计得再好也无法实现正确分类。工程中我们所遇到的样本一般是一维矢量,如:语音信号,或者是二维矩阵,如:图片等。特征提取就是将一维矢量或二维矩阵转化成一个维数比较低的特征矢量,该特征矢量用于分类器的输入。关于特征提取,在各专业领域中也是一个重要的研究方向,如语音信号的谐振峰特征提取,图片的PCA特征提取等等。 [2]神经网络模式识别 神经网络模式识别的基本原理是,神经网络可以任意逼近一个多维输入输出函数。以三类分类:I、II、III为例,神经网络输入是样本的特征矢量,三类样本的神经网络输出可以是[1;0;0]、[0;1;0]、[0;0;1],也可以是[1;-1;-1]、[-1;1;-1]、[-1;-1;1]。将所有样本中一部分用来训练网络,另外一部分用于测试输出。通常情况下,正确分类的第I类样本的测试输出并不是[1;0;0]或是[1;-1;-1],而是如 [0.1;0;-0.2]的输出。也是就说,认为输出矢量中最大的一个分量是1,其它分量是0或是-1就可以了。 [3]支持向量机的多类分类 支持向量机的基本理论是从二类分类问题提出的。我想绝大部分网友仅着重于理解二类分类问题上了,我当初也是这样,认识事物都有一个过程。二类分类的基本原理固然重要,我在这里也不再赘述,很多文章和书籍都有提及。我觉得对于工具箱的使用而言,理解如何实现从二类分类到多类分类的过渡才是最核心的内容。下面我仅以1-a-r算法为例,解释如何由二类分类器构造多类分类器。二类支持向量机分类器的输出为[1,-1],当面对多类情况时,就需要把多类分类器分解成多个二类分类器。在第一种工具箱LS_SVMlab中,文件Classification_LS_SVMlab.m中实现了三类分类。训练与测试样本分别为n1、n2,它们是3 x 15的矩阵,即特征矢量是三维,训练与测试样本数目均是15;由于是三类分类,所以训练与测试目标x1、x2的每一分量可以是1、2或是3,

MATLAB工具箱函数

表Ⅰ-11 线性模型函数 函数描述 anova1 单因子方差分析 anova2 双因子方差分析 anovan 多因子方差分析 aoctool 协方差分析交互工具 dummyvar 拟变量编码 friedman Friedman检验 glmfit 一般线性模型拟合 kruskalwallis Kruskalwallis检验 leverage 中心化杠杆值 lscov 已知协方差矩阵的最小二乘估计manova1 单因素多元方差分析manovacluster 多元聚类并用冰柱图表示multcompare 多元比较 多项式评价及误差区间估计 polyfit 最小二乘多项式拟合 polyval 多项式函数的预测值 polyconf 残差个案次序图 regress 多元线性回归 regstats 回归统计量诊断 续表 函数描述 Ridge 岭回归 rstool 多维响应面可视化 robustfit 稳健回归模型拟合 stepwise 逐步回归 x2fx 用于设计矩阵的因子设置矩阵 表Ⅰ-12 非线性回归函数 函数描述 nlinfit 非线性最小二乘数据拟合(牛顿法)nlintool 非线性模型拟合的交互式图形工具nlparci 参数的置信区间 nlpredci 预测值的置信区间 nnls 非负最小二乘 表Ⅰ-13 试验设计函数 函数描述 cordexch D-优化设计(列交换算法)daugment 递增D-优化设计 dcovary 固定协方差的D-优化设计ff2n 二水平完全析因设计 fracfact 二水平部分析因设计 fullfact 混合水平的完全析因设计hadamard Hadamard矩阵(正交数组)rowexch D-优化设计(行交换算法) 表Ⅰ-14 主成分分析函数 函数描述 barttest Barttest检验 pcacov 源于协方差矩阵的主成分pcares 源于主成分的方差 princomp 根据原始数据进行主成分分析 表Ⅰ-15 多元统计函数 函数描述 classify 聚类分析 mahal 马氏距离 manova1 单因素多元方差分析manovacluster 多元聚类分析 表Ⅰ-16 假设检验函数 函数描述 ranksum 秩和检验 signrank 符号秩检验 signtest 符号检验 ttest 单样本t检验 ttest2 双样本t检验 ztest z检验 表Ⅰ-17 分布检验函数 函数描述 jbtest 正态性的Jarque-Bera检验kstest 单样本Kolmogorov-Smirnov检验kstest2 双样本Kolmogorov-Smirnov检验lillietest 正态性的Lilliefors检验 表Ⅰ-18 非参数函数 函数描述 friedman Friedman检验 kruskalwallis Kruskalwallis检验ranksum 秩和检验 signrank 符号秩检验 signtest 符号检验

Matlab常用工具箱及常用函数

Matlab常用工具箱 MATLAB包括拥有数百个内部函数的主包和三十几种工具包.工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类. 开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包. Matlab Main Toolbox——matlab主工具箱 Control System Toolbox——控制系统工具箱 Communication Toolbox——通讯工具箱 Financial Toolbox——财政金融工具箱 System Identification Toolbox——系统辨识工具箱 Fuzzy Logic Toolbox——模糊逻辑工具箱 Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱 Image Processing Toolbox——图象处理工具箱 LMI Control Toolbox——线性矩阵不等式工具箱 Model predictive Control Toolbox——模型预测控制工具箱 μ-Analysis and Synthesis Toolbox——μ分析工具箱 Neural Network Toolbox——神经网络工具箱 Optimization Toolbox——优化工具箱 Partial Differential Toolbox——偏微分方程工具箱 Robust Control Toolbox——鲁棒控制工具箱 Signal Processing Toolbox——信号处理工具箱 Spline Toolbox——样条工具箱 Statistics Toolbox——统计工具箱 Symbolic Math Toolbox——符号数学工具箱 Simulink Toolbox——动态仿真工具箱 Wavele Toolbox——小波工具箱 常用函数Matlab内部常数[3] eps:浮点相对精度 exp:自然对数的底数e i或j:基本虚数单位 inf或Inf:无限大, 例如1/0 nan或NaN:非数值(Not a number),例如0/0 pi:圆周率p(= 3.1415926...) realmax:系统所能表示的最大数值 realmin:系统所能表示的最小数值 nargin: 函数的输入引数个数 nargout: 函数的输出引数个数 lasterr:存放最新的错误信息 lastwarn:存放最新的警告信息 MATLAB常用基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle)

Matlab-并行计算工具箱函数基本情况介绍

Matlab 并行计算工具箱的使用 Matlab并行工具箱的产生一方面给大规模的数据分析带来了巨大的效益,另一方面且引入了分布式计算,借助matlab自身携带的MDCE,可以实现单机多核并行运行或者是同一个局域网络中的多台处理器组成的机群的并行运行。 个人以为后者是前者的拓展,并行计算的最初目的是为了解决串行计算速度不能满足某些复杂运算而产生的技术,能够借助较低配置的处理,协同工作处理同一个程序,但是他们之间是并不会交互的,仅仅是有核心主机—client进行大任务的分解,而后将它们分配给各个处理器,由处理器共同完成。所以说并行计算的实质还是主从结构的分布式计算。这里体现了数量的优势,同一个程序串行运行可能需要40个小时,但是若是由10台处理器同时跑,则有望将计算时间降低到接近4个小时的水平。而且这十台处理器可以是一个多个多核CPU组成,例如一个8核心CPU和1个2核心CPU。也可以是由5个2核心CPU组成,形式灵活。 而分布式计算在并行计算的基础上有功能上的扩展,一个很重要的方面就体现在,上述的十个处理器之间可以进行交互式通讯这是基于MPI(message passing interface)实现的,这对于大规模的分布式控制系统是很有需要的,也就是说,各个处理器之间要实现数据的实时传递,有时是共享某些信息,有时是lab1需要lab2的某些信息。相对于单纯的并行计算来说,后者将交互式通讯扩展到了labs之间,而不仅仅是lab和client之间。 Matlab 并行计算工具箱中的函数有: 1.Parfor (FOR循环的并行计算); 函数1:matlabpool 其作用是开启matlab并行计算池,单独的命令会以默认的配置开启并行计算环境。 函数2:parfor For循环的并行计算替代关键词,需要注意的是,parfor不能像for一样嵌套。 但是外部的parfor内部可以嵌套for循环。 函数3:batch 用于在worker上运行matlab脚本或者是matlab函数。 例如:batch(‘script.m’) 语句会根据默认并行配置文件定义的集群将script脚本文件运行在worker上。 2.批处理 函数1:batch,其语法有: j = batch('aScript') j = batch(myCluster,'aScript') j = batch(fcn,N,{x1, ..., xn}) j = batch(myCluster,fcn,N,{x1,...,xn}) j = batch(...,'p1',v1,'p2',v2,...) 其中的变量: J The batch job object. 'aScript'The script of MATLAB code to be evaluated by the MATLAB pool job. myClusterCluster object representing cluster compute resources. fcnFunction handle or string of function name to be evaluated by the MATLAB pool job.

Matlab8个例子

1、囧 function happynewyear axis off; set(gcf,'menubar','none','toolbar','none'); for k=1:20 h=text(rand,rand,... ['\fontsize{',num2str(unifrnd(20,50)),'}\fontname {隶书} 新年快乐'],... 'color',rand(1,3),'Rotation',360 * rand); pause(0.5) End 2、小猫进洞 function t=cat_in_holl(n) t=zeros(1,n); for k=1:n c=unifdnd(3,1); while c~=1 if c==2 t(k)=t(k)+4; else t(k)=t(k)+6; end c=unifdnd(3,1); end t(k)=t(k)+2; End

3、 Slow function example2_3_6s tic;A=unidrnd(100,10,7); B=zeros(10,3); for m=1:10 a=A(m,:); b=[4,6,8]; for ii=1:3 dd=a(a==b(ii)); if isempty(dd)==0 b(ii)=0; end end B(m,:)=b; toc end A,B Fast function example2_3_6fast2 clear A = unidrnd(100,1000000,7); B = repmat([4,6,8],1000000,1); tic;C = [any(AA == 4,2) any(AA == 6,2) any(AA == 8,2)]; B(C) = 0; Toc 4、随机行走法 function [mx,minf]=randwalk(f,x,lamda,epsilon,N) %随机行走法求函数的极小值。输入f为所求函数的句柄, %x为初始值。lamda为步长。epsilon为控制lamda的减小的阈值,即lamda 减小到epsilon时 %迭代停止。

支持向量机matlab实例及理论_20131201

支持向量机matlab分类实例及理论 线性支持向量机可对线性可分的样本群进行分类,此时不需要借助于核函数就可较为理想地解决问题。非线性支持向量机将低维的非线性分类问题转化为高维的线性分类问题,然后采用线性支持向量机的求解方法求解。此时需要借助于核函数,避免线性分类问题转化为非线性分类问题时出现的维数爆炸难题,从而避免由于维数太多而无法进行求解。 第O层:Matlab的SVM函数求解分类问题实例 0.1 Linear classification %Two Dimension Linear-SVM Problem, Two Class and Separable Situation %Method from Christopher J. C. Burges: %"A Tutorial on Support Vector Machines for Pattern Recognition", page 9 %Optimizing ||W|| directly: % Objective: min "f(A)=||W||" , p8/line26 % Subject to: yi*(xi*W+b)-1>=0, function (12); clear all; close all clc; sp=[3,7; 6,6; 4,6;5,6.5] % positive sample points nsp=size(sp); sn=[1,2; 3,5;7,3;3,4;6,2.7] % negative sample points nsn=size(sn) sd=[sp;sn] lsd=[true true true true false false false false false] Y = nominal(lsd) figure(1); subplot(1,2,1) plot(sp(1:nsp,1),sp(1:nsp,2),'m+'); hold on plot(sn(1:nsn,1),sn(1:nsn,2),'c*'); subplot(1,2,2) svmStruct = svmtrain(sd,Y,'showplot',true);

Matlab如何添加新的工具箱经验总结

Matlab如何添加新的工具箱-经验总结 最近在学习遗传算法与免疫算法,所以涉及到matlab的工具箱的应用,尤其gads 工具箱,所以在网上下载了一些工具箱,但是不会用,在网上找了点资料,留着以后也可以用。 1,我是单独下载的工具箱,把新的工具箱拷贝到某个目录(我的是C:\Program Files\MATLAB\R2010\toolbox)。 注意:你要是添加的很多个m文件,那就把这些m文件直接拷到再下一层你想要的工具箱的文件夹里 例如,我要添加的是遗传工具箱,在刚才的文件夹下我已经有gads(遗传工具箱)文件夹了,但有的m文件还没有,我就把新的m文件统统拷到C:\Program Files\MATLAB\R2010\toolbox\gads目录下了 如果你连某工具箱(你打算添加的)的文件夹都没有,那就把文件夹和文件一起拷到C:\Program Files\MATLAB\R2010\toolbox下。 先把工具箱保存到MATLAB安装目录的根目录下面,然后运行 matlab---->file---->set path---->add folder 然后把你的工具箱文件夹添加进去就可以了 2 在matlab的菜单file下面的set path把它(C:\Program Files\MATLAB\R2010\toolbox\gads)加上。 3 把路径加进去后在file→Preferences→General的Toolbox Path Caching 里点击update Toolbox Path Cache更新一下。 记得一定要更新!我就是没更新,所以添加了路径,一运行还是不行。 后来更新了才行。 4 用which newtoolbox_command.m来检验是否可以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。 这个我也不知道怎么用。怎么检验?在命令窗口输入which newtoolbox_command.m?还是打开which newtoolbox_command.m文件(我搜索了,没找到这个文件啊)我一直没搞懂。 我的matlab小经验 我前几天刚刚接触matlab 由于要用MATLAB遗传算法工具箱编程,我直接在安装好的matlab命令栏输入程序结果提示找不到函数后来我才了解到MATLAB自带的工具箱是GADS,在此环境下运行程序会出现函数未定义等问题,

相关文档
相关文档 最新文档