gpt4 book ai didi

python - scikit-learn 中 NMF 的自定义矩阵

转载 作者:行者123 更新时间:2023-12-01 09:32:25 25 4
gpt4 key购买 nike

我必须使用 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));

除非我使用“随机”而不是“自定义”,否则我会遇到相同的错误。

你也有这样的经历吗?为什么会这样?

最佳答案

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

根据 documentation of fit_transform() :-

W : array-like, shape (n_samples, n_components)
If init=’custom’, it is used as initial guess for the solution.

H : array-like, shape (n_components, n_features)
If init=’custom’, it is used as initial guess for the solution.

同样适用于fit()

做类似的事情:

model.fit(X, H=myInitializationH, W=myInitializationW)

更新:好像如果你传递 init='custom' 参数,你需要提供 W 和 H。如果你提供 H 而不是 W,它将被视为 None,然后抛出错误。

关于python - scikit-learn 中 NMF 的自定义矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49850435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com