예제 #1
0
def main():
    import pprint
    pp = pprint.PrettyPrinter(indent=4)
    from scikits.crab import datasets
    movies = datasets.load_sample_songs()

    print "Movies Data:", pp.pformat(movies)
    print "Movies Data Matrix :", pp.pformat(movies.data)
    from scikits.crab.models import MatrixPreferenceDataModel
    #Build the model
    #new_movies = {u'1': [1, 2, 3, 4, 5], u'3': [2, 3, 4, 5, 6], u'2': [1, 2, 3, 4, 5, 6], u'5': [2, 3, 4], u'4': [1, 2, 3, 4, 5, 6], u'7': [1, 2, 4, 5], u'6': [1, 2, 3, 4, 5, 6]}
    #print "New moview hash", pp.pformat(new_movies)
    #model = MatrixBooleanPrefDataModel(new_movies)
    model = MatrixPreferenceDataModel(movies.data)
    import json
    from scikits.crab.metrics import spearman_coefficient
    from scikits.crab.similarities import UserSimilarity, ItemSimilarity
    #Build the similarity
    user_similarity = UserSimilarity(model, pearson_correlation)
    item_similarity = ItemSimilarity(model, pearson_correlation)

    from scikits.crab.recommenders.knn import UserBasedRecommender, ItemBasedRecommender
    #Build the User based recommender
    user_recommender = UserBasedRecommender(model, user_similarity, with_preference=True)
    item_recommender = ItemBasedRecommender(model, item_similarity, with_preference=True)
    print "recommendations for user 5", user_recommender.recommend("5")
    print "recommendations for item 3", item_recommender.recommend("3")
예제 #2
0
def test_basic_methods_DictPreferenceDataModel():
    #Empty Dataset
    model = DictPreferenceDataModel({})
    assert_equals(model.dataset, {})
    assert_array_equal(np.array([]), model.user_ids())
    assert_array_equal(np.array([]), model.item_ids())
    assert_equals(True, model.has_preference_values())
    assert_equals(0, model.users_count())
    assert_equals(0, model.items_count())
    assert_equals(-np.inf, model.maximum_preference_value())
    assert_equals(np.inf, model.minimum_preference_value())

    assert("DictPreferenceDataModel (0 by 0)" in model.__str__())
    
    movies = movies_dict()

    #Simple DataSet
    model = DictPreferenceDataModel(movies)
    assert_equals(model.dataset, movies)
    assert_array_equal(np.sort(np.array(['Leopoldo Pires', 'Lorena Abreu', 'Luciana Nunes',
      'Marcel Caraciolo', 'Maria Gabriela', 'Penny Frewman', 'Sheldom', 'Steve Gates'])),
      np.sort(model.user_ids()))
    assert_array_equal(np.array(['Just My Luck', 'Lady in the Water', 'Snakes on a Plane',
               'Superman Returns', 'The Night Listener', 'You, Me and Dupree']), np.sort(model.item_ids()))
    assert_equals(True, model.has_preference_values())
    assert_equals(8, model.users_count())
    assert_equals(6, model.items_count())
    assert_equals(5.0, model.maximum_preference_value())
    assert_equals(1.0, model.minimum_preference_value())
    assert_equals(sorted([('Just My Luck', 3.0), ('Lady in the Water', 2.5),
             ('Snakes on a Plane', 3.5), ('Superman Returns', 3.5),
             ('The Night Listener', 3.0), ('You, Me and Dupree', 2.5)]), sorted(model['Marcel Caraciolo']))
    elements = [pref  for pref in model]
    assert_array_equal([('Lady in the Water', 2.5), ('Snakes on a Plane', 3.0), \
         ('Superman Returns', 3.5), ('The Night Listener', 4.0)], elements[0][1])

    assert("DictPreferenceDataModel (8 by 6)" in model.__str__())

    #SampleSongs DataSet
    songs = load_sample_songs()
    model = DictPreferenceDataModel(songs.data)
    assert_equals(model.dataset, songs.data)
    assert_array_equal(np.array([1, 2, 3, 4, 5, 6, 7, 8]),
      model.user_ids())
    assert_array_equal(np.array([1, 2, 3, 4, 5, 6, 7, 8]), model.item_ids())
    assert_equals(True, model.has_preference_values())
    assert_equals(8, model.users_count())
    assert_equals(8, model.items_count())
    assert_equals(5.0, model.maximum_preference_value())
    assert_equals(1.0, model.minimum_preference_value())
    assert_equals([(1, 2.5), (2, 3.5), (3, 5.0), (4, 2.0), (5, 4.5), (6, 1.5), (7, 2.0)], model[1])
    elements = [pref  for pref in model]
    assert_array_equal([(1, 2.5), (2, 3.5), (3, 5.0), (4, 2.0), (5, 4.5), (6, 1.5), (7, 2.0)],
            elements[0][1])
    assert("DictPreferenceDataModel (8 by 8)" in model.__str__())
