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]'
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]'
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)
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)
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,
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)
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.'