Ops.factor中的错误(实际的,预测的):要素的水平集与来自软件包iml的Featureimp不同

时间:2019-06-26 20:16:35

标签: r machine-learning

我正在使用Kaggle的数据集“信用卡”。我使用randomforest进行预测,并使用训练集使用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中的错误(实际,预测):   因素的水平集不同

1 个答案:

答案 0 :(得分:0)

levels(predict(creditcard_random,smote_creditcard)) levels(smote_creditcard$Class)

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