背景:上一篇使用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',