Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. def similar_recommendation(model, interaction_matrix, user_id, user_dikt,
  2. item_dikt,threshold = 0,number_rec_items = 15):
  3.  
  4. #Function to produce user recommendations
  5.  
  6. n_users, n_items = interaction_matrix.shape
  7. user_x = user_dikt[user_id]
  8. scores = pd.Series(model.predict(user_x,np.arange(n_items)))
  9. scores.index = interaction_matrix.columns
  10. scores = list(pd.Series(scores.sort_values(ascending=False).index))
  11.  
  12. known_items = list(pd.Series(interaction_matrix.loc[user_id,:][interaction_matrix.loc[user_id,:] > threshold].index).sort_values(ascending=False))
  13.  
  14. scores = [x for x in scores if x not in known_items]
  15. print(len(scores))
  16. score_list = scores[0:number_rec_items]
  17.  
  18. known_items = list(pd.Series(known_items).apply(lambda x: item_dikt[x]))
  19. scores = list(pd.Series(score_list).apply(lambda x: item_dikt[x]))
  20. scores1 = list(pd.Series(score_list))
  21.  
  22. # jsonScores = json.dumps(scores)
  23. # print(jsonScores)
  24.  
  25. # return json.dumps(scores)
  26. client=pymongo.MongoClient('mongodb://110.34.31.28:27017/')
  27. mydb=client['majorProject']
  28. mycol=mydb['bookDataset']
  29. x=mycol.aggregate([{"$match":{"ISBN":{"$in":scores1}}},
  30. {"$project":{'_id':0,'ISBN':'$ISBN','bookTitle':'$Book-Title','bookAuthor':'$Book-Author','imageURL':'$Image-URL','averageRating':'$average_rating','publicationYear':'$publication_year','description':'$description'} }])
  31.  
  32. y=list(x)
  33. print(scores1)
  34. print(scores)
  35. # new dataframe for books
  36. book_newdf = pd.DataFrame({'bookTitle':scores})
  37.  
  38. print("Items that were liked by the User:")
  39. counter = 1
  40. for i in known_items[:25]:
  41. print(str(counter) + '- ' + i)
  42. counter+=1
  43.  
  44. print("\n Recommended Items:")
  45. counter = 1
  46. for i in scores:
  47. print(str(counter) + '- ' + i)
  48. counter+=1
  49. return book_newdf,y
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement