您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 回归预测分析---SVM神经网络
%%SVM神经网络的回归预测分析---上证指数开盘指数预测%%清空环境变量functionchapter14tic;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.mfunction[mse,bestc,bestg]=SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)%SVMcgcrossvalidationbyfaruto%%abouttheparametersofSVMcgifnargin10msestep=0.06;endifnargin8cstep=0.8;gstep=0.8;endifnargin7v=5;endifnargin5gmax=8;gmin=-8;endifnargin3cmax=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:mforj=1:ncmd=['-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)msemse=cg(i,j);bestc=basenum^X(i,j);bestg=basenum^Y(i,j);endifabs(cg(i,j)-mse)=eps&&bestcbasenum^X(i,j)mse=cg(i,j);bestc=basenum^X(i,j);bestg=basenum^Y(i,j);endendend%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=',num2str(bestg),...'CVmse=',num2str(mse)];title({firstline;secondline},'Fontsize',12);
本文标题:回归预测分析---SVM神经网络
链接地址:https://www.777doc.com/doc-4365990 .html