I'm trying to use
sklearn.decomposition.NMF to a matrix
R that contains data on how users rated items to predict user ratings for items that they have not yet seen.
the matrix's rows being users, columns being items, and values being scores, with 0 score meaning that the user did not rate this item yet.
Now with the code below I have only managed to get the two matrices that when multiplied together give the original matrix back.
import numpy R = numpy.array([ [5,3,0,1], [4,0,0,1], [1,1,0,5], [1,0,0,4], [0,1,5,4], ]) from sklearn.decomposition import NMF model = NMF(n_components=4) A = model.fit_transform(R) B = model.components_ n = numpy.dot(A, B) print(n)
Problem is, that the model does not predict new values in place of
0's, that would be the predicted scores, but instead recreates the matrix as was.
How do I get the model to predict user scores in place of my original matrix's zeros without underfitting?
Also, the model wont accept
np.nan as matrix inputs so I can't see a way to communicate that the users have not yet rated the items.