基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

这篇具有很好参考价值的文章主要介绍了基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


各位同学好,今天和大家分享一下TensorFlow2.0深度学习中的一个小案例。

案例内容:现有348个气温样本数据,每个样本有8项特征值和1项目标值,进行回归预测,构建神经网络模型。完整代码及数据,文末获取,喜欢记得收藏、点赞。

1、数据获取

导入所需要的库文件,获取气温数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf
# 使用keras建模方法
from tensorflow.keras import layers
import warnings
warnings.filterwarnings('ignore')

#(1)数据获取
filepath = 'C:\\...\\temps.csv'
features = pd.read_csv(filepath)

temp_2代表前天的最高温度,temp_1代表昨天的最高温度,预测目标值为actual

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

2、数据可视化

我们绘制日期-温度曲线,首先需要将特征year、month、day组合在一起,拼接成一个字符串,再转变成一个datetime类型的数据。

# 处理时间数据,将年月日组合在一起
import datetime
# 获取年月日数据
years = features['year']
months = features['month']
days = features['day']

# 将年月日拼接在一起--字符串类型
dates = []  # 用于存放组合后的日期
for year,month,day in zip(years,months,days):
    date = str(year)+'-'+str(month)+'-'+str(day)  #年月日之间用'-'向连接
    dates.append(date)

# 转变成datetime格式
times = []
for date in dates:
    time = datetime.datetime.strptime(date,'%Y-%m-%d')
    times.append(time)
# 看一下前5行
times[:5]

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

处理好了x轴的数据,我们现在来对几个特征绘制曲线

# 可视化,对各个特征绘图
# 指定绘图风格
plt.style.use('fivethirtyeight')
# 设置画布,2行2列的画图窗口,第一行画ax1和ax2,第二行画ax3和ax4
fig,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,figsize=(20,10))

# ==1== actual特征列
ax1.plot(times,features['actual'])
# 设置x轴y轴标签和title标题
ax1.set_xlabel('');ax1.set_ylabel('Temperature');ax1.set_title('actual temp')
# ==2== 前一天的温度
ax2.plot(times,features['temp_1'])
# 设置x轴y轴标签和title标题
ax2.set_xlabel('');ax2.set_ylabel('Temperature');ax2.set_title('temp_1')
# ==3== 前2天的温度
ax3.plot(times,features['temp_2'])
# 设置x轴y轴标签和title标题
ax3.set_xlabel('Date');ax3.set_ylabel('Temperature');ax3.set_title('temp_2')
# ==4== friend
ax4.plot(times,features['friend'])
# 设置x轴y轴标签和title标题
ax4.set_xlabel('Date');ax4.set_ylabel('Temperature');ax4.set_title('friend')
# 轻量化布局调整绘图
plt.tight_layout(pad=2)

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

3、特征处理

首先我们需要划分特征值和目标值。在原数据中提取特征值和目标值,'actual’存放的是当日最高温度。

# 获取目标值y,从Series类型变成数组类型
targets = np.array(features['actual'])
# 获取特征值x,即在原数据中去掉目标值列,默认删除行,需要指定轴axis=1指向列
features = features.drop('axtual',axis=1)
# 把features从DateFrame变成数组类型
features = np.array(features)

由于特征值中存在字符串类型的数据,'week’列都是字符串,因此我们需要对特征值进行one-hot编码将字符串类型转变成数值类型

# week列是字符串,重新编码,变成数值型
features = pd.get_dummies(features)

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

处理完字符串数据以后,所有数据变成数值型。为防止由于数据单位不一,跨度大等问题导致的模型准确度不高的问题,对数值型数据进行标准化处理

# 导入标准化方法库
from sklearn import preprocessing
input_features = preprocessing.StandardScaler().fit_transform(features)

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

到此,对原始数据的处理结束,接下来构建神经网络模型。

4、构建网络模型

我们使用keras建模方法,常用参数如下:

activation: 激活函数,一般选relu

