gpt4 book ai didi

python - 如何使用fbProphet或其他模型在Python中执行包含多个组的时间序列分析?

转载 作者:太空狗 更新时间:2023-10-29 21:38:31 25 4
gpt4 key购买 nike

全部,

我的数据集如下所示。我正在尝试使用 fbProphet 或其他模型预测 future 6 个月的“金额”。但我的问题是我想根据每个组预测数量,即接下来 6 个月的 A、B、C、D。我不确定如何使用 fbProphet 或其他模型在 python 中做到这一点?我引用了 official page of fbprophet ,但我发现的唯一信息是“先知”只有两列,一个是“日期”,另一个是“金额”。

我是 python 的新手,所以非常感谢任何有关代码解释的帮助!

import pandas as pd
data = {'Date':['2017-01-01', '2017-02-01', '2017-03-01', '2017-04-01','2017-05-01','2017-06-01','2017-07-01'],'Group':['A','B','C','D','C','A','B'],
'Amount':['12.1','13','15','10','12','9.0','5.6']}
df = pd.DataFrame(data)
print (df)

输出:

         Date Group Amount
0 2017-01-01 A 12.1
1 2017-02-01 B 13
2 2017-03-01 C 15
3 2017-04-01 D 10
4 2017-05-01 C 12
5 2017-06-01 A 9.0
6 2017-07-01 B 5.6

最佳答案

fbprophet需要两列dsy,所以需要先重命名这两列

df = df.rename(columns={'Date': 'ds', 'Amount':'y'})

假设您的组彼此独立并且您希望对每个组进行一个预测,您可以按“组”列对数据框进行分组并为每个组运行预测

from fbprophet import Prophet
grouped = df.groupby('Group')
for g in grouped.groups:
group = grouped.get_group(g)
m = Prophet()
m.fit(group)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
print(forecast.tail())

请注意,您在问题中提供的输入数据帧对于模型来说是不够的,因为 D 组只有一个数据点。 fbprophet 的预测至少需要 2 个非 Nan 行。

编辑:如果你想将所有预测合并到一个数据帧中,想法是为每个观察以不同的方式命名 yhat,在 pd.merge()循环,然后在最后挑选您需要的列:

final = pd.DataFrame()
for g in grouped.groups:
group = grouped.get_group(g)
m = Prophet()
m.fit(group)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
forecast = forecast.rename(columns={'yhat': 'yhat_'+g})
final = pd.merge(final, forecast.set_index('ds'), how='outer', left_index=True, right_index=True)

final = final[['yhat_' + g for g in grouped.groups.keys()]]

关于python - 如何使用fbProphet或其他模型在Python中执行包含多个组的时间序列分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545501/

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