跟姥爷深度学习1 浅用tensorflow做个天气预测

news2024/11/9 10:09:37

一、前言

最近人工智能、深度学习又火了,我感觉还是有必要研究一下。三年前浅学了一下原理没深入研究框架,三年后感觉各种框架都成熟了,现成的教程也丰富了,所以我继续边学边写。原教程链接:

第一章:tensorflow安装与简介课程简介_哔哩哔哩_bilibili

所以准备出个系列的教程,给不耐烦看视频或者只是想浅了解一下的同学。我选的框架tensorflow,据说GPT也是用的这个,应该是比较大众化的了。

二、前序准备

1.开发环境

(1)Python3.8

(2)Anaconda3

(3)Tensorflow

(4)Numpy

(5)Pandas

(6)Sklearn

先依次安装好上面的软件和包,其中python3.8和Anaconda3是直接下载安装,如果官方链接比较慢,可以搜下三方的源安装。其中Anaconda3不是必须的,用这个工具是因为确实挺香的。

剩下的3-6都是pip安装的包,注意使用Anaconda3的话就在Anaconda Prompt里使用pip命令,如果是其他集成环境或者原生的python环境,直接就在cmd里使用pip安装。

 

pip安装时可能会遇到下载特别慢的情况,建议使用国内源,方法参考下面链接:

pip install安装python第三方库失败,该怎么办?

实际安装过程可能会比较曲折,需要大家慢慢研究了,一般来说多搜索下都能解决问题。比如安装Sklearn不是pip install sklearn(虽然也能安装上另外一个不相干的包),实际应该用:

pip install scikit-learn

类似的坑多的很,一时半会也列不完,反正也是花了一个晚上才算是把开发环境给搞定。

2.数据准备

这次我们是要做天气预测,那自然是要弄到历史的天气数据。有三个路径,一是购买打包好的大数据,看了下便宜的都要好几千。二是网上爬数据,参考下面的链接:

上海1月份天气|上海1月份气温|上海2011年1月份历史天气—全球天气网

这个网站从2011年1月到最新的天气数据都有,可以自己爬下来,推荐使用“八爪鱼”,还是挺好用。

第三个路径就是做伸手党,正好我手上有上海的数据,链接在文章末尾。

我手上的这份数据分为“训练集”和“验证集”两个文件,直观来看训练集就是用于模型训练,验证集就是使用训练好的模型来预测试试,数据的格式一样,在使用时需要裁剪一下。

 

各字段的意思看名字就知道了,其中avg指的是当日平均温度,avg_befor1指的是昨天的平均温度,avg_befor2前天的,依次类推,一共回溯7天的。这个模型也就是用前7天的平均气温来预测当天的平均温度。

三、构建模型

1.读入待训练的数据

(完整代码跟前面天气数据放一起了)

 

从上图,我们可以看到读入了4429行数据,每行有13列,这样的数据不能直接使用,需要裁剪一下。

2.数据裁剪

 

这里我们做了3个操作。

1)是将前7行有null的数据删除

2)是将avg这一列单独存起来了,用于后面的模型训练。

3)将high、low、avg三列从数据集中删除,因为我们是使用“历史数据”来预测当日的平均温度,这三列都属于当日数据所以要删除。

3.数据预处理

 

这里做了2个操作。

1)将数据集转化为array的形式,这样TensorFlow才能处理(自动去掉了title的内容)

2)将数据做归一化,主要是为了方便后面的模型训练,简单来说就是将15、20、30这些数字转化为-1到1之间的数字,可以参考下面这个链接。

https://blog.csdn.net/qq_51392112/article/details/129091683

4.构建模型

 

这里我们构建了一个16>32>1的神经网络模型,其中16、32、1指的是每一层的神经元数量,第一层与第二层的神经元数量无所谓可以随便写,第三层的1与预测的结果相对应,也就是我们使用前7天的平均温度,预测的是今天这“一个”平均温度。如果你预测的是当天最高温和最低温,就需要将第三层的1修改为2了。这里因为我们只预测1个结果(当天的平均温度),所以输出只需要1个。

其中model.compile是对神经网络进行配置,主要参数含义如下:

 

 

解释起来比较复杂,这里我们只管先用着,反正就是一些可以选择的参数,对模型的训练可能有很大影响,也可能没啥影响,一些资深人事主要工作就是调调这里改改哪里。

