Skip to content

Instantly share code, notes, and snippets.

@thedarsideofit
Forked from mahermalaeb/surprise_tutorial.py
Created December 17, 2017 15:36
Show Gist options
  • Save thedarsideofit/5f484f35e6456a26041e9e62037bbbbd to your computer and use it in GitHub Desktop.
Save thedarsideofit/5f484f35e6456a26041e9e62037bbbbd to your computer and use it in GitHub Desktop.
The easy guide for building python collaborative filtering recommendation system in 2017
import zipfile
from surprise import Reader, Dataset, SVD, evaluate
# Unzip ml-100k.zip
zipfile = zipfile.ZipFile('ml-100k.zip', 'r')
zipfile.extractall()
zipfile.close()
# Read data into an array of strings
with open('./ml-100k/u.data') as f:
all_lines = f.readlines()
# Prepare the data to be used in Surprise
reader = Reader(line_format='user item rating timestamp', sep='\t')
data = Dataset.load_from_file('./ml-100k/u.data', reader=reader)
# Split the dataset into 5 folds and choose the algorithm
data.split(n_folds=5)
algo = SVD()
# Train and test reporting the RMSE and MAE scores
evaluate(algo, data, measures=['RMSE', 'MAE'])
# Retrieve the trainset.
trainset = data.build_full_trainset()
algo.train(trainset)
# Predict a certain item
userid = str(196)
itemid = str(302)
actual_rating = 4
print(algo.predict(userid, itemid, actual_rating))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment