scipy.stats.Covariance.
whiten#
- Covariance.whiten(x)[源代码][源代码]#
对数据执行白化变换。
“白化”(“白”如“白噪声”,其中每个频率具有相等的幅度)将一组随机变量转换为一组具有单位对角协方差的新随机变量。当对根据零均值多元正态分布分布的点样本应用白化变换时,变换样本的协方差近似为单位矩阵。
- 参数:
- xarray_like
一个点的数组。最后一个维度必须与空间的维度相对应,即协方差矩阵中的列数。
- 返回:
- x_array_like
转换后的点数组。
参考文献
[1]Whitening Transformation
。维基百科。https://en.wikipedia.org/wiki/Whitening_transformation[2]Novak, Lukas, 和 Miroslav Vorechovsky. “线性变换着色的推广”. 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]])