def NMF_Mat(df): model_nmf = NMF(n_components=10, init='random', random_state=0) m = model_nmf.fit_transform(df) h = model_nmf.components_ nmf_mat = m @ h return nmf_mat
size_user = max(user) size_movie = max(movie) with open(path + 'movies.csv') as csvfile: reader = csv.DictReader(csvfile) mvid_genr = dict([(int(row['movieId']), row['genres']) for row in reader]) #create ratings matrix R = np.zeros((size_user, size_movie)) for rate in rate_list: R[rate[0] - 1][rate[1] - 1] = rate[2] #NMF R_s = sparse.csr_matrix(R) nmf = NMF(n_components=20, init='random', random_state=0) U = nmf.fit_transform(R) V = (nmf.components_).T top_10_list = [] for i in range(20): temp = np.argsort(V[:, i]) temp += 1 reverse = temp[::-1] top_10_list.append(reverse[:10]) top_10_genr_list = [] for id_ls in top_10_list: sub_list = [] for id in id_ls: sub_list.append(mvid_genr[id]) top_10_genr_list.append(sub_list)