matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx

上传人:b****2 文档编号:358709 上传时间:2022-10-09 格式:DOCX 页数:5 大小:19.42KB
下载 相关 举报
matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx_第1页
第1页 / 共5页
matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx_第2页
第2页 / 共5页
matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx_第3页
第3页 / 共5页
matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx_第4页
第4页 / 共5页
matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx

《matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx》由会员分享,可在线阅读,更多相关《matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx(5页珍藏版)》请在冰豆网上搜索。

matlab30个案例分析案例14-SVM神经网络的回归预测分析.docx

%%SVM神经网络的回归预测分析---上证指数开盘指数预测

%

%%清空环境变量

functionchapter14

tic;

closeall;

clear;

clc;

formatcompact;

%%数据的提取和预处理

%载入测试数据上证指数(1990.12.19-2009.08.19)

%数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数

%6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额.

loadchapter14_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);

gridon;

%数据预处理,将原始数据进行归一化

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);

gridon;

%对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('BestCrossValidationMSE=%gBestc=%gBestg=%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('BestCrossValidationMSE=%gBestc=%gBestg=%g',bestmse,bestc,bestg);

disp(str);

%%利用回归预测分析最佳的参数进行SVM网络训练

cmd=['-c',num2str(bestc),'-g',num2str(bestg),'-s3-p0.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;

holdon;

plot(ts,'-o');

plot(predict,'r-^');

legend('原始数据','回归预测数据');

holdoff;

title('原始数据和回归预测数据对比','FontSize',12);

xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);

ylabel('开盘数','FontSize',12);

gridon;

figure;

error=predict-ts';

plot(error,'rd');

title('误差图(predicteddata-originaldata)','FontSize',12);

xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);

ylabel('误差量','FontSize',12);

gridon;

figure;

error=(predict-ts')./ts';

plot(error,'rd');

title('相对误差图(predicteddata-originaldata)/originaldata','FontSize',12);

xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);

ylabel('相对误差量','FontSize',12);

gridon;

snapnow;

toc;

%%子函数SVMcgForRegress.m

function[mse,bestc,bestg]=SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)

%SVMcgcrossvalidationbyfaruto

%

%byfaruto

%Email:

patrick.lee@QQ:

516667408BNU

%lastmodified2010.01.17

%SuperModerator@

%若转载请注明:

%farutoandliyang,LIBSVM-farutoUltimateVersion

%atoolboxwithimplementsforsupportvectormachinesbasedonlibsvm,2009.

%Softwareavailableat

%

%Chih-ChungChangandChih-JenLin,LIBSVM:

alibraryfor

%supportvectormachines,2001.Softwareavailableat

%http:

//www.csie.ntu.edu.tw/~cjlin/libsvm

%abouttheparametersofSVMcg

ifnargin<10

msestep=0.06;

end

ifnargin<8

cstep=0.8;

gstep=0.8;

end

ifnargin<7

v=5;

end

ifnargin<5

gmax=8;

gmin=-8;

end

ifnargin<3

cmax=8;

cmin=-8;

end

%X:

cY:

gcg:

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;

fori=1:

m

forj=1:

n

cmd=['-v',num2str(v),'-c',num2str(basenum^X(i,j)),'-g',num2str(basenum^Y(i,j)),'-s3-p0.1'];

cg(i,j)=svmtrain(train_label,train,cmd);

ifcg(i,j)

mse=cg(i,j);

bestc=basenum^X(i,j);

bestg=basenum^Y(i,j);

end

ifabs(cg(i,j)-mse)<=eps&&bestc>basenum^X(i,j)

mse=cg(i,j);

bestc=basenum^X(i,j);

bestg=basenum^Y(i,j);

end

end

end

%todrawtheaccwithdifferentc&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=['Bestc=',num2str(bestc),'g=',num2str(bestg),...

'CVmse=',num2str(mse)];

title({firstline;secondline},'Fontsize',12);

gridon;

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=['Bestc=',num2str(bestc),'g='

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1