当前位置: 首页 > article >正文

r5:天气预测

- ** 本文为[365天深度学习训练营](https://mp.weixin.qq.com/s/o-DaK6aQQLkJ8uE4YX1p3Q) 中的学习记录博客**- ** 原作者[K同学啊](https://mtyjkh.blog.csdn.net/)**文章目录概要整体架构流程代码运行技术名词解释小结概要根据今天的天气数据预测明天是否会下雨Yes/No。这是一个典型的二分类问题。整体架构流程原始数据 (weatherAUS.csv)↓第一步数据探索 (EDA)↓第二步数据预处理↓第三步构建数据集↓第四步搭建神经网络↓第五步训练模型↓第六步结果可视化数据探索data.head() → 看前几行数据data.describe() → 看统计摘要data.dtypes → 看每列数据类型热力图 → 看各特征之间的相关性countplot → 看下雨/不下雨的数量分布crosstab → 看今天下雨和明天下雨的关联城市降雨率图 → 看哪些城市更容易下雨散点图 → 看气压和降雨的关系数据预处理问题1Date是字符串→ 解决拆分成year/Month/day三列数字问题2有缺失值→ 解决文本列 → 众数填充数值列 → 中位数填充特殊列 → 随机抽样填充问题3文本列模型不能用→ 解决LabelEncoder编码成数字Adelaide→0, Albany→1 ...问题4各列数值范围差异大→ 解决MinMaxScaler归一化到0~1构建数据集X特征 除RainTomorrow和day之外的所有列↓今天的气温、气压、风速、湿度...y标签 RainTomorrow列↓明天是否下雨0或1然后X, y → train_test_split → X_train, X_testy_train, y_test75%训练集 25%测试集搭建神经网络输入层接收今天的天气数据多个特征↓隐藏层124个神经元tanh激活学习特征组合↓隐藏层218个神经元tanh激活进一步提取规律↓隐藏层323个神经元tanh激活↓Dropout(0.5)随机关闭50%神经元防止过拟合↓隐藏层412个神经元tanh激活↓Dropout(0.2)随机关闭20%神经元↓输出层1个神经元sigmoid激活输出0~1的概率0.5 → 明天下雨(Yes)0.5 → 明天不下雨(No)代码运行import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import warnings warnings.filterwarnings(ignore) from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Activation, Dropout from tensorflow.keras.callbacks import EarlyStopping from sklearn.metrics import classification_report, confusion_matrix from sklearn.metrics import r2_score from sklearn.metrics import mean_absolute_error, mean_absolute_percentage_error data pd.read_csv(/Users/lilyj/Downloads/weatherAUS.csv) df data.copy() # 保留原始数据备份 data.head() # 查看前5行data.describe()data.dtypesdata[Date] pd.to_datetime(data[Date]) # 字符串 → 日期格式 data[year] data[Date].dt.year data[Month] data[Date].dt.month data[day] data[Date].dt.day data.head()data.drop(Date, axis1, inplaceTrue) # 拆分完后删除原始Date列 data.columns # 查看当前所有列名plt.figure(figsize(15, 13)) ax sns.heatmap(data.corr(numeric_onlyTrue), # 只对数值列计算忽略字符串列 squareTrue, # 每个格子都是正方形 annotTrue, # 在每个格子里显示具体数值 fmt.2f) # 显示数值保留两位小数 ax.set_xticklabels(ax.get_xticklabels(), rotation90) # 旋转x轴标签90度避免重叠 plt.show()sns.set(stylewhitegrid, paletteSet2) # whitegrid → 白色背景 横向网格线Set2 → 柔和配色自动分配给不同类别 fig, axes plt.subplots(1, 2, figsize(10, 4)) # 1 行 2 列 title_font {fontsize: 14, fontweight: bold, color: darkblue} # 左图RainTomorrow sns.countplot(xRainTomorrow, datadata, hueRainTomorrow, paletteSet2, axaxes[0], # ← 必须指定画在哪个子图 edgecolorblack) # 给柱子加上黑色边框更清晰 axes[0].set_title(Rain Tomorrow, fontdicttitle_font) axes[0].set_xlabel(Will it Rain Tomorrow?, fontsize12) axes[0].set_ylabel(Count, fontsize12) # 右图RainToday sns.countplot(xRainToday, datadata, hueRainToday, paletteSet2, axaxes[1], # ← 同样要指定 edgecolorblack) axes[1].set_title(Rain Today, fontdicttitle_font) axes[1].set_xlabel(Did it Rain Today?, fontsize12) axes[1].set_ylabel(Count, fontsize12) sns.despine() plt.tight_layout() plt.show()x pd.crosstab(data[RainTomorrow], data[RainToday]) xy x / x.transpose().sum().values.reshape(2,1) * 100 yy.plot(kindbar, figsize(4,3), color[#006666,#d279a6])x pd.crosstab(data[Location], data[RainToday]) y x / x.transpose().sum().values.reshape(-1, 1) * 100 # 每行归一化为百分比 y y.sort_values(byYes, ascendingTrue) # 按下雨率升序排列 color [#cc6699,#006699,#006666,#862d86,#ff9966] y.Yes.plot(kindbarh, figsize(15,20), colorcolor) # 水平柱状图data.columnsplt.figure(figsize(8, 6)) sns.scatterplot(datadata, xPressure9am, yPressure3pm, hueRainTomorrow)data.isnull().sum()/data.shape[0]*100 lst [Evaporation, Sunshine, Cloud9am, Cloud3pm] for col in lst: fill_list data[col].dropna() data[col] data[col].fillna(pd.Series(np.random.choice(fill_list, sizelen(data)))) s (data.dtypes object) object_cols list(s[s].index) object_cols for i in object_cols: data[i].fillna(data[i].mode()[0], inplaceTrue) # inplaceTrue直接修改原数据不需要重新赋值 t (data.dtypes float64) num_cols list(t[t].index) # .median()中位数 for i in num_cols: data[i].fillna(data[i].median(), inplaceTrue) from sklearn.preprocessing import LabelEncoder label_encoder LabelEncoder() for i in object_cols: data[i] label_encoder.fit_transform(data[i]) X data.drop([RainTomorrow, day], axis1).values y data[RainTomorrow].values X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.25, random_state42) scaler MinMaxScaler() scaler.fit(X_train) # 只用训练集计算最大最小值 X_train scaler.transform(X_train) # 训练集归一化 X_test scaler.transform(X_test) # 测试集用同样的标准归一 from tensorflow.keras.optimizers import Adam model Sequential() model.add(Dense(units24, activationtanh)) model.add(Dense(units18, activationtanh)) model.add(Dense(units23, activationtanh)) model.add(Dropout(0.5)) model.add(Dense(units12, activationtanh)) model.add(Dropout(0.2)) model.add(Dense(units1, activationsigmoid)) optimizer tf.keras.optimizers.Adam(learning_rate1e-4) model.compile(lossbinary_crossentropy, optimizeroptimizer, metrics[accuracy]) early_stop EarlyStopping(monitorval_loss, modemin, min_delta0.001, verbose1, patience25, restore_best_weightsTrue) model.fit(xX_train, yy_train, validation_data(X_test, y_test), verbose1, callbacks[early_stop], epochs10, batch_size32)import matplotlib.pyplot as plt acc model.history.history[accuracy] val_acc model.history.history[val_accuracy] loss model.history.history[loss] val_loss model.history.history[val_loss] epochs_range range(10) plt.figure(figsize(14, 4)) # 左图准确率曲线 plt.subplot(1, 2, 1) plt.plot(epochs_range, acc, labelTraining Accuracy) plt.plot(epochs_range, val_acc, labelValidation Accuracy) plt.legend(loclower right) plt.title(Training and Validation Accuracy) # 右图损失曲线 plt.subplot(1, 2, 2) plt.plot(epochs_range, loss, labelTraining Loss) plt.plot(epochs_range, val_loss, labelValidation Loss) plt.legend(locupper right) plt.title(Training and Validation Loss) plt.show()小结收集澳大利亚各城市的历史天气数据 → 清洗处理 → 喂给神经网络学习 → 神经网络找到今天天气特征和明天是否下雨之间的规律→ 用这个规律预测未来是否下雨

相关文章:

r5:天气预测

- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/o-DaK6aQQLkJ8uE4YX1p3Q) 中的学习记录博客** - **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 文章目录 概要整体架构流程代码运行技术名词解释小…...

