Сводка
Я использую Python v3.7 и xgboost v0.81.У меня есть непрерывные данные (y) на уровне штата США по каждой неделе с 2015 по 2019 год. Я пытаюсь регрессировать к следующим функциям: y, год, месяц, неделя, регион (закодировано).Я установил поезд на август 2018 года и раньше, а тест - на сентябрь 2018 года и далее.Когда я тренирую модель таким образом, происходят две странные вещи:
- feature_importances все равно nan
- предсказания одинаковы (0,5, 0,5 ....)
То, что я пробовал
Фиксация любых функций в одной переменной позволяет модели обучаться соответствующим образом, и две странные проблемы, с которыми мы столкнулись ранее, исчезли.Ex.год == 2017 или регион == 28
код
(я знаю, что это временная проблема, но проблема возникает и в этом общем случае)
X = df[['year', 'month', 'week', 'region_encoded']]
display(X)
y = df.target
display(y)
X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, test_size=0.1)
model = XGBRegressor(n_jobs=-1, n_estimators=1000).fit(X_train, y_train)
display(model.predict(X_test)[:20])
display(model.feature_importances_)
Результаты- некоторые прогнозы и значения функций
year month week region_encoded
0 2015 10 40 0
1 2015 10 40 1
2 2015 10 40 2
3 2015 10 40 3
4 2015 10 40 4
0 272.0
1 10.0
2 290.0
3 46.0
4 558.0
Name: target, dtype: float64
array([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], dtype=float32)
array([nan, nan, nan, nan], dtype=float32)