1 模型
2 部分代码
clc;clear;close all
load('.\世界遗产假山数据\环秀山庄\2020.10数据\环秀山庄2020.10沉降1-5号点.mat')
data = table2array( hx_settlement1_5(1:2000,5));%训练集输入
%%
%序列的前 90% 用于训练,后 10% 用于测试
numTimeStepsTrain = floor(0.9*size(data,1));
dataTrain = data(1:numTimeStepsTrain,:);
dataTest = data;
lag=1;%确定该类型第几年
n=length(dataTrain);
%% 训练集制作
train_x=zeros(lag,n-lag);
for i=1:n-lag
train_x(:,i)=dataTrain(i:i+lag-1)';%形成训练集输入网络
end
train_y=dataTrain(lag+1:end)';%训练集输出
7
% 结果
YPred=double(YPred');%输出是n*1的single型数据,要转换为1*n的double是数据形式
% 反归一化
predict_value=method('reverse',YPred,output_ps);predict_value=double(predict_value);
true_value=method('reverse',targetD_test,output_ps);true_value=double(true_value);
figure
% subplot(2,1,1)
plot(true_value,'b')
hold on
plot(predict_value,'r')
legend('实际值','预测值')
grid on
xlabel('时间')
ylabel('数据值')
% subplot(2,1,2)
% stem(predict_value-true_value)
% xlabel('时间')
% ylabel('均方差值')
% title('均方差图 ' ) %% 评判指标
z_mse = mean((predict_value-true_value).^2);%mse
disp(['均方差(MSE):',num2str(z_mse)])
z_r=sum((predict_value-mean(true_value)).^2)/sum((predict_value-true_value).^2);%r
disp(['R:',num2str(z_r)])
rmse=sqrt(mean((true_value-predict_value).^2));
disp(['根均方差(RMSE):',num2str(rmse)])
mae=mean(abs(true_value-predict_value));
disp(['平均绝对误差(MAE):',num2str(mae)])
3 仿真结果
4 参考文献
[1]郝晓辰, 杨跃, 杨黎明,等. 基于时间序列卷积神经网络的水泥烧成过程能耗预测模型[C]// 2018中国自动化大会(CAC2018). 0.
5 MATLAB代码与数据下载地址
见博客主页