TimeGAN实战:用对抗网络生成高保真时间序列数据

1. TimeGAN:当时间序列遇上生成对抗网络 第一次听说TimeGAN这个概念时,我正在处理一批金融交易数据。客户要求我们开发一个高频交易预测模型,但原始数据涉及商业机密,能拿到的样本量只有正常需求的1/10。当时试过传统的数据增强方…...

忍者像素绘卷微信小程序集成指南:轻量API调用与像素输出适配

忍者像素绘卷微信小程序集成指南:轻量API调用与像素输出适配 1. 项目概述与核心价值 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工具,专为16-Bit复古游戏美学风格设计。它通过轻量级API服务,让开发者能够快速将像素艺术生成能…...

TempleOS 技术解析:从神圣代码到单地址空间设计的独特哲学

1. TempleOS的诞生:当代码遇见信仰 第一次听说TempleOS时,我正泡在技术论坛里闲逛。这个操作系统的名字就透着股神秘感——"神殿操作系统"。点开详细介绍后更震惊了:这居然是一个程序员声称按照"上帝指示"开发的系统&…...

Pixel Language Portal 集成 Visual Studio Code:智能代码补全插件开发实战

Pixel Language Portal 集成 Visual Studio Code:智能代码补全插件开发实战 1. 为什么开发者需要智能代码补全 想象一下这样的场景:凌晨两点,你正在赶一个紧急项目,手指在键盘上飞舞,但突然卡在一个复杂的函数实现上…...

