没有合适的资源?快使用搜索试试~ 我知道了~
Python机器学习项目开发实战_解剖时间序列和时序数据_编程案例解析实例详解课程教程.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 93 浏览量
2023-05-06
08:33:23
上传
评论
收藏 1.6MB PDF 举报
温馨提示
试读
19页
时间序列数据就是随着时间的变化收集的测量序列数据。这些数据是根据预定义的变量并在固定的间隔时间采集的。时间序列数据最主要的特征就是其顺序是非常关键的。我们收集的数据是按照时间轴排序的,它们的出现顺序包含很多隐藏的模式和信息。如果改变顺序,则将彻底改变数据的含义。序列数据的广义概念是指任意序列形式的数据,包括时间序列数据。我们的目标是构建一个模型,该模型描述了时间序列或任意序列的模式,用于描述时间序列模式的重要特征。可以用这些模型解释过去可能会影响到未来,查看两个数据集是如何相互关联的,如何预测未来可能的值,或者如何控制基于某个度量标准的给定变量。
资源推荐
资源详情
资源评论
8.1 简介 147
1
2
3
4
5
12
6
7
9
8
10
10
解剖时间序列和时序数据
在这一章,我们将介绍以下主题:
将数据转换为时间序列格式
切分时间序列数据
操作时间序列数据
从时间序列数据中提取统计数字
针对序列数据创建隐马尔科夫模型
针对序列文本数据创建条件随机场
用隐马尔科夫模型分析股票市场数据
8.1 简介
时间序列数据就是随着时间的变化收集的测量序列数据。这些数据是根据预定义的变量并在
固定的间隔时间采集的。时间序列数据最主要的特征就是其顺序是非常关键的。
我们收集的数据是按照时间轴排序的,它们的出现顺序包含很多隐藏的模式和信息。如果改
变顺序,则将彻底改变数据的含义。序列数据的广义概念是指任意序列形式的数据,包括时间序
列数据。
我们的目标是构建一个模型,该模型描述了时间序列或任意序列的模式,用于描述时间序列
模式的重要特征。可以用这些模型解释过去可能会影响到未来,查看两个数据集是如何相互关联
的,如何预测未来可能的值,或者如何控制基于某个度量标准的给定变量。
为了将时间序列数据可视化,我们倾向于将其用折线图或柱状图画出。时间序列数据分析常
用于金融、信号处理、天气预测、轨道预测、地震预测或者任意需要处理时间数据的场合。我们
在时间序列和顺序数据分析中构建的模型应该考虑数据的顺序,并提取相互之间的关系。接下来
分析Python中的时间序列和顺序数据。
148 第8 章 解剖时间序列和时序数据
8.2 将数据转换为时间序列格式
下面以理解如何将一系列观察结果转换为时间序列数据并将其可视化作为本章的开始。本例
将用到pandas库来分析时间序列数据。在进行接下来的学习之前,请确保已经安装好了pandas
库,安装方法可以参考http://pandas.pydata.org/pandas-docs/stable/install.htm。
详细步骤
(1) 创建一个新的Python文件,并导入以下程序包:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
(2) 定义一个函数来读取输入文件,该文件将序列观察结果转换为时间序列数据:
def convert_data_to_timeseries(input_file, column, verbose=False):
(3) 这里将用到一个包含4列的文本文件,其中第一列表示年,第二列表示月,第三列和第四
列表示数据。将文件加载到NumPy数组:
# 加载输入文件
data = np.loadtxt(input_file, delimiter=',')
(4) 因为数据是按时间的前后顺序排列的,数据的第一行是起始日期,而数据的最后一行是
终止日期。下面提取出数据集的起始日期和终止日期:
# 提取起始日期和终止日期
start_date = str(int(data[0,0])) + '-' + str(int(data[0,1]))
end_date = str(int(data[-1,0] + 1)) + '-' + str(int(data[-1,1]% 12 + 1))
(5) 这个函数还有一个详细的版本。因此,当这个值为真时,就打印一些信息。打印出起始
日期和终止日期:
if verbose:
print "\nStart date =", start_date
print "End date =", end_date
(6) 创建一个pandas变量,该变量包含了以月为间隔的日期序列:
# 创建以月为间隔的变量
dates = pd.date_range(start_date, end_date, freq='M')
(7) 下一步是将给定的列转换为时间序列数据。可以用年和月访问这些数据(而不是索引):
# 将日期转换成时间序列
data_timeseries = pd.Series(data[:,column], index=dates)
(8) 打印出最开始的10个元素:
if verbose:
print "\nTime series data:\n", data_timeseries[:10]
8.2 将数据转换为时间序列格式 149
1
2
3
4
5
12
6
7
9
8
10
10
(9) 返回时间索引变量:
return data_timeseries
(10) 定义main函数:
if __name__=='__main__':
(11) 本例将使用本书提供的data_timeseries.txt文件:
# 输入数据文件
input_file = 'data_timeseries.txt'
(12) 加载文本文件的第三列,并将其转换为时间序列数据:
# 加载输入数据
column_num = 2
data_timeseries = convert_data_to_timeseries(input_file, column_num)
(13) pandas库提供了非常实用的画图功能,你可以直接在变量上运行:
# 画出数据序列数据
data_timeseries.plot()
plt.title('Input data')
plt.show()
(14) 全部代码已经包含在convert_to_timeseries.py文件中。运行该代码,可以看到如图8-1所
示的图像。
图 8-1
150 第8 章 解剖时间序列和时序数据
8.3 切分时间序列数据
这一节将介绍如何用pandas切分时间序列数据,帮助你从时间序列数据的各个阶段获得相应
的信息。接下来将学习如何用日期处理数据集的子集。
详细步骤
(1) 创建一个新的Python文件,并导入以下程序包:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from convert_to_timeseries import convert_data_to_timeseries
(2) 使用前一节中用到的文本文件,对该文本文件中的数据进行切分:
# 输入数据文件
input_file = 'data_timeseries.txt'
(3) 又一次用到第三列数据:
# 加载数据
column_num = 2
data_timeseries = convert_data_to_timeseries(input_file, column_ num)
(4) 假定我们希望提取给定的起始年份和终止年份之间的数据,下面做如下定义:
# 确定画图起止年份
start = '2008'
end = '2015'
(5) 画出给定年份范围内的数据:
plt.figure()
data_timeseries[start:end].plot()
plt.title('Data from ' + start + ' to ' + end)
(6) 还可以在给定月份范围内切分数据:
# 画图起止年月
start = '2007-2'
end = '2007-11'
(7) 画出数据:
plt.figure()
data_timeseries[start:end].plot()
plt.title('Data from ' + start + ' to ' + end)
plt.show()
剩余18页未读,继续阅读
资源评论
好知识传播者
- 粉丝: 499
- 资源: 4204
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功