在我的数据集中,我有大约40%的缺失值。所以我使用了impute()
包中的e1071
。我使用下面的代码通过它们的中位数来计算整数变量的缺失值,并通过它们的模式将字符变量的值丢失。
library(mlr)
imp1 <- impute(obj = as.data.frame(train_prop), target=character(0),
classes = list(integer=imputeMedian(), factor=imputeMode()))
执行代码后,我使用以下代码检查缺失值
table(is.na(imp1$data))
# FALSE TRUE
# 5493033 13742
显示约0.25%缺失值
在运行impute函数之前,我做了相同的检查并找到了以下结果
# FALSE TRUE
# 3267515 2239260
最初我的数据有40%的缺失值,但在运行impute()
后,我的错误值减少了0.2%。
为什么我没有丢失0%的值?
答案 0 :(得分:1)
假设impute属于classes
包,只需更改class(1)
[1] "numeric"
参数即可解决问题。
注意:
classes
因此,在integer
参数中,只需将numeric
更改为imp1 <- impute(obj = as.data.frame(train_prop), target =character(0),classes = list(numeric = imputeMedian(), factor = imputeMode()))
,
var object = [
{id: 1, items: "a, b, c, d"},
{id: 2, items: "a, b, d, c"},
{id: 3, items: "a, b, c, d, e"}
{id: 4, items: "a, b, d, c, e"}
];
希望这有帮助。