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

在噪声数据集下,如何提取XGBoost最终模型的训练集预测结果?

获取XGBoost最终模型在训练集上的预测结果

没问题,我完全理解你在噪声极强的数据集里,要提取训练集预测来排查异常样本、做模型堆叠的需求——这步确实对后续分析至关重要。下面给你几个实用的解决方案,分场景说明:

场景1:使用原生xgb.train训练模型

如果是用XGBoost的原生接口训练模型,训练完成后直接调用模型的predict方法传入训练数据就能得到结果,非常直接:

import xgboost as xgb

# 准备训练数据矩阵
dtrain = xgb.DMatrix(X_train, label=y_train)

# 设置模型参数(根据你的任务调整)
params = {
    'objective': 'binary:logistic',  # 示例为二分类任务
    'eval_metric': 'logloss',
    'max_depth': 3,
    'learning_rate': 0.1
}

# 训练模型
final_model = xgb.train(params, dtrain, num_boost_round=100)

# 获取训练集的预测结果
train_predictions = final_model.predict(dtrain)

场景2:先通过xgb.cv调参,再获取最终模型的训练集预测

你提到用了xgb.cv提取OOF预测,但xgb.cv本身只是用来做交叉验证评估和调参的,不会直接输出一个可用的最终模型。正确的流程是:

  1. 用xgb.cv找到最优的迭代次数(num_boost_round)
  2. 用全量训练数据和这个最优迭代次数训练最终模型
  3. 用最终模型预测训练集

代码示例:

import xgboost as xgb

dtrain = xgb.DMatrix(X_train, label=y_train)
params = {
    'objective': 'binary:logistic',
    'eval_metric': 'logloss',
    'max_depth': 3
}

# 执行交叉验证,启用早停找最佳迭代次数
cv_results = xgb.cv(
    params,
    dtrain,
    num_boost_round=200,
    nfold=5,
    early_stopping_rounds=10,
    metrics='logloss',
    seed=42,
    verbose_eval=False
)

# 从交叉验证结果中提取最佳迭代次数
best_num_rounds = cv_results.shape[0]

# 用全量训练数据训练最终模型
final_model = xgb.train(params, dtrain, num_boost_round=best_num_rounds)

# 获取训练集预测结果
train_predictions = final_model.predict(dtrain)

场景3:使用Scikit-learn兼容接口(XGBClassifier/XGBRegressor)

如果习惯用Scikit-learn风格的API,操作会更简洁,训练完直接调用predict或predict_proba即可:

from xgboost import XGBClassifier

# 初始化模型(回归任务用XGBRegressor)
model = XGBClassifier(
    objective='binary:logistic',
    max_depth=3,
    learning_rate=0.1,
    n_estimators=100
)

# 训练模型
model.fit(X_train, y_train)

# 获取训练集的类别预测或概率预测
train_class_preds = model.predict(X_train)
train_prob_preds = model.predict_proba(X_train)[:, 1]  # 二分类取正类概率

补充说明:你提到训练时能查看每一轮的误差,是因为训练过程中会实时评估验证集指标,但要得到具体的预测值,必须让模型对训练数据执行一次前向计算——上面的方法都是基于这个逻辑实现的。如果你的需求是交叉验证过程中的OOF预测(每个样本在未参与训练的折中的预测),xgb.cv的结果里也能提取,但你要的是最终模型在全量训练集上的预测,上面的方案就完全适用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:50:23