【问题标题】:Error in Ops.factor(actual, predicted) : level sets of factors are different with Featureimp from package imlOps.factor 中的错误(实际,预测):因素的水平集与包 iml 中的 Featureimp 不同
【发布时间】:2019-11-08 20:08:23
【问题描述】:

我正在使用来自 Kaggle 的数据集“信用卡”。我使用随机森林进行预测,而对于训练集,我使用 smot 函数来平衡我的数据。
我对用于解释机器学习的包 iml 有问题:当我为我的模型使用函数“FeatureImp”时,它给了我一个错误:

Ops.factor 中的错误(实际,预测):因子的水平集不同。

我该怎么做才能解决问题并开始使用 iml?

预测变量是类:factor = 0/1。我已经控制了 Class 变量的类和它的因素。我在 FeatureImp 中使用了损失函数“ce”。

library(DMwR)

smote_creditcard <- SMOTE(Class ~ ., creditcard_train, k=10, perc.over=400,perc.under = 50)

#con perc.over=100 praticamente raddoppio i casi della classe minore

table(smote_creditcard$Class)

#   0    1 
# 796 1990 

prop.table(table(smote_creditcard$Class))

smote_creditcard$Class<-as.factor(smote_creditcard$Class)

creditcard_random <- randomForest(formula = Class ~ ., 
                                  data = smote_creditcard,ntree=1000,mtry=5)

library(iml)

X<-smote_creditcard[which(names(smote_creditcard)!="Class")]

y<-smote_creditcard$Class

predictor<-Predictor$new(creditcard_random,data=X,y=y,type="prob")

imp<-FeatureImp$new(predictor,loss="ce")

Ops.factor 中的错误(实际,预测): 水平组的因素是不同的

【问题讨论】:

  • 看来你的预测值和实际值有不同的水平,尝试使用levels()在他们身上知道它。
  • 0 levels(predict(creditcard_random,smote_creditcard)) levels(smote_creditcard$Class) 我认为你给我的建议是正确的代码。输出相同,为:“0”“1”。

标签: r machine-learning


【解决方案1】:
levels(predict(creditcard_random,smote_creditcard)) levels(smote_creditcard$Class)

我认为您建议我的代码是正确的。输出是相同的,并且是: “0”“1”。

【讨论】:

  • 请编辑您的问题,不要以错误的方式使用答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多