Ejemplo n.º 1
0
def test_AllPossibleItemsStrategy():
    #Empty Dataset
    model = MatrixPreferenceDataModel({})
    strategy = AllPossibleItemsStrategy()
    assert_raises(UserNotFoundError, strategy.candidate_items, 'Lorena Abreu',
                  model)

    #Possible candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = AllPossibleItemsStrategy()
    assert_array_equal(np.array(['Lady in the Water']),
                       strategy.candidate_items('Lorena Abreu', model))

    #Empty candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = AllPossibleItemsStrategy()
    assert_array_equal(np.array([], dtype='|S'),
                       strategy.candidate_items('Marcel Caraciolo', model))

    #Empty candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = AllPossibleItemsStrategy()
    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'
        ]), strategy.candidate_items('Maria Gabriela', model))
Ejemplo n.º 2
0
def test_preferences_from_user_exists_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    #ordered by item_id
    assert_array_equal(np.array([('Just My Luck', 3.0), ('Snakes on a Plane', 3.5),
       ('Superman Returns', 4.0), ('The Night Listener', 4.5), ('You, Me and Dupree', 2.5)]),
        model.preferences_from_user('Lorena Abreu'))

    #ordered by rating (reverse)
    assert_array_equal(np.array([('The Night Listener', 4.5), ('Superman Returns', 4.0), \
       ('Snakes on a Plane', 3.5), ('Just My Luck', 3.0), ('You, Me and Dupree', 2.5)]), \
          model.preferences_from_user('Lorena Abreu', order_by_id=False))
Ejemplo n.º 3
0
def test_set_preference_value_MatrixPreferenceDataModel():
    #Add
    model = MatrixPreferenceDataModel(movies)
    model.set_preference('Maria Gabriela', 'Superman Returns', 2.0)
    assert_equals(2.0, model.preference_value('Maria Gabriela', 'Superman Returns'))
    #Edit
    model = MatrixPreferenceDataModel(movies)
    model.set_preference('Marcel Caraciolo', 'Superman Returns', 1.0)
    assert_equals(1.0, model.preference_value('Marcel Caraciolo', 'Superman Returns'))
    #invalid
    assert_raises(UserNotFoundError, model.set_preference, 'Carlos', 'Superman Returns', 2.0)
Ejemplo n.º 4
0
def test_preferences_for_item_existing_item_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    #ordered by item_id
    assert_array_equal(np.array([('Leopoldo Pires', 3.5), ('Lorena Abreu', 4.0), \
           ('Luciana Nunes', 5.0), ('Marcel Caraciolo', 3.5), \
           ('Penny Frewman', 4.0), ('Sheldom', 5.0), ('Steve Gates', 3.0)]),
       model.preferences_for_item('Superman Returns'))
    #ordered by rating (reverse)
    assert_array_equal(np.array([('Luciana Nunes', 5.0), ('Sheldom', 5.0), ('Lorena Abreu', 4.0), \
           ('Penny Frewman', 4.0), ('Leopoldo Pires', 3.5), \
           ('Marcel Caraciolo', 3.5), ('Steve Gates', 3.0)]),
           model.preferences_for_item('Superman Returns', order_by_id=False))
def test_AllNeighborsStrategy():
    #Empty Dataset
    model = MatrixPreferenceDataModel({})
    strategy = AllNeighborsStrategy()
    assert_array_equal(np.array([]),
                       strategy.user_neighborhood('Lorena Abreu', model))

    #Possible candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = AllNeighborsStrategy()
    assert_array_equal(
        np.array([
            'Leopoldo Pires', 'Luciana Nunes', 'Marcel Caraciolo',
            'Maria Gabriela', 'Penny Frewman', 'Sheldom', 'Steve Gates'
        ]), strategy.user_neighborhood('Lorena Abreu', model))
Ejemplo n.º 6
0
def recommend(data, users, items):
    # print 'data = ', data
    matrix_model = MatrixPreferenceDataModel(data)

    items_strategy = AllPossibleItemsStrategy()
    # items_strategy = ItemsNeighborhoodStrategy()
    recsys = MatrixFactorBasedRecommender(
        model=matrix_model,
        items_selection_strategy=items_strategy,
        n_features=2)

    score = dict()
    for user in users:
        row = dict()
        for item in items:
            try:
                if data[user][item] != 0:  # the user has already rated.
                    row[item] = data[user][item]
                else:
                    row[item] = recsys.estimate_preference(user, item)
            except:
                row[item] = 0
        score[user] = row

    # print 'score = ', score
    return score
