首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scikit中NMF的自定义矩阵-学习

scikit中NMF的自定义矩阵-学习
EN

Stack Overflow用户
提问于 2018-04-16 05:56:27
回答 1查看 1.5K关注 0票数 1

我要用滑雪板做NMF,我在这里使用了说明:http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html

我想添加已初始化的矩阵H,有选项可以执行init=“定制”,但我不知道如何给他矩阵H。我尝试过:

代码语言:javascript
复制
model = NMF(n_components=2, init='custom',H=myInitializationH random_state=0);

但不起作用。

另外,是否有人知道如何修复我的矩阵并只更新W?

编辑:

谢谢你的回答

当我选择自定义选项时,会得到以下错误:

代码语言:javascript
复制
ValueError: input contains nan infinity or a value too large for dtype('float64')

然而,矩阵不包含任何nan或无穷大。此外,我是为非常小的矩阵做这件事,看看它是否很好,而不是:

代码语言:javascript
复制
import numpy as np
from sklearn.decomposition import NMF

x=np.ones((2,3));
#model = NMF(n_components=1, init='custom', solver='mu',beta_loss=1,max_iter=500,random_state=0,alpha=0,verbose=0, shuffle=False);
model = NMF(n_components=1, init='custom');
fixed_W = model.fit_transform(x,H=np.ones((1,3)));
fixed_H = model.components_;

print(np.matmul(fixed_W,fixed_H));

我得到了同样的错误,除非我做‘随机’而不是‘定制’。

这也发生在你身上吗?为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 07:51:16

fit()fit_transform()中传递W和H。

根据fit_transform():-

W:类似数组的形状(n_samples,n_components)如果init=‘定制’,则用作解决方案的初始猜测。H:类似数组的形状(n_components,n_features)如果init=‘定制’,则用作解决方案的初始猜测。

fit()也是如此。

做以下事情:

代码语言:javascript
复制
model.fit(X, H=myInitializationH, W=myInitializationW)

更新:似乎如果您通过init='custom'参数,您需要同时提供W和H,如果您提供H而不是W,它将被视为无,然后抛出一个错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49850435

复制
相关文章

相似问题

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