【问题标题】:Impute Missing Values with Caret用插入符号填补缺失值
【发布时间】:2013-06-20 11:31:41
【问题描述】:

我正在参加 Kaggle Titanic 比赛,我有一个关于估算缺失值的问题。我正在尝试使用 Caret 包,我的训练集由因素和数字组成。

我想在 Caret 中使用 preProcess 函数来估算缺失值,但在使用 preProcess 之前,我需要使用 dummyVars 函数将我的所有因子转换为虚拟变量。

dummies  = dummyVars(survived ~ . -1, data = train, na.action = na.pass)
xtrain = predict(dummies, train)

但是,在使用dummyVars 转换因子的过程中,所有的NAs 都是通过某种未知算法预测的,即使我指定了na.action = na.pass,缺失的age 列都变为1。我想在不触及 NA 的情况下将我的因子转换为虚拟变量,以便我可以使用然后使用 preProcess 函数来估算它们。我该怎么做?

谢谢。

在这里输入:

structure(list(survived = structure(c(1L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("0", 
"1"), class = "factor"), pclass = structure(c(3L, 1L, 3L, 1L, 
3L, 3L, 1L, 3L, 3L, 2L, 3L, 1L, 3L, 3L, 3L, 2L, 3L, 2L, 3L, 3L
), .Label = c("1", "2", "3"), class = "factor"), sex = structure(c(2L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 
2L, 1L, 1L), .Label = c("female", "male"), class = "factor"), 
    age = c(22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, 
    39, 14, 55, 2, NA, 31, NA), sibsp = c(1, 1, 0, 1, 0, 0, 0, 
    3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0, 1, 0), parch = c(0, 0, 0, 
    0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0, 0, 0), fare = c(7.25, 
    71.2833, 7.925, 53.1, 8.05, 8.4583, 51.8625, 21.075, 11.1333, 
    30.0708, 16.7, 26.55, 8.05, 31.275, 7.8542, 16, 29.125, 13, 
    18, 7.225), embarked = structure(c(4L, 2L, 4L, 4L, 4L, 3L, 
    4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 2L), .Label = c("", 
    "C", "Q", "S"), class = "factor")), .Names = c("survived", 
"pclass", "sex", "age", "sibsp", "parch", "fare", "embarked"), row.names = c(NA, 
20L), class = "data.frame")

【问题讨论】:

    标签: r r-caret


    【解决方案1】:

    这第一部分是一个错误; NA 值不应为 1(显然)。同时,您可以使用model.matrix 生成虚拟变量,但您可能必须同时为所有数据执行此操作。另外,如果您使用train,则可以使用公式方法。总的来说,这是一个更好的方法。

    我会在接下来的几周内解决这个问题。我即将发布一个插入符号的版本,这个版本加上 UserR 会耽误我一点时间。

    编辑:下周将发布一个新版本来修复错误

    最大

    【讨论】:

    • 感谢您的回复。 model.matrix 似乎也没有解决问题,因为它忽略了任何带有 NA 的行。请让我知道是否有办法让它工作。谢谢。
    猜你喜欢
    • 2018-08-14
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多