我在第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编辑]