def test_NearestNeighborsStrategy():
    #Empty Dataset
    model = MatrixPreferenceDataModel({})
    strategy = NearestNeighborsStrategy()
    assert_array_equal(np.array([]),
                       strategy.user_neighborhood('Lorena Abreu', model))

    #Possible candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = NearestNeighborsStrategy()
    assert_array_equal(
        np.array([
            'Leopoldo Pires', 'Marcel Caraciolo', 'Penny Frewman', 'Sheldom',
            'Steve Gates', 'Luciana Nunes'
        ],
                 dtype='|S16'),
        strategy.user_neighborhood('Lorena Abreu', model))

    #Test with neighborhood size limited.
    model = MatrixPreferenceDataModel(movies)
    strategy = NearestNeighborsStrategy()
    assert_array_equal(
        np.array(['Leopoldo Pires', 'Marcel Caraciolo'], dtype='|S16'),
        strategy.user_neighborhood(user_id='Lorena Abreu',
                                   data_model=model,
                                   nhood_size=2))

    #Test with minimal_similarity
    model = MatrixPreferenceDataModel(movies)
    strategy = NearestNeighborsStrategy()
    assert_array_equal(
        np.array(['Leopoldo Pires']),
        strategy.user_neighborhood(user_id='Lorena Abreu',
                                   data_model=model,
                                   minimal_similarity=0.4))

    #Empty candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = NearestNeighborsStrategy()
    assert_array_equal(
        np.array([
            'Leopoldo Pires', 'Steve Gates', 'Lorena Abreu', 'Penny Frewman',
            'Sheldom', 'Luciana Nunes'
        ],
                 dtype='|S14'),
        strategy.user_neighborhood('Marcel Caraciolo', model))

    #Empty candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = NearestNeighborsStrategy()
    assert_array_equal(np.array([], dtype=bool),
                       strategy.user_neighborhood('Maria Gabriela', model))

    #Raise exception with an invalid similarity
    #Empty candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = NearestNeighborsStrategy()
    assert_array_equal(np.array([], dtype=bool),
                       strategy.user_neighborhood('Maria Gabriela', model))
Ejemplo n.º 8
0
def getRecommender(dataFile):
    from scikits.crab.models.classes import MatrixPreferenceDataModel
    model = MatrixPreferenceDataModel(loadData(dataFile))
    print model[0]
    from scikits.crab.metrics import pearson_correlation
    from scikits.crab.similarities import UserSimilarity
    similarity = UserSimilarity(model, pearson_correlation)
    from scikits.crab.recommenders.knn import UserBasedRecommender
    recommender = UserBasedRecommender(model, similarity, with_preference=True)
    a = 5
    print "For user %d we recommend movie %d" % (a, recommender.recommend(5))
    return recommender
Ejemplo n.º 9
0
def test_ItemsNeighborhoodStrategy():
    #Empty Dataset
    model = MatrixPreferenceDataModel({})
    strategy = ItemsNeighborhoodStrategy()
    assert_raises(UserNotFoundError, strategy.candidate_items, 'Lorena Abreu',
                  model)

    #Possible candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = ItemsNeighborhoodStrategy()
    assert_array_equal(np.array(['Lady in the Water']),
                       strategy.candidate_items('Lorena Abreu', model))

    #Empty candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = ItemsNeighborhoodStrategy()
    assert_array_equal(np.array([], dtype='|S'),
                       strategy.candidate_items('Marcel Caraciolo', model))

    #Empty candidates
    model = MatrixPreferenceDataModel(movies)
    strategy = ItemsNeighborhoodStrategy()
    assert_array_equal(np.array([], dtype=bool),
                       strategy.candidate_items('Maria Gabriela', model))
