superior plu paso metodo matriz matrices factorizacion descomposicion crout python matrix machine-learning scikit-learn

python - plu - Factorización de matriz no negativa en Sklearn



metodo de crout (1)

Afortunadamente puedes mirar a través del código fuente:
https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/decomposition/nmf.py

fit_transform() comienza en la línea 460, y en la línea 530 muestra que H se une a los components_ y W se devuelve desde la función.

Entonces no deberías tener que ejecutar esto dos veces, solo debes cambiar:

nmf_model.fit(A); H = nmf_model.components_.T;

a

W = nmf_model.fit_transform(A); H = nmf_model.components_;

Estoy aplicando la factorización de matriz no negativa (NMF) en una matriz grande. Esencialmente, el método NMF hace lo siguiente: dada una matriz m por n A, el NMF se descompone en A = WH, donde W es m por d y H es d por n. El método ProjectedGradientNMF se implementa en el paquete Sklearn de Python. Me gustaría que el algoritmo arrojara tanto W como H. Pero parece que solo devuelve H, no W. La aplicación del algoritmo nuevamente a AT (la transposición) podría darme W. Sin embargo, me gustaría evitar calcularlo dos veces ya que matriz ix muy grande.

Si pudieras decirme cómo obtener simultáneamente W y H, ¡eso sería genial! A continuación está mi código:

from sklearn.decomposition import ProjectedGradientNMF import numpy A = numpy.random.uniform(size = [40, 30]) nmf_model = ProjectedGradientNMF(n_components = 5, init=''random'', random_state=0) nmf_model.fit(A) H = nmf_model.components_.T