Exemple #1
0
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)