kernel_initializer, bias_initializer: 权重与偏置参数的初始化方法,有时候不收敛换个初始化方法就好了

kernel_regularizer, bias_regularizer: 权重与偏置的正则化

inputs: 输入

units: 神经元个数

所有参数设置方法的参考:Module: tf | TensorFlow Core v2.7.0 (google.cn)

(1)网络搭建

首先我们导入keras序列模型,tf.keras.Sequential(),按顺序一层一层添加网络层。layers代表不同层次的实现。

每个隐含层的神经元个数是随意改变的,大家可以自己去试,我们这里需要预测最高温度,因此输出值层只需要一个神经元。权重初始化方法各不相同,大家可以在上面那个文档中寻找合适的。

# 构建层次
model = tf.keras.Sequential()
# 隐含层1设置16层,权重初始化方法设置为随机高斯分布,加入正则化惩罚项
model.add(layers.Dense(16,kernel_initializer='random_normal',kernel_regularizer=tf.keras.regularizers.l2(0.01)))
# 隐含层2设置32层
model.add(layers.Dense(32,kernel_initializer='random_normal',kernel_regularizer=tf.keras.regularizers.l2(0.01)))
# 输出层设置为1,即输出一个预测结果
model.add(layers.Dense(1,kernel_initializer='random_normal',kernel_regularizer=tf.keras.regularizers.l2(0.01)))

(2)优化器和损失函数

接下来需要指定优化器和损失函数 model.compile(),在这里优化器使用梯度下降法,损失函数使用MSE均方误差。大家要根据自己的任务来选择,损失函数的选择对网络的结果影响很大。

# 优化器和损失函数
model.compile(optimizer=tf.keras.optimizers.SGD(0.001),loss='mean_squared_error')

(3)网络训练

制定完成后就可以开始训练了,网络训练函数 model.fit()。输入特征值input_features,目标值targets,validation_split=0.25指测试集在输入数据中抽取0.25用于测试,epochs指迭代次数100次,每一次迭代128个样本。

# ==3== 网络训练
model.fit(input_features,targets,validation_split=0.25,epochs=100,batch_size=128)

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

返回训练损失和测试损失,可看到迭代100次后,训练集的损失24.675和测试集的损失29.01相差不大,证明没有出现过拟合现象 。如果出现训练集的损失很小,测试集的损失很大,说明存在过拟合,需要调整参数。

(4)网络模型结构

我们也可以看一下我们构建的网络模型结构,model.summary(),隐含层1有240个参数,它是怎么计算的呢?输入层的shape为[348,14],14个特征;第一个全连接层W的shape为[14,16],16代表隐含层1的特征个数,偏置参数b的shape为[1,16],y=Wx+b。因此参数个数为14*16+16=240。

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

(5)预测结果

网络模型预测函数 model.predict()

# ==5== 预测模型结果
predict = model.predict(input_features)

我们这里对有所的样本都预测一下,来比较预测结果和实际结果的差异

5、结果展示

简单绘制一个散点图来看一下,可以看出预测结果和实际结果大体保持相同,稍微存在偏差。感兴趣的同学可以进一步进行特征工程、调节参数,来达到更好的效果。

# 真实值,蓝色实现
fig = plt.figure(figsize=(10,5))
axes = fig.add_subplot(111)
axes.plot(dates,targets,'bo',label='actual')
# 预测值,红色散点
axes.plot(dates,predict,'ro',label='predict')
axes.set_xticks(dates[::50])
axes.set_xticklabels(dates[::50],rotation=45)

plt.legend()
plt.show()

基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)

完整代码及数据

完整代码及数据已放置后台,按关键字回复即可

想加入技术交流,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、添加微信号:dkl88191,备注:来自CSDN+温度
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:温度文章来源地址https://www.toymoban.com/news/detail-490936.html

