You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xgboost PySpark API中验证指标列与评估结果查看问题

如何查看XGBoost PySpark API的验证集评估结果

方法1:训练后在验证集上手动计算指标

你已经通过validationIndicatorCol='isVal'标记了验证数据,训练完成后可以单独过滤出验证集,用模型生成预测结果后,借助Spark的评估器计算指定指标:

from pyspark.sql.functions import col
from pyspark.ml.evaluation import BinaryClassificationEvaluator

# 过滤出验证集
val_df = sampled_df.filter(col("isVal") == 1)
# 用训练好的Pipeline模型生成预测结果
predictions = pipelineModel.transform(val_df)

# 初始化对应指标的评估器(匹配你设置的eval_metric='aucpr')
evaluator = BinaryClassificationEvaluator(
    labelCol="label",
    rawPredictionCol="rawPrediction",
    metricName="areaUnderPR"  # areaUnderPR对应aucpr指标
)

# 计算并打印验证集指标
aucpr_score = evaluator.evaluate(predictions)
print(f"验证集AUC-PR: {aucpr_score}")

方法2:开启训练日志查看每轮评估结果

如果需要监控训练过程中每一轮的验证指标变化,可以在初始化XgboostClassifier时添加verbosity参数开启日志输出,训练时控制台会打印每一轮的验证集指标:

修改你的XGBoost初始化代码:

xgb = XgboostClassifier(featuresCol = "features", 
                        labelCol="label", 
                        num_workers = 40, 
                        random_state = 1,
                        missing = None, 
                        objective = 'binary:logistic',
                        validationIndicatorCol = 'isVal',
                        eval_metric = 'aucpr' ,
                        n_estimators = best_n_estimators, 
                        max_depth = best_max_depth, 
                        learning_rate = best_learning_rate,
                        verbosity=1  # 开启日志,显示每轮验证指标
                       )

训练时日志会输出类似如下内容,包含每一轮的验证集AUC-PR结果:

[1] validation-aucpr: 0.8234
[2] validation-aucpr: 0.8456
...
[n] validation-aucpr: 0.8789

补充说明

XGBoost PySpark实验性API基于分布式实现,和原生XGBoost接口存在差异,目前确实未暴露evals_result()方法,文档未明确说明但属于实际实现限制,上述两种方法可替代获取评估结果。

内容的提问来源于stack exchange,提问作者Vusal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:50:24