我有一个稀疏矩阵(观察值的30%为0)。
如何进行居中和缩放以使所有值都介于0和1之间(缩放功能为稀疏单元格提供负值)。
结果将是卷积神经网络的输入
答案 0 :(得分:0)
下面的代码将通过应用数据ecdf
将您的非零矩阵项转换为遵循标准均匀分布的随机变量。
set.seed(1234) # Make the results reproducible
n <- 1e2
mat <- matrix(rnorm(n*n, sd = 10), nrow = n)
mat[sample(0.3*n*n)] <- 0
mean(mat == 0)
#[1] 0.3
f <- ecdf(mat[mat != 0])
mat[mat != 0] <- f(mat[mat != 0])
mean(mat[mat != 0]) # should be 0.5
#[1] 0.5000714
sd(mat[mat != 0]) # should be sqrt(1/12)
#[1] 0.2886958
sqrt(1/12)
#[1] 0.2886751