【发布时间】:2019-09-17 10:35:05
【问题描述】:
我的数据如下所示,我正在使用 facebook FbProphet 进行预测。接下来我想为我的数据框中的每个组计算SMAPE。我找到了 Kaggle 用户 here 描述的功能,但我不确定如何在我当前的代码中实现。这样SMAPE 就可以为每个组计算。另外,我知道 fbProphet 有验证功能,但我想为每个组计算SMAPE。
注意:我是python新手,请提供代码解释。
数据集
import pandas as pd
data = {'Date':['2017-01-01', '2017-01-01','2017-01-01','2017-01-01','2017-01-01','2017-01-01','2017-01-01','2017-01-01',
'2017-02-01', '2017-02-01','2017-02-01','2017-02-01','2017-02-01','2017-02-01','2017-02-01','2017-02-01'],'Group':['A','A','B','B','C','C','D','D','A','A','B','B','C','C','D','D'],
'Amount':['12.1','13.2','15.1','10.7','12.9','9.0','5.6','6.7','4.3','2.3','4.0','5.6','7.8','2.3','5.6','8.9']}
df = pd.DataFrame(data)
print (df)
到目前为止的代码...
def get_prediction(df):
prediction = {}
df = df.rename(columns={'Date': 'ds','Amount': 'y', 'Group': 'group'})
df=df.groupby(['ds','group'])['y'].sum()
df=pd.DataFrame(df).reset_index()
list_articles = df.group.unique()
for group in list_articles:
article_df = df.loc[df['group'] == group]
# set the uncertainty interval to 95% (the Prophet default is 80%)
my_model = Prophet(weekly_seasonality= True, daily_seasonality=True,seasonality_prior_scale=1.0)
my_model.fit(article_df)
future_dates = my_model.make_future_dataframe(periods=6, freq='MS')
forecast = my_model.predict(future_dates)
prediction[group] = forecast
my_model.plot(forecast)
return prediction
【问题讨论】:
-
这可能会有所帮助 stats.stackexchange.com/questions/145490/… 你是否要计算这个组的 smape
for group in list_articles: -
@jayprakashstar..yes..我正在尝试计算位于我的“组”列中的每个组的 smape,并使用先知获得的预测值
标签: python-3.x time-series pandas-groupby facebook-prophet