r - 如何将训练数据中的中值估算为 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)
}
}
解决方案
推荐阅读
- python - cv2 如何对比拉伸、去噪、锐化/平滑
- php - Google Drive API 获取所有子文件夹
- visual-studio-2019 - 如何在 Visual Studio 2019 中打开滚动条附近的代码概览?
- javascript - 将 async/await 和 Promises 与 Javascript(以及 Node.js)一起使用的正确方法是什么
- c# - 如何异步执行 WaitUntil?
- linux - 在不提取的情况下获取压缩文本文件中的文本
- powershell-remoting - 如何以正确的方式格式化脚本块变量
- java - 用于测试的全局模拟对象?
- angular - 将 observable 转换为数组或修改使用 observable 的函数
- javascript - 使用 node-canvas 和 jsdom 重复调用资源