用python预测时间序列数据

2024-04-25 17:58:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我从机器学习开始,到目前为止只测试了scikit learn,但我找不到正确的算法或类似于我的问题的示例。在

我有一个时间序列显示事件发生的地点。事件的位置用1到25(包括)之间的整数标识。在一个特定的日期,一个事件不能在同一个地方发生两次,它总是发生在5个地方。在

我的数据如下:

2015-01-01,1,3,5,8,9,10
2015-01-03,23,16,3,5,9
2015-01-05,22,16,6,13,11

第一列是日期,其他列是地点。如果什么都没发生,日期不包括在内。在

你有什么建议我应该看看哪种算法来预测下一个时间序列中的数字(位置)?在

一个在Python库(如scikitlearn)中可用的算法将是完美的!在


Tags: 数据算法机器示例地方时间事件序列
1条回答
网友
1楼 · 发布于 2024-04-25 17:58:03

一个想法是把它当作一个多类问题来处理。您可以将其想象为您的目标y有25行(实际上是24行,但现在先忘掉它),其中每列是1或0,表示事件是否发生。在

作为你的X的预测因子,你可以选择一些滞后的平均值或最后一个假设3的观察值。有关详细信息,请参见this question。在

一些代码:

from io import StringIO
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()

s="""
2015-01-01,1,2,3
2015-01-03,1,2,4
2015-01-05,1,2,4
2015-01-07,1,4,3
"""
df = pd.read_csv(StringIO(s), index_col=0, parse_dates=True, header=None)

mlb = MultiLabelBinarizer()
labels = mlb.fit_transform(df.values)
labels
[[1 1 1 0]
 [1 1 0 1]
 [1 1 0 1]
 [1 0 1 1]]

我们有4个类和4个例子,所以我们得到一个4x4矩阵。列表示类/位置,行表示事件。在

现在我们将使用前3个观测值来预测第4个观测值:

^{pr2}$

我们得到了第三节课和第四节课。我们需要使其成为一个向量,因为这只是一个示例:

>>> X.flatten()
[1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1]

这里的每一列都是一个特征/预测器,可以用以下方式解释:第一列中的1表示一类一次出现3天。第7栏中的0表示3班在2天前不在,以此类推。在

现在我们有一个sample/event(最后一个X矩阵的一行)和相应的标签(目标y的一行):

>>> labels[-1]
[1 0 1 1]

如果你遵循这个过程,你将能够得到一个训练集,可以提供给一个分类器。在

相关问题 更多 >