Как сделать прогноз из последней точки данных набора тестов - PullRequest
0 голосов
/ 14 июня 2019

Я выполняю проект по прогнозированию временных рядов.Моя задача - прогнозировать объем продаж в декабре при наличии данных с января по ноябрь.Я разбил данные на поезд и тестовый набор.Я уже применил Randomforestregression для прогнозирования на тестовом наборе.Однако я не знаю, как использовать модель для прогнозирования объема продаж в декабре.Не могли бы вы, пожалуйста, дайте мне знать, как это сделать?Заранее спасибо.

1 Ответ

0 голосов
/ 14 июня 2019

Если вы уже закончили очистку данных, вы уже разбили их на наборы данных training и testing. Вы можете просто поместить их через эту pipline функцию, которую я создал. Это generic function, которое принимает любой алгоритм и данные в качестве входных данных и создает модель, выполняет перекрестную проверку и генерирует прогноз для набора данных testing.

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
import pandas as pd
import plotly.plotly as ply
import cufflinks as cf

cf.go_offline()


#Define target and ID columns:
target = 'sales'
IDcol = ['months']
predictors = [x for x in training.columns if x not in [target]+IDcol]

alg = RandomForestRegressor(n_estimators=200,max_depth=5, min_samples_leaf=100,n_jobs=4)
test = modelfitting(alg, training, testing, predictors, target)
coef5 = pd.Series(alg.feature_importances_, predictors).sort_values(ascending=False)
coef5.iplot(kind='bar', title='Feature Importances')

for_plot = test
for_plot = for_plot[['sales prediction']]
for_plot.iplot()


def modelfitting(alg, training, testing, predictors, target):
    # Fit the algorithm on the data
    alg.fit(training[predictors], training[target])

    # Predict training set:
    dtrain_predictions = alg.predict(training[predictors])

    # Perform cross-validation:
    cv_score = cross_val_score(alg, training[predictors], training[target], cv=20, scoring='neg_mean_squared_error')
    cv_score = np.sqrt(np.abs(cv_score))

    # Print model report:
    print "\nModel Report"
    print "RMSE : %.4g" % np.sqrt(metrics.mean_squared_error(training[target].values, dtrain_predictions))
    print "CV Score : Mean - %.4g | Std - %.4g | Min - %.4g | Max - %.4g" % (
    np.mean(cv_score), np.std(cv_score), np.min(cv_score), np.max(cv_score))

    # Predict on testing data:
    testing["sales prediction"] = alg.predict(testing[predictors])

    return testing

Я положил поясняющие комментарии. Пожалуйста, не стесняйтесь обсуждать в комментариях, если вы сталкиваетесь с трудностями в понимании кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...