我正在参加Kaggle Titanic比赛,我有一个关于输入缺失值的问题。我正在尝试使用Caret包,我的训练集包括因素和数字。
我想使用Caret中的preProcess
函数来估算缺失值,但在使用preProcess之前,我需要使用dummyVars
函数将所有因子转换为虚拟变量。
dummies = dummyVars(survived ~ . -1, data = train, na.action = na.pass)
xtrain = predict(dummies, train)
但是,在使用dummyVars
转换因子的过程中,所有的NA都是通过某种未知算法预测的,即使我已指定{{1},所有缺失的age
列都会变为1 }。我希望将我的因子转换为虚拟变量而不触及NA,这样我就可以使用na.action = na.pass
函数来估算它们。我怎么能这样做?
谢谢。
在这里输入:
preProcess
答案 0 :(得分:4)
这第一部分是一个bug; NA值不应为1(显然)。在此期间,您可以使用model.matrix
生成虚拟变量,但您可能必须立即对所有数据执行此操作。此外,如果您使用train
,则可以使用公式方法。总的来说,这是一种更好的方法。
我会在接下来的几周内解决这个问题。我即将发布一个插入版本的插件,加上UseR,会让我有点迟钝。
编辑:将在下周发布新版本以修复错误
最高