Ejemplo n.º 10
0
def test_find_common_elements():
    #MatrixModel
    model_matrix = MatrixPreferenceDataModel(movies)
    source_preferences = model_matrix.preferences_from_user('Marcel Caraciolo')
    target_preferences = model_matrix.preferences_from_user('Leopoldo Pires')
    assert_array_equal(np.array([[2.5, 3.5, 3.5, 3.0]]), find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(np.array([[2.5, 3.0, 3.5, 4.0]]), find_common_elements(source_preferences, target_preferences)[1])

    #MatrixModel
    source_preferences = model_matrix.preferences_from_user('Marcel Caraciolo')
    target_preferences = model_matrix.preferences_from_user('Luciana Nunes')
    assert_array_equal(np.array([[3.,  2.5,  3.5,  3.5,  3.,  2.5]]), find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(np.array([[1.5,  3.,  3.5,  5.,  3.,  3.5]]), find_common_elements(source_preferences, target_preferences)[1])

    #MatrixModel
    source_preferences = model_matrix.preferences_from_user('Marcel Caraciolo')
    target_preferences = model_matrix.preferences_from_user('Maria Gabriela')
    assert_array_equal(np.array([[]]), find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(np.array([[]]), find_common_elements(source_preferences, target_preferences)[1])

    #MatrixModel
    source_preferences = model_matrix.preferences_for_item('Snakes on a Plane')
    target_preferences = model_matrix.preferences_for_item('Superman Returns')
    assert_array_equal(np.array([[3.,  3.5,  3.5,  3.5,  4.5,  4.,  4.]]), find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(np.array([[3.5,  4.,  5.,  3.5,  4.,  5.,  3.]]), find_common_elements(source_preferences, target_preferences)[1])

    model_matrix.set_preference('Maria Gabriela', 'Back to the Future', 3.5)

    source_preferences = model_matrix.preferences_for_item('Back to the Future')
    target_preferences = model_matrix.preferences_for_item('Superman Returns')
    assert_array_equal(np.array([[]]), find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(np.array([[]]), find_common_elements(source_preferences, target_preferences)[1])
Ejemplo n.º 11
0
def test_preferences_from_user_non_existing_user_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    assert_raises(UserNotFoundError, model.preferences_from_user, 'Flavia')
Ejemplo n.º 12
0
def test__iter__ItemSimilarity():
    #MATRIXMODEL
    model = MatrixPreferenceDataModel(movies)
    similarity = ItemSimilarity(model, cosine_distances, 3)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = ItemSimilarity(model, pearson_correlation)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())

    similarity = ItemSimilarity(model, manhattan_distances, 0)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = ItemSimilarity(model, manhattan_distances, 20)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)
    similarity = ItemSimilarity(model, sorensen_coefficient, 3)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = ItemSimilarity(model, jaccard_coefficient)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())

    similarity = ItemSimilarity(model, loglikehood_coefficient, 0)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = ItemSimilarity(model, sorensen_coefficient, 20)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())
Ejemplo n.º 13
0
def test_find_common_elements():
    #MatrixModel
    model_matrix = MatrixPreferenceDataModel(movies)
    source_preferences = model_matrix.preferences_from_user('Marcel Caraciolo')
    target_preferences = model_matrix.preferences_from_user('Leopoldo Pires')
    assert_array_equal(
        np.array([[2.5, 3.5, 3.5, 3.0]]),
        find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(
        np.array([[2.5, 3.0, 3.5, 4.0]]),
        find_common_elements(source_preferences, target_preferences)[1])

    #MatrixModel
    source_preferences = model_matrix.preferences_from_user('Marcel Caraciolo')
    target_preferences = model_matrix.preferences_from_user('Luciana Nunes')
    assert_array_equal(
        np.array([[3., 2.5, 3.5, 3.5, 3., 2.5]]),
        find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(
        np.array([[1.5, 3., 3.5, 5., 3., 3.5]]),
        find_common_elements(source_preferences, target_preferences)[1])

    #MatrixModel
    source_preferences = model_matrix.preferences_from_user('Marcel Caraciolo')
    target_preferences = model_matrix.preferences_from_user('Maria Gabriela')
    assert_array_equal(
        np.array([[]]),
        find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(
        np.array([[]]),
        find_common_elements(source_preferences, target_preferences)[1])

    #MatrixModel
    source_preferences = model_matrix.preferences_for_item('Snakes on a Plane')
    target_preferences = model_matrix.preferences_for_item('Superman Returns')
    assert_array_equal(
        np.array([[3., 3.5, 3.5, 3.5, 4.5, 4., 4.]]),
        find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(
        np.array([[3.5, 4., 5., 3.5, 4., 5., 3.]]),
        find_common_elements(source_preferences, target_preferences)[1])

    model_matrix.set_preference('Maria Gabriela', 'Back to the Future', 3.5)

    source_preferences = model_matrix.preferences_for_item(
        'Back to the Future')
    target_preferences = model_matrix.preferences_for_item('Superman Returns')
    assert_array_equal(
        np.array([[]]),
        find_common_elements(source_preferences, target_preferences)[0])
    assert_array_equal(
        np.array([[]]),
        find_common_elements(source_preferences, target_preferences)[1])
Ejemplo n.º 14
0
def test__iter__UserSimilarity():
    #MatrixModel
    model = MatrixPreferenceDataModel(movies)
    similarity = UserSimilarity(model, cosine_distances, 3)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = UserSimilarity(model, pearson_correlation)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())

    similarity = UserSimilarity(model, manhattan_distances, 0)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = UserSimilarity(model, manhattan_distances, 20)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)
    similarity = UserSimilarity(model, jaccard_coefficient, 3)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = UserSimilarity(model, loglikehood_coefficient)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())

    similarity = UserSimilarity(model, sorensen_coefficient, 0)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = UserSimilarity(model, loglikehood_coefficient, 20)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())
Ejemplo n.º 15
0
def test_preference_value__invalid_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    assert_raises(UserNotFoundError, model.preference_value, 'Flavia', 'Superman Returns')
    assert_raises(ItemNotFoundError, model.preference_value, 'Marcel Caraciolo', 'Back to the future')
    assert_array_equal(np.nan, model.preference_value('Maria Gabriela', 'The Night Listener'))
Ejemplo n.º 16
0
def test_preference_value_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    assert_equals(3.5, model.preference_value('Marcel Caraciolo', 'Superman Returns'))
Ejemplo n.º 17
0
def test_preferences_for_item_non_existing_item_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    assert_raises(ItemNotFoundError, model.preferences_for_item, 'Back to the future')
Ejemplo n.º 18
0
def test_preferences_for_item_existing_item_no_preferences_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    assert_array_equal(np.array([]), model.preferences_for_item, 'The Night Listener')
Ejemplo n.º 19
0
def test__iter__ItemSimilarity():
    #MATRIXMODEL
    model = MatrixPreferenceDataModel(movies)
    similarity = ItemSimilarity(model, cosine_distances, 3)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = ItemSimilarity(model, pearson_correlation)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())

    similarity = ItemSimilarity(model, manhattan_distances, 0)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = ItemSimilarity(model, manhattan_distances, 20)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)
    similarity = ItemSimilarity(model, sorensen_coefficient, 3)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = ItemSimilarity(model, jaccard_coefficient)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())

    similarity = ItemSimilarity(model, loglikehood_coefficient, 0)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = ItemSimilarity(model, sorensen_coefficient, 20)

    item_ids = []
    prefs = []
    for item_id, preferences in similarity:
        item_ids.append(item_id)
        prefs.append(preferences)
    assert_equals(len(item_ids), model.items_count())

    for pref in prefs:
        assert_equals(len(pref), model.items_count())
