'Parameters
user_id: int or string
User for which recommendations are to be computed.
item_id: int or string
Item for which recommendations are to be computed.
Returns
Return an estimated preference if the user has not expressed a
preference for the item, or else the user\'s actual preference for the
item. If a preference cannot be estimated, returns None.'

def estimate_preference(self, user_id, item_id, **params):

    raise NotImplementedError('BaseRecommender    is    an    abstract    class.')
