建立低秩矩陣#
- 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)