如何使R IML FeatureImp()函数工作?

如何使R IML FeatureImp()函数工作?,r,machine-learning,iml,R,Machine Learning,Iml,我试图让IML包中的FeatureImp函数正常工作,但它一直抛出一个错误。下面是一个来自钻石数据集的示例,我在此基础上训练了一个随机森林模型 library(iml) library(caret) library(randomForest) data(diamonds) # create some binary classification target (without specific meaning) diamonds$target <- as.factor(ifelse(diam

我试图让IML包中的FeatureImp函数正常工作,但它一直抛出一个错误。下面是一个来自钻石数据集的示例,我在此基础上训练了一个随机森林模型

library(iml)
library(caret)
library(randomForest)
data(diamonds)
# create some binary classification target (without specific meaning)
diamonds$target <- as.factor(ifelse(diamonds$color %in% c("D", "E", "F"), "X", "Y"))
# drop categorical variables (to keep it simple for demonstration purposes)
diamonds <- subset(diamonds, select = -c(color, clarity, cut))
# train model
mdl_diamonds <- train(target ~ ., method = "rf", data = diamonds)
# create iml predictor
x_pred <- Predictor$new(model = mdl_diamonds, data = diamonds[, 1:7], y = diamonds$target, type = "prob")
# calculate feature importance
x_imp <- FeatureImp$new(x_pred, loss = "mae")
我不明白我做错了什么。有人能给我线索吗


我正在开发R版本3.5.1,iml软件包版本0.9.0。

我发现了问题。我使用“mae”作为损失函数,这是-我可能知道-不适用于分类目标。使用“ce”或“f1”将按预期返回输出。

我发现了问题所在。我使用“mae”作为损失函数,这是-我可能知道-不适用于分类目标。使用“ce”或“f1”按预期返回输出。

因为它是随机林。所以试试loss='ce'。

因为它是随机森林。所以试试loss='ce'。

你能一步一步地运行它,看看这个错误是什么时候第一次出现的吗?错误到底在你的代码中什么地方出现的?我一步一步地运行代码。错误出现在最后一条语句之后。你能一步一步地运行它,看看这个错误是什么时候第一次出现的吗?错误确切地出现在你的代码中的什么地方?我一步一步地运行代码。错误出现在最后一条语句之后。对于我的分类任务,它甚至与“ce”一起也不起作用。对于我的分类任务,它甚至与“ce”一起也不起作用。这并不能提供问题的答案。一旦你有足够的钱,你将能够;相反这并不能回答这个问题。一旦你有足够的钱,你将能够;相反-
Error in if (self$original.error == 0) { :
  missing value where TRUE/FALSE needed
In addition: Warning message:
In Ops.factor(actual, predicted) : ‘-’ not meaningful for factors