【发布时间】:2018-09-25 18:53:46
【问题描述】:
我必须使用 sklearn 进行 NMF,我已使用此处的说明: http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html
我想添加我的初始化矩阵 H,可以选择 init='custom' 但我不知道如何给他矩阵 H。 我试过了:
model = NMF(n_components=2, init='custom',H=myInitializationH random_state=0);
但它不起作用。
另外,有人知道如何修复我的矩阵并只更新 W 吗?
编辑:
谢谢你的回答
当我选择自定义选项时,我收到错误:
ValueError: input contains nan infinity or a value too large for dtype('float64')
但是,矩阵不包含任何 nan 或无穷大。 此外,我对非常小的矩阵做了它,看看它是否很好,它不是:
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));
除非我执行“随机”而不是“自定义”,否则我会遇到同样的错误。
你也遇到过这种情况吗?为什么会这样?
【问题讨论】:
-
错误信息是什么?
-
H=myInitializationH 后面少了一个逗号,可能是这个问题?
标签: python optimization scikit-learn nmf