Python生态系统正在不断发展,并可能成为应用机器学习的主导平台。
采用Python进行时间序列预测的主要理由是,它是一种通用编程语言,您可以将其用于研发和生产。
在本文中,您将了解用于时间序列预测的Python生态系统。
阅读本文后,你将了解:
- 对时间序列预测至关重要的三个标准Python库。
- 如何安装和设置用于开发的Python和SciPy环境。
- 如何确认您的环境运行正常并已准备好进行时间序列预测。
开始您的项目,阅读我的新书《Python时间序列预测导论》,其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。

用于时间序列预测的 Python 环境
照片由Joao Trindade拍摄,保留部分权利。
为什么选择Python?
Python是一种通用解释型编程语言(与R或Matlab不同)。
它易于学习和使用,主要因为它注重代码的可读性。
它是一门普遍流行的语言,在StackOverflow的调查中(例如,2015年的调查结果)始终位列前十大编程语言。
Python是一门动态语言,非常适合交互式开发和快速原型设计,同时又具备支持大型应用程序开发的强大功能。
由于其出色的库支持,Python也被广泛用于机器学习和数据科学。它已迅速成为机器学习和数据科学从业者的主导平台之一,并且比R平台更受雇主青睐(请参见下图)。

Python机器学习工作岗位与R机器学习工作岗位对比
这是一个简单且非常重要的考虑因素。
这意味着您可以在用于操作的同一种编程语言中进行研究和开发(确定使用哪些模型),极大地简化了从开发到运营的过渡。
停止以**慢速**学习时间序列预测!
参加我的免费7天电子邮件课程,了解如何入门(附带示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
用于时间序列的Python库
SciPy是用于数学、科学和工程的Python库生态系统。它是Python的附加组件,您在时间序列预测中需要它。
两个SciPy库为大多数其他库奠定了基础;它们分别是提供高效数组操作的NumPy和用于绘制数据的Matplotlib。有三个更高级的SciPy库为Python中的时间序列预测提供了关键功能。
它们分别是pandas、statsmodels和scikit-learn,分别用于数据处理、时间序列建模和机器学习。
让我们依次仔细看看每一个。
库:pandas
pandas库提供了高性能的工具,用于在Python中加载和处理数据。
它构建于SciPy生态系统之上并需要它,底层主要使用NumPy数组,但提供了方便易用的数据结构,如用于表示数据的DataFrame和Series。
Pandas提供了对时间序列数据的专门支持。
pandas中与时间序列预测相关的关键功能包括:
- 用于表示单变量时间序列的Series对象。
- 对数据中的日期时间索引和日期时间范围进行显式处理。
- 转换,如移位、滞后和填充。
- 重采样方法,如上采样、下采样和聚合。
库:statsmodels
statsmodels库提供了统计建模工具。
它构建于SciPy生态系统之上并需要它,支持NumPy数组和PandasSeries对象形式的数据。
它提供了一套统计测试和建模方法,以及专门用于时间序列分析的工具,这些工具也可以用于预测。
statsmodels在时间序列预测方面的关键功能包括:
- 平稳性统计检验,如增广迪基-富勒单位根检验。
- 时间序列分析图,如自相关函数(ACF)和偏自相关函数(PACF)。
- 线性时间序列模型,如自回归(AR)、移动平均(MA)、自回归移动平均(ARMA)和自回归积分移动平均(ARIMA)。
库:scikit-learn
scikit-learn库是您在Python中开发和实践机器学习的方式。
它构建于SciPy生态系统之上并需要它。名称“sckit”表明它是SciPy的插件或工具包。您可以查看所有可用SciKits的完整列表。
该库的重点是用于分类、回归、聚类等的机器学习算法。它还提供了用于相关任务的工具,如模型评估、参数调优和数据预处理。
scikit-learn在时间序列预测方面的相关关键功能包括:
- 数据准备工具套件,如数据缩放和填充。
- 可用于建模数据和进行预测的机器学习算法套件。
- 用于评估模型在未见过数据上性能的重采样方法,特别是TimeSeriesSplit。
Python生态系统安装
本节将为您提供关于设置Python环境进行时间序列预测的通用建议。
我们将涵盖:
- 使用Anaconda自动安装。
- 使用您的平台包管理器手动安装。
- 确认已安装的环境。
如果您已经有一个可用的Python环境,请跳至确认步骤,检查您的软件库是否为最新。
让我们开始吧。
1. 自动安装
如果您不确定如何在机器上安装软件,或者您使用的是Microsoft Windows,有一个简单的选择。
有一个名为Anaconda Python的发行版,您可以免费下载和安装。
它支持Microsoft Windows、Mac OS X和Linux这三个主要平台。
它包含了Python、SciPy和scikit-learn:您学习、练习和使用Python环境中的时间序列预测所需的一切。
您可以从这里开始使用Anaconda Python:
2. 手动安装
有多种方法可以为您的平台安装Python生态系统。
在本节中,我们将介绍如何为时间序列预测安装Python生态系统。
如何安装Python
第一步是安装Python。我建议并推荐使用Python 2.7或Python 3.5。
Python的安装将取决于您的平台。有关说明,请参阅
- 下载Python,位于Python初学者指南中。
在Mac OS X上使用macports,我会输入:
1 2 3 |
sudo port install python35 sudo port select --set python python35 sudo port select --set python3 python35 |
如何安装SciPy
安装SciPy的方法有很多。
例如,两种流行的方法是使用您平台的包管理器(例如,RedHat上的dnf或OS X上的macports)或使用Python包管理器,如pip。
SciPy的文档非常出色,并在安装SciPy堆栈页面上提供了许多不同平台的安装说明。
安装SciPy时,请确保至少安装以下软件包:
- scipy
- numpy
- matplotlib
- pandas
- statsmodels
在Mac OS X上使用macports,我会输入:
1 2 |
sudo port install py35-numpy py35-scipy py35-matplotlib py35-pandas py35-statsmodels py35-pip sudo port select --set pip pip35 |
在Fedora Linux上使用dnf,我会输入:
1 |
sudo dnf install python3-numpy python3-scipy python3-pandas python3-matplotlib python3-statsmodels |
如何安装scikit-learn
scikit-learn库必须单独安装。
我建议您使用与安装SciPy相同的方法来安装scikit-learn。
安装scikit-learn的说明可在,但仅限于使用Pythonpip包管理器。
在Linux和Mac OS X上,我通过输入以下命令安装了scikit-learn:
1 |
sudo pip install -U scikit-learn |
3. 确认您的环境
设置好环境后,您必须确认它是否按预期工作。
首先,让我们检查Python是否已成功安装。打开命令行并输入:
1 |
python -V |
您应该会看到类似以下的响应:
1 |
Python 2.7.12 |
或者
1 |
Python 3.5.3 |
现在,确认库是否已成功安装。
创建一个名为versions.py的新文件,并将以下代码片段复制并粘贴到其中,然后将文件另存为versions.py。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# scipy import scipy print('scipy: %s' % scipy.__version__) # numpy import numpy print('numpy: %s' % numpy.__version__) # matplotlib import matplotlib print('matplotlib: %s' % matplotlib.__version__) # pandas import pandas print('pandas: %s' % pandas.__version__) # statsmodels import statsmodels print('statsmodels: %s' % statsmodels.__version__) # scikit-learn import sklearn print('sklearn: %s' % sklearn.__version__) |
在命令行或您喜欢的Python编辑器中运行该文件。例如,键入:
1 |
python versions.py |
这将打印出您所需各关键库的版本。
例如,在我写这篇文章的时候,我的系统得到了以下结果:
1 2 3 4 5 6 |
scipy: 0.18.1 numpy: 1.11.3 matplotlib: 1.5.3 pandas: 0.19.1 statsmodels: 0.6.1 sklearn: 0.18.1 |
如果您遇到错误,请立即停止并修复。您可能需要查阅您平台的特定文档。
总结
在本文中,您了解了用于时间序列预测的Python生态系统。
您了解了:
- pandas、statsmodels和scikit-learn库是Python时间序列预测的最佳库。
- 如何自动和手动设置用于开发的Python SciPy环境。
- 如何确认您的环境已正确安装,并且您已准备好开始开发模型。
您还学会了如何在您的工作站上安装机器学习的Python生态系统。
您对Python在时间序列预测方面的应用,或对本文有任何疑问吗?请在评论区提问,我将尽力回答。
嗨,Jason,
我研究时间序列聚类,你能给我指个例子吗?
您对用于时间序列聚类的动态时间规整(DTW)有什么想法,或者能给我指个例子吗?
谢谢你。
抱歉,我没有关于DTW的教程,感谢您的建议。
嗨,Jason,
您能为Sktime库做一个教程,以及它如何用于多输出回归吗?
提前感谢。
感谢您的建议。