R:使用FeatureImp $ new绘制重要性功能

时间:2018-08-23 07:51:14

标签: r xgboost mlr

这是代码

var z = ((Customer)comboBox.Items[1]).CustomerSay

我遇到以下错误

library(mlr)
library(xgboost)
library(iml)
data("iris")
tsk = makeClassifTask(data = iris, target = "Species")
lrn = makeLearner("classif.xgboost",predict.type = "prob")
mod = mlr:::train(lrn, tsk)
X = iris[which(names(iris) != "Species")]
predictor = Predictor$new(mod, data = X, y = iris$Species)
imp = FeatureImp$new(predictor, loss = "ce")
  

estimate.feature.imp(feature,data.sample = data.sample,y = y,的错误:         任务1失败-“存储在imp = FeatureImp$new(predictor, loss = "ce") Warning in predict.WrappedModel(model, newdata = newdata) : Provided data for prediction is not a pure data.frame but from class data.table, hence it will be converted. object中的功能名称不同!”

我尝试检查模型和数据中的特征名称,但是两者相似。因此,我不明白这个错误到底是什么 “存储在newdataobject中的功能名称是不同的!”

newdata

1 个答案:

答案 0 :(得分:0)

这是一个MyHomepage({Key key})问题:https://github.com/dmlc/xgboost/issues/1809

关于变量的顺序。

xgboost

应该解决它。几天前我也遇到了同样的问题。

编辑:错误仍然会发生,可能是由于X = X[mod$learner.model$feature_names] 的改组造成了一些混乱。但是绝对可以解决此问题,因为使用iml进行预测调用时也会发生此错误。