I have what could likely be a very naive question. I am attempting to use non-negative matrix factorization on a spectrum image. Normal decomposition works just fine, but when I try to run with algorithm = 'nmf' I get the following error.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-341-4312a4040e32> in <module>()
1 SI=hs.load(pathtodm3SI)
----> 2 SI.decomposition(algorithm='nmf')
~/anaconda2/envs/Py3/lib/python3.6/site-packages/hyperspy/learn/mva.py in decomposition(self, normalize_poissonian_noise, algorithm, output_dimension, centre, auto_transpose, navigation_mask, signal_mask, var_array, var_func, polyfit, reproject, return_info, **kwargs)
274 sk.n_components = output_dimension
275 loadings = sk.fit_transform((
--> 276 dc[:, signal_mask][navigation_mask, :]))
277 factors = sk.components_.T
278 if return_info:
~/anaconda2/envs/Py3/lib/python3.6/site-packages/sklearn/decomposition/nmf.py in fit_transform(self, X, y, W, H)
1032 shuffle=self.shuffle,
1033 nls_max_iter=self.nls_max_iter, sparseness=self.sparseness,
-> 1034 beta=self.beta, eta=self.eta)
1035
1036 if self.solver == 'pg':
~/anaconda2/envs/Py3/lib/python3.6/site-packages/sklearn/decomposition/nmf.py in non_negative_factorization(X, W, H, n_components, init, update_H, solver, tol, max_iter, alpha, l1_ratio, regularization, random_state, verbose, shuffle, nls_max_iter, sparseness, beta, eta)
743
744 X = check_array(X, accept_sparse=('csr', 'csc'))
--> 745 check_non_negative(X, "NMF (input X)")
746 _check_string_param(sparseness, solver)
747
~/anaconda2/envs/Py3/lib/python3.6/site-packages/sklearn/utils/validation.py in check_non_negative(X, whom)
705 X = X.data if sp.issparse(X) else X
706 if (X < 0).any():
--> 707 raise ValueError("Negative values in data passed to %s" % whom)
ValueError: Negative values in data passed to NMF (input X)