TensorFlow项目练手——天气预测

这篇具有很好参考价值的文章主要介绍了TensorFlow项目练手——天气预测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目介绍

通过以往的天气数据和实际天气温度,做一次回归预测,模型的输入是当前的所有特征值,而模型的输出是当天的实际天气温度

字段分析

目前已有的数据有348条svc数据,他们的字段分别代表

  • year:年
  • month:月
  • day:日
  • week:周几
  • temp_2:前天天气
  • temp_1:昨天天气
  • average:在历史中,每年这一天的平均最高温度值
  • actual:当天实际的温度(答案)
  • friend:这一列可能是凑热闹的,你的朋友猜测的可能值,咱们不管它就好了

一、准备数据

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')
 
filepath = 'temps.csv'
features = pd.read_csv(filepath) # 读取csv数据
features.head() # 查看数据格式

TensorFlow项目练手——天气预测

2、数据可视化

将年月日转成标准格式

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)
# 看一下前10行
times[:10]

TensorFlow项目练手——天气预测

将年月日作为x轴,将数据绘制到图上

# 指定绘图风格
plt.style.use('fivethirtyeight')
# 设置画布,22列的画图窗口,第一行画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项目练手——天气预测

3、数据预处理

由于Week字段其内容为字符串,需要将其统一变成数字的形式

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

TensorFlow项目练手——天气预测

4、提取特征值

我们将需要预测的标签值取出并从表中移除,此时数据从15个特征变成14个特征

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

TensorFlow项目练手——天气预测

5、数据归一化

为防止由于数据单位不一,跨度大等问题导致的模型准确度不高的问题,对特征数据进行标准化处理

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

TensorFlow项目练手——天气预测

二、构建网络模型

1、设计神经网络模型层

Dense:全连接层,公式是y=Wx+b

# 构建层次
model = tf.keras.Sequential()
# 隐含层1设置16层,权重初始化方法设置为随机高斯分布,加入正则化惩罚项l2
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、设计优化器和损失函数

优化器使用梯度下降法SGD,损失函数使用均方误差MSE

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

3、开始训练数据

epochs=100训练100次

# 开始训练
model.fit(input_features,labels,validation_split=0.25,epochs=100,batch_size=128)

TensorFlow项目练手——天气预测

4、查看模型结构

model.summary()

TensorFlow项目练手——天气预测

隐含层1有240个参数,它是怎么计算的呢?输入层的shape为[348,14],14个特征;第一个全连接层W的shape为[14,16],16代表隐含层1的特征个数,偏置参数b的shape为[1,16],y=Wx+b。因此参数个数为14*16+16=240。

5、预测模型结果

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

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

6、结果可视化

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

# 真实值,蓝色实现
fig = plt.figure(figsize=(10,5))
axes = fig.add_subplot(111)
axes.plot(dates,labels,'b-',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项目练手——天气预测文章来源地址https://www.toymoban.com/news/detail-479888.html

源代码

  • 源码查看

到了这里,关于TensorFlow项目练手——天气预测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【小项目】微信定时推送天气预报Github项目使用及原理介绍-包含cron、天气预报、常用api...

    一、资料链接 1、github地址 https://github.com/qq1534774766/wx-push 2、教程地址 https://blog.csdn.net/qq15347747/article/details/126521774 3、易客云API(自动发送天气) https://yikeapi.com/account/index 4、apispace-各种接口(名人名言) https://www.apispace.com/console/api?orgId=6356 5、微信公众平台 https://mp.weixin.qq.com/d

    2024年02月02日
    浏览(46)
  • 毕设 - 天气数据分析与可视化 天气预测 lstm

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月06日
    浏览(52)
  • 计算机竞赛 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测

    🔥 优质竞赛项目系列,今天要分享的是 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 时间序列预测是一类比较困难的预测问题。 与常见的回归预测

    2024年02月07日
    浏览(48)
  • 大数据毕业设计 LSTM时间序列预测算法 - 股票预测 天气预测 房价预测

    今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 时间序列预测是一类比较困难的预测问题。 与常见的回归预测模型不同,输入变量之间的“序列依赖性”为时间序列问题增加了复杂度。 一种能够专门用来处理序列依赖性的神经网络被称为 递归

    2024年02月05日
    浏览(65)
  • 挑战杯 基于LSTM的天气预测 - 时间序列预测

    🔥 优质竞赛项目系列,今天要分享的是 机器学习大数据分析项目 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate ​ df = pd.read_csv(‘/home/kesci/input/jena1246/jena_climate_2009_2016.csv’) df.head() 如上所示,每1

    2024年02月21日
    浏览(51)
  • 深度学习时间序列预测项目案例数据集介绍

    💥项目专栏:【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码+数据集+原理介绍) 🌈 本专栏使用的数据集为 风速预测的时间序列数据 ,该数据集包含一个气象站内嵌入的5个天气变量传感器阵列的 6574 个每日平均样本。该设备位于油

    2023年04月15日
    浏览(46)
  • 计算机竞赛 基于LSTM的天气预测 - 时间序列预测

    🔥 优质竞赛项目系列,今天要分享的是 机器学习大数据分析项目 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate ​ df = pd.read_csv(‘/home/kesci/input/jena1246/jena_climate_2009_2016.csv’) df.head() 如上所示,每1

    2024年02月11日
    浏览(49)
  • 调用万维易源实现天气预测

    房庚晨,男,西安工程大学电子信息学院,22级研究生 研究方向:机器视觉与人工智能 电子邮件:1292475736@qq.com 王泽宇,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组 研究方向:机器视觉与人工智能 电子邮件:2717124491@qq.com 天气预测就是应用大气变

    2024年02月09日
    浏览(44)
  • 基于Android实现的天气预测APP

    网络数据源使用 Retrofit 库访问彩云 API 提供的 Webservice 接口来实现。 Retrofit 通过封装络请求和数据解析,极地提升了开发效率。并且持定义数据解析在封装所有网络请求的 API 时,我使用了协程技术来简化 Retrofit 回调的写法。 1.1.1 数据存储 本地数据源使用 SharedPreferences 持久

    2024年02月01日
    浏览(48)
  • 毕业设计-基于 Python 的天气预测系统

    目录 前言 课题背景和意义 实现技术思路 一、Python 二、网络爬虫 三、基于 Python 的天气预测系统 四、系统测试 五、总结 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。

    2024年02月05日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包