matlab30个案例分析案例12-SVM神经网络的数据分类预测
Matlab神经网络30个案例第1案例代码
Matlab神经网络30个案例第1案例代码%% 清空环境变量clcclear%% 训练数据预测数据提取及归一化%下载四类语音信号load data1 c1load data2 c2load data3 c3load data4 c4%四个特征信号矩阵合成一个矩阵data(1:500,:)=c1(1:500,:);data(501:1000,:)=c2(1:500,:);data(1001:1500,:)=c3(1:500,:);data(1501:2000,:)=c4(1:500,:);%从1到2000间随机排序k=rand(1,2000);[m,n]=sort(k);%输入输出数据input=data(:,2:25);output1 =data(:,1);%把输出从1维变成4维for i=1:2000switch output1(i)case 1output(i,:)=[1 0 0 0];case 2output(i,:)=[0 1 0 0];case 3output(i,:)=[0 0 1 0];case 4output(i,:)=[0 0 0 1];endend%随机提取1500个样本为训练样本,500个样本为预测样本input_train=input(n(1:1500),:)';output_train=output(n(1:1500),:)';input_test=input(n(1501:2000),:)';output_test=output(n(1501:2000),:)';%输入数据归一化[inputn,inputps]=mapminmax(input_train);%% 网络结构初始化innum=24;midnum=25;outnum=4;%权值初始化w1=rands(midnum,innum);b1=rands(midnum,1);w2=rands(midnum,outnum);b2=rands(outnum,1);w2_1=w2;w2_2=w2_1;w1_1=w1;w1_2=w1_1;b1_1=b1;b1_2=b1_1;b2_1=b2;b2_2=b2_1;%学习率xite=0.1alfa=0.01;%% 网络训练for ii=1:10E(ii)=0;for i=1:1:1500%% 网络预测输出x=inputn(:,i);% 隐含层输出for j=1:1:midnumI(j)=inputn(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));end% 输出层输出yn=w2'*Iout'+b2;%% 权值阀值修正%计算误差e=output_train(:,i)-yn;E(ii)=E(ii)+sum(abs(e));%计算权值变化率dw2=e*Iout;db2=e';for j=1:1:midnumS=1/(1+exp(-I(j)));FI(j)=S*(1-S);endfor k=1:1:innumfor j=1:1:midnumdw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+ e(4)*w2(j,4));db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w 2(j,4));endendw1=w1_1+xite*dw1';b1=b1_1+xite*db1';w2=w2_1+xite*dw2';b2=b2_1+xite*db2';w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;b1_2=b1_1;b1_1=b1;b2_2=b2_1;b2_1=b2;endend%% 语音特征信号分类inputn_test=mapminmax('apply',input_test,inputps); for ii=1:1for i=1:500%1500%隐含层输出for j=1:1:midnumI(j)=inputn_test(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));endfore(:,i)=w2'*Iout'+b2;endend%% 结果分析%根据网络输出找出数据属于哪类for i=1:500output_fore(i)=find(fore(:,i)==max(fore(:,i))); end%BP网络预测误差error=output_fore-output1(n(1501:2000))';%画出预测语音种类和实际语音种类的分类图figure(1) plot(output_fore,'r')hold onplot(output1(n(1501:2000))','b') legend('预测语音类别','实际语音类别') %画出误差图figure(2)plot(error)title('BP网络分类误差','fontsize',12) xlabel('语音信号','fontsize',12) ylabel('分类误差','fontsize',12)%print -dtiff -r600 1-4k=zeros(1,4);%找出判断错误的分类属于哪一类for i=1:500if error(i)~=0[b,c]=max(output_test(:,i));switch ccase 1k(1)=k(1)+1;。
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 极限学习机的回归拟合及分类——对比实验研究(郁磊)智能算法是我们在学习中经常遇到的算法,主要包括遗传算法,免疫算法,粒子群算法,神经网络等,智能算法对于很多人来说,既爱又恨,爱是因为熟练的掌握几种智能算法,能够很方便的解决我们的论坛问题,恨是因为智能算法感觉比较“玄乎”,很难理解,更难用它来解决问题。
matlab30个案例分析案例14-SVM神经网络的回归预测分析
%% SVM神经网络的回归预测分析---上证指数开盘指数预测%%% 清空环境变量function chapter14tic;close all;clear;clc;format compact;%% 数据的提取和预处理% 载入测试数据上证指数(1990.12.19-2009.08.19)% 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数% 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额.load chapter14_sh.mat;% 提取数据[m,n] = size(sh);ts = sh(2:m,1);tsx = sh(1:m-1,:);% 画出原始上证指数的每日开盘数figure;plot(ts,'LineWidth',2);title('上证指数的每日开盘数(1990.12.20-2009.08.19)','FontSize',12);xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);ylabel('开盘数','FontSize',12);grid on;% 数据预处理,将原始数据进行归一化ts = ts';tsx = tsx';% mapminmax为matlab自带的映射函数% 对ts进行归一化[TS,TSps] = mapminmax(ts,1,2);% 画出原始上证指数的每日开盘数归一化后的图像figure;plot(TS,'LineWidth',2);title('原始上证指数的每日开盘数归一化后的图像','FontSize',12);xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);ylabel('归一化后的开盘数','FontSize',12);grid on;% 对TS进行转置,以符合libsvm工具箱的数据格式要求TS = TS';% mapminmax为matlab自带的映射函数% 对tsx进行归一化[TSX,TSXps] = mapminmax(tsx,1,2);% 对TSX进行转置,以符合libsvm工具箱的数据格式要求TSX = TSX';%% 选择回归预测分析最佳的SVM参数c&g% 首先进行粗略选择:[bestmse,bestc,bestg] = SVMcgForRegress(TS,TSX,-8,8,-8,8);% 打印粗略选择结果disp('打印粗略选择结果');str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg); disp(str);% 根据粗略选择的结果图再进行精细选择:[bestmse,bestc,bestg] = SVMcgForRegress(TS,TSX,-4,4,-4,4,3,0.5,0.5,0.05);% 打印精细选择结果disp('打印精细选择结果');str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg); disp(str);%% 利用回归预测分析最佳的参数进行SVM网络训练cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.01'];model = svmtrain(TS,TSX,cmd);%% SVM网络回归预测[predict,mse] = svmpredict(TS,TSX,model);predict = mapminmax('reverse',predict',TSps);predict = predict';% 打印回归结果str = sprintf( '均方误差MSE = %g 相关系数R = %g%%',mse(2),mse(3)*100);disp(str);%% 结果分析figure;hold on;plot(ts,'-o');plot(predict,'r-^');legend('原始数据','回归预测数据');hold off;title('原始数据和回归预测数据对比','FontSize',12);xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);ylabel('开盘数','FontSize',12);grid on;figure;error = predict - ts';plot(error,'rd');title('误差图(predicted data - original data)','FontSize',12);xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);ylabel('误差量','FontSize',12);grid on;figure;error = (predict - ts')./ts';plot(error,'rd');title('相对误差图(predicted data - original data)/original data','FontSize',12);xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);ylabel('相对误差量','FontSize',12);grid on;snapnow;toc;%% 子函数SVMcgForRegress.mfunction [mse,bestc,bestg] = SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)%SVMcg cross validation by faruto%% by faruto%Email:patrick.lee@ QQ:516667408 /faruto BNU%last modified 2010.01.17%Super Moderator @ % 若转载请注明:% faruto and liyang , LIBSVM-farutoUltimateVersion% a toolbox with implements for support vector machines based on libsvm, 2009.% Software available at %% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for% support vector machines, 2001. Software available at% .tw/~cjlin/libsvm% about the parameters of SVMcgif nargin < 10msestep = 0.06;endif nargin < 8cstep = 0.8;gstep = 0.8;endif nargin < 7v = 5;endif nargin < 5gmax = 8;gmin = -8;endif nargin < 3cmax = 8;cmin = -8;end% X:c Y:g cg:acc[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);[m,n] = size(X);cg = zeros(m,n);eps = 10^(-4);bestc = 0;bestg = 0;mse = Inf;basenum = 2;for i = 1:mfor j = 1:ncmd = ['-v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) ),' -s 3 -p 0.1'];cg(i,j) = svmtrain(train_label, train, cmd);if cg(i,j) < msemse = cg(i,j);bestc = basenum^X(i,j);bestg = basenum^Y(i,j);endif abs( cg(i,j)-mse )<=eps && bestc > basenum^X(i,j)mse = cg(i,j);bestc = basenum^X(i,j);bestg = basenum^Y(i,j);endendend% to draw the acc with different c & g[cg,ps] = mapminmax(cg,0,1);figure;[C,h] = contour(X,Y,cg,0:msestep:0.5);clabel(C,h,'FontSize',10,'Color','r');xlabel('log2c','FontSize',12);ylabel('log2g','FontSize',12);firstline = 'SVR参数选择结果图(等高线图)[GridSearchMethod]'; secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...' CVmse=',num2str(mse)];title({firstline;secondline},'Fontsize',12);grid on;figure;meshc(X,Y,cg);% mesh(X,Y,cg);% surf(X,Y,cg);axis([cmin,cmax,gmin,gmax,0,1]);xlabel('log2c','FontSize',12);ylabel('log2g','FontSize',12);zlabel('MSE','FontSize',12);firstline = 'SVR参数选择结果图(3D视图)[GridSearchMethod]'; secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...' CVmse=',num2str(mse)];title({firstline;secondline},'Fontsize',12);。
SVM神经网络的数据分类预测-意大利葡萄酒种类识别
案例背景:
SVM神经网络背景:
SVM的相关理论及工具箱的介绍
......
案例背景:
在葡萄酒制造业中,对于葡萄酒的分类具有很大意义,因为这涉及到不同种类的葡萄酒的存放以及出售价格,采用SVM做为分类器可以有效预测相关葡萄酒的种类,从UCI数据库中得到wine数据记录的是在意大利某一地区同一区域上三种不同品种的葡萄酒的化学成分分析,数据里含有178个样本分别属于三个类别(类别标签已给),每个样本含有13个特征分量(化学成分),将这178个样本50%做为训练样本,另50%做为测试样本,用训练样本对SVM分类器进行训练,用得到的模型对测试样本的进行分类标签预测,最终得到96.6292%的分类准确率. .....
测试数据的可视化图:
模型建立:
Matlab程序实现(预定此书,即可下载该案例完整程序):
该处有完整的Matlab程序代码,以及代码的详细说明•清空环境变量
•数据的提取和预处理
•SVM网络训练
•SVM网络分类预测
•结果分析
结果分析:
该处有详细的运行结果。
svm分类 案例
svm分类案例
支持向量机(SVM)是一种强大的分类工具,在许多领域都有广泛的应用。
以下是一个使用SVM进行分类的案例:
案例背景:
假设我们正在处理一个二分类问题,其中有两个类别分别为正面和负面。
我们有一组数据,其中每个数据点都有一些特征,例如年龄、收入、教育程度等。
我们的目标是使用这些特征来预测每个数据点属于哪个类别。
案例步骤:
1. 数据预处理:首先,我们需要对数据进行预处理,包括缺失值填充、异常值处理、特征缩放等。
在这个案例中,我们假设数据已经进行了适当的预处理。
2. 特征选择:接下来,我们需要选择合适的特征来训练SVM分类器。
在这个案例中,我们选择年龄、收入和教育程度作为特征。
3. 训练SVM分类器:使用选择的特征和训练数据集,我们可以训练一个SVM分类器。
在训练过程中,SVM会找到一个超平面,使得两个类别的数据点尽可能分开。
4. 测试SVM分类器:使用测试数据集,我们可以评估SVM分类器的性能。
常见的评估指标包括准确率、精确率、召回率和F1分数等。
5. 优化SVM分类器:如果测试结果不理想,我们可以尝试调整SVM的参
数或使用其他优化方法来提高分类器的性能。
案例总结:
通过这个案例,我们可以看到SVM是一种强大的分类工具,可以用于处理
各种分类问题。
在实际应用中,我们需要注意数据预处理、特征选择和参数调整等方面,以确保分类器的性能和准确性。
MATLAB智能算法30个案例分析
MATLAB 智能算法30个案例分析第 1章1、案例背景遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。
遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。
在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。
基因组成的串就是染色体,或者叫基因型个体( Individuals)。
一定数量的个体组成了群体(Population)。
群体中个体的数目称为群体大小(Population Size),也叫群体规模。
而各个个体对环境的适应程度叫做适应度( Fitness)。
2、案例目录:1.1理论基础1.1.1遗传算法概述1.编码2.初始群体的生成3.适应度评估4.选择5.交叉6.变异1.1.2设菲尔德遗传算法工具箱1.工具箱简介2.工具箱添加1.2案例背景1.2.1问题描述1.简单一元函数优化2.多元函数优化1.2.2解决思路及步骤1.3 MATLAB程序实现1.3.1工具箱结构1.3.2遗传算法中常用函数1.创建种群函数—crtbp2.适应度计算函数—ranking3.选择函数—select4.交叉算子函数—recombin5.变异算子函数—mut6.选择函数—reins7.实用函数—bs2rv8.实用函数—rep1.3.3遗传算法工具箱应用举例1.简单一元函数优化2.多元函数优化1.4延伸阅读1.5参考文献3、主程序:1.简单一元函数优化:clcclear allclose all%%画出函数图figure(1);hold on;lb=1;ub=2; %函数自变量范围【1,2】ezplot('sin(10*pi*X)/X',[lb,ub]); %画出函数曲线xlabel('自变量/X')ylabel('函数值/Y')%%定义遗传算法参数NIND=40; %个体数目MAXGEN=20; %最大遗传代数PRECI=20; %变量的二进制位数GGAP=0.95; %代沟px=0.7; %交叉概率pm=0.01; %变异概率trace=zeros(2,MAXGEN); %寻优结果的初始值FieldD=[PRECI;lb;ub;1;0;1;1]; %区域描述器Chrom=crtbp(NIND,PRECI); %初始种群%%优化gen=0; %代计数器X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换ObjV=sin(10*pi*X)./X; %计算目标函数值while gen<MAXGENFitnV=ranking(ObjV); %分配适应度值SelCh=select('sus',Chrom,FitnV,GGAP); %选择SelCh=recombin('xovsp',SelCh,px); %重组SelCh=mut(SelCh,pm); %变异X=bs2rv(SelCh,FieldD); %子代个体的十进制转换ObjVSel=sin(10*pi*X)./X; %计算子代的目标函数值[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群X=bs2rv(Chrom,FieldD);gen=gen+1; %代计数器增加%获取每代的最优解及其序号,Y为最优解,I为个体的序号[Y,I]=min(ObjV);trace(1,gen)=X(I); %记下每代的最优值trace(2,gen)=Y; %记下每代的最优值endplot(trace(1,:),trace(2,:),'bo'); %画出每代的最优点grid on;plot(X,ObjV,'b*'); %画出最后一代的种群hold off%%画进化图figure(2);plot(1:MAXGEN,trace(2,:));grid onxlabel('遗传代数')ylabel('解的变化')title('进化过程')bestY=trace(2,end);bestX=trace(1,end);fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])2.多元函数优化clcclear allclose all%%画出函数图figure(1);lbx=-2;ubx=2; %函数自变量 x范围【-2,2】lby=-2;uby=2; %函数自变量 y范围【-2,2】ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',[lbx,ubx,lby,uby],50); %画出函数曲线hold on;%%定义遗传算法参数NIND=40; %个体数目MAXGEN=50; %最大遗传代数PRECI=20; %变量的二进制位数GGAP=0.95; %代沟px=0.7; %交叉概率pm=0.01; %变异概率trace=zeros(3,MAXGEN); %寻优结果的初始值FieldD=[PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1]; %区域描述器Chrom=crtbp(NIND,PRECI*2); %初始种群%%优化gen=0; %代计数器XY=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换X=XY(:,1);Y=XY(:,2);ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %计算目标函数值while gen<MAXGENFitnV=ranking(-ObjV); %分配适应度值SelCh=select('sus',Chrom,FitnV,GGAP); %选择SelCh=recombin('xovsp',SelCh,px); %重组SelCh=mut(SelCh,pm); %变异XY=bs2rv(SelCh,FieldD); %子代个体的十进制转换X=XY(:,1);Y=XY(:,2);ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %计算子代的目标函数值[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群XY=bs2rv(Chrom,FieldD);gen=gen+1; %代计数器增加%获取每代的最优解及其序号,Y为最优解,I为个体的序号[Y,I]=max(ObjV);trace(1:2,gen)=XY(I,:); %记下每代的最优值trace(3,gen)=Y; %记下每代的最优值endplot3(trace(1,:),trace(2,:),trace(3,:),'bo'); %画出每代的最优点grid on;plot3(XY(:,1),XY(:,2),ObjV,'bo'); %画出最后一代的种群hold off%%画进化图figure(2);plot(1:MAXGEN,trace(3,:));grid onxlabel('遗传代数')ylabel('解的变化')title('进化过程')bestZ=trace(3,end);bestX=trace(1,end);bestY=trace(2,end);fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\nZ=',num2str(bestZ), '\n'])第 2章基于遗传算法和非线性规划的函数寻优算法1.1案例背景1.1.1非线性规划方法非线性规划是 20世纪 50年代才开始形成的一门新兴学科。
matlab智能算法30个案例分析
matlab智能算法30个案例分析Matlab智能算法30个案例分析。
Matlab作为一种强大的数学软件,拥有丰富的算法库和强大的编程能力,能够实现各种复杂的智能算法。
本文将针对Matlab智能算法进行30个案例分析,帮助读者深入了解Matlab在智能算法领域的应用和实践。
1. 遗传算法。
遗传算法是一种模拟自然选择和遗传机制的优化算法,能够有效解决复杂的优化问题。
在Matlab中,可以利用遗传算法工具箱快速实现各种优化问题的求解,例如函数最小化、参数优化等。
2. 神经网络。
神经网络是一种模拟人脑神经元网络的计算模型,能够实现复杂的非线性映射和模式识别。
Matlab提供了丰富的神经网络工具箱,可以用于神经网络的建模、训练和应用,例如分类、回归、聚类等任务。
3. 模糊逻辑。
模糊逻辑是一种处理不确定性和模糊信息的逻辑推理方法,能够有效处理模糊规则和模糊数据。
Matlab中的模糊逻辑工具箱提供了丰富的模糊推理方法和工具,可以用于模糊控制、模糊识别等领域。
4. 粒子群算法。
粒子群算法是一种模拟鸟群觅食行为的优化算法,能够有效处理多维优化问题。
在Matlab中,可以利用粒子群算法工具箱快速实现各种优化问题的求解,例如函数最小化、参数优化等。
5. 蚁群算法。
蚁群算法是一种模拟蚂蚁觅食行为的优化算法,能够有效处理离散优化问题和组合优化问题。
Matlab中的蚁群算法工具箱提供了丰富的蚁群优化方法和工具,可以用于解决各种组合优化问题。
6. 遗传规划算法。
遗传规划算法是一种结合遗传算法和规划算法的优化方法,能够有效处理复杂的规划问题。
在Matlab中,可以利用遗传规划算法工具箱快速实现各种规划问题的求解,例如路径规划、资源分配等。
7. 人工免疫算法。
人工免疫算法是一种模拟免疫系统的优化算法,能够有效处理多峰优化问题和动态优化问题。
在Matlab中,可以利用人工免疫算法工具箱快速实现各种复杂的优化问题的求解。
8. 蜂群算法。
matlab30个案例分析案例13-SVM神经网络中的参数优化
%% SVM神经网络中的参数优化---如何更好的提升分类器的性能%% 清空环境变量function chapter13_GAclose all;clear;clc;format compact;%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load chapter13_wine.mat;% 画出测试数据的box可视化图figure;boxplot(wine,'orientation','horizontal','labels',categories);title('wine数据的box可视化图','FontSize',12);xlabel('属性值','FontSize',12);grid on;% 画出测试数据的分维可视化图figuresubplot(3,5,1);hold onfor run = 1:178plot(run,wine_labels(run),'*');endxlabel('样本','FontSize',10);ylabel('类别标签','FontSize',10);title('class','FontSize',10);for run = 2:14subplot(3,5,run);hold on;str = ['attrib ',num2str(run-1)];for i = 1:178plot(i,wine(i,run-1),'*');endxlabel('样本','FontSize',10);ylabel('属性值','FontSize',10);title(str,'FontSize',10);end% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 选择GA最佳的SVM参数c&g% GA的参数选项初始化ga_option.maxgen = 200;ga_option.sizepop = 20;ga_option.cbound = [0,100];ga_option.gbound = [0,100];ga_option.v = 5;ga_option.ggap = 0.9;[bestacc,bestc,bestg] = gaSVMcgForClass(train_wine_labels,train_wine,ga_option);% 打印选择结果disp('打印选择结果');str = sprintf( 'Best Cross Validation Accuracy = %g%% Best c = %g Best g = %g',bestacc,bestc,bestg);disp(str);%% 利用最佳的参数进行SVM网络训练cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = svmtrain(train_wine_labels,train_wine,cmd);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d/%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图figure;hold on;plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);grid on;snapnow;%% 子函数gaSVMcgForClass.mfunction [BestCVaccuracy,Bestc,Bestg,ga_option] = gaSVMcgForClass(train_label,train_data,ga_option)% gaSVMcgForClass%% by faruto%Email:patrick.lee@ QQ:516667408 /faruto BNU%last modified 2010.01.17%Super Moderator @ % 若转载请注明:% faruto and liyang , LIBSVM-farutoUltimateVersion% a toolbox with implements for support vector machines based on libsvm, 2009.% Software available at %% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for% support vector machines, 2001. Software available at% .tw/~cjlin/libsvm% 参数初始化if nargin == 2ga_option = struct('maxgen',200,'sizepop',20,'ggap',0.9,...'cbound',[0,100],'gbound',[0,1000],'v',5);end% maxgen:最大的进化代数,默认为200,一般取值范围为[100,500]% sizepop:种群最大数量,默认为20,一般取值范围为[20,100]% cbound = [cmin,cmax],参数c的变化范围,默认为(0,100]% gbound = [gmin,gmax],参数g的变化范围,默认为[0,1000]% v:SVM Cross Validation参数,默认为5%MAXGEN = ga_option.maxgen;NIND = ga_option.sizepop;NVAR = 2;PRECI = 20;GGAP = ga_option.ggap;trace = zeros(MAXGEN,2);FieldID = ...[rep([PRECI],[1,NVAR]);[ga_option.cbound(1),ga_option.gbound(1);ga_option.cbound(2),ga_opti on.gbound(2)]; ...[1,1;0,0;0,1;1,1]];Chrom = crtbp(NIND,NVAR*PRECI);gen = 1;v = ga_option.v;BestCVaccuracy = 0;Bestc = 0;Bestg = 0;%cg = bs2rv(Chrom,FieldID);for nind = 1:NINDcmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))];ObjV(nind,1) = svmtrain(train_label,train_data,cmd);end[BestCVaccuracy,I] = max(ObjV);Bestc = cg(I,1);Bestg = cg(I,2);for gen = 1:MAXGENFitnV = ranking(-ObjV);SelCh = select('sus',Chrom,FitnV,GGAP);SelCh = recombin('xovsp',SelCh,0.7);SelCh = mut(SelCh);cg = bs2rv(SelCh,FieldID);for nind = 1:size(SelCh,1)cmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))];ObjVSel(nind,1) = svmtrain(train_label,train_data,cmd);end[Chrom,ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjVSel);if max(ObjV) <= 50continue;end[NewBestCVaccuracy,I] = max(ObjV);cg_temp = bs2rv(Chrom,FieldID);temp_NewBestCVaccuracy = NewBestCVaccuracy;if NewBestCVaccuracy > BestCVaccuracyBestCVaccuracy = NewBestCVaccuracy;Bestc = cg_temp(I,1);Bestg = cg_temp(I,2);endif abs( NewBestCVaccuracy-BestCVaccuracy ) <= 10^(-2) && ...cg_temp(I,1) < BestcBestCVaccuracy = NewBestCVaccuracy;Bestc = cg_temp(I,1);Bestg = cg_temp(I,2);endtrace(gen,1) = max(ObjV);trace(gen,2) = sum(ObjV)/length(ObjV);end%figure;hold on;trace = round(trace*10000)/10000;plot(trace(1:gen,1),'r*-','LineWidth',1.5);plot(trace(1:gen,2),'o-','LineWidth',1.5);legend('最佳适应度','平均适应度',3);xlabel('进化代数','FontSize',12);ylabel('适应度','FontSize',12);axis([0 gen 0 100]);grid on;axis auto;line1 = '适应度曲线Accuracy[GAmethod]';line2 = ['(终止代数=', ...num2str(gen),',种群数量pop=', ...num2str(NIND),')'];line3 = ['Best c=',num2str(Bestc),' g=',num2str(Bestg), ...' CVAccuracy=',num2str(BestCVaccuracy),'%'];title({line1;line2;line3},'FontSize',12);。
在Matlab中使用神经网络进行预测和分类
在Matlab中使用神经网络进行预测和分类近年来,随着人工智能和机器学习的发展,神经网络成为一种重要的预测和分类工具。
Matlab作为一个强大的科学计算软件,提供了许多丰富的神经网络工具箱,使得使用神经网络进行预测和分类变得更加方便和高效。
本文将介绍在Matlab中使用神经网络进行预测和分类的相关技术和应用。
1. 神经网络基础神经网络是一种模拟人脑结构和处理模式的计算模型,它由大量的相互连接的神经元单元组成。
神经网络的核心是人工神经元,它模拟了生物神经元的基本功能。
在Matlab中,通过建立神经网络对象,可以灵活地定义网络的结构和参数。
2. 数据预处理在使用神经网络进行预测和分类之前,需要对数据进行预处理。
预处理的目的是将原始数据转化为适合神经网络处理的格式。
常见的预处理步骤包括数据清洗、特征提取和数据归一化等。
在Matlab中,可以使用数据处理工具箱提供的函数来完成这些任务。
3. 网络设计和训练神经网络的设计和训练是使用神经网络进行预测和分类的关键步骤。
在设计网络时,需要确定网络的结构和参数,包括网络层数、神经元数量、激活函数等。
在训练网络时,需要准备好训练集和验证集,通过迭代优化网络参数,使得网络能够准确地学习和预测。
在Matlab中,可以使用神经网络工具箱提供的函数来设计和训练神经网络。
4. 预测和分类应用使用Matlab中的神经网络工具箱,可以进行各种预测和分类应用。
例如,可以使用神经网络对股票市场进行预测,对销售数据进行分类,对疾病进行诊断等。
神经网络具有较强的非线性拟合能力,能够处理高维度和复杂的数据,因此在很多实际问题中得到了广泛应用。
5. 神经网络优化与改进神经网络的优化和改进是提高预测和分类性能的关键。
在Matlab中,可以使用许多优化算法和改进技术来提高神经网络的训练速度和预测精度。
例如,可以使用遗传算法、粒子群算法等进行参数优化,还可以使用正则化、dropout等技术来防止过拟合。
MATLAB_智能算法30个案例分析
MATLAB_智能算法30个案例分析1.线性回归:使用MATLAB的回归工具箱,对给定的数据集进行线性回归分析,获取拟合的直线方程。
2.逻辑回归:使用MATLAB的分类工具箱,对给定的数据集进行逻辑回归分析,建立分类模型。
3.K均值聚类:使用MATLAB的聚类工具箱,对给定的数据集进行K 均值聚类算法,将数据集分为多个簇。
4.支持向量机:使用MATLAB的SVM工具箱,对给定的数据集进行支持向量机算法,建立分类或回归模型。
5.决策树:使用MATLAB的分类工具箱,对给定的数据集进行决策树分析,建立决策模型。
6.随机森林:使用MATLAB的分类和回归工具箱,对给定的数据集进行随机森林算法,集成多个决策树模型。
7. AdaBoost:使用MATLAB的分类工具箱,对给定的数据集进行AdaBoost算法,提升分类性能。
8.遗传算法:使用MATLAB的全局优化工具箱,利用遗传算法进行优化问题的求解。
9.粒子群优化:使用MATLAB的全局优化工具箱,利用粒子群优化算法进行优化问题的求解。
10.模拟退火算法:使用MATLAB的全局优化工具箱,利用模拟退火算法进行优化问题的求解。
11.神经网络:使用MATLAB的神经网络工具箱,构建和训练多层感知机模型。
12.卷积神经网络:使用MATLAB的深度学习工具箱,构建和训练卷积神经网络模型。
13.循环神经网络:使用MATLAB的深度学习工具箱,构建和训练循环神经网络模型。
14.长短期记忆网络:使用MATLAB的深度学习工具箱,构建和训练长短期记忆网络模型。
15.GAN(生成对抗网络):使用MATLAB的深度学习工具箱,构建和训练生成对抗网络模型。
16.自编码器:使用MATLAB的深度学习工具箱,构建和训练自编码器模型。
17.强化学习:使用MATLAB的强化学习工具箱,构建和训练强化学习模型。
18.关联规则挖掘:使用MATLAB的数据挖掘工具箱,发现数据中的关联规则。
MATLAB_智能算法30个案例分析
MATLAB_智能算法30个案例分析MATLAB是一种强大的数值计算和编程工具,教育和科研领域中广泛应用于数据分析、机器学习和智能算法的研究。
在本文中,我们将介绍30个MATLAB智能算法的案例分析,并探讨其用途和优势。
分析的案例包括分类、回归、聚类、神经网络和遗传算法等不同类型的智能算法。
1. K均值聚类:利用MATLAB中的kmeans函数对一组数据进行聚类分析,得到不同的簇。
2. 随机森林:利用MATLAB中的TreeBagger函数构建一个随机森林分类器,并通过测试数据进行分类预测。
3. 人工神经网络:使用MATLAB中的feedforwardnet函数构建一个人工神经网络,并通过训练集进行预测。
4. 遗传算法:利用MATLAB中的ga函数对一个优化问题进行求解,找到最优解。
5. 支持向量机:使用MATLAB中的svmtrain和svmclassify函数构建一个支持向量机分类器,并进行分类预测。
6. 极限学习机:使用MATLAB中的elmtrain和elmpredict函数构建一个极限学习机分类器,并进行分类预测。
7. 逻辑回归:使用MATLAB中的mnrfit和mnrval函数构建一个逻辑回归模型,并进行预测。
8. 隐马尔可夫模型:使用MATLAB中的hmmtrain和hmmdecode函数构建一个隐马尔可夫模型,对一系列观测数据进行预测。
9. 神经进化算法:利用MATLAB中的ne_train函数构建一个基于神经进化算法的神经网络分类器,并进行分类预测。
10. 朴素贝叶斯分类器:使用MATLAB中的NaiveBayes对象构建一个朴素贝叶斯分类器,并进行分类预测。
11. 高斯过程回归:使用MATLAB中的fitrgp函数构建一个高斯过程回归模型,并进行回归预测。
12. 最小二乘支持向量机:使用MATLAB中的fitcsvm函数构建一个最小二乘支持向量机分类器,并进行分类预测。
13. 遗传网络:利用MATLAB中的ngenetic函数构建一个基于遗传算法和人工神经网络的分类器,并进行分类预测。
MATLAB智能算法30个案例分析
MATLAB智能算法30个案例分析1.线性回归:通过拟合数据,预测未知的连续变量。
2.逻辑回归:基于已知输入和输出数据,通过对数斯蒂格回归模型,进行二元分类。
3.决策树:通过对已知数据进行分类预测,构建一棵决策树模型。
4.随机森林:通过构建多个决策树模型,进行分类和回归分析。
5.支持向量机:通过找到一个最优超平面,对数据进行二元分类。
6.高斯混合模型:基于多个高斯分布,对数据进行聚类分析。
7.K均值聚类:通过对数据进行分组,找到数据的簇结构。
8.主成分分析:找到最具有代表性的主成分,实现数据的降维和可视化。
9.独立成分分析:在多变量数据中,找到相互独立的成分。
10.关联规则挖掘:通过分析大规模数据集,找到数据项之间的关联规则。
11.朴素贝叶斯分类器:基于贝叶斯理论,进行分类和预测。
12.遗传算法:通过模拟进化过程,找到最优解。
13.粒子群算法:通过模拟粒子在空间中的移动,优化问题的解。
14.蚁群算法:通过模拟蚂蚁在空间中的行为,解决优化问题。
15.神经网络:通过多层神经元之间的连接,进行模式识别和预测。
16.卷积神经网络:通过卷积层和池化层,进行图像分类和目标检测。
17.循环神经网络:通过循环连接,进行时间序列预测和自然语言处理。
18.支持张量分解的非负矩阵分解:通过分解张量,进行数据降维和特征提取。
19.马尔科夫链:通过状态转移概率,对随机过程进行建模和分析。
20.K最近邻算法:通过找到与未知样本最接近的训练样本,进行分类和回归分析。
21.高斯过程回归:利用高斯过程进行回归分析和置信区间估计。
22.隐马尔科夫模型:通过观测序列推断隐藏状态序列。
23.时序聚类:通过对时间序列数据进行聚类分析,找到相似的模式。
24.大规模机器学习:通过将数据划分为小批量,进行机器学习模型的训练。
25.非线性最小二乘:通过最小化非线性函数的残差平方和,拟合数据。
26.分类集成学习:通过结合多个分类器的预测结果,提高分类准确率。
MATLAB 神经网络初始SVM分类与回归
-1.1087
Record Time
toc; Elapsed time is 0.751164 seconds.
[ptesty,tmse] = svmpredict(testy,testx,model);
display( '预测数据' ); r = 9.52768e-05 (regression) Squared correlation coefficient = 0.999184 (regression) 真实数据 testy =
% % 下面再使用 libsvm 工具箱本身带的测试数据 heart_scale 来进行一下测试% 首先载入数据 load heart_scale; data = heart_scale_inst; label = heart_scale_label; % 选取前 200 个数据作为训练集合,后 70 个数据作为测试集合 ind = 200; traindata = data(1:ind,:); trainlabel = label(1:ind,:); testdata = data(ind+1:end,:); testlabel = label(ind+1:end,:); % 利用训练集合建立分类模型 model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8'); % 利用建立的模型看其在训练集合上的分类效果 [ptrain,acctrain] = svmpredict(trainlabel,traindata,model); % 预测测试集合标签 [ptest,acctest] = svmpredict(testlabel,testdata,model);
matlab30个案例分析案例13-SVM神经网络中的参数优化
%% SVM神经网络中的参数优化---如何更好的提升分类器的性能%% 清空环境变量function chapter13_GAclose all;clear;clc;format compact;%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load chapter13_wine.mat;% 画出测试数据的box可视化图figure;boxplot(wine,'orientation','horizontal','labels',categories);title('wine数据的box可视化图','FontSize',12);xlabel('属性值','FontSize',12);grid on;% 画出测试数据的分维可视化图figuresubplot(3,5,1);hold onfor run = 1:178plot(run,wine_labels(run),'*');endxlabel('样本','FontSize',10);ylabel('类别标签','FontSize',10);title('class','FontSize',10);for run = 2:14subplot(3,5,run);hold on;str = ['attrib ',num2str(run-1)];for i = 1:178plot(i,wine(i,run-1),'*');endxlabel('样本','FontSize',10);ylabel('属性值','FontSize',10);title(str,'FontSize',10);end% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 选择GA最佳的SVM参数c&g% GA的参数选项初始化ga_option.maxgen = 200;ga_option.sizepop = 20;ga_option.cbound = [0,100];ga_option.gbound = [0,100];ga_option.v = 5;ga_option.ggap = 0.9;[bestacc,bestc,bestg] = gaSVMcgForClass(train_wine_labels,train_wine,ga_option);% 打印选择结果disp('打印选择结果');str = sprintf( 'Best Cross Validation Accuracy = %g%% Best c = %g Best g = %g',bestacc,bestc,bestg);disp(str);%% 利用最佳的参数进行SVM网络训练cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = svmtrain(train_wine_labels,train_wine,cmd);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d/%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图figure;hold on;plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);grid on;snapnow;%% 子函数gaSVMcgForClass.mfunction [BestCVaccuracy,Bestc,Bestg,ga_option] = gaSVMcgForClass(train_label,train_data,ga_option)% gaSVMcgForClass%% by faruto%Email:patrick.lee@ QQ:516667408 /faruto BNU%last modified 2010.01.17%Super Moderator @ % 若转载请注明:% faruto and liyang , LIBSVM-farutoUltimateVersion% a toolbox with implements for support vector machines based on libsvm, 2009.% Software available at %% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for% support vector machines, 2001. Software available at% .tw/~cjlin/libsvm% 参数初始化if nargin == 2ga_option = struct('maxgen',200,'sizepop',20,'ggap',0.9,...'cbound',[0,100],'gbound',[0,1000],'v',5);end% maxgen:最大的进化代数,默认为200,一般取值范围为[100,500]% sizepop:种群最大数量,默认为20,一般取值范围为[20,100]% cbound = [cmin,cmax],参数c的变化范围,默认为(0,100]% gbound = [gmin,gmax],参数g的变化范围,默认为[0,1000]% v:SVM Cross Validation参数,默认为5%MAXGEN = ga_option.maxgen;NIND = ga_option.sizepop;NVAR = 2;PRECI = 20;GGAP = ga_option.ggap;trace = zeros(MAXGEN,2);FieldID = ...[rep([PRECI],[1,NVAR]);[ga_option.cbound(1),ga_option.gbound(1);ga_option.cbound(2),ga_opti on.gbound(2)]; ...[1,1;0,0;0,1;1,1]];Chrom = crtbp(NIND,NVAR*PRECI);gen = 1;v = ga_option.v;BestCVaccuracy = 0;Bestc = 0;Bestg = 0;%cg = bs2rv(Chrom,FieldID);for nind = 1:NINDcmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))];ObjV(nind,1) = svmtrain(train_label,train_data,cmd);end[BestCVaccuracy,I] = max(ObjV);Bestc = cg(I,1);Bestg = cg(I,2);for gen = 1:MAXGENFitnV = ranking(-ObjV);SelCh = select('sus',Chrom,FitnV,GGAP);SelCh = recombin('xovsp',SelCh,0.7);SelCh = mut(SelCh);cg = bs2rv(SelCh,FieldID);for nind = 1:size(SelCh,1)cmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))];ObjVSel(nind,1) = svmtrain(train_label,train_data,cmd);end[Chrom,ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjVSel);if max(ObjV) <= 50continue;end[NewBestCVaccuracy,I] = max(ObjV);cg_temp = bs2rv(Chrom,FieldID);temp_NewBestCVaccuracy = NewBestCVaccuracy;if NewBestCVaccuracy > BestCVaccuracyBestCVaccuracy = NewBestCVaccuracy;Bestc = cg_temp(I,1);Bestg = cg_temp(I,2);endif abs( NewBestCVaccuracy-BestCVaccuracy ) <= 10^(-2) && ...cg_temp(I,1) < BestcBestCVaccuracy = NewBestCVaccuracy;Bestc = cg_temp(I,1);Bestg = cg_temp(I,2);endtrace(gen,1) = max(ObjV);trace(gen,2) = sum(ObjV)/length(ObjV);end%figure;hold on;trace = round(trace*10000)/10000;plot(trace(1:gen,1),'r*-','LineWidth',1.5);plot(trace(1:gen,2),'o-','LineWidth',1.5);legend('最佳适应度','平均适应度',3);xlabel('进化代数','FontSize',12);ylabel('适应度','FontSize',12);axis([0 gen 0 100]);grid on;axis auto;line1 = '适应度曲线Accuracy[GAmethod]';line2 = ['(终止代数=', ...num2str(gen),',种群数量pop=', ...num2str(NIND),')'];line3 = ['Best c=',num2str(Bestc),' g=',num2str(Bestg), ...' CVAccuracy=',num2str(BestCVaccuracy),'%'];title({line1;line2;line3},'FontSize',12);。
Matlab的SVM算法进行线性和非线性分类实例_20131128
Matlab_svmtranin_example1.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",page9 %Optimizing||W||directly:%Objective:min"f(A)=||W||",p8/line26%Subject to:yi*(xi*W+b)-1>=0,function(12);clear all;close allclc;sp=[3,7;6,6;4,6;5,6.5]%positive sample pointsnsp=size(sp);sn=[1,2;3,5;7,3;3,4;6,2.7]%negative sample pointsnsn=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 onplot(sn(1:nsn,1),sn(1:nsn,2),'c*');subplot(1,2,2)svmStruct=svmtrain(sd,Y,'showplot',true);2.NonLinear classification%Two Dimension quadratic-SVM Problem,Two Class and Separable Situation %Method from Christopher J.C.Burges:%"A Tutorial on Support Vector Machines for Pattern Recognition",page9 %Optimizing||W||directly:%Objective:min"f(A)=||W||",p8/line26%Subject to:yi*(xi*W+b)-1>=0,function(12);clear all;close allclc;sp=[3,7;6,6;4,6;5,6.5]%positive sample pointsnsp=size(sp);sn=[1,2;3,5;7,3;3,4;6,2.7;4,3;2,7]%negative sample pointsnsn=size(sn)sd=[sp;sn]lsd=[true true true true false false 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 onplot(sn(1:nsn,1),sn(1:nsn,2),'c*');subplot(1,2,2)%svmStruct=svmtrain(sd,Y,'Kernel_Function','linear','showplot',true);svmStruct=svmtrain(sd,Y,'Kernel_Function','quadratic','showplot',true);%use the trained svm(svmStruct)to classify the dataRD=svmclassify(svmStruct,sd,'showplot',true)%RD is the classification result vector3.Svmtrainsvmtrain Train a support vector machine classifierSVMSTRUCT=svmtrain(TRAINING,Y)trains a support vector machine(SVM) classifier on data taken from two groups.TRAINING is a numeric matrix of predictor data.Rows of TRAINING correspond to observations;columns correspond to features.Y is a column vector that contains the knownclass labels for TRAINING.Y is a grouping variable,i.e.,it can be a categorical,numeric,or logical vector;a cell vector of strings;or a character matrix with each row representing a class label(see help forgroupingvariable).Each element of Y specifies the group thecorresponding row of TRAINING belongs to.TRAINING and Y must have the same number of rows.SVMSTRUCT contains information about the trained classifier,including the support vectors,that is used by SVMCLASSIFY for classification.svmtrain treats NaNs,empty strings or'undefined' values as missing values and ignores the corresponding rows inTRAINING and Y.SVMSTRUCT=svmtrain(TRAINING,Y,'PARAM1',val1,'PARAM2',val2,...) specifies one or more of the following name/value pairs:Name Value'kernel_function'A string or a function handle specifying thekernel function used to represent the dotproduct in a new space.The value can be one ofthe following:'linear'-Linear kernel or dot product(default).In this case,svmtrainfinds the optimal separating planein the original space.'quadratic'-Quadratic kernel'polynomial'-Polynomial kernel with defaultorder3.To specify another order,use the'polyorder'argument.'rbf'-Gaussian Radial Basis Functionwith default scaling factor1.Tospecify another scaling factor,use the'rbf_sigma'argument.'mlp'-Multilayer Perceptron kernel(MLP)with default weight1and defaultbias-1.To specify another weightor bias,use the'mlp_params'argument.function-A kernel function specified using@(for example@KFUN),or ananonymous function.A kernelfunction must be of the formfunction K=KFUN(U,V)The returned value,K,is a matrixof size M-by-N,where M and N arethe number of rows in U and Vrespectively.'rbf_sigma'A positive number specifying the scaling factorin the Gaussian radial basis function kernel.Default is1.'polyorder'A positive integer specifying the order of thepolynomial kernel.Default is3.'mlp_params'A vector[P1P2]specifying the parameters of MLPkernel.The MLP kernel takes the form:K=tanh(P1*U*V'+P2),where P1>0and P2<0.Default is[1,-1].'method'A string specifying the method used to find theseparating hyperplane.Choices are:'SMO'-Sequential Minimal Optimization(SMO)method(default).It implements the L1soft-margin SVM classifier.'QP'-Quadratic programming(requires anOptimization Toolbox license).Itimplements the L2soft-margin SVMclassifier.Method'QP'doesn't scalewell for TRAINING with large number ofobservations.'LS'-Least-squares method.It implements theL2soft-margin SVM classifier.'options'Options structure created using either STATSET orOPTIMSET.*When you set'method'to'SMO'(default),create the options structure using STATSET.Applicable options:'Display'Level of display output.Choicesare'off'(the default),'iter',and'final'.Value'iter'reports every500iterations.'MaxIter'A positive integer specifying themaximum number of iterations allowed.Default is15000for method'SMO'.*When you set method to'QP',create theoptions structure using OPTIMSET.For detailsof applicable options choices,see QUADPROGoptions.SVM uses a convex quadratic program,so you can choose the'interior-point-convex'algorithm in QUADPROG.'tolkkt'A positive scalar that specifies the tolerancewith which the Karush-Kuhn-Tucker(KKT)conditionsare checked for method'SMO'.Default is1.0000e-003.'kktviolationlevel'A scalar specifying the fraction of observationsthat are allowed to violate the KKT conditions formethod'SMO'.Setting this value to be positivehelps the algorithm to converge faster if it isfluctuating near a good solution.Default is0.'kernelcachelimit'A positive scalar S specifying the size of thekernel matrix cache for method'SMO'.Thealgorithm keeps a matrix with up to S*Sdouble-precision numbers in memory.Default is5000.When the number of points in TRAININGexceeds S,the SMO method slows down.It'srecommended to set S as large as your systempermits.'boxconstraint'The box constraint C for the soft margin.C can bea positive numeric scalar or a vector of positivenumbers with the number of elements equal to thenumber of rows in TRAINING.Default is1.*If C is a scalar,it is automatically rescaledby N/(2*N1)for the observations of group one,and by N/(2*N2)for the observations of grouptwo,where N1is the number of observations ingroup one,N2is the number of observations ingroup two.The rescaling is done to take intoaccount unbalanced groups,i.e.,when N1and N2are different.*If C is a vector,then each element of Cspecifies the box constraint for thecorresponding observation.'autoscale'A logical value specifying whether or not toshift and scale the data points before training.When the value is true,the columns of TRAININGare shifted and scaled to have zero mean unitvariance.Default is true.'showplot'A logical value specifying whether or not to showa plot.When the value is true,svmtrain creates aplot of the grouped data and the separating linefor the classifier,when using data with2features(columns).Default is false. SVMSTRUCT is a structure having the following properties:SupportVectors Matrix of data points with each row correspondingto a support vector.Note:when'autoscale'is false,this fieldcontains original support vectors in TRAINING.When'autoscale'is true,this field containsshifted and scaled vectors from TRAINING.Alpha Vector of Lagrange multipliers for the supportvectors.The sign is positive for support vectorsbelonging to the first group and negative forsupport vectors belonging to the second group. Bias Intercept of the hyperplane that separatesthe two groups.Note:when'autoscale'is false,this fieldcorresponds to the original data points inTRAINING.When'autoscale'is true,this fieldcorresponds to shifted and scaled data points. KernelFunction The function handle of kernel function used. KernelFunctionArgs Cell array containing the additional argumentsfor the kernel function.GroupNames A column vector that contains the knownclass labels for TRAINING.Y is a groupingvariable(see help for groupingvariable). SupportVectorIndices A column vector indicating the indices of supportvectors.ScaleData This field contains information about auto-scale.When'autoscale'is false,it is empty.When'autoscale'is set to true,it is a structurecontaining two fields:shift-A row vector containing the negativeof the mean across all observationsin TRAINING.scaleFactor-A row vector whose value is1./STD(TRAINING).FigureHandles A vector of figure handles created by svmtrainwhen'showplot'argument is TRUE.Example:%Load the data and select features for classificationload fisheririsX=[meas(:,1),meas(:,2)];%Extract the Setosa classY=nominal(ismember(species,'setosa'));%Randomly partitions observations into a training set and a test %set using stratified holdoutP=cvpartition(Y,'Holdout',0.20);%Use a linear support vector machine classifiersvmStruct=svmtrain(X(P.training,:),Y(P.training),'showplot',true);C=svmclassify(svmStruct,X(P.test,:),'showplot',true);errRate=sum(Y(P.test)~=C)/P.TestSize%mis-classification rate conMat=confusionmat(Y(P.test),C)%the confusion matrix。
matlab中最简单的svm例子
在MATLAB中,最简单的SVM(支持向量机)例子可以通过以下步骤实现:1. 导入数据:首先,我们需要导入一些用于训练和测试的数据集。
这里我们使用MATLAB 内置的鸢尾花数据集。
```matlabload fisheriris; % 加载鸢尾花数据集X = meas; % 提取特征矩阵Y = species; % 提取标签向量```2. 划分训练集和测试集:我们将数据集划分为训练集和测试集,以便评估模型的性能。
```matlabcv = cvpartition(size(X,1),'HoldOut',0.5); % 划分训练集和测试集idx = cv.test; % 获取测试集的索引XTrain = X(~idx,:); % 提取训练集的特征矩阵YTrain = Y(~idx,:); % 提取训练集的标签向量XTest = X(idx,:); % 提取测试集的特征矩阵YTest = Y(idx,:); % 提取测试集的标签向量```3. 创建SVM模型:接下来,我们创建一个SVM模型,并设置相应的参数。
```matlabSVMModel = fitcsvm(XTrain,YTrain,'KernelFunction','linear'); % 创建线性核函数的SVM 模型```4. 预测和评估:最后,我们使用训练好的模型对测试集进行预测,并评估模型的性能。
```matlabYPred = predict(SVMModel,XTest); % 对测试集进行预测accuracy = sum(YPred == YTest)/length(YTest) * 100; % 计算准确率fprintf('Accuracy: %.2f%%', accuracy); % 输出准确率```这个例子展示了如何在MATLAB中使用最简单的SVM方法进行分类。
04201808494MATLAB-智能算法30个案例分析报告
MATLAB 智能算法30个案例分析第 1章1、案例背景遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。
遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。
在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。
基因组成的串就是染色体,或者叫基因型个体( Individuals)。
一定数量的个体组成了群体(Population)。
群体中个体的数目称为群体大小(Population Size),也叫群体规模。
而各个个体对环境的适应程度叫做适应度( Fitness)。
2、案例目录:1.1理论基础1.1.1遗传算法概述1.编码2.初始群体的生成3.适应度评估4.选择5.交叉6.变异1.1.2设菲尔德遗传算法工具箱1.工具箱简介2.工具箱添加1.2案例背景1.2.1问题描述1.简单一元函数优化2.多元函数优化1.2.2解决思路及步骤1.3 MATLAB程序实现1.3.1工具箱结构1.3.2遗传算法中常用函数1.创建种群函数—crtbp2.适应度计算函数—ranking3.选择函数—select4.交叉算子函数—recombin5.变异算子函数—mut6.选择函数—reins7.实用函数—bs2rv8.实用函数—rep1.3.3遗传算法工具箱应用举例1.简单一元函数优化2.多元函数优化1.4延伸阅读1.5参考文献3、主程序:1.简单一元函数优化:clcclear allclose all%%画出函数图figure(1);hold on;lb=1;ub=2; %函数自变量范围【1,2】ezplot('sin(10*pi*X)/X',[lb,ub]); %画出函数曲线xlabel('自变量/X')ylabel('函数值/Y')%%定义遗传算法参数NIND=40; %个体数目MAXGEN=20; %最大遗传代数PRECI=20; %变量的二进制位数GGAP=0.95; %代沟px=0.7; %交叉概率pm=0.01; %变异概率trace=zeros(2,MAXGEN); %寻优结果的初始值FieldD=[PRECI;lb;ub;1;0;1;1]; %区域描述器Chrom=crtbp(NIND,PRECI); %初始种群%%优化gen=0; %代计数器X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换ObjV=sin(10*pi*X)./X; %计算目标函数值while gen<MAXGENFitnV=ranking(ObjV); %分配适应度值SelCh=select('sus',Chrom,FitnV,GGAP); %选择SelCh=recombin('xovsp',SelCh,px); %重组SelCh=mut(SelCh,pm); %变异X=bs2rv(SelCh,FieldD); %子代个体的十进制转换ObjVSel=sin(10*pi*X)./X; %计算子代的目标函数值[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群X=bs2rv(Chrom,FieldD);gen=gen+1; %代计数器增加%获取每代的最优解及其序号,Y为最优解,I为个体的序号[Y,I]=min(ObjV);trace(1,gen)=X(I); %记下每代的最优值trace(2,gen)=Y; %记下每代的最优值endplot(trace(1,:),trace(2,:),'bo'); %画出每代的最优点grid on;plot(X,ObjV,'b*'); %画出最后一代的种群hold off%%画进化图figure(2);plot(1:MAXGEN,trace(2,:));grid onxlabel('遗传代数')ylabel('解的变化')title('进化过程')bestY=trace(2,end);bestX=trace(1,end);fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])2.多元函数优化clcclear allclose all%%画出函数图figure(1);lbx=-2;ubx=2; %函数自变量 x范围【-2,2】lby=-2;uby=2; %函数自变量 y范围【-2,2】ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',[lbx,ubx,lby,uby],50); %画出函数曲线hold on;%%定义遗传算法参数NIND=40; %个体数目MAXGEN=50; %最大遗传代数PRECI=20; %变量的二进制位数GGAP=0.95; %代沟px=0.7; %交叉概率pm=0.01; %变异概率trace=zeros(3,MAXGEN); %寻优结果的初始值FieldD=[PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1]; %区域描述器Chrom=crtbp(NIND,PRECI*2); %初始种群%%优化gen=0; %代计数器XY=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换X=XY(:,1);Y=XY(:,2);ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %计算目标函数值while gen<MAXGENFitnV=ranking(-ObjV); %分配适应度值SelCh=select('sus',Chrom,FitnV,GGAP); %选择SelCh=recombin('xovsp',SelCh,px); %重组SelCh=mut(SelCh,pm); %变异XY=bs2rv(SelCh,FieldD); %子代个体的十进制转换X=XY(:,1);Y=XY(:,2);ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %计算子代的目标函数值[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群XY=bs2rv(Chrom,FieldD);gen=gen+1; %代计数器增加%获取每代的最优解及其序号,Y为最优解,I为个体的序号[Y,I]=max(ObjV);trace(1:2,gen)=XY(I,:); %记下每代的最优值trace(3,gen)=Y; %记下每代的最优值endplot3(trace(1,:),trace(2,:),trace(3,:),'bo'); %画出每代的最优点grid on;plot3(XY(:,1),XY(:,2),ObjV,'bo'); %画出最后一代的种群hold off%%画进化图figure(2);plot(1:MAXGEN,trace(3,:));grid onxlabel('遗传代数')ylabel('解的变化')title('进化过程')bestZ=trace(3,end);bestX=trace(1,end);bestY=trace(2,end);fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\nZ=',num2str(bestZ), '\n'])第 2章基于遗传算法和非线性规划的函数寻优算法1.1案例背景1.1.1非线性规划方法非线性规划是 20世纪 50年代才开始形成的一门新兴学科。
matlab神经网络43个案例分析
matlab神经网络43个案例分析MATLAB神经网络是一种广泛使用的机器学习工具,可以应用于多种问题的解决。
下面为大家介绍43个用MATLAB神经网络解决的案例分析。
1. 基于神经网络的股票市场预测通过分析历史数据,建立神经网络模型,预测未来股票市场走势。
2. 神经网络分类器建模分析通过建立分类模型,对不同类型数据进行分类处理。
3. 基于神经网络的信用评估模型通过收集客户的基本信息和信用历史,建立神经网络模型,对客户的信用进行评估。
4. 神经网络医学图像分析通过医学图像数据,建立神经网络模型,进行疾病诊断与分析。
5. 基于神经网络的机器人动作控制通过神经网络,训练机器人进行动作控制,提高机器人的智能化水平。
6. 神经网络预测库存需求通过分析历史销售数据,建立神经网络模型,预测未来库存需求,提高企业的运作效率。
7. 基于神经网络的人脸识别通过收集人脸数据,建立神经网络模型,实现人脸识别功能。
8. 神经网络垃圾邮件过滤通过建立神经网络模型,对邮件进行分类,筛选出垃圾邮件。
9. 基于神经网络的语音识别通过收集语音数据,建立神经网络模型,实现语音识别功能。
10. 神经网络飞机失速预测通过分析飞机数据和空气动力学知识,建立神经网络模型,预测飞机发生失速的概率。
11. 基于神经网络的目标识别通过收集目标数据,建立神经网络模型,实现目标识别功能。
12. 神经网络电力负荷预测通过历史电力数据,建立神经网络模型,预测未来电力负荷。
13. 基于神经网络的网络入侵检测通过建立神经网络模型,检测网络攻击行为。
14. 神经网络手写数字识别通过收集手写数字数据,建立神经网络模型,实现手写数字识别功能。
15. 基于神经网络的情感分析通过对情感文本数据进行分析,建立神经网络模型,实现情感分析功能。
16. 神经网络自然语言处理通过对自然语言文本数据进行处理和分析,建立神经网络模型,实现自然语言处理功能。
17. 基于神经网络的物体识别通过收集物体数据,建立神经网络模型,实现物体识别功能。
MATLAB智能算法30个案例分析
MATLAB智能算法30个案例分析以下是MATLAB智能算法30个案例的分析:1.遗传算法优化问题:利用遗传算法求解最佳解的问题。
可以用于求解复杂的优化问题,如旅行商问题等。
2.神经网络拟合问题:利用神经网络模型拟合给定的数据。
可以用于预测未知的数据或者进行模式分类等。
3.支持向量机分类问题:利用支持向量机模型进行分类任务。
可以用于医学图像处理、信号处理等领域。
4.贝叶斯网络学习问题:利用贝叶斯网络对大量数据进行学习和分析。
可以用于推断潜在关系、预测未来事件等。
5.粒子群算法逆向问题:利用粒子群算法解决逆向问题,如数据恢复、逆向工程等。
可以用于重建丢失的数据或者还原未知的模型参数。
6.模拟退火算法优化问题:利用模拟退火算法寻找最优解。
可以用于参数优化、组合优化等问题。
7.K均值聚类问题:利用K均值算法对数据进行聚类。
可以用于数据分析、图像处理等。
8.线性回归问题:利用线性回归模型预测目标变量。
可以用于价格预测、趋势分析等。
9.主成分分析问题:利用主成分分析模型对高维数据进行降维。
可以用于数据可视化和预处理。
10.深度学习图像分类问题:利用深度学习算法对图像进行分类。
可以用于图像识别和物体检测等。
11.强化学习问题:利用强化学习算法让智能体自主学习和改进策略。
可以用于自动驾驶、博弈等。
12.偏微分方程求解问题:利用数值方法求解偏微分方程。
可以用于模拟物理过程和工程问题。
13.隐马尔可夫模型序列分类问题:利用隐马尔可夫模型对序列进行分类。
可以用于语音识别、自然语言处理等。
14.遗传编程问题:利用遗传编程算法自动发现和改进算法。
可以用于算法设计和优化等。
15.高斯混合模型聚类问题:利用高斯混合模型对数据进行聚类。
可以用于人群分析和异常检测等。
16.马尔可夫链蒙特卡洛采样问题:利用马尔可夫链蒙特卡洛方法采样复杂分布。
可以用于概率推断和统计模拟等。
17.基因表达式数据分析问题:利用统计方法分析基因表达数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%% SVM神经网络的数据分类预测----意大利葡萄酒种类识别
%% 清空环境变量
close all;
clear;
clc;
format compact;
%% 数据提取
% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量
load chapter12_wine.mat;
% 画出测试数据的box可视化图
figure;
boxplot(wine,'orientation','horizontal','labels',categories);
title('wine数据的box可视化图','FontSize',12);
xlabel('属性值','FontSize',12);
grid on;
% 画出测试数据的分维可视化图
figure
subplot(3,5,1);
hold on
for run = 1:178
plot(run,wine_labels(run),'*');
end
xlabel('样本','FontSize',10);
ylabel('类别标签','FontSize',10);
title('class','FontSize',10);
for run = 2:14
subplot(3,5,run);
hold on;
str = ['attrib ',num2str(run-1)];
for i = 1:178
plot(i,wine(i,run-1),'*');
end
xlabel('样本','FontSize',10);
ylabel('属性值','FontSize',10);
title(str,'FontSize',10);
end
% 选定训练集和测试集
% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集
train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)]; % 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集
test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
%% 数据预处理
% 数据预处理,将训练集和测试集归一化到[0,1]区间
[mtrain,ntrain] = size(train_wine);
[mtest,ntest] = size(test_wine);
dataset = [train_wine;test_wine];
% mapminmax为MATLAB自带的归一化函数
[dataset_scale,ps] = mapminmax(dataset',0,1);
dataset_scale = dataset_scale';
train_wine = dataset_scale(1:mtrain,:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );
%% SVM网络训练
model = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1');
%% SVM网络预测
[predict_label, accuracy] = svmpredict(test_wine_labels, test_wine, model);
%% 结果分析
% 测试集的实际分类和预测分类图
% 通过图可以看出只有一个测试样本是被错分的
figure;
hold on;
plot(test_wine_labels,'o');
plot(predict_label,'r*');
xlabel('测试集样本','FontSize',12);
ylabel('类别标签','FontSize',12);
legend('实际测试集分类','预测测试集分类');
title('测试集的实际分类和预测分类图','FontSize',12);
grid on;。