如果想改改参数看看效果,可以参考下面的链接:

https://blog.csdn.net/chaojishuai123/article/details/114580892

5.训练

 

model.fit里也有好几个参数,详细如下:

1)Input_features,输入的训练数据集

2)labels_avg,前面我们将avg列单独保存了起来就是为了用在这里

3)Validation_split=0.1,将其中的10%数据用于模型验证,剩下的90%用于模型训练

4)Epochs,迭代次数,也就是这些数据会被用于模型训练多少次

5)batch_size,每一次训练使用的数据量

除了features、labels,其他三个参数大家可以随意调调看对结果的影响。

上面截图中,注意有loss和val_loss两个结果,其中loss是模型训练后的“损失”,你可以理解loss越小则模型对你输入的数据匹配度越高(越契合你的训练数据)。Val_loss是模型验证的“损失”,也就是前面我们设置的那10%,这个值越小说明你的模型验证的结果也不错。

但Loss也不是越小越好,太小说明模型对你输入的数据产生了过拟合,可能结果是训练数据很不错但使用起来就很差。所以我们追求的其实是loss和val_loss的综合解,即在loss较低的情况下,val_loss也不太高。

6.输入待预测的数据

 

这里的操作与前面训练集其实很像,都是将数据读入后进行裁剪,同时将avg列另外存起来。最后将裁剪后的数据进行预处理。

7.预测

model1就是我们构建并训练好的模型了,现在我们可以使用前面准备好的训练集了。

 

下面我们再看看实际温度,只能说是毫无关系,所以天气预报为什么不准呢对吧,说明根本就无法预测。不死心的同学可以试试自己修改下参数。

 

四、回顾

这是一次不太成功的示范,实际上我花了不少时间试图从最高温、最低温、平均温度、历史温度等找到温度变化的规律,但真的是没弄成。说明在深度学习中找对目标和数据集很重要啊。数据集和完整代码见下面的链接:

文件分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux- 系统随你玩之--玩出花活的命令浏览器下

文章目录1、背景2、常规操作2.1、测试相关2.1.1、修改 HTML 请求标头2.1.2、 模拟不同浏览器发出2.1.3、重定向2.2、 下载相关操作2.2.1、 后台下载2.2.2、设置下载重试次数2.2.3、过滤指定格式下载2.2.4、限制总下载文件大小2.2.5、匿名FTP下载2.2.6、FTP认证下载2.2.7、利用代…

(链表专题) 725. 分隔链表 ——【Leetcode每日一题】

725. 分隔链表 给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。 这 k 个部分应该按照在链表中出现的顺…

亚马逊 CodeWhisperer: 个人免费的类似GitHubCopilot能代码补全的 AI 编程助手

1、官网 AI Code Generator - Amazon CodeWhisperer - AWS 官方扩展安装教程 2、安装VSCode 下载安装VSCode 3、VSCode安装CodeWhisperer插件 安装VSCode插件 - AWS Toolkit主侧栏,点击AWS ,展开CodeWhisperer,点击Start 在下拉菜单中点…

【100个 Unity实用技能】 | C# 中关于补位的写法 PadLeft,PadRight 函数

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

LeetCode_101

内容提要 贪心算法 保证每次操作都属局部最优的,从而使得最后的结果是全局最优 全局结果是局部结果的简单求和,且局部结果互不相干 分配问题 分发饼干 455 简单 分发糖果 135 困难 先从左往右遍历一遍,如果右边孩子的评分比左边的高…

TryHackMe-Year of the Jellyfish(linux渗透测试)

Year of the Jellyfish 请注意 - 此框使用公共 IP 进行部署。想想这对你应该如何应对这一挑战意味着什么。如果您高速枚举公共 IP 地址,ISP 通常会不满意… 端口扫描 循例nmap 扫描结果中还有域名,加进hosts FTP 枚举 尝试anonymous Web枚举 有三个端…

LoRa无线通信技术之CAD介绍

信道活动检测 Lora扩频调制技术的使用在确定信道是否已被可能低于接收机噪声底限的信号。在这种情况下使用常规的RSSI方式判断显然是不切实际的。为此,信道活动检测器用于检测其他LoRaTM信号的存在。下图为通道活动检测(CAD)过程: 工作原理 Lora信道活动检测模式被设计成以最…

