ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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 课程《7-TimeSeries/1-Introduction》的课后作业捷克语翻译版及对应的 英文原文为核心骨架讲解寻找三份真实时间序列数据集并创建可视化笔记本的完整任务流程。读完本文你将掌握时间序列数据的关键特征趋势、季节性、突变等的判别方法、数据源选取原则以及如何参照课程内置的电力负荷数据实践notebook.ipynb完成一份合格甚至优秀的作业。作业任务解读可视化更多时间序列本次作业承接课程正文《Introduction to time series forecasting》中对电力负荷数据的初探。作业原文捷克语的核心指令是你已经通过观察需要这种特殊建模的数据类型开始学习时间序列预测。你已经可视化了一些与能源相关的数据。现在再看看其他能从时间序列预测中受益的数据。找到三个例子可尝试 Kaggle 和 Azure Open Datasets并创建一个笔记本对它们进行可视化。在笔记本中记录任何特殊的特征季节性、突然的变化或其他趋势。拆解后作业包含三个明确交付物三份独立的数据集与课程中使用的能源数据energy.csv不同的真实时间序列数据一个可视化笔记本为每份数据绘制时间序列图特征记录与说明针对每份数据明确写出观察到的季节性sezónnost、突变náhlé změny或其它趋势jiné trendy。值得注意的是作业要求的不是运行现有 notebook而是自主寻找数据、自主判断特征——这正是对可视化先行、建模在后这一课程方法论的检验。下一节课2-ARIMA将用 ARIMA 建模而本作业的产出特征判断恰恰是决定 ARIMA 是否需要差分、是否需要外生变量等建模决策的前提。先补足背景认识时间序列及其基本概念要正确识别数据特征先要理解课程对时间序列的基础定义。课程 README 给出了一组相关但不同的概念时间序列Time series按时间顺序索引的数据点序列最常见的是在等间隔时间点上依次采集的序列。典型例子是道琼斯工业平均指数的每日收盘值。时间序列分析Time series analysis对上述数据的分析。数据可呈现多种形态例如中断时间序列interrupted time series用于检测某个中断事件前后的模式演变分析手段涵盖频域与时域、线性与非线性等多种方法。时间序列预测Time series forecasting利用模型根据过去采集数据呈现的模式来预测未来值。虽然也能用回归模型探索时间序列把时间索引当作 x 变量画图但这类数据用专用模型分析效果更好——最常用的是 ARIMAAutoregressive Integrated Moving Average自回归积分滑动平均它把序列的当前值与过去的值及过去的预测误差联系起来最适合分析数据随时间排序的时域数据。单变量时间序列只关注一个随时间变化取值的变量。课程给出的示例是 Mauna Loa 观测站逐月 CO₂ 浓度数据字段为 CO2、YearMonth、Year、Month其中 1975 年 1 月 CO₂ 浓度 330.62、随后逐月波动至 12 月的 330.97——这正是下一个单元要构建 ARIMA 模型的目标数据类型。作业中要求记录的特征本质上就是对这些信号背后的噪声进行结构化描述因此理解下面的特征清单是完成作业的核心。记录什么时间序列数据的六大特征课程把时间序列可能携带的特殊特征归纳为以下几类。它们就是作业要求在 notebook 中逐条核对和记录的核心维度特征含义观察/处置要点趋势Trends随时间可测量的上升或下降判断是否存在长期单调方向建模前可能需要去除季节性Seasonality周期性波动如节假日带来的销售高峰周期可能是日、周、月、年本作业要求显式标注异常值Outliers远离标准数据方差的点常由事件停电、促销、故障引起长期循环Long-run cycle独立于季节性的长周期波动例如持续一年以上的经济下行期恒定方差Constant variance随时间保持稳定幅度的波动如一天内昼夜的能源使用波动突然变化Abrupt changes数据出现的陡然跳变需进一步分析例如 COVID 导致的企业突然停业在数据中造成的改变课程特意强调可以把时间序列数据视作待分析的信号而这些特征如同噪声你往往需要通过统计技术抵消部分特征来降低噪声从而更清晰地理解模式。参考范例课程如何可视化能源时间序列作业中的记录特征动作可完全复刻课程正文的实操流程。课程以 GEFCom2014 全球能源预测竞赛数据为对象2012—2014 年间三年的逐小时电力负荷与温度值在 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()返回的 DataFrame 有两个关键列时间戳与负荷前五行形如2012-01-01 00:00:00 对应负荷 2698.0随后每小时一个采样点。第二步绘制整段序列观察长期模式energy.plot(yload, subplotsTrue, figsize(15, 8), fontsize12) plt.xlabel(timestamp, fontsize12) plt.ylabel(load, fontsize12) plt.show()第三步切片放大观察短期模式。用energy[起始日期:结束日期]这种基于索引的切片语法截取窗口例如 2014 年 7 月 1 日至 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()课程对这组图提出的问题——看看这些图判断能否确定上面列出的某些特征——正是作业要在你自己的三份数据上回答的问题。放大切片后日内峰谷式的恒定波动、周末与工作日的差异往往一目了然这种整段看趋势与季节、切片看节律与突变的组合可视化法是完成本作业最有效的技术手段。课堂数据是怎么准备好的源码级佐证作业既然要求另找数据做同样的事理解课堂数据管线能帮你评估任何新数据集的可用性。仓库中 common/utils.py 的load_data()揭示了关键一步energy pd.read_csv(os.path.join(data_dir, energy.csv), parse_dates[timestamp]) energy.index energy[timestamp] energy energy.reindex(pd.date_range(min(energy[timestamp]), max(energy[timestamp]), freqH)) energy energy.drop(timestamp, axis1)它先把timestamp解析为日期类型并设为索引然后用pd.date_range(..., freqH)按小时频率重建连续索引。源码注释点明了这样做的目的重建后能立刻发现序列中是否存在缺失时间段本数据集中没有。这一点对作业的意义在于——你在挑选数据集时同样应确认时间戳是否连续等间隔、是否缺失、时区是否统一否则画出的曲线会给出误导性的突变假象。再往上游看common/extract_data.py 演示了从原始 GEFCom2014 压缩包到energy.csv的加工流程先解压两级 zip再从 Excel 读取数据用data[Date].add(pd.to_timedelta(data.Hour - 1, unith))把日期 小时序号拼成真正的时间戳仅保留timestamp / load / temp三列并剔除 2012 年之前的无负荷时段。这说明原始数据常常需要构造时间戳、裁剪范围、改名、落盘这一系列清洗作业中你对新数据的处理也应包含类似交代。课堂环境依赖记录在 environment.yaml 中核心组件是 pandas 0.23.4、matplotlib 3.0.0、numpy 1.16.2外加后续建模用的 statsmodels 0.9.0、scikit-learn 0.20.3、keras 2.2.4 与 pyramid-arima 0.8.1。可视化作业的运行环境只需 pandas 与 matplotlib 即可复现数据本体已随仓库提供于 working/data/energy.csv。分步执行如何挑选、可视化并讲解三份新数据集结合课程方法把作业拆成五个可执行步骤第 1 步数据源与筛选标准。作业点名 Kaggle 与 Azure Open Datasets 两个公开数据集平台文中不展开链接搜索平台名称即可进入。推荐按以下硬标准初筛确有随时间变化的取值变量而不是纯静态表时间戳等间隔且已解析为日期类型参考load_data的做法时间跨度足以覆盖至少一个完整季节周期观察年季节性通常需要数年观察周季节性数周即可附带可读的字段说明便于你在 notebook 中解释变量含义。第 2 步确定三个差异化样本。为覆盖作业评分点见下文评分标准对照建议三份数据在特征上形成互补例如分别选一份天然带强季节性的零售/旅游流量数据、一份发生过明显突变如某政策/疫情前后的经济或出行数据、一份带缓慢长期趋势的气候或能源数据。这样特征记录部分才不会千篇一律。第 3 步逐份装载与绘图。模仿课程三段式整段plot()→ 有侧重地切片放大 → 必要时对可疑区间二次放大。注意在首个单元格说明数据来源、时间范围、采样频率与字段含义这些元数据本身就是解释的组成部分。第 4 步对照特征清单逐条记录。对每份数据明确写出至少一条观察结论用词可直接映射课程概念是否存在趋势方向与量级是否存在季节性周期长度是多少日/周/年是否有异常值或突然变化发生在哪个时间点、可能由什么事件导致波动幅度是否恒定有无超过一年的长期循环凡无法确认的维度应如实写该数据中未观察到明显 XX而不是编造结论。第 5 步给出可视化之外的简短推断。记录这类特征对该领域意味着什么、对建模有何影响。例如冬季负荷抬升意味着做 ARIMA 时应考虑季节性差分——这一推断能为下一课建模直接铺路。课程 README 末尾的挑战题列出所有能从时间序列预测中受益的行业与探究领域可作为你解释为什么选这份数据的灵感库金融、零售、工业、生态、计量经济学乃至艺术领域都有应用场景。评分标准对照怎样的产出算优秀作业附带的评分量表assignment.md是唯一的打分依据务必逐格自查标准优秀合格需改进数据可视化与解释三份数据集均在 notebook 中绘制并加以解释两份数据集在 notebook 中绘制并加以解释仅绘制/解释了很少的数据集或所呈现的数据不够充分对照可知最容易失分的点有两个一是数据集数量不足三份二是画了图但没有解释。因此每一份数据都必须配上文字说明——即便只是两三句话点明观察到的特征季节性或突变点也能把交付物从需改进提升到合格以上。若能把三个样本覆盖不同特征类型并给出建模含义即为优秀档。交付检查清单在提交前逐条核对你的 notebook包含三份不同的数据集来源与字段说明清楚每份数据都至少有一张完整序列图必要时有切片放大图每份数据都有文字记录显式使用了趋势、季节性、突变等特征用语时间戳被正确解析为日期类型且等间隔必要时说明缺失处理方式仿照load_data的做法观察结论忠于图中所见没有虚构事件或数据。延伸阅读与配套资源本作业的英文原版任务描述见 assignment.md捷克语翻译版见 translations/cs/7-TimeSeries/1-Introduction/assignment.md课程正文含全部概念定义、特征讲解与能源数据实操步骤见 README.md可运行的课堂示例笔记本为 working/notebook.ipynb配套数据加载与数据提取源码分别在 working/common/utils.py 与 working/common/extract_data.py本课及相邻课程为同一主题准备了 solution 与 working 两套文件组织可对照查看下一节 2-ARIMA 将基于你在本作业中建立的特征直觉构建正式的 ARIMA 预测模型。完成本作业的核心不在于代码本身而在于建立先看图、再判断、后建模的思维习惯——这正是课程把额外可视化设为独立作业的原因所在。【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表