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

Определяет генерацию случайных чисел для создания набора данных. Передайте целое число для воспроизводимого результата при нескольких вызовах функции. См. Глоссарий.

Возвращает:
Xndarray формы (n_samples, n_features)

Матрица.

Примеры

>>> 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)