r - R - 找出 xgboost 模型期望在新数据中预测的列
问题描述
我们有一个.model
包含 xgboost 模型的文件。这是我们加载模型的代码片段:
> xg_model <- xgb.load("../model_outputs/our_saved_model.model")
> xg_model
##### xgb.Booster
raw: 1.6 Mb
xgb.attributes:
niter
niter: 149
我没有创建此模型,但我的任务是将新数据传递给模型以进行预测。不幸的是,我遇到了这个错误:
Error in predict.xgb.Booster(xg_model, xgb.DMatrix(as.matrix(our_dataframe_of_data))) :
[01:34:01] amalgamation/../src/learner.cc:1183: Check failed: learner_model_param_.num_feature >= p_fmat->Info().num_col_ (38 vs. 40) : Number of columns does not match number of features in booster.
...所以很明显我们的数据框有 40 列,但是这个模型被训练为期望有 38 列的数据框。xg_model
尚不清楚我们所期待的究竟是哪 38 列。是否有一个函数可以调用/绘制图形/等,可以显示模型训练的 38 列?我们目前只有经过训练的模型,但没有训练模型的R
代码......
解决方案
你的 XGBoost 版本是多少?知道这一点很重要,因为 XGBoost “模式规范”已经发展得相当显着。
现在,您应该探索xgb.Booster
对象上可用的属性。查看它是否定义了nfeatures
和feature_names
属性:
print(xg_model$nfeatures)
print(xg_model$feature_names)
我相信您的xgb.Booster
对象具有这些可用属性,因为它怎么知道需要 38 个功能?
推荐阅读
- java - 如何让 WebView 在后台保持视频或音频播放?
- python - 将多个 id 传递到 url Django
- python - Django:CreateView 不显示字段并将其设置为 request.user (ForeignKey)
- perl - 使用 Perl 对数组的哈希进行排序
- javascript - RegExp 在前两个新行之后没有得到所有内容
- python - 如何从列表中删除多个元素?
- javascript - 如何在 Web Speech API 中循环问题
- python - 如何将值与 csv 文件中的值进行比较?
- delphi - Z Score to P Value in Delphi - one-tailed to two-tailed
- java - Web3j java函数调用返回solidity合约的空列表