用于时间序列预测的Python环境
Python生态系统正在不断的成长和壮大,并可能成为应用机器学习的主要平台。
采用Python进行时间序列预测的主要原因是因为它是一种通用编程语言,可以用于研发和生产。
在这篇文章中,您将了解到Python环境下的时间序列预测。
阅读这篇文章后,您会掌握:
- 三个对时间序列预测至关重要的标准Python库。
- 如何安装和设置开发的Python和SciPy环境。
- 如何确认您的开发环境正确工作,并准备好进行时间序列预测。
让我们开始吧。
为什么是Python?
Python是一种通用的解释性编程语言(不同于R或Matlab)。
主要是因为语言的重点在于可读性,所以学习和使用很容易。
这是一种普遍流行的语言,在StackOverflow的调查中一直出现在前十名编程语言中。(例如2015年的调查结果)
Python是一种动态语言,非常适合于交互式开发和快速原型开发,支持大型应用程序的开发。
由于优秀的库支持,Python也广泛用于机器学习和数据科学。它已经迅速成为机器学习和数据科学从业者的主要平台之一,甚至比R平台更受用户们喜爱(见下图)。
这是一个显而易见且非常重要的考虑因素。
这意味着你可以用同一种编程语言来完成你的研究和开发(弄清楚所要使用的模型),从而大大简化了从开发到实际操作的过渡。
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阵列和Pandas 系列对象形式的数据。
它提供了一套统计测试和建模方法,以及专门用于时间序列分析的工具,也可以用于预测。
与时间序列预测相关的statsmodels的主要特点包括:
- 平稳性的统计测试,例如增强型Dickey-Fuller单位根检验。
- 时间序列分析图如自相关函数(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的安装会有不少差异。相关说明请参阅:
在Mac OS X与MacPorts,使用如下指令即可安装:
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 Stack。
安装SciPy时,请确保已经安装以下包:
- SciPy
- numpy
- matplotlib
- pandas
- statsmodels
在Mac OS X与MacPorts,请输入:
sudo port install py35-numpy py35-scipy py35-matplotlib py35-pandas py35-statsmodels py35-pip
sudo port select --set pip pip35
在Fedora Linux上用dnf,请输入:
sudo dnf install python3-numpy python3-scipy python3-pandas python3-matplotlib python3-statsmodels
如何安装scikit-learn
scikit-learn 库必须单独安装。
我建议你使用与安装SciPy一样的方法来安装scikit-learn:
查阅安装scikit-learn的说明,但仅适用于使用Python pip包管理器安装。
在Linux和Mac OS X上,建议通过键入以下命令来安装scikit-learn:
sudo pip install -U scikit-learn
3.确认您的环境
搭建好开发环境后,还必须确认它是否能正常的运行。
首先检查一下Python是否安装成功。打开命令行并输入:
python -V
应该会看到如下的回应:
Python 2.7.12
或则
Python 3.5.3
现在,已经确认这些库已经安装成功。
创建一个名为versions.py的新文件,复制并粘贴下面的代码片段,并将文件保存为versions.py。
# 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编辑器中运行该文件。例如,键入:
python versions.py
这将打印您需要的每个库的版本。
例如,在我撰写本系统的时候,我得到了以下结果
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环境。
- 数千万WordPress和Drupal站点存在DDoS风险
- 利用基因突变和K均值预测地区种群
- 缓冲区溢出攻击初学者手册(更新版)
- 在Python机器学习中如何索引、切片和重塑NumPy数组
- HelloWorld,我的第一趟旅程出发点
- Android OpenGL开发实践 - GLSurfaceView对摄像头数据的再处理
- 走进科学:对七夕“超级病毒”XX神器的逆向分析
- 机器学习 - 朴素贝叶斯分类器的意见和文本挖掘
- 认知指纹:颠覆性的身份认证技术
- 跟我学姿势:极客教你如何科学的看电影
- Discuz 5.x/6.x/7.x投票SQL注入分析
- 论如何高效的挖掘漏洞
- Rxjava + retrofit + dagger2 + mvp搭建Android框架
- 走进科学:如何正确的隐藏自己的行踪
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Yii2框架加载css和js文件的方法分析
- php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
- python如何求圆的面积
- php实现微信公众号企业转账功能
- PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
- Python之Matplotlib文字与注释的使用方法
- Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
- python中return如何写
- PHP钩子实现方法解析
- 浅谈numpy中函数resize与reshape,ravel与flatten的区别
- PHP文件类型检查及fileinfo模块安装使用详解
- PHP封装的分页类与简单用法示例
- ThinkPHP3.2框架自带分页功能实现方法示例
- PHP获取访问设备信息的方法示例
- PHP实现微信提现功能