BP实现数据预测 (demo)

简介: BP实现数据预测 (demo)

 近日受友人所托助力电力负荷预测试验,本篇结合《巧借循环对神经网络输出值控制得理想值【MATLAB】》 使用部分数据(由于复现文章导致数据不全)进行原理上的数据模拟进行试验,整体框架可供大家参考。


     这里紧接《BP实现数据预测》一文中所述的流程和demo



demo


训练网络部分:

clc
clear
close all
%%
while 1 ==1 
% old_datas = xlsread('ss.xlsx');
load old_datas.mat
new_data2014 = 1.14.*old_datas;
new_data2015 = 1.16.*old_datas;
new_data2016 = 1.18.*old_datas;
data20142016 = [new_data2014;new_data2015;new_data2016];
X = mapminmax(data20142016);
data_x = [X(1:72,3:5)';X(1:72,7:10)'];
data_y = X(1:72,6:6)';
%构建网络
net = newff(data_x,data_y ,[20], { 'logsig' 'purelin' } , 'traingdx' , 'learngdm') ;%输入数据为 特征数*数据个数,输出为 类别向量*数据个数
net.trainparam.show = 50 ;%每间隔50步显示一次训练结果
net.trainparam.epochs = 100;%允许最大训练步数100步
net.trainparam.goal = 0.01 ;%训练目标最小误差0.01
net.trainParam.lr = 0.001 ;%学习速率0.001
%% 开始训练
net = train( net, data_x,data_y);
new_data2017 = 1.20.*old_datas; % 待测数据
X_test =  mapminmax(new_data2017);
input_test = [X_test(1:end,3:5)';X_test(1:end,7:10)'];
output_test = X_test(1:end,6:6)';
test_Y = sim( net,input_test) ;
mae_list = mean(abs(output_test - test_Y)); %平均绝对误差list
list_x = 1:length(mae_list);% 平均绝对误差的横轴x
maes = sum(mae_list)/(length(mae_list)); %计算平均绝对误差
if maes < 0.0176
    break
end
end
save MyNet.mat net


预测部分:

clc
clear
close all
%% 
load MyNet.mat  %调用网络
load old_datas.mat %调用数据
new_data2017 = 1.20.*old_datas; % 待测数据
X_test =  mapminmax(new_data2017);
input_test = [X_test(1:end,3:5)';X_test(1:end,7:10)'];
output_test = X_test(1:end,6:6)';
test_Y = sim( net,input_test) ;
ElecPrice_Ture = output_test; % 真实的电价
ElecPrice_Predict = test_Y; % 预测的的电价
figure(1)
ElecPrice_x = 1:length(ElecPrice_Ture); % x轴绘画
plot(ElecPrice_x,ElecPrice_Ture,'r',ElecPrice_x,ElecPrice_Predict,'g') %  绘制真实电价和预测电价比较图
%% 
% 平均误差模块
mae_list = abs(output_test - test_Y); %平均绝对误差的list
mae_list_x = 1:length(mae_list);
figure
plot(mae_list_x, mae_list)
mae = mean(abs(output_test - test_Y))





相关文章
|
1月前
|
开发框架 .NET 数据库
EF学习和使用(一)(Model First为例)
EF学习和使用(一)(Model First为例)
18 0
|
1月前
|
算法 知识图谱
数据包络分析(DEA)——SBM模型
数据包络分析(DEA)——SBM模型
308 0
|
6月前
|
机器学习/深度学习
BP神经网络应用案例(二)
BP神经网络应用案例
|
6月前
|
机器学习/深度学习 人工智能 知识图谱
BP神经网络应用案例(一)
BP神经网络应用案例
151 0
|
11月前
|
机器学习/深度学习 传感器 数据采集
【BP分类】基于BP神经网络的数据分类预测附matlab代码
【BP分类】基于BP神经网络的数据分类预测附matlab代码
|
机器学习/深度学习 传感器 算法
BP预测 | MATLAB实现FA-BP多输入单输出回归预测(萤火虫算法优化BP神经网络)
BP预测 | MATLAB实现FA-BP多输入单输出回归预测(萤火虫算法优化BP神经网络)
BP预测 | MATLAB实现FA-BP多输入单输出回归预测(萤火虫算法优化BP神经网络)
|
机器学习/深度学习 人工智能 JavaScript
FC怎么放模型进去?
FC怎么放模型进去?
102 0
|
机器学习/深度学习 传感器 算法
【BP分类】基于ADABOOST-BP算法实现数据分类附matlab代码
【BP分类】基于ADABOOST-BP算法实现数据分类附matlab代码
|
机器学习/深度学习 传感器 算法
BP预测 | MATLAB实现CS-BP多变量时间序列预测(布谷鸟搜索算法优化BP神经网络)
BP预测 | MATLAB实现CS-BP多变量时间序列预测(布谷鸟搜索算法优化BP神经网络)
|
机器学习/深度学习 PyTorch Serverless
假设测试数据集test_data为随机生成的,并设置小批次。model神经网络已经训练好了,怎么用MSE来做测试
其中,model表示已经训练好的PyTorch模型,torch.rand()函数用于生成测试数据集,torch.split()函数用于将测试数据集分成小批次,model(batch)用于对小批次的输入数据进行预测,torch.cat()函数用于将所有小批次的预测值拼接在一起,最后使用mean_squared_error()函数计算均方误差。注意,在计算均方误差之前,需要将测试数据集和预测值转换为NumPy数组并将它们从GPU中移动到CPU上。
126 0