首页 > 编程知识 正文

基于线性回归分析的跨模态检索研究,多元回归预测模型matlab程序

时间:2023-05-04 03:11:52 阅读:148286 作者:2198

我在第14章更改了用于回归建模的SVM示例后,出现了问题:

首先,说明我想做的东西:

我预测输出的压力。 目前输出的压力与前三个时间点的五个变量有关。 我也想减少变量,但是预测的效果不好)。 程序更改为以下形式,但出现了一些问题。

【1】以第208209 210个时刻的数据作为输入数据,预测211个时刻的输出压力。 但是,因为我编写的程序,输出总是得到三个。 也就是说,可以预测211 212 213的输出压力。

我一开始是这么想的。 212点的输出按照我的本意,应该是知道209 210 211点的输入之后才能预测。 此时的预测一定是错误的。 请无视。 但是,后来把输入改为209 210211时,我意识到错了。 因为,在此时给定的212 213 214这3个输出数据中,212213与以上以208 209 210为输入时预测的数据相同。 所以我的模型应该是错误的,但是看不见。 想让作者看看。 我把程序贴在下面了。

%% SVM神经网络的回归预测分析- -压缩机四级出口压力预测

%%空环境变量

function output_press

tic;

全部关闭;

清除

clc;

格式公司;

%%数据的提取和预处理

data=xls read (c : (program files (MATLAB ) r2011a(work(data )、(sheet2)、) c5:g223 );

train _ x=data (1:210,1:5 );

train _ y=data (43360213,3 );

test _ x=data (2113360216,1:5;

test _ y=data (2143360219,3 ) ) ) ) ) ) ) ) ) ) ) )。

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

%

[train_x_scale,test_x _ scale ]=scaleforsvm (train _ x,test _ x,- 1,1 );

[train_y_scale,test_y_scale,PS]=scaleforsvm(train_y,test_y,- 1,1 );

%%参数c和g寻找最佳选择

选择最适合% %回归预测分析的SVM参数cg

%%粒子群算法优化

pso_option.c1=2.0;

pso_option.c2=0.6;

pso_option.maxgen=200;

pso_option.sizepop=20;

pso_option.k=1.2;

pso_option.wV=1;

pso_option.wP=1;

pso_option.v=5;

pso_option.popcmax=100;

pso_option.popcmin=0.0001;

pso_option.popgmax=1000;

pso_option.popgmin=0.0001;

[bestmse,bestc,bestg ]=psosvmcgforregress (train _ y _ scale,train_x_scale,pso_option );

%打印详细的选择结果

disp ()打印精细选择----粒子群算法优化结果) );

str=sprintf (bestcrossvalidationmse=% g bestc=% g bestg=% g )、bestmse、bestc、bestg );

DISP(str;

采用最适合%%回归预测分析的参数进行SVM网络训练

cmd=['-c ',num2str(bestc,'-g ',num2str(bestg,'-s 3 -t 2 -p 0.01'] ' ) );

model=SVMtrain(train_y_scale,train_x_scale,cmd );

%% SVM网络回归预测

%根据原始训练数据,系统的预测能力如何

[predict_train,MSE]=SVMpredict(train_y_scale,train_x_scale,model );

predict_train=map minmax (' reverse ',predict _ train ',ps );

predict_train=predict_train ';

% %打印回归结果

str=sprintf (原始训练数据——均方误差MSE=%g相关系数R=%g%% )、MSE(2)、MSE(2) ) 100 );

DISP(str;

图形;

保持打开;

plot(train_y,'-o ';

plot(predict_train,' g-* ';

legend ("原始数据"、"回归预测数据";

保持;

title ("原始数据与回归预测数据的比较"、" FontSize "、12 );

xlabel ()压缩机运行时间(2011.2.15.15时-2011.02.25.11时)、' FontSize '、12 );

ylabel (“压缩机四级出口压力”、“FontSize”、12 );

网格开;

图形;

error=predict_train - test_y;

plot (错误,' rd );

title (误差贴图,)字体大小,12 );

xlabel ()压缩机运行时间(2011.2.15.15时-2011.02.25.11时)、' FontSize '、12 );

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

网格开;

图形;

error=(predict_train-test_y )./test_y;

plot (错误,' rd );

title (相对误差图(predicted data - original data )/original data )、' FontSize )、12 );

xlabel ()压缩机运行时间(2011.2.15.15时-2011.02.25.11时)、' FontSize '、12 );

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

网格开;

snapnow;

toc;

save output_press_3.mat model

【2】忙碌的人请大致告诉我用前3个时刻预测当前时刻的想法。 你怎么预测? /

[此帖由最后一批昏迷玉米于2011-7-29 12:45编辑]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。