首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sklearn中的非负矩阵分解

Sklearn中的非负矩阵分解
EN

Stack Overflow用户
提问于 2014-07-14 14:41:19
回答 1查看 6.6K关注 0票数 7

我在大矩阵上应用非负矩阵因式分解(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,那就太好了!下面是我的代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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从函数返回。

因此,您不应该运行这两次,您应该只需更改:

代码语言:javascript
复制
nmf_model.fit(A);
H = nmf_model.components_.T;

代码语言:javascript
复制
W = nmf_model.fit_transform(A);
H = nmf_model.components_;
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24739121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档