缩放R中的非负稀疏数据

时间:2018-12-06 17:07:10

标签: r scale sparse-matrix

我有一个稀疏矩阵(观察值的30%为0)。

如何进行居中和缩放以使所有值都介于0和1之间(缩放功能为稀疏单元格提供负值)。

结果将是卷积神经网络的输入

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