Как построить показатели оценки XGBoost?

У меня есть следующий код

eval_set = [(X_train, y_train), (X_test, y_test)]
eval_metric = ["auc","error"]

В следующей части я тренирую XGBClassifier модель

model = XGBClassifier()
%time model.fit(X_train, y_train, eval_set=eval_set, eval_metric=eval_metric, verbose=True)

Это дает мне метрики в следующем формате

[0] validation_0-auc:0.840532   validation_0-error:0.187758 validation_1-auc:0.84765    validation_1-error:0.17672
[1] validation_0-auc:0.840536   validation_0-error:0.187758 validation_1-auc:0.847665   validation_1-error:0.17672
....
[99] validation_0-auc:0.917587  validation_0-error:0.13846  validation_1-auc:0.918747   validation_1-error:0.137714
Wall time: 5 s

Я сделал DataFrame из этого и нанес на график между временем (0-99) и другими метриками. Есть ли какой-то другой способ построить прямую подачу на выходе?

0 ответов

Я продолжу с вашего кода, чтобы показать пример построения вашего показателя AUC.

results = model.evals_result()
epochs = len(results['validation_0']['error'])
x_axis = range(0, epochs)

Результаты ваших значений оси у, и эпохи вашего значения 'n_estimators. Код ниже отображает эти результаты:

fig, ax = pyplot.subplots()
ax.plot(x_axis, results['validation_0']['auc'], label='Train')
ax.plot(x_axis, results['validation_1']['auc'], label='Test')
ax.legend()
pyplot.ylabel('AUC')
pyplot.title('XGBoost AUC')
pyplot.show()

Это даст следующий результат:

График показателей оценки AUC XGBoost

Если вы хотите посмотреть на ошибку классификации, замените ['auc'] на ['error'] в ax.plot.

Другие вопросы по тегам