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])
