Ищем рабочий пример sklearn.ensemble.GradientBoostingRegressor
. Попытка только базовой c программы инициализации / подгонки / прогнозирования не дает ожидаемого результата. Отлично работает с тестовыми данными (X_test
). Но при прогнозировании значений X, выходящих за пределы данных обучения, всегда получается одно и то же значение (плоская линия / оверфит).
Цель состоит в том, чтобы использовать его для прогнозирования временных рядов и прогнозирования n
количества дней вперед , Возможно, это не лучший алгоритм для использования?
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# Train Models and Predict with test data
ensb_model = GradientBoostingRegressor(loss='ls')
ensb_model.fit(X_train, y_train)
ensb_pred = ensb_model.predict(X_test)
df = pd.DataFrame({'Actual': y_test.flatten(), 'Ensemble': ensb_pred.flatten()})
print("---Model Results {accuracy}---")
print(df)
# Forecast
first_predict = np.amax(X)
x_forecast = np.arange(start=first_predict,stop=last_predict,step=step).reshape(-1,1)
ensb_fore = ensb_model.predict(x_forecast)
pred_df = pd.DataFrame({'Time': x_forecast.flatten(), 'Ensemble': ensb_fore.flatten()})
print("---Forecast---")
print(pred_df)