Ejemplo n.º 20
0
def test_item_ids_from_user_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    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.items_from_user('Marcel Caraciolo'))
Ejemplo n.º 21
0
def test_get__item___UserSimilarity():
    #Cosine #With limits
    #MatrixModel
    model = MatrixPreferenceDataModel(movies)
    similarity = UserSimilarity(model, cosine_distances, 3)

    assert_array_equal(np.array([[1.]]), similarity['Marcel Caraciolo'][0][1])
    assert_equals('Marcel Caraciolo', similarity['Marcel Caraciolo'][0][0])

    assert_array_almost_equal(np.array([[0.99127583]]),
                              similarity['Marcel Caraciolo'][1][1])
    assert_equals('Sheldom', similarity['Marcel Caraciolo'][1][0])

    assert_array_almost_equal(np.array([[0.98658676]]),
                              similarity['Marcel Caraciolo'][2][1])
    assert_equals('Lorena Abreu', similarity['Marcel Caraciolo'][2][0])

    #Pearson Without limits
    similarity = UserSimilarity(model, pearson_correlation)

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Leopoldo Pires'][0][1])
    assert_equals('Leopoldo Pires', similarity['Leopoldo Pires'][0][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Leopoldo Pires'][1][1])
    assert_equals('Lorena Abreu', similarity['Leopoldo Pires'][1][0])

    assert_array_almost_equal(np.array([[0.40451992]]),
                              similarity['Leopoldo Pires'][2][1])
    assert_equals('Marcel Caraciolo', similarity['Leopoldo Pires'][2][0])

    assert_array_almost_equal(np.array([[0.2045983]]),
                              similarity['Leopoldo Pires'][3][1])
    assert_equals('Luciana Nunes', similarity['Leopoldo Pires'][3][0])

    assert_array_almost_equal(np.array([[0.13483997]]),
                              similarity['Leopoldo Pires'][4][1])
    assert_equals('Sheldom', similarity['Leopoldo Pires'][4][0])

    assert_array_almost_equal(np.array([[-0.25819889]]),
                              similarity['Leopoldo Pires'][5][1])
    assert_equals('Steve Gates', similarity['Leopoldo Pires'][5][0])

    assert_array_almost_equal(np.array([[-1.]]),
                              similarity['Leopoldo Pires'][6][1])
    assert_equals('Penny Frewman', similarity['Leopoldo Pires'][6][0])

    assert_array_almost_equal(np.array([[np.nan]]),
                              similarity['Leopoldo Pires'][7][1])
    assert_equals('Maria Gabriela', similarity['Leopoldo Pires'][7][0])

    #Euclidean Without limits
    similarity = UserSimilarity(model, euclidean_distances)

    assert_array_equal(np.array([[1.]]), similarity['Steve Gates'][0][1])
    assert_equals('Steve Gates', similarity['Steve Gates'][0][0])

    assert_array_almost_equal(np.array([[0.41421356]]),
                              similarity['Steve Gates'][1][1])
    assert_equals('Marcel Caraciolo', similarity['Steve Gates'][1][0])

    assert_array_almost_equal(np.array([[0.4]]),
                              similarity['Steve Gates'][2][1])
    assert_equals('Penny Frewman', similarity['Steve Gates'][2][0])

    assert_array_almost_equal(np.array([[0.38742589]]),
                              similarity['Steve Gates'][3][1])
    assert_equals('Leopoldo Pires', similarity['Steve Gates'][3][0])

    assert_array_almost_equal(np.array([[0.31451986]]),
                              similarity['Steve Gates'][4][1])
    assert_equals('Lorena Abreu', similarity['Steve Gates'][4][0])

    assert_array_almost_equal(np.array([[0.28571429]]),
                              similarity['Steve Gates'][5][1])
    assert_equals('Sheldom', similarity['Steve Gates'][5][0])

    assert_array_almost_equal(np.array([[0.2779263]]),
                              similarity['Steve Gates'][6][1])
    assert_equals('Luciana Nunes', similarity['Steve Gates'][6][0])

    assert_array_almost_equal(np.array([[np.nan]]),
                              similarity['Steve Gates'][7][1])
    assert_equals('Maria Gabriela', similarity['Steve Gates'][7][0])

    #Manhattan Without limits
    similarity = UserSimilarity(model, manhattan_distances, 0)

    assert_equals([], similarity['Steve Gates'])

    similarity = UserSimilarity(model, manhattan_distances, 20)

    assert_array_equal(np.array([[1.]]), similarity['Steve Gates'][0][1])
    assert_equals('Steve Gates', similarity['Steve Gates'][0][0])

    assert_array_almost_equal(np.array([[0.5]]),
                              similarity['Steve Gates'][1][1])
    assert_equals('Marcel Caraciolo', similarity['Steve Gates'][1][0])

    assert_array_almost_equal(np.array([[0.3]]),
                              similarity['Steve Gates'][2][1])
    assert_equals('Sheldom', similarity['Steve Gates'][2][0])

    assert_array_almost_equal(np.array([[0.25]]),
                              similarity['Steve Gates'][3][1])
    assert_equals('Leopoldo Pires', similarity['Steve Gates'][3][0])

    assert_array_almost_equal(np.array([[0.25]]),
                              similarity['Steve Gates'][4][1])
    assert_equals('Luciana Nunes', similarity['Steve Gates'][4][0])

    assert_array_almost_equal(np.array([[0.16666667]]),
                              similarity['Steve Gates'][5][1])
    assert_equals('Penny Frewman', similarity['Steve Gates'][5][0])

    assert_array_almost_equal(np.array([[0.1]]),
                              similarity['Steve Gates'][6][1])
    assert_equals('Lorena Abreu', similarity['Steve Gates'][6][0])

    assert_array_almost_equal(np.array([[np.nan]]),
                              similarity['Steve Gates'][7][1])
    assert_equals('Maria Gabriela', similarity['Steve Gates'][7][0])

    #MatrixBooleanModel
    model = MatrixBooleanPrefDataModel(movies)
    similarity = UserSimilarity(model, jaccard_coefficient, 3)
    assert_array_equal(np.array([[1.]]), similarity['Marcel Caraciolo'][0][1])
    assert_equals('Luciana Nunes', similarity['Marcel Caraciolo'][0][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Marcel Caraciolo'][1][1])
    assert_equals('Marcel Caraciolo', similarity['Marcel Caraciolo'][1][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Marcel Caraciolo'][2][1])
    assert_equals('Steve Gates', similarity['Marcel Caraciolo'][2][0])

    #sorensen Without limits
    similarity = UserSimilarity(model, sorensen_coefficient)

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Leopoldo Pires'][0][1])
    assert_equals('Leopoldo Pires', similarity['Leopoldo Pires'][0][0])

    assert_array_almost_equal(np.array([[0.88888889]]),
                              similarity['Leopoldo Pires'][1][1])
    assert_equals('Sheldom', similarity['Leopoldo Pires'][1][0])

    assert_array_almost_equal(np.array([[0.8]]),
                              similarity['Leopoldo Pires'][2][1])
    assert_equals('Luciana Nunes', similarity['Leopoldo Pires'][2][0])

    assert_array_almost_equal(np.array([[0.8]]),
                              similarity['Leopoldo Pires'][3][1])
    assert_equals('Marcel Caraciolo', similarity['Leopoldo Pires'][3][0])

    assert_array_almost_equal(np.array([[0.8]]),
                              similarity['Leopoldo Pires'][4][1])
    assert_equals('Steve Gates', similarity['Leopoldo Pires'][4][0])

    assert_array_almost_equal(np.array([[0.66666667]]),
                              similarity['Leopoldo Pires'][5][1])
    assert_equals('Lorena Abreu', similarity['Leopoldo Pires'][5][0])

    assert_array_almost_equal(np.array([[0.57142857]]),
                              similarity['Leopoldo Pires'][6][1])
    assert_equals('Penny Frewman', similarity['Leopoldo Pires'][6][0])

    assert_array_almost_equal(np.array([[0.]]),
                              similarity['Leopoldo Pires'][7][1])
    assert_equals('Maria Gabriela', similarity['Leopoldo Pires'][7][0])

    #loglikehood with limits

    similarity = UserSimilarity(model, loglikehood_coefficient, 0)
    assert_equals([], similarity['Steve Gates'])

    similarity = UserSimilarity(model, loglikehood_coefficient, 20)

    assert_array_equal(np.array([[1.]]), similarity['Steve Gates'][0][1])
    assert_equals('Luciana Nunes', similarity['Steve Gates'][0][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Steve Gates'][1][1])
    assert_equals('Marcel Caraciolo', similarity['Steve Gates'][1][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Steve Gates'][2][1])
    assert_equals('Steve Gates', similarity['Steve Gates'][2][0])

    assert_array_almost_equal(np.array([[0.74804989]]),
                              similarity['Steve Gates'][3][1])
    assert_equals('Lorena Abreu', similarity['Steve Gates'][3][0])

    assert_array_almost_equal(np.array([[0.74804989]]),
                              similarity['Steve Gates'][4][1])
    assert_equals('Sheldom', similarity['Steve Gates'][4][0])

    assert_array_almost_equal(np.array([[0.65783229]]),
                              similarity['Steve Gates'][5][1])
    assert_equals('Leopoldo Pires', similarity['Steve Gates'][5][0])

    assert_array_almost_equal(np.array([[0.55415805]]),
                              similarity['Steve Gates'][6][1])
    assert_equals('Penny Frewman', similarity['Steve Gates'][6][0])

    assert_array_almost_equal(np.array([[0.0]]),
                              similarity['Steve Gates'][7][1])
    assert_equals('Maria Gabriela', similarity['Steve Gates'][7][0])
Ejemplo n.º 22
0
def test_get_similarities__UserSimilarity():
    #MatrixModel
    model = MatrixPreferenceDataModel(movies)

    similarity = UserSimilarity(model, cosine_distances, 3)

    sim = similarity.get_similarities('Marcel Caraciolo')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, pearson_correlation)

    sim = similarity.get_similarities('Leopoldo Pires')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, euclidean_distances)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, manhattan_distances, 0)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, manhattan_distances, 20)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)

    similarity = UserSimilarity(model, sorensen_coefficient, 3)

    sim = similarity.get_similarities('Marcel Caraciolo')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, loglikehood_coefficient)

    sim = similarity.get_similarities('Leopoldo Pires')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, jaccard_coefficient)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, loglikehood_coefficient, 0)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, sorensen_coefficient, 20)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())
