微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

循环遍历FBProphet以对每个区域建模会产生异常错误

如何解决循环遍历FBProphet以对每个区域建模会产生异常错误

我有一个多元时间序列数据,并且我正在使用FBProhpet。为了实现可复制性,这是一个模拟:

df1 = pd.DataFrame(
    pd.date_range(start="2020-01-01",end="2020-01-30",freq="D",name="ds")
)
df1["y"] = range(1,31)
df1["region"] = "A"
df1["val1"] = range(1,31)
df1["val2"] = np.sqrt(df["val1"]) * 2
df1["val3"] = (np.sqrt(df["val1"]) ** 3) + df["val2"]

df2 = pd.DataFrame(
    pd.date_range(start="2020-01-01",name="ds")
)
df2["y"] = range(1,31)
df2["y"] = df2["y"] ** 2
df2["region"] = "B"
df2["val1"] = range(1,31)
df2["val1"] = df2["val1"] ** 3
df2["val2"] = np.sqrt(df["val1"])
df2["val3"] = (np.sqrt(df["val1"]) ** 2) + df["val2"]

df3 = pd.DataFrame(
    pd.date_range(start="2020-01-01",name="ds")
)
df3["y"] = range(1,31)
df3["y"] = np.sqrt(df2["y"])
df3["region"] = "C"
df3["val1"] = range(1,31)
df3["val1"] = df3["y"] ** 3
df3["val2"] = np.sqrt(df3["y"])
df3["val3"] = (np.sqrt(df3["val1"]) ** 2) + df3["val2"]

df4 = df.append(df2)
df5 = df4.append(df3)

这里的目标是为每个区域的多元时间序列数据建模,并将模型保存在列表(或字典)中,稍后将调用该列表以预测隐藏的验证数据集。

我的代码如下:

p = Prophet()
p.add_regressor("val1")
p.add_regressor("val2")
p.add_regressor("val3")
models = []
for region in df5.region.unique():
    print(region)
    model = p.fit(train)
    models.append(model)

但是,我收到此错误

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-265-48d06ef12449> in <module>
      6 for region in df5.region.unique():
      7     print(region)
----> 8     model = p.fit(train)
      9     models.append(model)

Exception: Prophet object can only be fit once. Instantiate a new object.

解决方法

for循环中移动模型实例:

models = []
for region in df5.region.unique():
    p = Prophet()
    p.add_regressor("val1")
    p.add_regressor("val2")
    p.add_regressor("val3")

    print(region)
    model = p.fit(train)
    models.append(model)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。