本文简要介绍python语言中 sklearn.decomposition.non_negative_factorization
的用法。
用法:
sklearn.decomposition.non_negative_factorization(X, W=None, H=None, n_components=None, *, init='warn', update_H=True, solver='cd', beta_loss='frobenius', tol=0.0001, max_iter=200, alpha='deprecated', alpha_W=0.0, alpha_H='same', l1_ratio=0.0, regularization='deprecated', random_state=None, verbose=0, shuffle=False)
计算非负矩阵分解 (NMF)。
找到两个非负矩阵 (W, H),其乘积近似于非负矩阵 X。这种分解可用于例如降维、源分离或主题提取。
目标函数为:
其中:
(弗罗贝尼乌斯范数)
(元素级 L1 范数)
通用范数
beta_loss
参数控制。 可能代表 Frobenius 范数或其他支持的 beta-divergence 损失。选项之间的选择由正则化项按
n_features
对W
和n_samples
对H
进行缩放,以使它们的影响相互之间保持平衡,并尽可能独立于数据拟合项的大小n_samples
训练集。目标函数通过 W 和 H 的交替最小化来最小化。如果给定 H 并且 update_H=False,它只求解 W。
- X:形状类似数组 (n_samples, n_features)
常数矩阵。
- W:形状类似数组(n_samples,n_components),默认=无
如果 init='custom',它被用作解决方案的初始猜测。
- H:形状类似数组 (n_components, n_features),默认=None
如果 init='custom',它被用作解决方案的初始猜测。如果 update_H=False,则用作常数,仅求解 W。
- n_components:整数,默认=无
组件数,如果未设置 n_components 则保留所有特征。
- init:{‘random’, ‘nndsvd’, ‘nndsvda’, ‘nndsvdar’, ‘custom’},默认=无
用于初始化过程的方法。
有效选项:
- 无:‘nndsvd’ 如果 n_components < n_features,否则 ‘random’。
- ‘random’:非负随机矩阵,按比例缩放:
sqrt(X.mean() /n_components)
- ‘nndsvd’:非负双奇异值分解 (NNDSVD)
初始化(更好的稀疏性)
- ‘nndsvda’:NNDSVD 用 X 的平均值填充零
(不希望稀疏时更好)
- ‘nndsvdar’:NNDSVD 用小随机值填充零
(当不需要稀疏性时,通常是 NNDSVDa 更快、更不准确的替代方案)
- ‘custom’:如果
update_H=True
,则使用自定义矩阵 W 和 H。如果update_H=False
,则仅使用自定义矩阵 H。
- update_H:布尔,默认=真
设置为 True,W 和 H 都将根据初始猜测进行估计。设置为 False,仅估计 W。
- solver:{‘cd’, ‘mu’},默认='cd'
要使用的数值求解器:
- ‘cd’ 是使用快速分层的坐标下降求解器
交替最小二乘法(快速 HALS)。
- ‘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
超时前的最大迭代次数。
- 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 的组合。
- regularization:{‘both’, ‘components’, ‘transformation’},默认=无
选择正则化是否影响分量 (H)、变换 (W),两者都影响或都不影响。
- random_state:int、RandomState 实例或无,默认=无
用于 NMF 初始化(当
init
== ‘nndsvdar’ 或 ‘random’ 时)和坐标下降。传递 int 以获得跨多个函数调用的可重现结果。请参阅术语表。- verbose:整数,默认=0
详细程度。
- shuffle:布尔,默认=假
如果为真,则随机化 CD 求解器中的坐标顺序。
- W:ndarray 形状(n_samples,n_components)
非负最小二乘问题的解。
- H:ndarray 形状(n_components,n_features)
非负最小二乘问题的解。
- n_iter:int
实际迭代次数。
参数:
返回:
参考:
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 non_negative_factorization >>> W, H, n_iter = non_negative_factorization(X, n_components=2, ... init='random', random_state=0)
相关用法
- Python sklearn normalized_mutual_info_score用法及代码示例
- Python sklearn ndcg_score用法及代码示例
- Python sklearn nan_euclidean_distances用法及代码示例
- 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用法及代码示例
- Python sklearn log_loss用法及代码示例
- Python sklearn r2_score用法及代码示例
- Python sklearn ShrunkCovariance用法及代码示例
- Python sklearn SelfTrainingClassifier用法及代码示例
- Python sklearn load_svmlight_file用法及代码示例
- Python sklearn make_pipeline用法及代码示例
- Python sklearn MultiTaskLasso用法及代码示例
- Python sklearn KBinsDiscretizer用法及代码示例
- Python sklearn power_transform用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.decomposition.non_negative_factorization。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。