Python scikit学习中NMF中的自定义矩阵

Python scikit学习中NMF中的自定义矩阵,python,optimization,scikit-learn,nmf,Python,Optimization,Scikit Learn,Nmf,我必须使用sklearn进行NMF,我使用了以下说明: 我想添加我的初始化矩阵H,可以选择init='custom',但我不知道如何给他矩阵H。 我试过: model = NMF(n_components=2, init='custom',H=myInitializationH random_state=0); 但它不起作用 此外,是否有人知道如何修复我的矩阵并仅更新W 编辑: 谢谢你的回答 选择“自定义”选项时,会出现以下错误: ValueError: input contains nan

我必须使用sklearn进行NMF,我使用了以下说明:

我想添加我的初始化矩阵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));
我得到了同样的错误,除非我用“随机”而不是“自定义”


你也是这样吗?为什么会发生这种情况?

fit()
fit\u transform()
中传递W和H

根据:-

同样适用于
fit()

做一些类似于:

model.fit(X, H=myInitializationH, W=myInitializationW)
更新:
似乎如果你传递
init='custom'
参数,你需要同时提供W和H。如果你提供H而不是W,它将被视为无,然后抛出一个错误。

错误消息是什么?H=myInitializationH后缺少一个逗号,也许这就是问题所在?@kalonymus,这取决于你的数据。你的数据正确吗。根据错误,它包含一些缺少的信息或一些无限值。数据是正确的,我用3X2矩阵做了测试,只有1个组件,它仍然有问题。请参阅已编辑的post@kalonymus如果答案对你有帮助,请接受。我接受了。我也投了你的票,但它没有公开显示,因为这是新用户,我没有足够的声誉。不管怎么说,这完全是你应得的。非常感谢。
model.fit(X, H=myInitializationH, W=myInitializationW)