Что делать, если ваше значение у повторяется (пытаясь предсказать доход на конец месяца)? - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь написать алгоритм, который предсказывает доход за текущий месяц. Я использую следующие функции: доход за месяц, количество оставшихся дней, открытые заказы и месяц.

Проблема, которую я считаю, заключается в том, что у меня есть утечка данных. My y value - это фактический доход на конец месяца за исторические месяцы Поэтому если в месяце 30 дней, у меня будет 30 строк с одинаковым значением y. У меня есть около 1000 строк данных.

Я использовал случайный лес, но мой прогноз возвращается с точно правильными ответами на моем тренировочном наборе. Очевидно, алгоритм подхватывает тот факт, что ответ повторяется. Я попытался удалить месяц из своих функций, но у него все еще были некоторые прекрасные прогнозы. Я также попробовал разделить временные ряды. А также SVR с KFold. Ниже мой код для случайного леса и SVR.

SVR

scores = []
best_svr = SVR(kernel='rbf')
cv = KFold(n_splits=10, random_state=42, shuffle=False)
for train_index, test_index in cv.split(X):
print("Train Index: ", train_index, "\n")
print("Test Index: ", test_index)

X_train, X_test, y_train, y_test = X.iloc[train_index], X.iloc[test_index], y.iloc[train_index], 
y.iloc[test_index]
best_svr.fit(X_train, y_train)
scores.append(best_svr.score(X_test, y_test))

Случайный лес

from sklearn.model_selection import TimeSeriesSplit
tss = TimeSeriesSplit(n_splits = 9)
Actual_Month_Revenue = DF['Month Gross Revenue']
features_final = DF.drop('Month Gross Revenue', axis=1)
features_final = features_final.drop('Open_Orders1', axis=1)

Split the 'features' and 'Gross Revenue by month' data into training and testing sets
for train_index, test_index in tss.split(features_final):
X_train, X_test = features_final.iloc[train_index, :], features_final.iloc[test_index,:]
y_train, y_test = Actual_Month_Revenue.iloc[train_index], Actual_Month_Revenue.iloc[test_index]

from sklearn import preprocessing
regr = RandomForestRegressor()

regr.fit(features_final, Actual_Month_Revenue)

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