尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ML-For-Beginners 时间序列实战:寻找并可视化更多时序数据集的完整指南

ML-For-Beginners 时间序列实战:寻找并可视化更多时序数据集的完整指南 ML-For-Beginners 时间序列实战寻找并可视化更多时序数据集的完整指南【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners导读时间序列预测是机器学习中极具商业价值的方向它基于变量如价格、能耗的历史表现来预测未来潜力值。本指南以 ML-For-Beginners 仓库中《Introduction to time series forecasting》课程及其配套作业可视化更多时间序列为核心带你掌握时间序列数据的核心特征趋势、季节变化、异常值、突变等学会用 pandas matplotlib 构建可视化 notebook并完成寻找三个时序数据集并逐一分析的实战任务为下一步构建 ARIMA 预测模型打下扎实的数据感知基础。什么是时间序列三类核心概念先厘清在动手可视化之前先区分三个经常混用的术语这是理解整个作业任务的前提时间序列Time Series按时间顺序索引或列出、绘图的一系列数据点最常见的是在连续等间隔时间点上采样的序列例如股票指数的每日收盘价。信号处理、天气预报、地震预测等领域都大量使用时间序列绘图与统计建模。时间序列分析Time Series Analysis对上述时序数据的分析。数据可以呈现不同形态包括中断时间序列检测某个中断事件发生前后序列演变模式的变化分析方法涵盖频域与时域、线性与非线性等多种类别。时间序列预测Time Series Forecasting利用模型根据过去收集数据所表现的模式来预测未来值。虽然可以用回归模型把时间索引当作 x 变量探索时序数据但这类数据本质上是一串有序观测值更适合用专门的模型来分析——其中最经典的就是 ARIMA自回归积分滑动平均它将序列的当前值与过去的值及过去的预测误差联系起来。仓库配套课程 7-TimeSeries/1-Introduction/README.md 给出了一个单变量时序的经典示例夏威夷冒纳罗亚天文台记录的月均 CO2 浓度——CO2 值随时间推移持续变化这正是单变量时间序列只关注一个随时间变化取值的变量的典型代表。可视化时必须识别的六种数据特征时间序列数据往往带有若干需要识别、并在建模前加以处理的特征。可以把要分析的时序看作信号而这些特征就是混在其中的噪声常常需要通过统计手段抵消。作业要求你在 notebook 中记录任何特殊特征识别的依据就是下面这六类特征定义与示例趋势Trends随时间可测量的上升与下降如长期增长或衰退季节变化Seasonality周期性波动例如节假日促销对销售额的影响异常值Outliers远离正常数据方差的极端数据点长期周期Long-run cycle独立于季节变化的长期波动如持续超过一年的经济下行恒定方差Constant variance随时间保持恒定幅度的波动如昼夜交替造成的能源消耗变化突变Abrupt changes需要进一步分析的突然变化例如 COVID 导致的企业突然停摆带来的数据断层练习方法先看下面这张展示了数年每日游戏内货币支出的时序图试着独立判断它体现了上述哪些特征例如是否存在周期性尖峰、长期上升趋势、节假日突变等再对照概念清单验证你的观察。仓库实操第一步用 GEFCom2014 能源数据建立可视化基线作业要求你已经可视化了一些与能源相关的数据指的就是课程中的核心练习——使用 GEFCom2014 预测竞赛数据2012 至 2014 年间 3 年的逐小时电力负荷与温度值先学会用历史负荷数据可视化并识别特征。环境准备课程提供了完整的 conda 环境定义文件 7-TimeSeries/1-Introduction/working/common/environment.yaml其中固定了与本课程兼容的依赖版本创建与注册内核的方式如下conda env create -f environment.yaml # 创建环境 conda activate dlts # 激活 python -m ipykernel install --user --name dlts --display-name Python (dlts) # 注册到 Jupyter环境内含pandas、matplotlib、numpy、scikit-learn、statsmodels、keras等关键库为后续可视化与 ARIMA 建模做好了准备。数据加载与预处理原理仓库在 7-TimeSeries/common/utils.py 中提供了load_data()函数负责加载与清洗读取energy.csv并将timestamp列解析为日期时间类型以时间戳为索引用pd.date_range(min, max, freqH)逐小时频率重索引整个数据框从而显式暴露数据中缺失的时间段该数据集恰好没有缺失丢弃原始的timestamp列返回以时间为索引、含load负荷与temp温度的 DataFrame。如果你需要从原始 GEFCom2014 压缩包重建energy.csv仓库还提供了 7-TimeSeries/1-Introduction/working/common/extract_data.py它负责解压数据、读取 Excel 原始文件、用Date (Hour - 1)小时偏移构造完整timestamp列、重命名温度列为temp、剔除 2012-01-01 之前无负荷数据的时段最后写出干净的energy.csv。完整数据集已随仓库提供于 7-TimeSeries/data/energy.csv可直接使用。加载并查看数据在working目录的 notebook参见 7-TimeSeries/1-Introduction/working/notebook.ipynb中运行import os import matplotlib.pyplot as plt from common.utils import load_data %matplotlib inline data_dir ./data energy load_data(data_dir)[[load]] energy.head()输出应类似timestampload2012-01-01 00:00:002698.02012-01-01 01:00:002558.02012-01-01 02:00:002444.02012-01-01 03:00:002402.02012-01-01 04:00:002403.0整体与局部两种视角绘图先绘制 3 年全量数据的负荷曲线energy.plot(yload, subplotsTrue, figsize(15, 8), fontsize12) plt.xlabel(timestamp, fontsize12) plt.ylabel(load, fontsize12) plt.show()再使用 pandas 的时间切片语法只查看 2014 年 7 月第一周放大局部模式energy[2014-07-01:2014-07-07].plot(yload, subplotsTrue, figsize(15, 8), fontsize12) plt.xlabel(timestamp, fontsize12) plt.ylabel(load, fontsize12) plt.show()观察这两张图可以验证前面六类特征全量图上能看到以年为周期的季节变化夏冬用电高峰与逐年微升的趋势局部周图则能分辨出日级恒定方差昼夜波动的能量消耗与可能存在的异常值。这种先全貌、后局部的两步可视化法正是你完成作业时应该复用的方法论。作业任务拆解寻找三个受益于时序预测的数据集课程作业7-TimeSeries/1-Introduction/assignment.md的完整要求是你已经开始通过学习需要这种专门建模的数据类型来了解时间序列预测。你已经可视化了一些与能源相关的数据。现在搜索其他可以从时间序列预测中受益的数据集。找出三个示例可考虑 Kaggle 与 Azure Open Datasets并创建一个 notebook 来可视化它们。在 notebook 中记录它们表现出的任何独特特征季节变化、突变或其他趋势。去哪里找数据集作业原文推荐了两大数据源均为公开数据平台可按需注册使用Kaggle拥有大量带标签的公开数据集与竞赛数据搜索关键词建议组合使用例如 time series或按领域词如 stock price、energy consumption、weather、sales、traffic 检索优先筛选更新频繁、带时间戳列、粒度明确日/小时的数据集。Azure Open Datasets微软提供的云端开放数据集目录涵盖天气、公共安全、人口、经济等类别多数以可编程方式SDK 或公开存储容器直接访问适合与 notebook 集成。此外也可复用本仓库其他课程的现成数据作为灵感例如分类课程的菜谱数据、聚类课程的尼日利亚歌曲数据等——凡是有明确时间先后顺序、以等间隔时间点采集的观测序列都属于候选对象。选择数据集的三个硬性标准为保证可视化与分析有足够深度选中的数据集应同时满足含时间索引字段具备日期/时间戳列且最好是规则间隔每小时、每日、每月采样可形成单变量或多变量序列至少有一个随时间变化的数值变量如销量、温度、客流量规模适中、可离线操作能在本地 notebook 中完整加载或抽样后仍保留明显的时间模式。实战构建你的多数据集可视化 notebook参照课程练习的代码风格为每个数据集建立一个独立的 Markdown 单元格记录来源、时间范围、粒度与预期特征再配合下面的代码模板完成加载与绘图。通用加载模板以 CSV 为例import pandas as pd import matplotlib.pyplot as plt %matplotlib inline # 1. 加载并解析时间戳 df pd.read_csv(your_dataset.csv, parse_dates[date_column]) # 2. 以时间为索引便于切片与绘图 df df.set_index(date_column).sort_index() # 3. 统一重采样到规则频率例如按日聚合 series df[target_variable].resample(D).mean() # 4. 全貌视图 series.plot(figsize(15, 8), titleFull time range) plt.xlabel(timestamp) plt.ylabel(value) plt.show()特征记录模板每个数据集必答在 notebook 的 Markdown 单元格中针对以下清单逐项作答这既是作业记录特殊特征的要求也是后续建模如选择是否差分、是否引入季节项的依据趋势序列是否存在单调上升/下降可否用滑动平均如series.rolling(30).mean()观察其走向季节变化是否存在固定周期日、周、年的重复形态可用按周期分组绘制叠加图或箱线图辅助确认突变是否存在断崖式上升/下降或水平漂移对应的时间点背后有什么事件解释异常值是否存在远高于正常波动的孤立尖峰长期周期是否存在跨越多年的经济性起伏恒定方差波动幅度是否随时间大致恒定还是呈漏斗状扩大/收窄局部放大识别细节模式的利器与课程中energy[2014-07-01:2014-07-07]的切片手法一致对任何疑似存在日/周周期性的序列都建议放大 12 个完整周期做细看# 只看某一周 series[2020-01-06:2020-01-12].plot(figsize(15, 6)) plt.show()若时间索引是datetime64类型pandas 会自动支持这种起始日期:结束日期的切片语法这也是本课程最值得迁移到作业中的可视化技巧之一。评估标准与达标自检作业附带的评分标准非常明确直接对应产出物的数量与质量标准优秀Outstanding合格Satisfactory需改进Needs Improvement产出在 notebook 中绘制并解释了三个数据集在 notebook 中绘制并解释了两个数据集绘制的数据集很少或解释不足、提供的数据不充分建议在提交前按以下清单自检notebook 中是否包含至少三个数据集的完整绘图每个数据集是否都有文字说明来源、时间范围、粒度是否针对每个数据集明确标注了所观察到的季节变化、突变、趋势、异常值等特征可对照六类特征清单逐条回答是否同时提供了全貌图与局部放大图论证是否充分代码是否可复现数据路径、重采样频率、绘图参数齐全下一步从可视化走向预测完成三个数据集的可视化与特征记录后你就具备了对什么数据适合时序预测、数据里藏着哪些模式的判断力。课程下一节将利用本课加载的 GEFCom2014 能源数据构建经典的ARIMA 模型进行单变量时序预测——届时本课识别出的趋势与季节变化将直接决定模型是否需要差分与季节项设置。此外仓库还提供了更高阶的工具7-TimeSeries/common/utils.py 中的TimeSeriesTensor与create_evaluation_df用于构造 RNN 训练张量与评估框架供你未来探索用神经网络增强经典时序方法时参考。延伸思考课程挑战题你能列出所有会受益于时间序列预测的行业与研究领域吗艺术、计量经济学、生态学、零售、工业、金融……每个领域中随时间变化且可观测的变量都是时序预测的潜在应用场景。【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表