Figma设计稿秒变Vue代码?实测Trae AI的“图像转代码”功能,还原度到底有多高

Figma设计稿秒变Vue代码?实测Trae AI的"图像转代码"功能还原度与实战应用 设计师与前端开发者的协作痛点由来已久。当Figma画布上精美的界面设计需要转化为实际可运行的代码时,往往意味着数小时的像素级测量、CSS编写和响应式调试。这种设计到…...

实战教你用美股api获取实时行情与报价

前几天我在整理投资数据,突然发现自己平时关注的几支热门美股,价格波动比新闻还快。光靠网页刷新完全跟不上节奏,尤其是NVDA、META这样的科技股,几分钟就能有明显变化。想随时看到最新行情,又不想盯着网页刷新&#xf…...

Alpine Linux在WSL中的生产力配置:zsh美化+Rust环境搭建

Alpine Linux在WSL中的生产力配置:zsh美化Rust环境搭建 在Windows Subsystem for Linux (WSL)生态中,Alpine Linux以其轻量级和安全性逐渐成为开发者的新宠。本文将带你打造一个兼具美观与高效的Alpine开发环境,特别适合追求极简主义又不愿牺…...

5大核心优势!PingFangSC字体配置完全指南:从安装到设计工具深度应用

5大核心优势!PingFangSC字体配置完全指南:从安装到设计工具深度应用 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在数字设计领…...

Delphi网络编程实战:UDP通信与多线程网络优化详解

前两篇文章分别讲解了Delphi中基于Indy组件的TCP点对点通信、HTTP/HTTPS接口交互,覆盖了可靠连接、Web对接两大常用场景。本篇将深入讲解UDP通信,同时补充多线程网络编程、数据传输防护、常见故障排查等进阶内容,补齐Delphi网络开发的核心模块…...

批量加密RAR文件超简单!WinRAR自动加密技巧

Rar压缩包是大家经常使用的文件,并且可以进行加密,也是一种文件加密方式,那么当你有很多文件都需要压缩加密,按照正常加密方法来说,我们需要重复操作多次才能实现。其实我们可以使用自动加密功能来完成批量加密。 不过…...

实战演练:基于Copaw下载的博客代码,在快马平台上快速构建并部署可访问的全栈应用

今天想和大家分享一个实战经验:如何基于Copaw下载的代码,在InsCode(快马)平台上快速构建并部署一个全栈博客应用。整个过程非常流畅,特别适合想快速验证想法的开发者。 项目背景与需求分析 最近在Copaw上找到一个博客系统的代码骨架&#x…...

告别重复造轮子:用快马AI一键生成SpringBoot通用后台管理模块

最近在做一个后台管理系统的项目,发现每次从零开始搭建SpringBoot框架都要重复写很多样板代码,特别浪费时间。后来尝试用InsCode(快马)平台的AI生成功能,效率提升了好几倍。今天就来分享下如何快速生成SpringBoot通用后台模块。 1. 后台管理…...

SuperSplat部署完全指南:从开发到生产环境的终极教程

SuperSplat部署完全指南:从开发到生产环境的终极教程 【免费下载链接】super-splat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/super-splat SuperSplat是一款基于Web的免费开源3D高斯泼溅编辑器,专为检查、编辑、优…...

让AI成为开发伙伴:调用快马模型为养龙虾系统添加智能预测与问答功能

最近在开发一个养龙虾的智能决策系统,发现很多功能模块如果纯手写会非常耗时。尝试用AI辅助开发后,效率提升了不少,这里分享下具体实现思路和踩坑经验。 生长预测模块的实现 这个模块需要根据历史水温、投喂量等数据预测龙虾未来一周的生长情…...

突破音乐加密限制:Unlock Music实现跨平台音频自由解决方案

突破音乐加密限制:Unlock Music实现跨平台音频自由解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: …...

3步搞定YOLO人脸检测:从零到生产级应用的完整实践指南

3步搞定YOLO人脸检测:从零到生产级应用的完整实践指南 【免费下载链接】yolo-face YOLO Face 🚀 in PyTorch 项目地址: https://gitcode.com/gh_mirrors/yo/yolo-face YOLO人脸检测技术正在改变计算机视觉应用的开发方式,无论你是想构…...

食品批发厂家口碑推荐榜