Ejemplo n.º 23
0
    'Sheldom': {
        'Lady in the Water': 3.0,
        'Snakes on a Plane': 4.0,
        'The Night Listener': 3.0,
        'Superman Returns': 5.0,
        'You, Me and Dupree': 3.5
    },
    'Penny Frewman': {
        'Snakes on a Plane': 4.5,
        'You, Me and Dupree': 1.0,
        'Superman Returns': 4.0
    },
    'Maria Gabriela': {}
}

matrix_model = MatrixPreferenceDataModel(movies)
boolean_matrix_model = MatrixBooleanPrefDataModel(movies)


def test_create_ItemBasedRecommender():
    items_strategy = AllPossibleItemsStrategy()
    similarity = ItemSimilarity(matrix_model, euclidean_distances)
    recsys = ItemBasedRecommender(matrix_model, similarity, items_strategy)
    assert_equals(recsys.similarity, similarity)
    assert_equals(recsys.items_selection_strategy, items_strategy)
    assert_equals(recsys.model, matrix_model)
    assert_equals(recsys.capper, True)


def test_create_UserBasedRecommender():
    nhood_strategy = AllNeighborsStrategy()
Ejemplo n.º 24
0
def test_get__item___ItemSimilarity():
    #MATRIXMODEL
    #Cosine #With limits
    model = MatrixPreferenceDataModel(movies)
    similarity = ItemSimilarity(model, cosine_distances, 3)

    assert_array_equal(np.array([[1.]]), similarity['Snakes on a Plane'][0][1])
    assert_equals('Snakes on a Plane', similarity['Snakes on a Plane'][0][0])

    assert_array_almost_equal(np.array([[0.99773877]]),
                              similarity['Snakes on a Plane'][1][1])
    assert_equals('Lady in the Water', similarity['Snakes on a Plane'][1][0])

    assert_array_almost_equal(np.array([[0.9798780]]),
                              similarity['Snakes on a Plane'][2][1])
    assert_equals('Superman Returns', similarity['Snakes on a Plane'][2][0])

    #Pearson Without limits
    similarity = ItemSimilarity(model, pearson_correlation)

    assert_array_equal(np.array([[1.]]),
                       similarity['The Night Listener'][0][1])
    assert_equals('The Night Listener', similarity['The Night Listener'][0][0])

    assert_array_almost_equal(np.array([[0.55555556]]),
                              similarity['The Night Listener'][1][1])
    assert_equals('Just My Luck', similarity['The Night Listener'][1][0])

    assert_array_almost_equal(np.array([[-0.17984719]]),
                              similarity['The Night Listener'][2][1])
    assert_equals('Superman Returns', similarity['The Night Listener'][2][0])

    assert_array_almost_equal(np.array([[-0.25]]),
                              similarity['The Night Listener'][3][1])
    assert_equals('You, Me and Dupree', similarity['The Night Listener'][3][0])

    assert_array_almost_equal(np.array([[-0.56635211]]),
                              similarity['The Night Listener'][4][1])
    assert_equals('Snakes on a Plane', similarity['The Night Listener'][4][0])

    assert_array_almost_equal(np.array([[-0.61237244]]),
                              similarity['The Night Listener'][5][1])
    assert_equals('Lady in the Water', similarity['The Night Listener'][5][0])

    assert_array_almost_equal(np.array([[np.nan]]),
                              similarity['The Night Listener'][6][1])
    assert_equals('Back to the Future', similarity['The Night Listener'][6][0])

    similarity = ItemSimilarity(model, euclidean_distances)

    assert_array_equal(np.array([[1.]]),
                       similarity['The Night Listener'][0][1])
    assert_equals('The Night Listener', similarity['The Night Listener'][0][0])

    assert_array_almost_equal(np.array([[0.38742589]]),
                              similarity['The Night Listener'][1][1])
    assert_equals('Lady in the Water', similarity['The Night Listener'][1][0])

    assert_array_almost_equal(np.array([[0.32037724]]),
                              similarity['The Night Listener'][2][1])
    assert_equals('Snakes on a Plane', similarity['The Night Listener'][2][0])

    assert_array_almost_equal(np.array([[0.29893508]]),
                              similarity['The Night Listener'][3][1])
    assert_equals('Just My Luck', similarity['The Night Listener'][3][0])

    assert_array_almost_equal(np.array([[0.29429806]]),
                              similarity['The Night Listener'][4][1])
    assert_equals('You, Me and Dupree', similarity['The Night Listener'][4][0])

    assert_array_almost_equal(np.array([[0.25265031]]),
                              similarity['The Night Listener'][5][1])
    assert_equals('Superman Returns', similarity['The Night Listener'][5][0])

    assert_array_almost_equal(np.array([[np.nan]]),
                              similarity['The Night Listener'][6][1])
    assert_equals('Back to the Future', similarity['The Night Listener'][6][0])

    similarity = ItemSimilarity(model, manhattan_distances, 0)

    assert_equals([], similarity['Lady in the Water'])

    similarity = ItemSimilarity(model, manhattan_distances, 20)

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Snakes on a Plane'][0][1])
    assert_equals('Snakes on a Plane', similarity['Snakes on a Plane'][0][0])

    assert_array_almost_equal(np.array([[0.28571429]]),
                              similarity['Snakes on a Plane'][1][1])
    assert_equals('Superman Returns', similarity['Snakes on a Plane'][1][0])

    assert_array_almost_equal(np.array([[0.2]]),
                              similarity['Snakes on a Plane'][2][1])
    assert_equals('Lady in the Water', similarity['Snakes on a Plane'][2][0])

    assert_array_almost_equal(np.array([[0.16666667]]),
                              similarity['Snakes on a Plane'][3][1])
    assert_equals('The Night Listener', similarity['Snakes on a Plane'][3][0])

    assert_array_almost_equal(np.array([[-0.25]]),
                              similarity['Snakes on a Plane'][4][1])
    assert_equals('Just My Luck', similarity['Snakes on a Plane'][4][0])

    assert_array_almost_equal(np.array([[-0.33333333]]),
                              similarity['Snakes on a Plane'][5][1])
    assert_equals('You, Me and Dupree', similarity['Snakes on a Plane'][5][0])

    #MatrixBooleanPrefDataModel
    #Jaccard #With limits
    model = MatrixBooleanPrefDataModel(movies)
    similarity = ItemSimilarity(model, jaccard_coefficient, 3)

    assert_array_equal(np.array([[1.]]), similarity['Snakes on a Plane'][0][1])
    assert_equals('Snakes on a Plane', similarity['Snakes on a Plane'][0][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Snakes on a Plane'][1][1])
    assert_equals('Superman Returns', similarity['Snakes on a Plane'][1][0])

    assert_array_almost_equal(np.array([[0.85714286]]),
                              similarity['Snakes on a Plane'][2][1])
    assert_equals('The Night Listener', similarity['Snakes on a Plane'][2][0])

    #Sorensen Without limits
    similarity = ItemSimilarity(model, sorensen_coefficient)

    assert_array_equal(np.array([[1.]]),
                       similarity['The Night Listener'][0][1])
    assert_equals('The Night Listener', similarity['The Night Listener'][0][0])

    assert_array_almost_equal(np.array([[0.92307692]]),
                              similarity['The Night Listener'][1][1])
    assert_equals('Snakes on a Plane', similarity['The Night Listener'][1][0])

    assert_array_almost_equal(np.array([[0.92307692]]),
                              similarity['The Night Listener'][2][1])
    assert_equals('Superman Returns', similarity['The Night Listener'][2][0])

    assert_array_almost_equal(np.array([[0.90909091]]),
                              similarity['The Night Listener'][3][1])
    assert_equals('Lady in the Water', similarity['The Night Listener'][3][0])

    assert_array_almost_equal(np.array([[0.83333333]]),
                              similarity['The Night Listener'][4][1])
    assert_equals('You, Me and Dupree', similarity['The Night Listener'][4][0])

    assert_array_almost_equal(np.array([[0.8]]),
                              similarity['The Night Listener'][5][1])
    assert_equals('Just My Luck', similarity['The Night Listener'][5][0])

    assert_array_almost_equal(np.array([[0.]]),
                              similarity['The Night Listener'][6][1])
    assert_equals('Back to the Future', similarity['The Night Listener'][6][0])

    similarity = ItemSimilarity(model, loglikehood_coefficient)

    assert_array_equal(np.array([[1.]]),
                       similarity['The Night Listener'][0][1])
    assert_equals('Snakes on a Plane', similarity['The Night Listener'][0][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['The Night Listener'][1][1])
    assert_equals('Superman Returns', similarity['The Night Listener'][1][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['The Night Listener'][2][1])
    assert_equals('The Night Listener', similarity['The Night Listener'][2][0])

    assert_array_almost_equal(np.array([[0.74804989]]),
                              similarity['The Night Listener'][3][1])
    assert_equals('Lady in the Water', similarity['The Night Listener'][3][0])

    assert_array_almost_equal(np.array([[0.65783229]]),
                              similarity['The Night Listener'][4][1])
    assert_equals('Just My Luck', similarity['The Night Listener'][4][0])

    assert_array_almost_equal(np.array([[0.25087682]]),
                              similarity['The Night Listener'][5][1])
    assert_equals('You, Me and Dupree', similarity['The Night Listener'][5][0])

    assert_array_almost_equal(np.array([[0.]]),
                              similarity['The Night Listener'][6][1])
    assert_equals('Back to the Future', similarity['The Night Listener'][6][0])

    similarity = ItemSimilarity(model, jaccard_coefficient, 0)

    assert_equals([], similarity['Lady in the Water'])

    similarity = ItemSimilarity(model, sorensen_coefficient, 20)

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Snakes on a Plane'][0][1])
    assert_equals('Snakes on a Plane', similarity['Snakes on a Plane'][0][0])

    assert_array_almost_equal(np.array([[1.]]),
                              similarity['Snakes on a Plane'][1][1])
    assert_equals('Superman Returns', similarity['Snakes on a Plane'][1][0])

    assert_array_almost_equal(np.array([[0.92307692]]),
                              similarity['Snakes on a Plane'][2][1])
    assert_equals('The Night Listener', similarity['Snakes on a Plane'][2][0])

    assert_array_almost_equal(np.array([[0.92307692]]),
                              similarity['Snakes on a Plane'][3][1])
    assert_equals('You, Me and Dupree', similarity['Snakes on a Plane'][3][0])

    assert_array_almost_equal(np.array([[0.8333333333]]),
                              similarity['Snakes on a Plane'][4][1])
    assert_equals('Lady in the Water', similarity['Snakes on a Plane'][4][0])

    assert_array_almost_equal(np.array([[0.72727272]]),
                              similarity['Snakes on a Plane'][5][1])
    assert_equals('Just My Luck', similarity['Snakes on a Plane'][5][0])

    assert_array_almost_equal(np.array([[0.]]),
                              similarity['Snakes on a Plane'][6][1])
    assert_equals('Back to the Future', similarity['Snakes on a Plane'][6][0])
Ejemplo n.º 25
0
def test__iter__UserSimilarity():
    #MatrixModel
    model = MatrixPreferenceDataModel(movies)
    similarity = UserSimilarity(model, cosine_distances, 3)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = UserSimilarity(model, pearson_correlation)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())

    similarity = UserSimilarity(model, manhattan_distances, 0)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = UserSimilarity(model, manhattan_distances, 20)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)
    similarity = UserSimilarity(model, jaccard_coefficient, 3)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 3)

    similarity = UserSimilarity(model, loglikehood_coefficient)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())

    similarity = UserSimilarity(model, sorensen_coefficient, 0)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), 0)

    similarity = UserSimilarity(model, loglikehood_coefficient, 20)

    source_ids = []
    prefs = []
    for source_id, preferences in similarity:
        source_ids.append(source_id)
        prefs.append(preferences)
    assert_equals(len(source_ids), model.users_count())

    for pref in prefs:
        assert_equals(len(pref), model.users_count())
