Python与AI分析时间序列数据
作者:菜鸟教程 发布时间:2022-02-25 09:36:07
简介
时间序列数据表示一系列特定时间内的数据间隔.如果我们想在机器学习中构建序列预测,那么我们必须处理顺序数据和时间.系列数据是顺序数据的摘要.数据排序是序列数据的一个重要特征.
序列分析或时间序列分析的基本概念
序列分析或时间序列分析是基于先前观察到的,在给定输入序列中预测下一个.预测可以是下一个可能出现的任何事情:符号,数字,次日天气,下一个语音等.序列分析在股票市场分析,天气预报和产品推荐等应用中非常方便.
示例
请考虑以下示例来了解序列预测.这里A,B,C,D是给定值,您必须使用序列预测模型预测值E.
安装实用软件包
用于时间序列数据分析使用Python,我们需要安装以下软件包 :
Pandas
Pandas是一个开源的BSD许可库,提供高性能,易于使用的数据结构和Python数据分析工具.您可以使用以下命令安装Pandas :
pip install pandas
如果您使用的是Anaconda并希望使用conda包管理器进行安装,那么您可以使用以下命令 :
conda install -c anaconda pandas
hmmlearn
这是一个开源的BSD -licensed库,由简单的算法和模型组成,用于学习Python中的隐马尔可夫模型(HMM).你可以在以下命令的帮助下安装它 :
pip install hmmlearn
如果您使用的是Anaconda并希望使用conda包管理器进行安装,那么您可以使用以下命令 :
conda install -c omnia hmmlearn
PyStruct
这是一个结构化学习,预测库.在PyStruct中实现的学习算法具有诸如条件随机场(CRF),最大边缘马尔可夫随机网络(M3N)或结构支持向量机之类的名称.你可以借助以下命令安装它 :
pip install pystruct
CVXOPT
它用于基于Python编程语言的凸优化.它也是一个免费的软件包.您可以使用以下命令和减号安装它;
pip install cvxopt
如果您使用的是Anaconda并希望使用conda软件包管理器进行安装,那么您可以使用以下命令 :
conda install -c anaconda cvdoxt
Pandas:处理,切片和从时间序列数据中提取统计数据
如果您必须使用时间序列数据,Pandas是一个非常有用的工具.在Pandas的帮助下,您可以执行以下 :
使用创建一系列日期pd.date_rangepackage
使用pd.Series包索引带有日期的pandas
使用ts.resample包进行重新采样
更改频率
示例
以下示例显示您使用以下方式处理和切片时间序列数据大熊猫.请注意,这里我们使用的是每月北极涛动数据,可以从 monthly.ao.index.b50.current.ascii ,可以转换为文本格式供我们使用.
处理时间序列数据
对于处理时间序列数据,您必须执行以下步骤 :
第一步涉及导入以下包 :
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
接下来,定义一个函数,它将从输入文件中读取数据,如下面给出的代码所示 :
def read_data(input_file):
input_data = np.loadtxt(input_file, delimiter = None)
现在,将此数据转换为时间序列.为此,请创建我们时间序列的日期范围.在这个例子中,我们保留一个月的数据频率.我们的文件的数据从1950年1月开始.
dates = pd.date_range('1950-01', periods = input_data.shape[0], freq = 'M')
在这一步中,我们在Pandas系列的帮助下创建时间序列数据,如下图所示 :
output = pd.Series(input_data[:, index], index = dates)
return output
if __name__=='__main__':
输入输入文件的路径,如下所示 :
input_file = "/Users/admin/AO.txt"
现在,将列转换为时间序列格式,如下所示 :
timeseries = read_data(input_file)
最后,使用显示和减去的命令绘制和可视化数据;
plt.figure()
timeseries.plot()
plt.show()
您将观察到如下图所示的图形 :
切片时间序列数据
切片只涉及检索时间序列数据的某些部分.作为示例的一部分,我们仅从1980年到1990年对数据进行切片.观察执行此任务的以下代码 :
timeseries['1980':'1990'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0xa0e4b00>
plt.show()
当您运行切片时间序列数据的代码时,您可以将以下图表视为图中显示的是 :
提取来自时间序列数据的统计数据
如果需要得出一些重要结论,则必须从给定数据中提取一些统计数据.平均值,方差,相关性,最大值和最小值是一些此类统计数据.如果要从给定的时间序列数据中提取此类统计数据,可以使用以下代码;
平均值
您可以使用mean()函数,用于查找均值,如此处所示 :
timeseries.mean()
然后,您将针对所讨论的示例观察到的输出是 :
-0.11143128165238671
最大值
您可以使用max()功能查找最大值,如下所示 :
timeseries.max()
然后,您将针对所讨论的示例观察到的输出是 :
3.4952999999999999
最小值
您可以使用min()函数查找最小值,如下所示 :
timeseries.min()
然后,您将针对所讨论的示例观察到的输出是 :
-4.2656999999999998
一次性获取所有内容
如果您想一次计算所有统计数据,可以使用describe()函数,如下所示 :
timeseries.describe()
然后,您将针对所讨论的示例观察到的输出是 :
count 817.000000
mean -0.111431
std 1.003151
min -4.265700
25% -0.649430
50% -0.042744
75% 0.475720
max 3.495300
dtype: float64
重新采样
您可以将数据重新采样到不同的时间频率.执行重新采样的两个参数是 :
时间段
方法
使用mean()重新采样
您可以使用以下代码使用mean()重新采样数据方法,这是默认方法 :
timeseries_mm = timeseries.resample("A").mean()
timeseries_mm.plot(style = 'g--')
plt.show()
然后,您可以观察以下图表作为重采样的输出使用mean() :
Re -sampling with median()
您可以使用以下代码使用median()方法重新取样数据 :
timeseries_mm = timeseries.resample("A").median()
timeseries_mm.plot()
plt.show()
然后,您可以观察下图作为重新采样的输出,其中位数为() :
滚动平均值
您可以使用以下代码计算滚动(移动)均值和减去;
timeseries.rolling(window = 12, center = False).mean().plot(style = '-g')
plt.show()
然后,您可以观察下图作为滚动的输出(移动)mean :
通过隐马尔可夫分析顺序数据模型(HMM)
HMM是一种统计模型,广泛用于具有延续性和可扩展性的数据,如时间序列股票市场分析,健康检查和语音反馈gnition.本节详细介绍了使用隐马尔可夫模型(HMM)分析顺序数据.
隐马尔可夫模型(HMM)
HMM是一个随机模型这是建立在马尔可夫链概念的基础上的,该假设未来统计数据的概率仅取决于当前的过程状态而不是之前的任何状态.例如,当掷硬币时,我们不能说第五次抛掷的结果将是一个头.这是因为硬币没有任何记忆,下一个结果不依赖于之前的结果.
数学上,HMM由以下变量和减号组成;
状态(S)
它是HMM中存在的一组隐藏或潜在状态.它由S表示.
输出符号(O)
它是HMM中存在的一组可能的输出符号.它由O表示.
状态转换概率矩阵(A)
它是从一个状态转换到另一个状态的概率状态.它由A表示.
观察发射概率矩阵(B)
它是在特定状态下发射/观察符号的概率.它用B表示.
先验概率矩阵(Π)
它是从系统的各种状态开始于特定状态的概率.它由Π表示.
因此,HMM可以定义为λ=(S,O,A,B,π),
其中,
S = {s1,s2,...,sN}是一组N个可能的状态,
O = {o1,o2,...,oM}是一组M个可能的观察符号,
A是N
来源:https://www.it1352.com/OnLineTutorial/artificial_intelligence_with_python/artificial_intelligence_with_python_analyzing_time_series_data.html


猜你喜欢
- --按日 select sum(consume),day([date]) from consume_record where year([d
- 前言在php开发过程中,获取文件扩展名是非常常见的需求。比如我们在上传文件的时候,首先需要判断文件类型是否为我们允许上传的类型。这个时候就需
- 利用''%.af''%b——其中 b 代表要限定的数字, a 代表要求限定小数点的位数,结果自动四舍五入。例
- 当我们想复制两个一模一样的列表时,我们可能使用到list.copy()这个方法,这个方法可以让我们复制一个相同的数组,当遇到下面这种情况时,
- 前言转眼间已经参与过我厂好几个小程序的开发了,下面本妹子将开发中的那些注意点和各位小伙伴们分享下,妥妥的干货一枚。一、WXML不要换行写,有
- Windows 10家庭中文版,Python 3.6.4,stomp.py 4.1.21ActiveMQ支持Python访问,提供了基于ST
- 以前在工作中遇到一个问题,当表单发送的数据量很大时,就会报错。查阅MSDN了解到,原因是微软对用Request.Form()可接收的最大数据
- 前言ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上有许多的变化,我觉得这个版本应该设立为 ThinkPHP 4.0 而不
- 用下面代码可实现:<%Dim writeDim fileSysObj, tf, readrea
- 用于模式匹配的String方法:String支持4种使用正则表达式的方法:seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的
- 本章将覆盖所有在Python中使用的基本I/O功能。有关更多函数,请参考标准Python文档。打印到屏幕上:产生输出最简单的方法
- 1.链式法则根据以前的知识,如果我们需要寻找到目标参数的值的话,我们需要先给定一个初值,然后通过梯度下降,不断对其更新,直到最终的损失值最小
- 断言声明是一种方便的程序调试方式。1、可将断言视为debug工具,Python的实现也符合这种设计理念。assert语句的执行依赖于__de
- 我们首先以一个例子来介绍模块化编程的应用场景,有这样一个名为requirements.py的python3文件,其中两个函数的作用是分别以不
- linux下使用python打开terminal时报错场景一:在jenkins上执行自动化任务,测试任务执行时使用jenkins用户(有su
- 本文实例讲述了Python实现的矩阵类。分享给大家供大家参考,具体如下:科学计算离不开矩阵的运算。当然,python已经有非常好的现成的库:
- 前言这几天看《流畅的python》这本书了,在一个示例中又看到了property作为装饰器在使用,因为很久没有用这个东西了,对它
- 一、装饰器decorator decorator设计模式允许动态地对现有的对象或函数包装以至于修改现有的职责和行为,简单地讲用来动态地扩展现
- 本文实例为大家分享了mysql 5.7.13 winx64安装配置方法图文教程,供大家参考,具体内容如下(1) 下载MySQL程序,您可以从
- 我就废话不多说了,直接上代码吧!#Copyright (c)2017, 东北大学软件学院学生# All rightsreserved#文件名