【关于时间序列的ML】项目 5 :用机器学习预测天气

这篇具有很好参考价值的文章主要介绍了【关于时间序列的ML】项目 5 :用机器学习预测天气。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

【关于时间序列的ML】项目 5 :用机器学习预测天气​​

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

用于预测天气的天气数据集

数据准备

可视化

分离我们的目标以预测天气

训练测试拆分

基线平均绝对误差

训练模型预测天气

预测天气的机器学习模型的模型评估


在本文中,我将训练一个模型来使用机器学习预测天气。我们将表现得好像我们无法访问天气预报一样。我们可以获得一个世纪的全球温度历史平均值,包括全球最高温度、全球最低温度以及全球陆地和海洋温度。综上所述,我们知道这是一个监督回归机器学习问题。

用于预测天气的天气数据集

首先,我们需要一些数据,我用来通过机器学习预测天气的数据是从世界上最负盛名的研究型大学之一创建的,我们将假设数据集中的数据是真实的。您可以从此处轻松下载此数据。

现在,让我们开始阅读数据集:

import pandas as pd
global_temp = pd.read_csv("GlobalTemperatures.csv")
print(global_temp.shape)
print(global_temp.columns)
print(global_temp.info())
print(global_temp.isnull().sum())

数据准备

不幸的是,我们还没有达到可以将原始数据输入模型并让它发回响应的地步。我们将需要进行一些小的编辑,以将我们的数据放入机器学习模型中。

数据准备的具体步骤将取决于所使用的模型和收集的数据,但需要进行一定数量的数据处理。首先,我将创建一个名为 wrangle () 的函数,我将在其中调用我们的数据框:

#Data Preparation
def wrangle(df):
    df = df.copy()
    df = df.drop(columns=["LandAverageTemperatureUncertainty", "LandMaxTemperatureUncertainty",
                          "LandMinTemperatureUncertainty", "LandAndOceanAverageTemperatureUncertainty"], axis=1)

我们想复制数据帧以免损坏原始数据。之后,我们将删除具有高基数的列。

高基数是指值非常稀有或唯一的列。鉴于大多数时间序列数据集中出现高基数数据的频率,我们将通过从数据集中完全删除这些高基数列来直接解决这个问题,以免将来混淆我们的模型。 

现在,我将创建一个函数来转换温度,并将列转换为 DateTime 对象:

    def converttemp(x):
        x = (x * 1.8) + 32
        return float(x)
    df["LandAverageTemperature"] = df["LandAverageTemperature"].apply(converttemp)
    df["LandMaxTemperature"] = df["LandMaxTemperature"].apply(converttemp)
    df["LandMinTemperature"] = df["LandMinTemperature"].apply(converttemp)
    df["LandAndOceanAverageTemperature"] = df["LandAndOceanAverageTemperature"].apply(converttemp)
    df["dt"] = pd.to_datetime(df["dt"])
    df["Month"] = df["dt"].dt.month
    df["Year"] = df["dt"].dt.year
    df = df.drop("dt", axis=1)
    df = df.drop("Month", axis=1)
    df = df[df.Year >= 1850]
    df = df.set_index(["Year"])
    df = df.dropna()
    return df
global_temp = wrangle(global_temp)
print(global_temp.head())

在将我们的 wrangle 函数调用到我们的 global_temp 数据帧之后,我们现在可以看到我们的 global_temp 数据帧的一个新的清理版本,没有缺失值。

可视化

现在,在继续训练模型以使用机器学习预测天气之前,让我们可视化这些数据以找到数据之间的相关性:

import seaborn as sns
import matplotlib.pyplot as plt
corrMatrix = global_temp.corr()
sns.heatmap(corrMatrix, annot=True)
plt.show()

【关于时间序列的ML】项目 5 :用机器学习预测天气

正如我们所看到的,并且你们中的一些人可能已经猜到了,我们选择继续前进的专栏彼此高度相关。

分离我们的目标以预测天气

现在我们需要将数据分成特征和目标。目标,也称为 Y,是我们要预测的值,在这种情况下,实际的平均陆地和海洋温度和特征是模型用于进行预测的所有列:

target = "LandAndOceanAverageTemperature"
y = global_temp[target]
x = global_temp[["LandAverageTemperature", "LandMaxTemperature", "LandMinTemperature"]]

训练测试拆分

现在,要创建一个使用机器学习预测天气的模型,我们需要使用 scikit-learn 提供的 train_test_split 方法来拆分数据:

from sklearn.model_selection import train_test_split
xtrain, xval, ytrain, yval = train_test_split(x, y, test_size=0.25, random_state=42)
print(xtrain.shape)
print(xval.shape)
print(ytrain.shape)
print(yval.shape)
(1494, 3)
(498, 3)
(1494,)
(498,)

基线平均绝对误差

在我们可以对我们的机器学习模型做出和评估任何预测以预测天气之前,我们需要建立一个基线,一个我们希望用我们的模型击败的合理指标。如果我们的模型不能从基线改进那么它就会失败,我们应该尝试不同的模型或者承认机器学习不适合我们的问题:

from sklearn.metrics import mean_squared_error
ypred = [ytrain.mean()] * len(ytrain)
print("Baseline MAE: ", round(mean_squared_error(ytrain, ypred), 5))

训练模型预测天气

现在为了用机器学习预测天气,我将训练一个随机森林算法,它能够执行分类和回归任务:

from sklearn.feature_selection import SelectKBest
from sklearn.ensemble import RandomForestRegressor
forest = make_pipeline(
    SelectKBest(k="all"),
    StandardScaler(),
    RandomForestRegressor(
        n_estimators=100,
        max_depth=50,
        random_state=77,
        n_jobs=-1
    )
)
forest.fit(xtrain, ytrain)

预测天气的机器学习模型的模型评估

为了正确看待我们的预测,我们可以使用从 100% 中减去的平均百分比误差来计算精度:

import numpy as np
errors = abs(ypred - yval)
mape = 100 * (errors/ytrain)
accuracy = 100 - np.mean(mape)
print("Random Forest Model: ", round(accuracy, 2), "%")

Random Forest Model: 99.52 %

另外,阅读——为什么 Python 比 R 更好。

我们的模型已经学会通过机器学习预测明年的天气状况,准确率为 99%。我希望您喜欢这篇关于如何使用机器学习构建模型来预测天气的文章。请随时在下面的评论部分向您提出有价值的问题。文章来源地址https://www.toymoban.com/news/detail-420140.html

到了这里,关于【关于时间序列的ML】项目 5 :用机器学习预测天气的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 深度学习时间序列预测项目案例数据集介绍

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

    2023年04月15日
    浏览(46)
  • 时间序列预测模型实战案例(四)(Xgboost)(Python)(机器学习)图解机制原理实现时间序列预测和分类(附一键运行代码资源下载和代码讲解)

    目录图解机制原理 简介 Xgboost预测精度 实验一(回归) 实验二(分类) Xgboost的数学机制原理 图解Xgboost运行机制原理  决策树 决策树结构图 Xgboost Xgboost的机制原理 贪心算法 Xgboost总结 数据格式需求 Xgboost运行代码 Xgboost时间序列预测及代码 Xgboost分类任务及代码 Xgboost运行资源下

    2024年02月03日
    浏览(83)
  • 当机器人变硬核:探索深度学习中的时间序列预测

      收藏自:Wed, 15 Sep 2021 10:32:56 UTC 摘要:时间序列预测是机器学习和深度学习领域的一个重要应用,它可以用于预测未来趋势、分析数据模式和做出决策。本文将介绍一些基本概念和常用方法,并结合具体的案例,展示如何使用深度学习模型实现时间序列预测。 文章内容:

    2024年02月12日
    浏览(40)
  • 机器学习——时间序列ARIMA模型(三):AR、MA、ARMA、ARIMA模型定义及公式介绍及股价预测案例代码

    使用自身的数据进行预测,且只适用于预测与自身前期相关的现象。 注意:需满足具有平稳性的要求,需满足自相关性,自相关系数需大于0.5。 p阶自回归公式: y t = μ + ∑ i = 1 p γ i y t − i + e t y_{t}=μ+sum_{i=1}^pgamma_{i}y_{t-i}+e_{t} y t ​ = μ + i = 1 ∑ p ​ γ i ​ y t − i ​ + e

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

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

    2024年02月08日
    浏览(85)
  • 学习笔记:基于Transformer的时间序列预测模型

    为了便于读者理解,笔者将采取一个盾构机掘进参数预测的实际项目进行Transformer模型的说明。此外,该贴更多用于本人的学习记录,适合于对Transformer模型已经有一定了解的读者。此此次外,不定期更新中。 一些参考与图片来源: Transformer论文链接 transformer的细节到底是怎

    2024年02月03日
    浏览(66)
  • 时序预测 | MATLAB实现ELM极限学习机时间序列预测未来

    预测效果 基本介绍 1.MATLAB实现ELM极限学习机时间序列预测未来; 2.运行环境Matlab2018及以上,data为数据集,单变量时间序列预测,运行主程序ELMTSF即可,其余为函数文件,无需运行; 3.递归预测未来数据,可以控制预测未来大小的数目,适合循环性、周期性数据预测; 4.命令

    2024年02月09日
    浏览(47)
  • 基于机器学习/深度学习的时间序列分析相关论文

    Robust Time Series Analysis and Applications: An Industrial Perspective, in  KDD  2022. Time Series in Healthcare: Challenges and Solutions, in  AAAI  2022. [[Link]](https://www.vanderschaar-lab.com/time-series-in-healthcare/) Time Series Anomaly Detection: Tools, Techniques and Tricks, in  DASFAA  2022. [[Link]](https://www.dasfaa2022.org//tutorials/T

    2024年02月13日
    浏览(49)
  • Time-LLM:为时间序列预测重新编程LLM 探索Time-LLM的架构,并在Python中将其应用于预测项目

    参考资料:Time-LLM/ Reprogram an LLM for Time Series Forecasting.md 研究人员尝试将自然语言处理(NLP)技术应用于时间序列领域并非首次。 例如,Transformer架构在NLP领域是一个重要的里程碑,但其在时间序列预测方面的表现一直平平,直到PatchTST的提出。 正如您所知,大型语言模型(

    2024年04月25日
    浏览(52)
  • 深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?

    在非时间序列的回归任务中,深度学习和机器学习都是常用的方法。为了进一步提升模型的性能,可以通过改进数据处理、数据增强、特征选择、模型选择、模型正则化与泛化、优化器、学习率、超参数调优等方面,来提升模型的性能和可解释性。 提高数据质量和进行恰当的

    2024年01月19日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包