예제 #3
0
def test_basic_methods_MatrixBooleanPrefDataModel():
    #Empty Dataset
    model = MatrixBooleanPrefDataModel({})
    assert_equals(model.dataset, {})
    assert_array_equal(np.array([]), model.user_ids())
    assert_array_equal(np.array([]), model.item_ids())
    assert_equals(False, model.has_preference_values())
    assert_equals(0, model.users_count())
    assert_equals(0, model.items_count())
    assert("MatrixBooleanPrefDataModel (0 by 0)" in model.__str__())

    #Simple DataSet
    model = MatrixBooleanPrefDataModel(movies_boolean)
    assert_equals(model.dataset, movies_boolean)
    assert_array_equal(np.array(['Leopoldo Pires', 'Lorena Abreu', 'Luciana Nunes',
      'Marcel Caraciolo', 'Maria Gabriela', 'Penny Frewman', 'Sheldom', 'Steve Gates']),
      model.user_ids())
    assert_array_equal(np.array(['Just My Luck', 'Lady in the Water', 'Snakes on a Plane',
               'Superman Returns', 'The Night Listener', 'You, Me and Dupree']), model.item_ids())
    assert_equals(False, model.has_preference_values())
    assert_equals(8, model.users_count())
    assert_equals(6, model.items_count())
    assert_array_equal(['Just My Luck', 'Lady in the Water',
             'Snakes on a Plane', 'Superman Returns',
             'The Night Listener', 'You, Me and Dupree'], model['Marcel Caraciolo'])
    elements = [pref  for pref in model]
    assert_array_equal(['Lady in the Water', 'Snakes on a Plane', \
         'Superman Returns', 'The Night Listener'], elements[0][1])
    assert("MatrixBooleanPrefDataModel (8 by 6)" in model.__str__())

    songs = load_sample_songs()
    model = MatrixBooleanPrefDataModel(songs.data)
    assert_equals(model.dataset, songs_boolean)
    assert_array_equal(np.array([1, 2, 3, 4, 5, 6, 7, 8]),
      model.user_ids())
    assert_array_equal(np.array([1, 2, 3, 4, 5, 6, 7, 8]), model.item_ids())
    assert_equals(False, model.has_preference_values())
    assert_equals(8, model.users_count())
    assert_equals(8, model.items_count())
    assert_equals(1.0, model.maximum_preference_value())
    assert_equals(0.0, model.minimum_preference_value())
    assert_array_equal([1, 2, 3, 4, 5, 6, 7], model[1])
    elements = [pref  for pref in model]
    assert_array_equal([1, 2, 3, 4, 5, 6, 7],
            elements[0][1])
    assert("MatrixBooleanPrefDataModel (8 by 8)" in model.__str__())
예제 #4
0
from scikits.crab import datasets

movies = datasets.load_sample_movies()
songs = datasets.load_sample_songs()
print movies.data
print movies.user_ids
print movies.item_ids

from scikits.crab.models import MatrixPreferenceDataModel
#Build the model
model = MatrixPreferenceDataModel(movies.data)

from scikits.crab.metrics import pearson_correlation
from scikits.crab.similarities import UserSimilarity
#Build the similarity
similarity = UserSimilarity(model, pearson_correlation)

print similarity[1]

from scikits.crab.metrics.pairwise import euclidean_distances
similarity = UserSimilarity(model, euclidean_distances)

print similarity[5]

from scikits.crab.recommenders.knn import UserBasedRecommender

#Build the User based recommender
recommender = UserBasedRecommender(model, similarity, with_preference=True)
#Recommend items for the user 5 (Toby)
recommender.recommend(5)
예제 #5
0
from scikits.crab import datasets
from scikits.crab.models import MatrixPreferenceDataModel
from scikits.crab.metrics import pearson_correlation
from scikits.crab.recommenders.knn import UserBasedRecommender
from scikits.crab.similarities import UserSimilarity


movies = datasets.load_sample_movies()
songs = datasets.load_sample_songs()

print movies.data
print movies.user_ids
print movies.item_ids

# Build the model
model = MatrixPreferenceDataModel(movies.data)

# Build the similarity
similarity = UserSimilarity(model, pearson_correlation)

# Build the User based recommender_sample.py
recommender = UserBasedRecommender(model, similarity, with_preference=True)

# Recommend items for the user 5 (Toby)
print recommender.recommend(5)
예제 #6
0
 def test_load_sample_songs(self):
     songs = load_sample_songs()
     self.assertEquals(len(songs['data']), 8)
     self.assertEquals(len(songs['item_ids']), 8)
예제 #7
0
 def test_load_sample_songs(self):
     songs = load_sample_songs()
     self.assertEquals(len(songs["data"]), 8)
     self.assertEquals(len(songs["item_ids"]), 8)