r - R中非负稀疏数据的缩放
问题描述
我有一个稀疏矩阵(30% 的观察值为 0)。
我如何进行居中和缩放以使所有值都介于 0 和 1 之间(缩放函数为稀疏单元格提供负值)。
结果将是卷积神经网络的输入
解决方案
下面的代码将通过应用数据将非零矩阵条目转换为遵循标准均匀分布的随机变量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
推荐阅读
- javascript - 音乐播放:输入Array中的音乐地址,输入onClick
- docker - 无法从 docker 容器访问公共 ip 资源
- qt5 - 如何更改 QGLWidget 的交换间隔
- seaborn - seaborn 在条形图上显示值
- python - 我们如何在 Gitpod 中使用项目中的预安装虚拟环境 & 在项目中放置虚拟环境可以吗?
- flutter - 如何在抖动时(以太币到任何其他货币)时更改默认货币
- amazon-web-services - SQL Cookie 规则标记
- ajax - SP 2013 - 试图从列表中获取项目 - 有人说未定义
- android - ImageView 可点击,Webview 和 php
- css - 显示本机输入元素的角垫输入