diff --git a/algo/adreco.py b/algo/adreco.py index 66711f84da6fe70ee3d5fff9a1170f410d8cf3b2..fc477936033d7f50597202ea5407156489b7cb05 100644 --- a/algo/adreco.py +++ b/algo/adreco.py @@ -101,7 +101,6 @@ def index_from_id(df,id): ''' return the index of a movie from its id ''' - print(df[df['original_title']=='Uncharted'].index.values[0]) return df[df['_id']==id].index.values[0] @@ -167,30 +166,39 @@ def userDbToDf(): return df def user_profile( user_index, moviesdf, usersdf, vectMatrix ): - + """ + This function creates a user profile based on the likef movies of the user + and ponderating the vectMatrix of all film liked + """ + + #fetch movies ID and index from the liked_movies moviesID=usersdf['liked_movies'].iloc[user_index] - print(moviesID) - print('Hello') moviesindex=[index_from_id(moviesdf,ID) for ID in moviesID] + n=len(moviesID)#number of film liked + + if moviesindex != []: + #creates the vector of the user vectuser=vectMatrix[moviesindex[0]] moviesindex.pop(0) for i in moviesindex: vectuser = vectuser + vectMatrix[i] vectuser=vectuser/n + + #calculates the user similarity calculated_sim = cosine_similarity(vectuser, vectMatrix) similarity_scores = list(enumerate(calculated_sim[0])) - similarity_scores_sorted = sorted(similarity_scores, key=lambda x: x[1], reverse=True) + #lists recommendations index of the movies, ordered by weights recommendations_indices = [t[0] for t in similarity_scores_sorted[1:(100+1)]] return recommendations_indices else: - return + return [i for i in range(100)] def loadRecDB(): @@ -223,10 +231,8 @@ def updateDB(): rec_indices=user_profile( i, moviesdf, usersdf, vect_matrix) if rec_indices != None: - print('pass') recdf = moviesdf['id'].iloc[rec_indices] - - print(recdf) + titledf = moviesdf['original_title'].iloc[rec_indices] for j in recdf.index: recommended_movies.append(int(recdf[j]))