将数组规范化为标准正态分布

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数组规范化为标准正态分布相关的知识,希望对你有一定的参考价值。

我认为这是一个非常简单的问题,但我无法找到答案。

我有一个数组:

array([ 62519, 261500, 1004836, ... , 0, 0])

我想将它转换为正态分布,最小值为0,最大值为1。

有什么建议?我在看sklearn.preprocess.normalize,但无法让它为我工作。

目的是我创建一个带有numpy的散点图,并希望使用这个第三个变量为每个点着色。然而,颜色必须在0和1之间,因为我有一些奇怪的异常值,我认为正态分布将是一个良好的开端。

如果这没有任何意义,请告诉我。谢谢和欢呼。

答案

哦,我是一个白痴,我只是想标准化,可以做z = (x- mean)/std。抱歉。

另一答案

我不建议使用标准正态分布进行规范化,请考虑使用frobenius / l2:

Frobenius/2-norm:

使用Numpy:

normalized_z = z / np.linalg.norm(z)

使用纯数学库

normalized_z = z / math.sqrt(max(sum(z**2), 1e-12)) # L2: Matrix Norm

使用Tensorflow

normalized_z = tf.nn.l2_normalize(z,0)

以上是关于将数组规范化为标准正态分布的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NumPy 数组标准化为单位向量?

将 exif 输出标准化为十进制度

5.3 变量管理

在 Python 中将 unicode 文本规范化为文件名等

将行非规范化为列是不是会提高 SQL Server 中的性能?

SQLite 片段函数实现不会在 TextView 中将文本格式化为 HTML