Мне нужно сделать NMF с помощью sklearn, я использовал инструкции здесь: 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')
Однако матрица не содержит нанов или бесконечности. Более того, я сделал это для очень маленькой матрицы, чтобы увидеть, хорошо это или нет:
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));
Я получил ту же ошибку, если я не делаю «случайный» вместо «пользовательский».
Это случается и с вами? почему это происходит?