我已经注意到,由于某种原因,尝试在data.frame上执行该过程时,klaR程序包产生的麻烦将产生一个错误,其中一列是一个一级因素。这是一个例子:
a<-factor(rep(c("BAD", "GOOD"), 5))
b<-factor(rep(c(1,2), 5))
c<-factor(rep(c(2,3), 5))
d<-factor(rep(1,10))
df<-data.frame(a=a, b=b, c=c, d=d)
现在执行
woe(a~., data = df[,-4])
不会产生任何错误,而
woe(a~., data = df)
将崩溃,并显示以下内容:
Error in applywoes(object[[i]], x.fact[, which(names(x.fact) == names(object)[i])]) :
Factor Levels do not match!
In addition: Warning message:
In is.na(e2) : is.na() applied to non-(list or vector) of type 'NULL'
在我看来,问题在于d
只有一个层次是一个因素。尽管如此,在这种情况下,祸患的定义应将值设为0 ...
这是过程实现中的错误还是(出于某种奇怪的原因)故意的行为?
我的猜测是这不是故意的行为。根据我在Git上所读的内容(https://github.com/cran/klaR/blob/master/R/woe.R),诸如“ woe.default”之类的功能通常从检查常见错误情况开始。您得到的错误显然已得到检查。您可能应该直接联系此计划背后的团队以获取正确的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句