BP神经网络实例及代码分析(气温预测)

本文通过Python代码详细介绍了如何用BP神经网络进行气温预测。文章首先定义了神经网络的结构和参数,接着初始化权值和阈值,然后读取并归一化历史温度数据。使用sigmoid激活函数,通过梯度下降法训练网络,并在测试集上评估模型性能。最后,文章提供了完整的源代码供读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:上一篇使用tensorflow实现神经网络,其中框架已封装好了一些知识点(如误差逆传播),不利于初学者理解。为更直观的展示神经网络算法本身,本篇不使用tensorflow,以基本的python代码,实现上一篇中的气温预测实例。大家可对比下两篇的差异,理解算法的同时,体会下tensorflow框架。(tensorflow实现https://blog.youkuaiyun.com/MrMaurice/article/details/90031937

代码功能:对山东某地区历史温度数据进行BP神经网络训练,通过前三小时温度数据,预测第四小时温度值。

数据来源:2016年4月份山东某地区温度数据,共30*24小时。1日到20日(20*24小时)数据为训练数据集,21到30日(10*24小时)数据为测试数据集。

1.定义神经网络结构及参数

选用典型的三层神经网路(输入层+一层隐含层+输出层),节点数设置为3-7-1,详细参数见程序:

d=3#输入节点个数
l=1#输出节点个数
q=2*d+1#隐层个数,采用经验公式2d+1
eta=0.5#学习率
error=0.002#精度
train_num=480#训练数据个数
test_num=240#测试数据个数

2. 初始化权值和阈值

输入层到隐含层的权值为w1,矩阵大小为d*q;隐含层到输出层的权值为w2,矩阵大小为q*l;隐含层阈值为b1,输出层阈值为b2。

w1=[[random.random() for i in range(q)] for j in range(d)]
w2=[[random.random() for i in range(l)] for j in range(q)]
b1=[random.random() for i in range(q)]
b2=[random.random() for i in range(l)]

3.读取温度数据

通过csv文件读取数据,并将网络的输入输出数据分组。csv文件数据排列为30*24行一列。文件链接:链接: https://pan.baidu.com/s/1-15ajI4TQI4pfKOqMTo0KA 提取码: 6ybg

dataset = pd.read_csv('tem.csv', 
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值