R中的Dropout:随机删除元素并用NA替换它们
Dropout in R: randomly remove elements and replace them with NA
我想实现 dropout,即用 NA 随机替换元素,return vector/list 返回 NA 值。
想要的结果是减少过度拟合,因此可能会有更好的便利函数。
方法一
b<-rnorm(100); b[match(sample(b,10),b)] <- NA
其中 10 个值替换为 NA。
方法2.如何去除90%的人口?不工作,低于 90%:
b<-rnorm(99); b[match(sample(b,length(b)*0.9),b)] <- NA
由于可能的匹配,即选择相同的元素,这实际上不起作用。
是否有任何内置或方便的 dropout 函数?
使用函数 is.na<-
将 NA
值分配给向量。
set.seed(1)
b <- rnorm(100)
b[match(sample(b, 10), b)] <- NA
set.seed(1)
b2 <- rnorm(100)
is.na(b2) <- sample(length(b2), 10)
identical(b, b2)
#[1] TRUE
为了实现用NA
的去除90%的人口,sample
根据待处理向量的长度
set.seed(1)
b <- rnorm(100)
is.na(b) <- sample(length(b), 0.9*length(b))
mean(is.na(b))
#[1] 0.9
我想实现 dropout,即用 NA 随机替换元素,return vector/list 返回 NA 值。
想要的结果是减少过度拟合,因此可能会有更好的便利函数。
方法一
b<-rnorm(100); b[match(sample(b,10),b)] <- NA
其中 10 个值替换为 NA。
方法2.如何去除90%的人口?不工作,低于 90%:
b<-rnorm(99); b[match(sample(b,length(b)*0.9),b)] <- NA
由于可能的匹配,即选择相同的元素,这实际上不起作用。
是否有任何内置或方便的 dropout 函数?
使用函数 is.na<-
将 NA
值分配给向量。
set.seed(1)
b <- rnorm(100)
b[match(sample(b, 10), b)] <- NA
set.seed(1)
b2 <- rnorm(100)
is.na(b2) <- sample(length(b2), 10)
identical(b, b2)
#[1] TRUE
为了实现用NA
的去除90%的人口,sample
根据待处理向量的长度
set.seed(1)
b <- rnorm(100)
is.na(b) <- sample(length(b), 0.9*length(b))
mean(is.na(b))
#[1] 0.9