首页 > 解决方案 > R中非负稀疏数据的缩放

问题描述

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

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

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

标签: rscalesparse-matrix

解决方案


下面的代码将通过应用数据将非零矩阵条目转换为遵循标准均匀分布的随机变量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

推荐阅读