User-based collaborative filtering finds the similarities between users, and then using these similarities between users, a recommendation is made.
Item-based collaborative filtering finds the similarities between items. This is then used to find new recommendations for a user.
To begin with item-based collaborative filtering, we'll first have to invert our dataset by putting the movies in the first layer, followed by the users in the second layer:
>>> def transform_prefs(prefs): result={} for person in prefs: for item in prefs[person]: result.setdefault(item,{}) # Flip item and person result[item][person]=prefs[person][item] return result {'Avenger: Age of Ultron': {'Jill': 7.0,'Julia': 10.0, 'Max': 7.0, 'Robert': 8.0, 'Sam': 10.0, 'Toby': 8.5, 'William': 6.0}, 'Django Unchained': {'Jill': 6.5, 'Julia': 6.0, 'Max': 7.0, 'Robert': 7.0, 'Sam': 7.5,...