Ejemplo n.º 26
0
def test_get_similarities__ItemSimilarity():
    #MatrixModel
    model = MatrixPreferenceDataModel(movies)

    similarity = ItemSimilarity(model, cosine_distances, 3)

    sim = similarity.get_similarities('Snakes on a Plane')

    assert_equals(len(sim), model.items_count())

    #Pearson Without limits
    similarity = ItemSimilarity(model, pearson_correlation)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, euclidean_distances)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, manhattan_distances, 0)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, manhattan_distances, 20)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)

    similarity = ItemSimilarity(model, jaccard_coefficient, 3)

    sim = similarity.get_similarities('Snakes on a Plane')

    assert_equals(len(sim), model.items_count())

    #Sorensen Without limits
    similarity = ItemSimilarity(model, sorensen_coefficient)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, loglikehood_coefficient)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, loglikehood_coefficient, 0)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, sorensen_coefficient, 20)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())
Ejemplo n.º 27
0
def test_basic_methods_MatrixPreferenceDataModel():
    #Empty Dataset
    model = MatrixPreferenceDataModel({})
    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("MatrixPreferenceDataModel (0 by 0)" in model.__str__())

    #Simple DataSet
    model = MatrixPreferenceDataModel(movies)
    assert_equals(model.dataset, movies)
    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(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([('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)], 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("MatrixPreferenceDataModel (8 by 6)" in model.__str__())

    #SampleSongs DataSet
    songs = load_sample_songs()
    model = MatrixPreferenceDataModel(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("MatrixPreferenceDataModel (8 by 8)" in model.__str__())
Ejemplo n.º 28
0
def test_get_similarities__ItemSimilarity():
    #MatrixModel
    model = MatrixPreferenceDataModel(movies)

    similarity = ItemSimilarity(model, cosine_distances, 3)

    sim = similarity.get_similarities('Snakes on a Plane')

    assert_equals(len(sim), model.items_count())

    #Pearson Without limits
    similarity = ItemSimilarity(model, pearson_correlation)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, euclidean_distances)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, manhattan_distances, 0)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, manhattan_distances, 20)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)

    similarity = ItemSimilarity(model, jaccard_coefficient, 3)

    sim = similarity.get_similarities('Snakes on a Plane')

    assert_equals(len(sim), model.items_count())

    #Sorensen Without limits
    similarity = ItemSimilarity(model, sorensen_coefficient)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, loglikehood_coefficient)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, loglikehood_coefficient, 0)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())

    similarity = ItemSimilarity(model, sorensen_coefficient, 20)

    sim = similarity.get_similarities('Lady in the Water')

    assert_equals(len(sim), model.items_count())
