Сравнить истинные и предсказанные значения в машинном обучении

Прогнозирование заработной платы. Набор данных около 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])
→ Ссылка