Last active
August 28, 2019 12:03
-
-
Save LouisdeBruijn/2f7119a90daae8ef7ca6c04669d5bc09 to your computer and use it in GitHub Desktop.
recommend one and all users
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def recommend(user_id): | |
'''recommend N items to user''' | |
sparse_user_item = load_npz("sparse_user_item.npz") | |
with open('model.sav', 'rb') as pickle_in: | |
model = pickle.load(pickle_in) | |
recommended, _ = zip(*model.recommend(user_id, sparse_user_item)) | |
return recommended, map_movies(recommended) | |
def recommend_all_users(): | |
'''recommend N items to all users''' | |
sparse_user_item = load_npz("sparse_user_item.npz") | |
with open('model.sav', 'rb') as pickle_in: | |
model = pickle.load(pickle_in) | |
# numpy array with N recommendations for each user | |
# remove first array, because those are the columns | |
all_recommended = model.recommend_all(user_items=sparse_user_item, N=10, | |
recalculate_user=False, filter_already_liked_items=True)[1:] | |
# create a new Pandas Dataframe with user_id, 10 recommendations, for all users | |
df = pd.read_csv('ml-1m/users.dat', delimiter='::', header=None, | |
names=['user_id', 'gender', 'agerange', 'occupation', 'timestamp'], engine='python') | |
df = df.drop(['gender', 'agerange', 'occupation', 'timestamp'], axis=1) | |
df[['rec1', 'rec2', 'rec3', 'rec4', 'rec5', 'rec6', 'rec7', 'rec8', 'rec9', 'rec10']] = pd.DataFrame(all_recommended) | |
df.to_pickle("all_recommended.pkl") | |
'''melt dataframe into SQL format for Django model | |
melted = df.melt(id_vars=['user_id'], var_name='order', value_name='recommendations', | |
value_vars=['rec1', 'rec2', 'rec3', 'rec4', 'rec5', 'rec6', 'rec7', 'rec8', 'rec9', 'rec10']) | |
melted['order'] = melted.order.str[3:] | |
print(melted.sort_values(by=['user_id', 'order'])) | |
melted.to_pickle('all_recommended_melted.pkl') | |
''' | |
return df | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment