scipy.stats.Covariance.

whiten#

Covariance.whiten(x)[源代码]#

对数据执行白化变换。

“白化”(“白”如“白噪声”,其中每个频率的幅度相等)将一组随机变量转换为一组具有单位对角协方差矩阵的新随机变量。当对根据均值为零的多元正态分布分布的点样本应用白化变换时,变换后样本的协方差矩阵近似为单位矩阵。

参数
x类数组

一个点数组。最后一个维度必须与空间的维度相对应,即协方差矩阵中的列数。

返回值
x_类数组

变换后的点数组。

参考文献

[1]

“白化变换”。维基百科。 https://en.wikipedia.org/wiki/Whitening_transformation

[2]

Novak, Lukas, and Miroslav Vorechovsky. “Generalization of coloring linear transformation”. Transactions of VSB 18.2 (2018): 31-35. DOI:10.31490/tces-2018-0013

示例

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> n = 3
>>> A = rng.random(size=(n, n))
>>> cov_array = A @ A.T  # make matrix symmetric positive definite
>>> precision = np.linalg.inv(cov_array)
>>> cov_object = stats.Covariance.from_precision(precision)
>>> x = rng.multivariate_normal(np.zeros(n), cov_array, size=(10000))
>>> x_ = cov_object.whiten(x)
>>> np.cov(x_, rowvar=False)  # near-identity covariance
array([[0.97862122, 0.00893147, 0.02430451],
       [0.00893147, 0.96719062, 0.02201312],
       [0.02430451, 0.02201312, 0.99206881]])