Ejemplo n.º 29
0
def test_preferences_from_user_exists_no_preferences_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    assert_array_equal(np.array([]), model.preferences_from_user('Maria Gabriela'))
Ejemplo n.º 30
0
def test_remove_preference_value_MatrixPreferenceDataModel():
    model = MatrixPreferenceDataModel(movies)
    model.remove_preference('Maria Gabriela', 'Superman Returns')
    assert_array_equal(np.nan, model.preference_value('Maria Gabriela', 'Superman Returns'))
    assert_raises(ItemNotFoundError, model.remove_preference, 'Marcel Caraciolo', 'Indiana Jones')
Ejemplo n.º 31
0
def test_get_similarities__UserSimilarity():
    #MatrixModel
    model = MatrixPreferenceDataModel(movies)

    similarity = UserSimilarity(model, cosine_distances, 3)

    sim = similarity.get_similarities('Marcel Caraciolo')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, pearson_correlation)

    sim = similarity.get_similarities('Leopoldo Pires')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, euclidean_distances)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, manhattan_distances, 0)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, manhattan_distances, 20)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    #MatrixBooleanPrefDataModel
    model = MatrixBooleanPrefDataModel(movies)

    similarity = UserSimilarity(model, sorensen_coefficient, 3)

    sim = similarity.get_similarities('Marcel Caraciolo')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, loglikehood_coefficient)

    sim = similarity.get_similarities('Leopoldo Pires')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, jaccard_coefficient)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, loglikehood_coefficient, 0)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())

    similarity = UserSimilarity(model, sorensen_coefficient, 20)

    sim = similarity.get_similarities('Steve Gates')

    assert_equals(len(sim), model.users_count())