本文簡要介紹python語言中 sklearn.decomposition.NMF 的用法。
用法:
class sklearn.decomposition.NMF(n_components=None, *, init='warn', solver='cd', beta_loss='frobenius', tol=0.0001, max_iter=200, random_state=None, alpha='deprecated', alpha_W=0.0, alpha_H='same', l1_ratio=0.0, verbose=0, shuffle=False, regularization='deprecated')非負矩陣分解 (NMF)。
找到兩個非負矩陣 (W, H),其乘積近似於非負矩陣 X。這種分解可用於例如降維、源分離或主題提取。
目標函數為:
其中:
(弗羅貝尼烏斯範數)
(元素級 L1 範數)
通用範數 可能代表 Frobenius 範數或其他支持的 beta-divergence 損失。選項之間的選擇由
beta_loss參數控製。正則化項按
n_features對W和n_samples對H進行縮放,以使它們的影響相互之間保持平衡,並盡可能獨立於數據擬合項的大小n_samples訓練集。通過交替最小化 W 和 H 來最小化目標函數。
在用戶指南中閱讀更多信息。
- n_components:整數,默認=無
 組件數,如果未設置 n_components 則保留所有特征。
- init:{‘random’, ‘nndsvd’, ‘nndsvda’, ‘nndsvdar’, ‘custom’},默認=無
 用於初始化過程的方法。默認值:無。有效選項:
None: ‘nndsvd’ 如果 n_components <= min(n_samples, n_features),否則隨機。'random':非負隨機矩陣,縮放比例: sqrt(X.mean() /n_components)'nndsvd':非負雙奇異值分解 (NNDSVD) 初始化(更適合稀疏性)'nndsvda': NNDSVD 用 X 的平均值填充零(在不需要稀疏性時更好)'nndsvdar'NNDSVD 用小隨機值填充零(當不需要稀疏性時,通常是 NNDSVDa 更快、更不準確的替代方案)'custom':使用自定義矩陣 W 和 H
- solver:{‘cd’, ‘mu’},默認='cd'
 要使用的數值求解器:‘cd’ 是坐標下降求解器。 ‘mu’ 是一個乘法更新求解器。
- beta_loss:浮點數或 {‘frobenius’, 'kullback-leibler', 'itakura-saito'}, 默認='frobenius'
 要最小化的 Beta 散度,測量 X 和點積 WH 之間的距離。請注意,與 ‘frobenius’(或 2)和“kullback-leibler”(或 1)不同的值會導致擬合顯著變慢。請注意,對於beta_loss <= 0(或“itakura-saito”),輸入矩陣 X 不能包含零。僅在 ‘mu’ 求解器中使用。
- tol:浮點數,默認=1e-4
 停止條件的容差。
- max_iter:整數,默認=200
 超時前的最大迭代次數。
- random_state:int、RandomState 實例或無,默認=無
 用於初始化(當
init== ‘nndsvdar’或‘random’時)和坐標下降。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱術語表。- alpha:浮點數,默認=0.0
 乘以正則化項的常數。將其設置為零以不進行正則化。當使用
alpha而不是alpha_W和alpha_H時,正則化項不會被n_features(分別為n_samples)因子縮放為W(分別為H)。- alpha_W:浮點數,默認=0.0
 乘以
W的正則化項的常數。將其設置為零(默認)以在W上沒有正則化。- alpha_H:浮點數或“same”,默認=”same”
 乘以
H的正則化項的常數。將其設置為零以在H上沒有正則化。如果 “same” (默認),它采用與alpha_W相同的值。- l1_ratio:浮點數,默認=0.0
 正則化混合參數,0 <= l1_ratio <= 1。對於 l1_ratio = 0,懲罰是元素 L2 懲罰(又名 Frobenius 範數)。對於 l1_ratio = 1,它是元素級 L1 懲罰。對於 0 < l1_ratio < 1,懲罰是 L1 和 L2 的組合。
- verbose:整數,默認=0
 是否冗長。
- shuffle:布爾,默認=假
 如果為真,則隨機化 CD 求解器中的坐標順序。
- regularization:{‘both’, ‘components’, ‘transformation’,無},默認='兩者'
 選擇正則化是否影響分量 (H)、變換 (W),兩者都影響或都不影響。
- components_:ndarray 形狀(n_components,n_features)
 分解矩陣,有時稱為‘dictionary’。
- n_components_:int
 組件的數量。如果已給出,則與
n_components參數相同。否則,它將與特征數相同。- reconstruction_err_:浮點數
 訓練數據
X與擬合模型的重建數據WH之間的矩陣差異的 Frobenius 範數或 beta-divergence。- n_iter_:int
 實際迭代次數。
- n_features_in_:int
 擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_,) 擬合期間看到的特征名稱。僅當
X具有全為字符串的函數名稱時才定義。
參數:
屬性:
參考:
Cichocki、Andrzej 和 P.H.A.N.Anh-Huy。 “用於大規模非負矩陣和張量分解的快速局部算法。” IEICE 電子、通信和計算機科學基礎交易 92.3: 708-721, 2009。
Fevotte, C. 和 Idier, J. (2011)。 beta-divergence 的非負矩陣分解算法。神經計算,23(9)。
例子:
>>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]]) >>> from sklearn.decomposition import NMF >>> model = NMF(n_components=2, init='random', random_state=0) >>> W = model.fit_transform(X) >>> H = model.components_
相關用法
- Python sklearn NeighborhoodComponentsAnalysis用法及代碼示例
 - Python sklearn NearestNeighbors用法及代碼示例
 - Python sklearn Nystroem用法及代碼示例
 - Python sklearn NearestCentroid用法及代碼示例
 - Python sklearn NearestNeighbors.radius_neighbors用法及代碼示例
 - Python sklearn Normalizer用法及代碼示例
 - Python sklearn NotFittedError用法及代碼示例
 - Python sklearn NearestNeighbors.kneighbors用法及代碼示例
 - Python sklearn NearestNeighbors.radius_neighbors_graph用法及代碼示例
 - Python sklearn NuSVR用法及代碼示例
 - Python sklearn NuSVC用法及代碼示例
 - Python sklearn NearestNeighbors.kneighbors_graph用法及代碼示例
 - Python sklearn jaccard_score用法及代碼示例
 - Python sklearn WhiteKernel用法及代碼示例
 - Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
 - Python sklearn VotingRegressor用法及代碼示例
 - Python sklearn gen_batches用法及代碼示例
 - Python sklearn ExpSineSquared用法及代碼示例
 - Python sklearn MDS用法及代碼示例
 - Python sklearn adjusted_rand_score用法及代碼示例
 - Python sklearn MLPClassifier用法及代碼示例
 - Python sklearn train_test_split用法及代碼示例
 - Python sklearn RandomTreesEmbedding用法及代碼示例
 - Python sklearn GradientBoostingRegressor用法及代碼示例
 - Python sklearn GridSearchCV用法及代碼示例
 
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.NMF。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
