Python与AI分析时间序列数据

目录
  • 简介
  • 序列分析或时间序列分析的基本概念
  • 安装实用软件包
    • Pandas
    • hmmlearn
    • PyStruct
    • CVXOPT
  • Pandas:处理,切片和从时间序列数据中提取统计数据
    • 示例
    • 处理时间序列数据
    • 切片时间序列数据
  • 提取来自时间序列数据的统计数据
    • 平均值
    • 最大值
    • 最小值
    • 一次性获取所有内容
    • 重新采样
      • 使用mean()重新采样
      • Re -sampling with median()
    • 滚动平均值
  • 通过隐马尔可夫分析顺序数据模型(HMM)
    • 隐马尔可夫模型(HMM)
    • 状态(S)
    • 输出符号(O)
    • 状态转换概率矩阵(A)
    • 观察发射概率矩阵(B)
    • 先验概率矩阵(Π)

简介

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

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

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

示例

请考虑以下示例来了解序列预测.这里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分析时间序列的资料请关注我们其它相关文章!

(0)

相关推荐

  • 使用python实现时间序列白噪声检验方式

    白噪声检验也称为纯随机性检验, 当数据是纯随机数据时,再对数据进行分析就没有任何意义了, 所以拿到数据后最好对数据进行一个纯随机性检验 acorr_ljungbox(x, lags=None, boxpierce=False) # 数据的纯随机性检验函数 lags为延迟期数,如果为整数,则是包含在内的延迟期数,如果是一个列表或数组,那么所有时滞都包含在列表中最大的时滞中 boxpierce为True时表示除开返回LB统计量还会返回Box和Pierce的Q统计量 返回值: lbvalue:测试的统

  • 如何利用python进行时间序列分析

    题记:毕业一年多天天coding,好久没写paper了.在这动荡的日子里,也希望写点东西让自己静一静.恰好前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家分享下.在此也要特别感谢顾志耐和散沙,让我喜欢上了python. 什么是时间序列 时间序列简单的说就是各时间点上形成的数值序列,时间序列分析就是通过观察历史数据预测未来的值.在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的(这里不考虑含外生变量的时间序列). 为什么用python

  • 时间序列预测中的数据滑窗操作实例(python实现)

    目录 撰写背景 什么是数据滑窗 代码实现 单特征时间序列 多特征时间序列 注意事项 总结 撰写背景 面向数据分析的小白,水平有限,错误难免,欢迎指正. 什么是数据滑窗 进行机器学习时,一般都要涉及到划分训练集和测试集的步骤.特别地,在做数据预测时,一般把预测的依据(也就是历史数据)称作X,把需要预测的数据称为y.即首先把原始数据划分为train_X, train_y这两个训练数据集和test_X, test_y这两个测试数据集. 对于时间序列数据的预测,往往是建立由好几个历史数据预测下一时刻的未

  • 手把手教你使用Python绘制时间序列图

    目录 01从Quandl检索数据集 02绘制收盘价与成交量的关系图 03绘制烛台图 导读:分析时间序列数据的一种简单而有效的方法就是将时间序列数据可视化在一个图表上,这样我们就可以从中推断出某些假设.本文将以股价数据集为例,指导你从Quandl下载股价数据集,并将这些数据绘制在价格和成交量图表上.还将教大家绘制烛台图,比起直线图表,这将给我们更多的信息. 01从Quandl检索数据集 Quandl简介 Quandl是一个为金融.经济和另类数据服务的平台,这些数据由各种数据发布商提供,包括联合国.

  • 如何用Python进行时间序列分解和预测

    预测是一件复杂的事情,在这方面做得好的企业会在同行业中出类拔萃.时间序列预测的需求不仅存在于各类业务场景当中,而且通常需要对未来几年甚至几分钟之后的时间序列进行预测.如果你正要着手进行时间序列预测,那么本文将带你快速掌握一些必不可少的概念. 目录 什么是时间序列? 如何在Python中绘制时间序列数据? 时间序列的要素是什么? 如何分解时间序列? 经典分解法 如何获得季节性调整值? STL分解法 时间序列预测的基本方法: Python中的简单移动平均(SMA) 为什么使用简单移动平均? Pyth

  • Python基于LightGBM进行时间序列预测

    目录 前言 特征 代码 结果 前言 当我们考虑时间序列的增强树时,通常会想到 M5 比赛,其中前十名中有很大一部分使用了 LightGBM.但是当在单变量情况下使用增强树时,由于没有大量的外生特征可以利用,它的性能非常的糟糕. 首先需要明确的是M4 比赛的亚军 DID 使用了增强树.但是它作为一个元模型来集成其他更传统的时间序列方法.在 M4 上公开的代码中,所有标准增强树的基准测试都相当糟糕,有时甚至还达不到传统的预测方法.下面是Sktime 包和他们的论文所做的出色工作[1]: 任何带有“X

  • Python与AI分析时间序列数据

    目录 简介 序列分析或时间序列分析的基本概念 安装实用软件包 Pandas hmmlearn PyStruct CVXOPT Pandas:处理,切片和从时间序列数据中提取统计数据 示例 处理时间序列数据 切片时间序列数据 提取来自时间序列数据的统计数据 平均值 最大值 最小值 一次性获取所有内容 重新采样 使用mean()重新采样 Re -sampling with median() 滚动平均值 通过隐马尔可夫分析顺序数据模型(HMM) 隐马尔可夫模型(HMM) 状态(S) 输出符号(O) 状

  • python时间序列数据转为timestamp格式的方法

    在此记录自己学习python数据分析过程中学到的一些数据处理的小技巧. 1.数据的读取 #导入numpy库和pandas库 import numpy as np import pandas as pd #读取待处理的数据 #file_path为文件路径名,sheet_name为需要读取的excel数据页 data=pd.read_excel(file_path,sheet_name) #显示数据前5行 data.head() 数据读取的结果: 由读取结果可以看出,时间序列数据并不规范,需要做进一

  • Python入门之使用pandas分析excel数据

    1.问题 在python中,读写excel数据方法很多,比如xlrd.xlwt和openpyxl,实际上限制比较多,不是很方便.比如openpyxl也不支持csv格式.有没有更好的方法? 2.方案 更好的方法可以使用pandas,虽然pandas不是专门处理excel数据,但处理excel数据确实很方便. 本文使用excel的数据来自网络,数据内容如下: 2.1.安装 使用pip进行安装. pip3 install pandas 导入pandas: import pandas as pd 下文使

  • python实现的分析并统计nginx日志数据功能示例

    本文实例讲述了python实现的分析并统计nginx日志数据功能.分享给大家供大家参考,具体如下: 利用python脚本分析nginx日志内容,默认统计ip.访问url.状态,可以通过修改脚本统计分析其他字段. 一.脚本运行方式 python count_log.py -f med.xxxx.com.access.log 二.脚本内容 #!/usr/bin/python # -*- coding: utf-8 -*- """ 1.分析日志,每行日志按空格切分,取出需要统计的相

  • python中scrapy处理项目数据的实例分析

    在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患.如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,小伙伴们就会开始着急却怎么也翻不出来,似乎也没有其他更好的搜集办法,而重新进行数据整理显然是不现实的.下面我们就一起看看python爬虫中scrapy处理项目数据的方法吧. 1.拉取项目 $ git clone https://github.com/jonbakerfish/TweetScraper.git $ cd TweetScraper/ $ pi

  • python爬取分析超级大乐透历史开奖数据第1/2页

    博主作为爬虫初学者,本次使用了requests和beautifulsoup库进行数据的爬取 爬取网站:http://datachart.500.com/dlt/history/history.shtml -500彩票网 (分析后发现网站源代码并非是通过页面跳转来查找不同的数据,故可通过F12查找network栏找到真正储存所有历史开奖结果的网页) 如图: 爬虫部分: from bs4 import BeautifulSoup #引用BeautifulSoup库 import requests #

  • 分析语音数据增强及python实现

    目录 一.概述 二.加噪 2.1.第一种:控制噪声因子 2.2.第二种:控制信噪比 三.加混响 3.1.方法一:Pyroomacoustics实现音频加混响 3.2.方法二:Image Source Method 算法讲解 四.生成指定SER的混响 五.波形位移 六.波形拉伸 七.音高修正(Pitch Shifting) 一.概述 音频时域波形具有以下特征:音调,响度,质量.我们在进行数据增强时,最好只做一些小改动,使得增强数据和源数据存在较小差异即可,切记不能改变原有数据的结构,不然将产生"脏

  • Python获取江苏疫情实时数据及爬虫分析

    目录 1.引言 2.获取目标网站 3.爬取目标网站 4.解析爬取内容 4.1. 解析全国今日总况 4.2. 解析全国各省份疫情情况 4.3. 解析江苏各地级市疫情情况 5.结果可视化 6. 代码 7. 参考 1.引言 最近江苏南京.湖南张家界陆续爆发疫情,目前已波及8省22市,全国共有2个高风险地区,52个中风险地区.身在南京,作为兢兢业业的打工人,默默地成为了"苏打绿".为了关注疫情状况,今天我们用python来爬一爬疫情的实时数据. 2.获取目标网站 为了使用python来获取疫情

  • Python实现爬取天气数据并可视化分析

    目录 核心功能设计 实现步骤 爬取数据 风向风级雷达图 温湿度相关性分析 24小时内每小时时段降水 24小时累计降雨量 今天我们分享一个小案例,获取天气数据,进行可视化分析,带你直观了解天气情况! 核心功能设计 总体来说,我们需要先对中国天气网中的天气数据进行爬取,保存为csv文件,并将这些数据进行可视化分析展示. 拆解需求,大致可以整理出我们需要分为以下几步完成: 1.通过爬虫获取中国天气网7.20-7.21的降雨数据,包括城市,风力方向,风级,降水量,相对湿度,空气质量. 2.对获取的天气数

  • Python数据分析之分析千万级淘宝数据

    目录 1.项目背景与分析说明 2.导入相关库 4.模型构建 1)流量指标的处理 2)用户行为指标 3)漏斗分析 4)客户价值分析(RFM分析) 1.项目背景与分析说明 1)项目背景 网购已经成为人们生活不可或缺的一部分,本次项目基于淘宝app平台数据,通过相关指标对用户行为进行分析,从而探索用户相关行为模式. 2)数据和字段说明 本文使用的数据集包含了2014.11.18到2014.12.18之间,淘宝App移动端一个月内的用户行为数据.该数据有12256906天记录,共6列数据. user_i

随机推荐