在食品批发行业,选择一家口碑良好的厂家至关重要。优质的食品批发厂家不仅能提供高品质的产品,还能保障稳定的供应和良好的售后服务。今天,我们就来为大家推荐一些口碑出众的食品批发厂家,其中惠州市佳德旺食品有限公司表现尤为突…...

Java开发者指南:CV_UNet图像着色模型集成实战

Java开发者指南:CV_UNet图像着色模型集成实战 1. 引言 作为一名Java开发者,你可能经常遇到需要处理图像着色的场景。比如老照片修复、黑白影像上色,或者给设计稿添加色彩。传统方法要么效果一般,要么需要深厚的技术背景。现在有…...

局域网内Windows时间同步配置

本文详细介绍了如何配置NTP服务器和工作站计算机进行时间同步,包括在服务器上启用NTP服务,调整同步设置,以及在海康威视录像机上的应用。同时提醒注意防火墙配置问题。 一、配置NTP服务器 1、在局域网内找一台时间可靠的计算机或服务器 做为N…...

HCPL-0700-000E,低输入电流、高增益且与高安全隔离性能的光耦

型号介绍今天我要向大家介绍的是 Broadcom 的光耦——HCPL-0700-000E。它的内部结构就像一个高效的“信号转换站”,结合了一个发光二极管和一个集成的高增益光子探测器。光电二极管和输出级采用独立引脚设计,当输入端接收到电流时,LED 会发出…...

深入RK3588 NPU架构:从NVDLA远亲到CNN加速器的设计取舍与性能真相

RK3588 NPU架构深度解构:CNN加速器的设计哲学与性能边界 当一块指甲盖大小的芯片宣称能提供6 TOPS的AI算力时,我们不禁要问:这数字背后隐藏着怎样的工程智慧与妥协?RK3588的NPU模块正引发这样的思考——它既非纯粹的学术创新&…...

N_m3u8DL-CLI-SimpleG:让M3U8视频下载变得简单高效的图形化工具

N_m3u8DL-CLI-SimpleG:让M3U8视频下载变得简单高效的图形化工具 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 在数字内容日益丰富的今天,我们经常遇到需…...

3大场景解放双手:SteamShutdown智能管理下载与自动控制电脑的完整方案

3大场景解放双手:SteamShutdown智能管理下载与自动控制电脑的完整方案 【免费下载链接】SteamShutdown Automatic shutdown after Steam download(s) has finished. 项目地址: https://gitcode.com/gh_mirrors/st/SteamShutdown 你是否曾在深夜开启游戏下载后…...

VideoAgentTrek-ScreenFilter快速开始:10分钟完成Docker部署与API测试

VideoAgentTrek-ScreenFilter快速开始:10分钟完成Docker部署与API测试 你是不是也对那些能自动分析视频、识别屏幕内容的AI工具感到好奇?今天咱们就来聊聊VideoAgentTrek-ScreenFilter,一个专门用来处理视频中屏幕内容的模型。听起来挺酷&am…...

2026年选鱼鹰,哪个厂家更靠谱?一文为你揭晓好用之选!

在水产养殖领域,鱼鹰是一种备受关注的养殖品种,其市场需求也在不断增长。选择一家靠谱的鱼鹰供应厂家至关重要,它不仅关系到鱼鹰的品质和健康,还会影响到养殖的效益和未来发展。在众多的厂家中,济宁百鸿养殖有限公司脱…...

攻克Switch 19.0.1系统Atmosphere启动故障:从诊断到优化的完整方案

攻克Switch 19.0.1系统Atmosphere启动故障:从诊断到优化的完整方案 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 在Switch主机…...

终极指南:如何使用IEA-15-240-RWT 15兆瓦海上风力涡轮机参考模型开启风能研究

终极指南:如何使用IEA-15-240-RWT 15兆瓦海上风力涡轮机参考模型开启风能研究 【免费下载链接】IEA-15-240-RWT 15MW reference wind turbine repository developed in conjunction with IEA Wind 项目地址: https://gitcode.com/gh_mirrors/ie/IEA-15-240-RWT …...

5分钟学会使用OrigamiSimulator:实时WebGL折纸模拟器完全指南

5分钟学会使用OrigamiSimulator:实时WebGL折纸模拟器完全指南 【免费下载链接】OrigamiSimulator Realtime WebGL origami simulator 项目地址: https://gitcode.com/gh_mirrors/or/OrigamiSimulator OrigamiSimulator是一款基于WebGL的实时折纸模拟器&#…...

3步解决字幕处理90%的麻烦:BiliBiliCCSubtitle效率革命

3步解决字幕处理90%的麻烦:BiliBiliCCSubtitle效率革命 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 开篇:三个真实场景的效率反差 场景…...