Search code examples
functionfacebook-prophetmean-square-error

Mean_squared_error output in function includes dtype and '0'


I want to calculate test statistics for a fb prophet forecast in a function because I want to average the test stats over different forecasts and cutoff points after using the fb-prophet cross_validation to get df_cv. I created a function that I apply to the dataframe after grouping by the cutoff points, in order to receive a measure per cutoff point. Then I calculate the mean over all these values.

The problem is that my function returns not only the value I am looking for but also a 0 as well as an information of the dtype. I can still do calculations with the returned value but when I want to plot etc. later it is very inconvenient. How can I strip these unnecessary values from the output?

def compute_avg_stats(df_cv,perf_measure):
    measures = {'mse':mean_squared_error,'mae':mean_absolute_error,'mape':mean_absolute_percentage_error,'rmse':mean_squared_error}
    performance_stats = {}
    if perf_measure == 'rmse':
        measure = np.sqrt(measures[perf_measure](y_true=df_cv['y'],y_pred=df_cv['yhat']))
    else:
        measure = measures[perf_measure](y_true=df_cv['yu'],y_pred=df_cv['yhat'])

    return measure
df_cv.groupby('cutoff').apply(compute_avg_stats,perf_measure='rmse').to_frame().mean()

The output of the function, including the unwanted content ('0' and 'dtype: float64')


Solution

  • I think .mean() returns a Series. Try with .mean()[0]