【发布时间】:2020-10-16 19:02:42
【问题描述】:
我正在尝试使用 fbprophet 添加一个额外的回归器进行实验,但它似乎并没有提高准确性。当然,在一般情况下不能保证,但我已经把它归结为一个看起来应该的合成案例,但它仍然不是,所以我想知道我是否做错了什么。
这是输入数据:
ds,y
2011-01-01,8
2011-02-01,10
2011-03-01,10
2011-04-01,10
2011-05-01,9
2011-06-01,8
2011-07-01,6
2011-08-01,7
2011-09-01,9
2011-10-01,9
2011-11-01,10
2011-12-01,10
2012-01-01,20
2012-02-01,20
2012-03-01,20
2012-04-01,20
2012-05-01,20
2012-06-01,20
2012-07-01,20
2012-08-01,20
2012-09-01,20
2012-10-01,20
2012-11-01,20
2012-12-01,20
这个想法是第一年有点吵,这并不是第二年的真正指南,第二年所有值都定在 20。
这是我的代码:
import fbprophet
import pandas as pd
import sklearn.metrics
plain = pd.read_csv("data.csv")
plain_train = plain[plain.ds < "2012-01-01"]
plain_test = plain[plain.ds >= "2012-01-01"]
plain_m = fbprophet.Prophet()
plain_m.fit(plain_train)
plain_forecast = plain_m.predict(plain_test)
augmented = pd.read_csv("data.csv")
augmented["extra"] = [20.0] * 24
augmented_train = augmented[augmented.ds < "2012-01-01"]
augmented_test = augmented[augmented.ds >= "2012-01-01"]
augmented_m = fbprophet.Prophet()
augmented_m.add_regressor("extra")
augmented_m.fit(augmented_train)
augmented_forecast = augmented_m.predict(augmented_test)
print("plain_forecast")
print(
sklearn.metrics.mean_absolute_error(
plain_test["y"].values, plain_forecast["yhat"].values
)
)
print("augmented_forecast")
print(
sklearn.metrics.mean_absolute_error(
augmented_test["y"].values, augmented_forecast["yhat"].values
)
)
它首先尝试对未增强的数据进行预测运行,然后使用始终为 20 的第二列进行增强,因此可以完美地指导数据将基于什么,因此可能非常有帮助。
还有输出:
plain_forecast
11.072845254369435
augmented_forecast
11.072872701031054
数字不相同,因此额外的列并没有被完全忽略,但准确性并没有提高;虽然噪音水平的差异有所下降,但稍微差一点。
我错过了什么?
【问题讨论】:
标签: python regression facebook-prophet