randomized_range_finder#

sklearn.utils.extmath.randomized_range_finder(A, *, size, n_iter, power_iteration_normalizer='auto', random_state=None)[source]#

计算一个正交矩阵,其值域近似于 A 的值域。

参数:
A{类数组对象, 稀疏矩阵},形状为 (n_samples, n_features)

输入数据矩阵。

size整型

返回数组的大小。

n_iter整型

用于稳定结果的幂迭代次数。

power_iteration_normalizer{‘auto’, ‘QR’, ‘LU’, ‘none’},默认值为 ‘auto’

幂迭代是否通过逐步 QR 分解(最慢但最准确)、‘none’(最快但当 n_iter 较大时(例如,通常为 5 或更大)数值不稳定),或 ‘LU’ 分解(数值稳定但准确度可能略有损失)进行归一化。‘auto’ 模式在 n_iter <= 2 时不应用归一化,否则切换到 LU。

0.18 版本新增。

random_state整型、RandomState 实例或 None,默认值为 None

用于在打乱数据(即获取随机向量以初始化算法)时使用的伪随机数生成器的种子。传入一个整型值可在多次函数调用中获得可重现的结果。参见 术语表

返回:
Qndarray,形状为 (size, size)

一个投影矩阵,其值域很好地近似于输入矩阵 A 的值域。

注意

遵循 Halko 等人 (2009) 的 “Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions” 中算法 4.3。

A. Szlam 等人 2014 年关于主成分分析的随机算法实现

示例

>>> import numpy as np
>>> from sklearn.utils.extmath import randomized_range_finder
>>> A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> randomized_range_finder(A, size=2, n_iter=2, random_state=42)
array([[-0.214,  0.887],
       [-0.521,  0.249],
       [-0.826, -0.388]])