Simple recommendation system in python

Published:

The recommendation system is devided into two types, content-based recommendation system and collaborative recommendation system. Content-based system is based on every user, collaborative recommendation system is based on all the users. The package called Lightfm combines content-based recommendation system and collaborative recommendation system.

import numpy as np
from lightfm.datasets import fetch_movielens
from lightfm import LightFM


#fetch data and format it
data = fetch_movielens(min_rating = 4.0)

#print training and testing data
print(repr(data['train']))
print(repr(fata['test']))

# create model
model = LightFM(loss='warp')
# train model
model.fit(data['train'],epochs = 30, num_threads = 2)

def sample_recommendation(model,data,user_ids):

  #number of users and movies in training data
  n_users, n_items = data['train'].shape
  
  #generate recommendations for each user we imput
  for user_id in user_ids:
  
    #movies they already like
    known_positives = data['item_labels'][data['train'].tocsr()[user_id].indicies]
    
    #movies our model predicts they will like
    scores = model.predict(user_id,np.arrange(n_items))
    
    #rank them in order of most liked to least
    top_items = data['items_labels'][np.argsort(-scores)]
    
    #print out the results
    print ("User %s" % user_id)
    print ("      Known positives:")
    
    for x in known_positives[:3]:
        print ("             %s" % x)
        
     print ("      Recommended:")
     for x in top_items[:3]:
        print("              %s" % x)
        
sample.recommendation(model, data, [3,25,450])