一站式指标平台 Kyligence Zen 功能详解

近日,Kyligence 正式发布一站式指标平台 Kyligence Zen GA 版本。其基于 Kyligence 核心 OLAP 能力打造,融合了领先企业建设指标平台的丰富实践,具备 ZenML 指标语言、指标目录、Excel / WPS 直连分析、模板市场等创新能力,将以简…

GPU受限,国内AI大模型能否交出自己的答卷?

继百度之后,阿里、华为、京东、360等大模型也陆续浮出水面,大模型军备竞赛正式开启。 4月7日,阿里云宣布自研大模型“通义千问”开始邀请企业用户测试体验。 4月8日,华为云人工智能领域首席科学家田奇现身《人工智能大模型技术高峰…

一起学 WebGL:图元的类型

大家好,我是前端西瓜哥,今天来说说 WebGL 中的三种图元。 在 WebGL 中,图元有三种:点、线、以及三角形。 绘制的 API 为: gl.drawArrays(mode, first, count)这里的 mode 就是要绘制的图元类型。 我们绘制 4 个点&…

办公协作效率想提质增效,可借助开源大数据工具!

在信息爆炸式发展的今天,提升办公协作效率,让各部门的信息有效互通起来,做好数据管理,已经成为众企业提升竞争力的方式方法。那么,如果想要提升办公效率,就需要了解开源大数据工具了。在数字化发展进程中&a…

HTTP协议概述 | 简析HTTP请求流程 | HTTP8种请求方法

目录 🌏 HTTP的简单介绍 何为HTTP HTTP1.0与HTTP1.1 🌏 HTTP的请求方法 1、OPTIONS 2、HEAD 3、GET 4、POST 5、PUT 6、DELETE 7、TRACE 8、CONNECT 🌏 HTTP的工作原理 🌏 HTTP请求/响应的步骤 1、客户端连接到Web…

AI 芯片的简要发展历史

随着人工智能领域不断取得突破性进展。作为实现人工智能技术的重要基石,AI芯片拥有巨大的产业价值和战略地位。作为人工智能产业链的关键环节和硬件基础,AI芯片有着极高的技术研发和创新的壁垒。从芯片发展的趋势来看,现在仍处于AI芯片发展的…

【案例教程】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术

【原文链接】: 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537049&idx3&sn31ef342c4808aed6fee6ac108b899a33&chksmfe6897f3c91f1ee5c4fa8e4eeea34…

JDBC概述三(批处理+事务操作+数据库连接池)

一(批处理) 1.1 批处理简介 批处理,简而言之就是一次性执行多条SQL语句,在一定程度上可以提升执行SQL语句的速率。批处理可以通过使用Java的Statement和PreparedStatement来完成,因为这两个语句提供了用于处理批处理…

IO多路复用机制详解

高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blo…

【WebGIS实例】(7)MapboxGL绘制不同颜色的Symbol图标

前言 在上一篇实例博客中(MapboxGL绘制简易气泡图)我们绘制了一个简易的单色气泡图,现在需求升级了。我们需要为气泡加载不同的颜色。 而要实现这个效果,其实相当简单,直接利用Mapbox提供的SDF渲染方法。 官网教程参考…

当星辰天合 SDS 遇见 Elastic

4 月 8 日,“Elastic 中国开发者大会 2023 ”在深圳举行,XSKY星辰天合对象存储产品总监邹博引代表星辰天合参加了此次大会,并做了主题为《SDS 与 Elasticsearch 的碰撞》的分享。“Elastic 中国开发者大会 2023 ”是由 Elastic、Elastic 中文…

【三十天精通Vue 3】 第三天 Vue 3的组件详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 组件的概述1. Vue 3 的组件系统2. Vue 3 组件的特点…

【CE】Mac下的CE教程Tutorial:进阶篇(第9关:共享的代码)

▒ 目录 ▒🛫 导读开发环境1️⃣ 第9关:共享的代码翻译操作🛬 文章小结📖 参考资料🛫 导读 开发环境 版本号描述文章日期2023-03-操作系统MacOS Big Sur 11.5Cheat Engine7.4.3 1️⃣ 第9关:共享的代码 翻…