简介

时间序列数据表示一系列特定时间内的数据间隔.如果我们想在机器学习中构建序列预测,那么我们必须处理顺序数据和时间.系列数据是顺序数据的摘要.数据排序是序列数据的一个重要特征.

序列分析或时间序列分析的基本概念

序列分析或时间序列分析是基于先前观察到的,在给定输入序列中预测下一个.预测可以是下一个可能出现的任何事情:符号,数字,次日天气,下一个语音等.序列分析在股票市场分析,天气预报和产品推荐等应用中非常方便.

示例

请考虑以下示例来了解序列预测.这里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

以上就是Python与AI分析时间序列数据的详细内容,更多关于Python AI分析时间序列的资料请关注Devmax其它相关文章!

Python与AI分析时间序列数据的更多相关文章

  1. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  2. Swift基本使用-函数和闭包(三)

    声明函数和其他脚本语言有相似的地方,比较明显的地方是声明函数的关键字swift也出现了Python中的组元,可以通过一个组元返回多个值。传递可变参数,函数以数组的形式获取参数swift中函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的潜逃来重构过长或者太复杂的函数。

  3. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  4. Swift、Go、Julia与R能否挑战 Python 的王者地位

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 红薯因 Swift 重写开源中国失败,貌似欲改用 Python

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. 你没看错:Swift可以直接调用Python函数库

    上周Perfect又推出了新一轮服务器端Swift增强函数库:Perfect-Python。对,你没看错,在服务器端Swift其实可以轻松从其他语种的函数库中直接拿来调用,不需要修改任何内容。以如下python脚本为例:Perfect-Python可以用下列方法封装并调用以上函数,您所需要注意的仅仅是其函数名称以及参数。

  7. Swift中的列表解析

    在Swift中完成这个的最简单的方法是什么?我在寻找类似的东西:从Swift2.x开始,有一些与你的Python样式列表解析相当的东西。(在这个意义上,它更像是Python的xrange。如果你想保持集合懒惰一路通过,只是这样说:与Python中的列表解析语法不同,Swift中的这些操作遵循与其他操作相同的语法。

  8. 使用Swift进行生长时间序列的峰值检测

    有人会有一个很好的算法来测量使用Swift增长时间序列数据的峰值吗?还要注意我已经关闭了负信号,因为OP的目的我们只想要正信号.SWIFT代码:对于样本数据的结果:更新您可以通过对平均值和标准差的滞后使用不同的值来提高算法的性能.例如.:然后使用例如let=Thresholdingalgo可以给出更好的结果:DEMO

  9. swift抛出终端的python错误

    每当我尝试启动与python相关的swift时,我都会收到错误.我该如何解决?

  10. 在Android上用Java嵌入Python

    解决方法看看this,它适用于J2SE,你可以尝试在Android上运行.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部