到了这里,关于基于TensorFlow 实战案例:气温预测(附 Python 完整代码和数据集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python环境下基于门控双注意力机制的滚动轴承剩余使用寿命RUL预测(Tensorflow模块)

    机械设备的寿命是其从开始工作持续运行直至故障出现的整个时间段,以滚动轴承为例,其寿命为开始转动直到滚动体或是内外圈等元件出现首次出现故障前。目前主流的滚动轴承RUL预测分类方法包含两种:一是基于物理模型的RUL预测方法,二是基于数据驱动的RUL预测方法。

    2024年02月22日
    浏览(51)
  • 目标检测YOLO实战应用案例100讲-基于特征融合和预测细化的遥感图像目标检测(中)

    目录 2.1.3 全连接层  2.1.4 激活函数   2.1.4.1 Sigmoid函数  2.1.4.2 Tanh函数  2.1.4.3 Re LU函数 

    2024年04月17日
    浏览(58)
  • 目标检测YOLO实战应用案例100讲-基于特征融合和预测细化的遥感图像目标检测(下)

    目录 4.2 无锚方法CenterNet概述  4.3 特征增强和预测细化网络  4.3.1 中间监督的堆叠沙漏网络 

    2024年04月11日
    浏览(52)
  • 时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)

    目录 引言 LSTM的预测效果图 LSTM机制 了解LSTM的结构 忘记门 输入门 输出门 LSTM的变体 只有忘记门的LSTM单元 独立循环(IndRNN)单元 双向RNN结构(LSTM) 运行代码 代码讲解 LSTM(Long Short-Term Memory)是一种常用的循环神经网络(RNN)模型,用于处理序列数据,具有记忆长短期的能力。

    2024年02月08日
    浏览(85)
  • 鸟类识别Python,基于TensorFlow卷积神经网络【实战项目】

    鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。 数据集选自加州理工学院200种鸟类

    2024年02月10日
    浏览(52)
  • Python数据分析案例36——基于神经网络的AQI多步预测(空气质量预测)

    不知道大家发现了没,现在的神经网络做时间序列的预测都是单步预测,即(需要使用X的t-n期到X的t-1期的数据去预测X的t期的数据),这种预测只能预测一个点,我需要预测X的t+1期的数据就没办法了,有的同学说可以把预测的结果X的t+1拿进来作为新的x去预测。。。我只能说这

    2024年01月19日
    浏览(54)
  • 神经网络气温预测

    #引用所需要的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import torch.optim as optim#优化器 #过滤警告 import warnings warnings.filterwarnings(“ignore”) %matplotlib inline features=pd.read_csv(‘temps.csv’) features.head() 0 2016 1 1 Fri 45 45 45.6 45 29 1 2016 1 2 Sat 44 45 45.7 44 61 2 2016 1 3

    2024年02月05日
    浏览(36)
  • Mnist分类与气温预测任务

    卷积层:原始输入中间提取有用的一个局部特征 激活函数:用于增加模型的一些非线性,可以让模型学习更加复杂模式 池化层:用于减少数据的维度 首先继承 nn.Module 类的一个子类 ConvNet , super 方法就是在调用 nn.Module 的一个 __init__ 方法,确保 __init__ 方法中定义的属性和方

    2024年02月15日
    浏览(28)
  • Python | 基于LendingClub数据的分类预测研究Part02——进一步分类研究+结论+完整详细代码

    本文利用Python对数据集进行数据分析,并用多种机器学习算法进行分类预测。 具体文章和数据集可以见我所发布的资源:发布的资源 前半部分:Python | 基于LendingClub数据的分类预测研究Part01——问题重述+特征选择+算法对比 在前文中,我们用 Logistic Regression 模型研究 Lending

    2023年04月21日
    浏览(36)
  • 搭建PyTorch神经网络进行气温预测

    数据表中 year,moth,day,week分别表示的具体的时间 temp_2:前天的最高温度值 temp_1:昨天的最高温度值 average:在历史中,每年这一天的平均最高温度值 actual:这就是我们的标签值了,当天的真实最高温度 friend:这一列可能是凑热闹的,你的朋友猜测的可能值,咱们不管它就好了

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包