首页 > 解决方案 > 如何将训练数据中的中值估算为 R 中的测试数据?

问题描述

我正在尝试创建一个分类模型,但在预处理数据框时遇到了问题。我已将数据拆分为训练和测试,现在我已经使用它们各自列的中位数替换了训练中的所有数字列。现在我想用从训练数据集中获得的中位数替换测试数据中的缺失值。我怎样才能在 R 中实现这一点?例如,这是我正在运行的代码,用于获取训练集中所有列的中位数。请告知,我在训练和测试中都有大约 86 列,上面的代码只适用于训练集(如果是数字则替换中位数,如果类别则替换为模式)

Mode <- function (x, na.rm) {
  xtab <- table(x)
  xmode <- names(which(xtab == max(xtab)))
  if (length(xmode) > 1) xmode <- ">1 mode"
  return(xmode)
}

for (var in 1:ncol(raw)) {
  if (class(raw[,var])=="integer") {
    raw[is.na(raw[,var]),var] <- median(raw[,var], na.rm = TRUE)
  } else if (class(raw[,var]) %in% c("character", "factor")) {
    raw[is.na(raw[,var]),var] <- Mode(raw[,var], na.rm = TRUE)
  }
} 

标签: rdataframefor-looptraining-data

解决方案


推荐阅读