如何使用sklearn-BernoulliRBM对特定用户进行推荐

2024-03-29 00:20:34 发布

您现在位置:Python中文网/ 问答频道 /正文

为了研究的目的,我尝试比较一些推荐算法。我将sklearn用于knn,并将其用于RBM,但我不知道如何使用RBM为特定用户提供任何建议。我使用的数据集来自MovieLens。你知道吗

代码如下:

import pandas as pd

import numpy as np 

from scipy.sparse.linalg import svds

from sklearn.neural_network import BernoulliRBM

ratings_list = [i.strip().split("::") for i in open('C:\\Users\\admin\PycharmProjects\MasterProject\ml-1m\\ratings.dat', 'r').readlines()]

 users_list = [i.strip().split("::") for i in  open('C:\\Users\\admin\PycharmProjects\MasterProject\ml-1m\\users.dat', 'r').readlines()]


 movies_list = [i.strip().split("::") for i in  open('C:\\Users\\admin\PycharmProjects\MasterProject\ml-1m\movies.dat', 'r').readlines()]

ratings_df = pd.DataFrame(ratings_list, columns = ['UserID', 'MovieID', 'Rating', 'Timestamp'], dtype = int) 


movies_df =pd.DataFrame(movies_list, columns = ['MovieID', 'Title','Genres'])


movies_df['MovieID'] = movies_df['MovieID'].apply(pd.to_numeric)


R_df = ratings_df.pivot(index = 'UserID', columns ='MovieID', values = 'Rating').fillna(0)

R = R_df.as_matrix() 

user_ratings_mean = np.mean(R, axis = 1)

R_demeaned = R - user_ratings_mean.reshape(-1, 1)


modeli = BernoulliRBM() modeli.fit(R_demeaned) 

recoms = BernoulliRBM(batch_size=100, learning_rate=0.1, n_comp=20, n_iter=1000, random_state=None, verbose=0)

print(recoms)

Tags: inimportdfforasopenmoviesusers