核心内容摘要
ipx811:革新数字生活,点亮未来无限可能
CNN-GRU回归预测预测分析多输入单输出。
Matlab作图预测电力负荷数据来源于电工杯联系宝贝送。
代码注释清晰替换数据即可。
。
最近研究了用 CNN - GRU 模型进行回归预测目标是预测电力负荷还蛮有意思的今天就来给大家分享一下。
这个模型采用多输入单输出的方式能够很好地处理电力负荷预测问题。
数据是来源于电工杯的要是大家需要的话可以联系我哦。
数据处理首先我们得把数据搞到手并且做一些必要的处理。
在 Matlab 里读取数据那是相当方便。
以下是简单的读取数据代码% 读取数据 data readtable(electric_power_data.csv); % 假设数据存储在这个 CSV 文件中 X table2array(data(:, 1:end -
); % 多输入特征 Y table2array(data(:, end)); % 单输出即电力负荷代码分析readtable函数用于读取 CSV 文件的数据将其存储为表格形式。
接着table2array把表格数据转换为数组X取了除最后一列之外的所有列作为输入特征Y则只取最后一列作为输出也就是我们要预测的电力负荷。
数据划分把数据分成训练集和测试集这是很关键的一步有助于我们评估模型的性能。
% 划分训练集和测试集 train_ratio
8; % 训练集比例 train_size floor(train_ratio * length(Y)); X_train X(1:train_size, :); Y_train Y(1:train_size); X_test X(train_size 1:end, :); Y_test Y(train_size 1:end);代码分析这里设定了训练集的比例为
8也就是 80% 的数据用于训练。
floor函数用于向下取整算出训练集的大小。
然后根据这个大小把输入和输出数据分别划分成训练集和测试集。
构建 CNN - GRU 模型重头戏来了构建我们的 CNN - GRU 模型。
% 构建 CNN - GRU 模型 layers [ imageInputLayer([size(X_train,
, 1, 1]) % 输入层 convolution2dLayer([3, 1], 16, Padding, same) % CNN 层 batchNormalizationLayer % 批量归一化层 reluLayer % 激活函数层 gruLayer(32, OutputMode, last) % GRU 层 fullyConnectedLayer(
% 全连接层 regressionLayer]; % 回归层 options trainingOptions(adam, ... MaxEpochs, 50, ... MiniBatchSize, 64, ... Shuffle, every-epoch, ... Verbose, false, ... Plots, training-progress); net trainNetwork(X_train, Y_train, layers, options);代码分析输入层imageInputLayer用于接收输入数据这里根据输入特征的维度来设置。
CNN 层convolution2dLayer进行卷积操作[3, 1]是卷积核的大小16 是卷积核的数量Padding, same保证输出和输入的尺寸相同。
批量归一化层batchNormalizationLayer可以加速模型的收敛。
激活函数层reluLayer采用 ReLU 激活函数增加模型的非线性。
GRU 层gruLayer用于处理序列数据OutputMode, last表示只输出最后一个时间步的结果。
全连接层fullyConnectedLayer把前面的特征映射到一个输出节点。
回归层regressionLayer用于回归任务。
trainingOptions是设置训练的参数比如使用 Adam 优化器最大训练轮数为 50小批量大小为 64 等。
最后用trainNetwork函数来训练模型。
模型预测与评估训练好模型后就可以用测试集进行预测并评估模型的性能。
% 模型预测 Y_pred predict(net, X_test); % 计算均方误差 mse mean((Y_pred - Y_test).^
; disp([均方误差: , num2str(mse)]);代码分析predict函数用训练好的模型对测试集进行预测得到预测结果Y_pred。
然后计算预测值和真实值之间的均方误差mean函数求平均值disp函数把结果显示出来。
Matlab 作图最后用 Matlab 画个图直观地看看预测结果和真实值的对比。
% 绘图 figure; plot(Y_test, b, DisplayName, 真实值); hold on; plot(Y_pred, r--, DisplayName, 预测值); xlabel(样本序号); ylabel(电力负荷); title(电力负荷预测结果); legend;代码分析figure函数创建一个新的图形窗口plot函数分别绘制真实值和预测值的曲线hold on保证两条曲线画在同一个图里。
xlabel、ylabel和title分别设置坐标轴标签和图的标题legend显示图例。
CNN-GRU回归预测预测分析多输入单输出。
Matlab作图预测电力负荷数据来源于电工杯联系宝贝送。
代码注释清晰替换数据即可。
。
整个 CNN - GRU 回归预测电力负荷的流程就是这样啦代码里注释都很清晰大家要是有自己的数据直接替换掉就行。
希望这篇分享对大家有帮助