ML-For-Beginners 时间序列预测入门:从 GEFCom2014 电力负荷数据到经典 ML 模型基础

发布时间:2026/9/10 13:37:49

ML-For-Beginners 时间序列预测入门:从 GEFCom2014 电力负荷数据到经典 ML 模型基础 ML-For-Beginners 时间序列预测入门从 GEFCom2014 电力负荷数据到经典 ML 模型基础【免费下载链接】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 模块的第一课系统讲解时间序列Time Series的基本概念、核心术语与数据特征并以 GEFCom2014 全球能源预测竞赛的真实电力负荷数据为例完整演示如何用 Python/Pandas 加载、清洗与可视化时间序列数据。读者学完后将掌握时间序列—时间序列分析—时间序列预测三者区别、识别趋势/季节性/异常值等六类数据特征的方法并能独立运行仓库中的 notebook 完成电力负荷数据的一步前向预测准备为后续构建 ARIMA 模型奠定基础。为什么时间序列预测值得学习时间序列预测就像一个水晶球基于某个变量例如价格的历史表现你可以预测它未来的潜在价值。它是一个对商业具有直接价值的领域因为其应用直接覆盖**定价pricing、库存inventory与供应链supply chain**等问题。尽管深度学习技术已被用于获取更多洞察以更好地预测未来表现但时间序列预测在很大程度上仍然是一个由经典 ML 技术驱动的领域。想象你维护着一批智能停车计时器smart parking meters它们持续提供多久被使用一次、每次使用多长时间的数据。如果你能根据计时器过去的表现按照供需法则预测其未来的价值就能准确判断何时采取行动以实现目标——例如在高峰时段合理定价。虽然让人们在找车位时被收取更高费用并不讨喜但这确实是创造街道清洁收入的可靠途径。本文使用的数据来自GEFCom2014 预测竞赛Global Energy Forecasting Competition 2014包含 2012 至 2014 年间3 年的小时级电力负荷electricity load与温度temperature数据。基于电力负荷与温度的历史模式可以预测未来的电力负荷值。本课的目标是仅使用历史负荷数据预测未来一个时间步one time step ahead。三个必须区分的核心术语接触时间序列一词时你需要理解它在不同语境下的三种用法 时间序列Time Series在数学中时间序列是在时间顺序上被索引或列出、绘图的一系列数据点。最常见的情况是时间序列是在连续、等间隔的时间点上获取的序列。道琼斯工业平均指数的每日收盘价就是一个典型例子。时间序列绘图与统计建模在信号处理、天气预报、地震预测等事件不断发生、数据点可随时间绘制的领域中被广泛使用。 时间序列分析Time Series Analysis时间序列分析是对上述时间序列数据的分析。时间序列数据可以呈现不同形式包括**间断时间序列interrupted time series**——用于检测间断事件发生前后时间序列演变中的模式。所需的分析类型取决于数据本身的性质数据本身可以表现为数字或字符的序列。实际分析会使用多种方法包括频域与时间域方法、线性与非线性方法等。 时间序列预测Time Series Forecasting时间序列预测是使用模型根据过去收集的数据所表现出的模式来预测未来值。虽然也可以使用回归模型把时间索引作为图中的 x 变量探索时间序列数据但这类数据最好使用专门的模型类型来分析——因为时间序列数据是有序观测值的列表这与可用线性回归分析的数据不同。最常见的模型ARIMA最常见的模型是ARIMA即自回归积分滑动平均Autoregressive Integrated Moving Average的缩写。ARIMA 模型将序列的当前值与过去的值和过去的预测误差关联起来最适合分析数据随时间排序的时间域数据。ARIMA 有多种类型将在本模块的下一课中深入构建一个 ARIMA 模型。下一课将使用单变量时间序列Univariate Time Series构建 ARIMA 模型它只关注一个随时间改变取值的变量。这类数据的经典例子是记录夏威夷莫纳罗亚天文台Mauna Loa Observatory每月 CO2 浓度的数据集CO2YearMonthYearMonth330.621975.0419751331.401975.1319752331.871975.2119753333.181975.2919754333.921975.3819755333.431975.4619756331.851975.5419757330.011975.6319758328.511975.7119759328.411975.79197510329.251975.88197511330.971975.96197512✅ 请找出这个数据集中随时间变化的变量提示观察 Month 从 1 到 12 递增时哪个字段在持续变动。时间序列数据的六类特征把信号从噪声中分离观察时间序列数据时你会发现它带有某些需要纳入考量并加以缓解的特征。如果把时间序列数据看作你希望分析的信号这些特征就可以理解为噪声。你通常需要使用一些统计技术抵消部分特征以降低噪声。以下是处理时间序列前必须掌握的六类概念特征定义典型示例趋势Trends随时间可测量的上升与下降如何在需要时使用甚至移除趋势是时间序列处理的核心问题季节性Seasonality周期性波动影响销售的节假日高峰不同类型的图可以展示数据中的季节性异常值Outliers远离标准数据方差的数据点偶发的极端读数长期周期Long-run cycle与季节性无关的长期循环持续时间超过一年的经济下行恒定方差Constant variance随时间保持的稳定波动幅度白天与夜晚的能源使用突变Abrupt changes突然的变化可能需要进一步分析例如因 COVID 导致的企业突然停业引起的数据变化✅ 下面这张图展示了某游戏数年的每日游戏内货币消费数据来源于本课 images 目录。你能在其中识别出上面列出的哪些特征动手实验上手电力使用数据现在开始用真实数据创建时间序列模型的基础——首先使用 GEFCom2014 数据加载、清洗并可视化电力负荷。数据引用Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli 与 Rob J. Hyndman《Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond》International Journal of Forecastingvol.32, no.3, pp 896-913, 2016 年 7-9 月。1. 打开 notebook 并引入依赖库在本课的working文件夹中打开notebook.ipynb先添加帮助加载和可视化数据的库import os import matplotlib.pyplot as plt from common.utils import load_data %matplotlib inline注意这里使用的是随课附带的common文件夹中的文件它负责配置运行环境并处理数据下载。仓库中对应的环境配置见 working/common/environment.yaml其中锁定了python3.6.6、pandas0.23.4、matplotlib3.0.0、numpy1.16.2、statsmodels0.9.0、scikit-learn0.20.3等依赖并可通过conda env create -f environment.yaml一键创建环境。2. 将数据加载为 DataFrame调用load_data()并配合head()检查数据data_dir ./data energy load_data(data_dir)[[load]] energy.head()可以看到输出包含两列分别代表日期索引和负荷load2012-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从源码看load_data的实现位于 7-TimeSeries/common/utils.py它先用pd.read_csv(..., parse_dates[timestamp])读取energy.csv然后将timestamp设为索引并用pd.date_range(min, max, freqH)以小时为频率重建索引——这样能确保时间序列在最小与最大时间戳之间的每个时间点都有记录从而识别数据中的缺失时段本数据集中没有缺失。最后删除timestamp列返回 DataFrame。3. 绘制完整数据调用plot()绘制从 2012 年 1 月到 2014 年 12 月的全部负荷数据energy.plot(yload, subplotsTrue, figsize(15, 8), fontsize12) plt.xlabel(timestamp, fontsize12) plt.ylabel(load, fontsize12) plt.show()从这张图中可以直观看出负荷数据存在明显的年度长期周期冬季与夏季负荷明显偏高、日/夜恒定方差每天的锯齿状波动幅度相对稳定以及潜在的趋势变化。4. 放大观察2014 年 7 月第一周用[起始日期]: [结束日期]的切片模式将 2014 年 7 月的第一周作为输入传给energyenergy[2014-07-01:2014-07-07].plot(yload, subplotsTrue, figsize(15, 8), fontsize12) plt.xlabel(timestamp, fontsize12) plt.ylabel(load, fontsize12) plt.show()这是一个漂亮的图仔细观察这些图试着识别上文列出的特征你能看到每日的周期性白天负荷高、深夜负荷低形成稳定的驼峰形态、周末与工作日的差异7 月 5-6 日周末负荷模式明显不同以及异常尖峰。通过可视化我们可以推断数据具有很强的日内季节性成分——这正是后续 ARIMA 建模时需要处理的结构。源码级解析数据管线背后发生了什么本课的common文件夹提供了完整的原始数据 → 干净 CSV管线理解它有助于你复现或替换自己的数据extract_data.py负责解压GEFCom2014.zip解出竞赛扩展数据GEFCom2014-E_V2.zip用pd.read_excel读取 Excel 文件然后通过data[Date].add(pd.to_timedelta(data.Hour - 1, unith))把日期 小时组合成timestamp列将温度列T重命名为temp并剔除 2012-01-01 之前无负荷数据的时段最后保存为energy.csv。utils.py除load_data外还提供了mape(predictions, actuals)平均绝对百分比误差即(|预测-实际|/实际).mean()用于评估预测质量以及create_evaluation_df和TimeSeriesTensor类——后者通过shift构建以 t 时刻为中心的滞后/超前特征张量形状为(samples, time steps, features)供后续课程中的 RNN/深度学习模型直接输入。这体现了本模块经典方法打底、深度学习增强的整体教学设计。课后挑战与延伸练习挑战列出你能想到的所有能从时间序列预测中受益的行业和研究领域。你能想到这些技术在艺术领域的应用吗计量经济学生态学零售业工业金融还有哪里课程同时配有课后测验以及一个动手作业详见 assignment.md寻找另外三个适合时间序列预测的数据集可参考 Kaggle 与 Azure Open Datasets创建一个 notebook 对它们进行可视化并在笔记中标注每个数据集具有的特殊特征季节性、突变或其他趋势评价标准要求至少完整绘图并解释三个数据集。虽然本课不展开介绍但值得一提的是神经网络有时被用来增强经典的时间序列预测方法。下一课你将使用本课准备好的数据与工具正式构建一个 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),仅供参考
延伸阅读

更多相关文章

2026/9/10 14:28:11

STM32 HAL库UART2中断接收全解析:从回调机制到空闲中断

简介:基于STM32F103的HAL库UART2中断收发完整工程包,面向需要借助STM32CubeMX与HAL库实现串口通信的嵌入式工程师与学生。工程内以STM32CubeMX生成的.ioc配置为核心,包含339个C源码、108个头文件及43个汇编文件,并附有IAR链接脚本…

2026/9/10 14:28:11

基于Python的知识图谱问答系统:豆瓣书影数据建模与SPARQL查询实践

简介:这份基于Python的豆瓣书籍与电影类别知识图谱问答系统源码包,定位为计算机、数学、电子信息等专业学生的课程设计、期末大作业或毕设参考项目。系统围绕知识图谱的构建、数据导入、问答匹配与前端展示展开,适合具备一定Python基础、愿意…

2026/9/10 14:28:11

学术论文题注系统设计与排版规范详解

1. 论文排版中的题注系统设计 在学术写作中,图片、表格和公式的规范标注是构建严谨论文框架的基础设施。题注(Caption)系统不仅是对可视化元素的简单说明,更是读者快速定位和理解内容的路标系统。我经手过上百篇学位论文的排版指导…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码