gpt4 book ai didi

python - 用python预测时间序列数据

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:45 24 4
gpt4 key购买 nike

我从机器学习开始,到目前为止只测试了 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

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

关于我应该看一下哪种算法来尝试预测下一个时间序列中的数字(地点),您有什么建议吗?

像 scikit-learn 这样的 Python 库中可用的算法将是完美的!

最佳答案

一个想法是将其视为一个多类问题。您可以将其想象为您的目标 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 个观测值来预测第四个观测值:

X = labels[:-1]   
[[1 1 1 0]
[1 1 0 1]
[1 1 0 1]]

我们得到 4 个类别和 3 个观察值。我们需要使它成为一个向量,因为这只是一个示例:

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

这里的每一列都是一个特征/预测变量,可以按以下方式解释:第一列中的 1 表示第 1 类出现了 3 天。第 7 列中的 0 表示第 3 类在 2 天前不存在,依此类推。

现在我们有了一个样本/事件(最终 X 矩阵的一行)和相应的标签(目标 y 的一行):

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

如果您遵循此过程,您将能够获得可提供给分类器的训练集。

关于python - 用python预测时间序列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com