randomized_range_finder#
- sklearn.utils.extmath.randomized_range_finder(A, *, size, n_iter, power_iteration_normalizer='auto', random_state=None)[source]#
计算一个正交矩阵,其范围近似于 A 的范围。
- 参数:
- A{array-like, sparse matrix} of shape (n_samples, n_features)
输入数据矩阵。
- sizeint
返回数组的大小。
- n_iter整型
用于稳定结果的幂迭代次数。
- power_iteration_normalizer{‘auto’, ‘QR’, ‘LU’, ‘none’}, default=’auto’
幂迭代是否使用逐步 QR 分解(最慢但最准确)、‘none’(最快,但在
n_iter较大(例如通常为 5 或更大)时数值不稳定)或 ‘LU’ 分解(数值稳定,但准确度可能略有损失)进行归一化。当n_iter<= 2 时,‘auto’ 模式不应用归一化,否则切换为 LU。版本 0.18 新增。
- random_stateint, RandomState instance or None, default=None
用于打乱数据(即获取用于初始化算法的随机向量)的伪随机数生成器的种子。传递一个 int 以在多次函数调用中获得可重复的结果。参见 词汇表。
- 返回:
- Qndarray of shape (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]])