python - 如何绘制 XGBoost 评估指标?

标签 python pandas matplotlib xgboost xgbclassifier

我有以下代码

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) 和其他指标之间绘制。有没有其他方法可以直接绘制输出?

最佳答案

我将继续从您的代码展示绘制 AUC 分数的示例。

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

结果 是您的 y 轴值,而 时代 是您的“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 evaluation metric plot

如果想看分类错误,改[' auc '] 到 [' 错误 '] 在 ax.plot 中

关于python - 如何绘制 XGBoost 评估指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51900874/

相关文章:

pandas - 将 XML 文件读取到 Pandas DataFrame

python - 查找 DAG 上从源节点出发的最长路径

python - 使用 python 从基于 DataFrame 的 2 个向量的函数创建一个新字段

python - matplotlib 修改 colormap 以白色为零

python - Pandas .read_json(JSON_URL)

python - 在 x 轴上绘制带有标签而不是计数的直方图 matplotlib

python - 从 seaborn 中保存情节

python - 在 matplotlib 图例中的两条线上画一个大括号

python - 如何处理 Pandas 中的 2 列并使用新列名称创建新数据框

python - 是否可以使用 aws cognito google oauth access_token 通过 boto3 获取临时凭证?