Сравнить истинные и предсказанные значения в машинном обучении
Прогнозирование заработной платы. Набор данных около 40 000 записей (должность, опыт работы, компания, график и тд). Оценка R^2 около 35-40%. Использую регрессоры из sklearn и кроссвалидацию.
gb_reg = GradientBoostingRegressor(random_state=0, **params)
gb = cross_validate(gb_reg, X, y, cv=5, scoring=('r2',
'neg_mean_absolute_error'),
return_train_score=True)
Можно ли каким-то образом вывести на экран значения столбцов, истинные и предсказанные, чтобы понять в чем конкретно ошибается модель?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Что-то такое:
from sklearn.model_selection import KFold
kf = KFold(n_splits=5)
for train_index, test_index in kf.split(X):
X_train, X_test = X.loc[train_index], X.loc[test_index]
y_train, y_test = y[train_index], y[test_index]
gb_reg.fit(X_train, y_train)
y_pred = gb_reg.predict(X_test)
# тут вопрос - какая разница предсказания и истинных значений вас интересует?
diff_mask = (y_pred - y_test).abs() > 1 # подберите интересующую вас разницу
X_diff = X_test.copy()
X_diff['y_true'] = y_test
X_diff['y_pred'] = y_pred
print(X_diff[diff_mask])