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))





相关文章
|
Java 对象存储
|
前端开发
VUE3.0 在父子组件中相互触发组件的函数方法
VUE3.0 在父子组件中相互触发组件的函数方法
529 0
|
11月前
|
监控 Java Sentinel
Hystrix和Sentinel有什么异同
Hystrix 和 Sentinel 是提升微服务架构稳定性的流行组件,均支持服务熔断与限流,提供实时监控。Hystrix 通过线程池和信号量实现服务隔离,Sentinel 基于流量控制和系统负载保护,各有特色。
416 0
|
数据采集 XML API
淘宝商品评论数据采集教程丨淘宝商品评论数据接口(Taobao.item_review)
**摘要:** 本教程指导如何使用淘宝(Taobao.item_review)接口采集商品评论。步骤包括注册开发者账号,创建应用获取API密钥,发送请求(如num_iid, page, size参数),解析JSON或XML返回数据,并遵循使用规则与安全注意事项。接口允许获取商品评论列表,含评论内容、评论者信息等,适用于数据分析和市场研究。务必保护API密钥并遵守使用政策。
1166 1
|
机器学习/深度学习 算法 计算机视觉
【YOLOv10改进 -卷积Conv】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
资源调度 算法 数据可视化
t_SNE 非线性降维基础原理
本文记录了个人关于 非线性降维算法 t-SNE(t-Distributed Stochastic Neighbor Embedding)的学习理解,以供参考学习
582 0
|
存储 人工智能 OLAP
深度|大模型时代下,基于湖仓一体的数据智能新范式
本次文根据峰会演讲内容整理:分享在大模型时代基于湖仓一体的数据产品演进,以及我们观察到的一些智能开发相关的新范式。
|
API 数据安全/隐私保护 Android开发
【SWT】常用代码及接口(一)
【SWT】常用代码及接口(一)
390 0
|
Kubernetes Cloud Native 数据库
云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
814 0
|
关系型数据库 MySQL 数据库
MySQL索引与性能优化:代码实现指南
本文以代码实现为基础,深入探讨了MySQL索引与性能优化的关键概念。通过具体的示例,读者可以了解索引的作用与类型,学会创建和管理索引,掌握查询性能优化策略以及使用EXPLAIN命令分析查询计划。通过实际的代码操作,读者将更直观地理解如何利用索引提高查询效率,优化查询语句和连接操作,以及通过查询计划分析发现性能瓶颈。通过这些实用技巧,读者将能够在数据库操作中获得更出色的性能表现,为应用程序的高效运行提供有力支持。
817 0