建立低秩矩陣#

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, default=100

樣本數量。

n_featuresint, default=100

特徵數量。

effective_rankint, default=10

需要用線性組合來解釋大部分資料的奇異向量的近似數量。

tail_strengthfloat, default=0.5

奇異值剖面中肥厚雜訊尾部之相對重要性。數值應介於 0 和 1 之間。

random_stateint、RandomState 實例或 None,default=None

決定資料集建立時的隨機數產生。傳遞 int 可在多個函式呼叫中產生可重複的輸出。 請參閱詞彙表

回傳值:
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)