【问题标题】:Fill missing values with missForest用missForest填充缺失值
【发布时间】:2018-04-06 08:46:00
【问题描述】:

我想使用missForest 估算值,

我在变量中有缺失值,但不是全部。

当我这样做时,它真的很慢(从未发生过)

mf_1 <- missForest(dtrain)

但是当我执行以下操作时,没关系

mf_1 <- missForest(dtrain[c(10,11,9,3)])

您认为在第二种情况下missForest 使用所有变量还是仅使用10, 11, 3, 9 进行预测?

【问题讨论】:

  • 欢迎来到 S.O.请为您的问题添加更多详细信息,以便其他人可以提供帮助(例如,添加使用的示例数据,以便其他人可以复制您遇到的问题)。您会发现这些指南很有用:stackoverflow.com/help/how-to-ask

标签: r random-forest missing-data


【解决方案1】:

对数据框进行子集化只会将这些列传递给missForest() 函数,因此它只会使用这些变量来估算数据。这是一个例子:

library(missForest)
data(iris)

## We are going to have missing values in first 3 columns
## Introduce missing values 
iris_wih_NA <- missForest::prodNA(iris[c(1,2,3)], 0.3)
## Last two columns are then added
iris_wih_NA$Petal.Width <- iris$Petal.Width
iris_wih_NA$Species <- iris$Species
head(iris_wih_NA)

## Will use all variables to impute missing Values
iris_imputed1 <- missForest::missForest(iris_wih_NA)$ximp
## Will use only variables 1,2 and 3 to impute missing values
iris_imputed2 <- missForest::missForest(iris_wih_NA[c(1,2,3)])$ximp

如您所见,第二个估算数据集总共只有 3 列,因为您只提供了那么多信息。

至于 missForest 插补速度慢,我认为您可以减少数据的维度以获得更快的结果,或者使用ntree 参数来限制生成的树的数量。但这两种选择都可能对您的结果质量产生不利影响。

【讨论】:

    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多