make_low_rank_matrix#
- sklearn.datasets.make_low_rank_matrix(n_samples=100, n_features=100, *, effective_rank=10, tail_strength=0.5, random_state=None)[源代码]#
生成一个主要为低秩且具有钟形奇异值的矩阵。
大部分方差可以通过宽度为 effective_rank 的钟形曲线来解释:奇异值剖面的低秩部分是
(1 - tail_strength) * exp(-1.0 * (i / effective_rank) ** 2)
剩余奇异值的尾部较肥厚,并按如下方式衰减:
tail_strength * exp(-0.1 * i / effective_rank).
剖面的低秩部分可以被视为数据的结构化信号部分,而尾部可以被视为数据中无法通过少量线性分量(奇异向量)进行概括的噪声部分。
- 这类奇异剖面在实践中经常出现,例如
人脸的灰度图像
从网络爬取的文本文档的 TF-IDF 向量
详情请参阅 用户指南。
- 参数:
- n_samplesint, 默认=100
样本数量。
- n_featuresint, 默认=100
特征数量。
- effective_rankint, 默认=10
通过线性组合解释大部分数据所需的近似奇异向量数量。
- tail_strengthfloat, 默认=0.5
奇异值剖面中肥厚噪声尾部的相对重要性。该值应在 0 到 1 之间。
- random_stateint, RandomState 实例或 None, 默认=None
用于确定数据集创建的随机数生成。传入一个整数以在多次函数调用中获得可重现的输出。参见 术语表。
- 返回:
- X形状为 (n_samples, n_features) 的 ndarray
生成的矩阵。
示例
>>> from numpy.linalg import svd >>> from sklearn.datasets import make_low_rank_matrix >>> X = make_low_rank_matrix( ... n_samples=50, ... n_features=25, ... effective_rank=5, ... tail_strength=0.01, ... random_state=0, ... ) >>> X.shape (50, 25)