def errors(self): indices = [] # index of a row, formatted YYYY-M (e.g. 2016-8, 2016-9) predictions = [] errors = [] # errors. Lower is better test_data_size = [] actuals = [] for i in range(0, self.num_months() - self.training_data_span_months): m = self._model() training_data = self.training_data(i, self.training_data_span_months) m.fit(training_data) td = self.test_data(i + self.training_data_span_months) print "Generating prediction..." prediction = m.predict(\ BusinessForecast(\ td).convert(), training_data=training_data) actual = ActualSchedule(\ td).bins() print "prediction " print prediction print "\n" print "actual" print actual print "\n" error = mean_absolute_error(actual, prediction) errors.append(error) index = self.year_month_index(i + self.training_data_span_months) indices.append(index) print "time: {}, error: {}".format(index, error) predictions.append(prediction) actuals.append(actual) test_data_size.append(actual.sum()) return pd.DataFrame({ 'errors': errors, 'test_data_size': test_data_size, 'predictions': predictions, 'actuals': actuals }).set_index([indices])