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

XGBoost预测输入维度错误排查求助

XGBoost预测维度不匹配问题解决

核心错误原因

你遇到的报错本质是输入维度不匹配:

C:/buildkite-agent/builds/buildkite-windows-cpu-autoscaling-group-i-08de971ced8a8cdc6-1/xgboost/xgboost-ci-windows/src/predictor/cpu_predictor.cc:377: Check failed: m->NumColumns() == model.learner_model_param->num_feature (1 vs. 170) : Number of columns in data must equal to trained model.

XGBoost的predict方法要求输入必须是二维数组(格式为[样本数, 特征数])。当你用test_point = X_test_xgb[42]取单条样本时,得到的是一维数组(你提到的(170,0)大概率是笔误,实际shape应为(170,))。此时XGBoost会将这个一维数组误识别为[170, 1]的二维结构——也就是170个样本、每个样本仅1个特征,这和训练时的170个特征完全不匹配,因此触发报错。

为什么X_test_xgb[42:43]能正常运行?

切片42:43取到的是一个二维数组,shape为(1, 170),刚好符合[1个样本, 170个特征]的要求,所以模型能正常处理。

你的疑问解答

  1. predict不需要表头:你用numpy数组训练的模型,只关心特征的数量和顺序,和表头没有任何关系,不用考虑表头的问题。
  2. 转置无效的原因:一维数组的转置依然是一维结构,X_test_xgb[42].T的shape还是(170,),并没有转换成模型需要的二维格式。

解决方法

你可以用两种方式修正输入维度:

  • 方式一:保持切片写法
    test_point = X_test_xgb[42:43]
    original_model_prediction = xgb_model.predict(test_point)
    
  • 方式二:用reshape转换一维数组为二维
    test_point = X_test_xgb[42].reshape(1, -1)  # -1自动计算特征数,这里就是170
    original_model_prediction = xgb_model.predict(test_point)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:30:48