我正在使用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中的错误(实际,预测): 因素的水平集不同
答案 0 :(得分:0)
levels(predict(creditcard_random,smote_creditcard)) levels(smote_creditcard$Class)
我认为这是您建议我的正确代码。输出是相同的,并且是: “ 0”“ 1”。