我在大矩阵上应用非负矩阵因式分解(NMF)。NMF方法的实质是:给定m乘n矩阵A,NMF分解为A= WH,其中W为m乘d,H为d为n,ProjectedGradientNMF方法在Python中实现。我希望该算法同时返回W和H,但它似乎只返回H,而不是W。再次将该算法应用于A.T (转置)可以给我W。然而,由于矩阵ix非常大,我希望避免计算它两次。
如果你能告诉我如何同时得到W和H,那就太好了!下面是我的代码:
from sklearn.decomposition import ProjectedGradientNMF
import numpy
A = numpy.random.uniform(size = [40, 30])
nmf_model = ProjectedGradientNMF(n_components = 5, init='random', random_state=0)
nmf_model.fit(A)
H = nmf_model.components_.T发布于 2014-07-14 19:29:26
幸运的是,您可以查看源代码:
https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/decomposition/nmf.py
fit_transform()从第460行开始,在第530行显示H被附加到components_,W从函数返回。
因此,您不应该运行这两次,您应该只需更改:
nmf_model.fit(A);
H = nmf_model.components_.T;至
W = nmf_model.fit_transform(A);
H = nmf_model.components_;https://stackoverflow.com/questions/24739121
复制相似问题