Esempio n. 1
0
def test_matrix_split_7(interactions_ds):
    """Test if error is thrown with an invalid value of item_test_ratio (> 1)."""
    try:
        matrix_split(interactions_ds, item_test_ratio=2)
    except Exception as e:
        assert str(
            e) == 'Invalid item_test_ratio of 2: must be in the range (0, 1]'
Esempio n. 2
0
def test_matrix_split_1(interactions_ds):
    """Test if error is thrown with an invalid value of user_test_ratio (negative)."""
    try:
        matrix_split(interactions_ds, user_test_ratio=-1)
    except Exception as e:
        assert str(
            e) == 'Invalid user_test_ratio of -1: must be in the range (0, 1]'
Esempio n. 3
0
def test_matrix_split_10(interactions_ds):
    """Test user_test_ratio = 0.7 and item_test_ratio = 0.5."""
    train_ds, test_ds = matrix_split(interactions_ds,
                                     user_test_ratio=0.7,
                                     item_test_ratio=0.5,
                                     seed=0)
    assert [[1, 2, 3, 100, 0], [1, 4, 5, 50, 1], [1, 5, 2, 25, 2],
            [2, 3, 2, 20, 4], [3, 3, 5, 250,
                               7]] == train_ds.values_list(to_list=True)
    assert [[2, 2, 5, 100, 3], [2, 4, 2, 20, 5],
            [3, 2, 1, 200, 6]] == test_ds.values_list(to_list=True)
Esempio n. 4
0
def test_matrix_split_16(interactions_ds):
    """Test min_user_interactions = 3 so that users with #records < 3 should be removed from both sets."""
    train_ds, test_ds = matrix_split(interactions_ds,
                                     user_test_ratio=0.75,
                                     item_test_ratio=0.75,
                                     min_user_interactions=3,
                                     seed=0)
    assert [[1, 2, 3, 100, 0], [1, 4, 5, 50, 1], [1, 5, 2, 25, 2],
            [2, 3, 2, 20, 4]] == train_ds.values_list(to_list=True)
    assert [[2, 2, 5, 100, 3], [2, 4, 2, 20,
                                5]] == test_ds.values_list(to_list=True)
Esempio n. 5
0
from DRecPy.Recommender.Baseline import UserKNN
from DRecPy.Dataset import InteractionDataset
from DRecPy.Evaluation.Processes import ranking_evaluation
from DRecPy.Evaluation.Splits import matrix_split
from DRecPy.Evaluation.Metrics import Precision
from DRecPy.Evaluation.Metrics import Recall
from DRecPy.Evaluation.Metrics import NDCG

ds = InteractionDataset('./cheRM_total.csv',
                        columns=['user', 'item', 'interaction'],
                        verbose=False)

ds_train, ds_test = matrix_split(ds,
                                 min_user_interactions=20,
                                 user_test_ratio=0.2,
                                 item_test_ratio=0.2,
                                 seed=25,
                                 verbose=False)

# cosine sim
knn = UserKNN(k=10,
              m=0,
              sim_metric='cosine_cf',
              shrinkage=None,
              seed=25,
              use_averages=False,
              verbose=True)
knn.fit(ds_train)

evaluation = ranking_evaluation(knn,
                                ds_test,
Esempio n. 6
0
from DRecPy.Recommender.Baseline import UserKNN
from DRecPy.Dataset import get_full_dataset
from DRecPy.Evaluation.Processes import ranking_evaluation
from DRecPy.Evaluation.Splits import matrix_split
from DRecPy.Evaluation.Metrics import Precision
from DRecPy.Evaluation.Metrics import Recall
from DRecPy.Evaluation.Metrics import NDCG

ds = get_full_dataset('ml-100k')

ds_train, ds_test = matrix_split(ds, user_test_ratio=0.2, item_test_ratio=0.2, seed=0, verbose=False)

# cosine sim
knn = UserKNN(k=10, m=0, sim_metric='cosine_cf', shrinkage=None, seed=15, use_averages=False, verbose=True)
knn.fit(ds_train)

evaluation = ranking_evaluation(knn, ds_test, interaction_threshold=5, k=list(range(1, 11)),
                                generate_negative_pairs=False, n_pos_interactions=None,
                                n_neg_interactions=None, seed=15, verbose=True,
                                metrics=[Precision(), Recall(), NDCG()])
print('cosine sim', evaluation)

# jaccard sim
knn = UserKNN(k=10, m=0, sim_metric='jaccard', shrinkage=None, seed=15, use_averages=False, verbose=True)
knn.fit(ds_train)

evaluation = ranking_evaluation(knn, ds_test, interaction_threshold=5, k=list(range(1, 11)),
                                generate_negative_pairs=False, n_pos_interactions=None,
                                n_neg_interactions=None, seed=15, verbose=True,
                                metrics=[Precision(), Recall(), NDCG()])
print('jaccard sim', evaluation)
Esempio n. 7
0
def test_matrix_split_8(interactions_ds):
    """Test if error is thrown with an invalid value of max_concurrent_threads (zero)."""
    try:
        matrix_split(interactions_ds, max_concurrent_threads=0)
    except Exception as e:
        assert str(e) == 'The value of max_concurrent_threads (0) must be > 0.'