예제 #1
0
def test_user_based_field():
    """Ensure that the user_based field is taken into account (only) when
    needed."""

    algorithms = (KNNBasic, KNNWithMeans, KNNBaseline)
    for klass in algorithms:
        algo = klass(sim_options={'user_based': True})
        rmses_user_based = evaluate(algo, data, measures=['rmse'])['rmse']
        algo = klass(sim_options={'user_based': False})
        rmses_item_based = evaluate(algo, data, measures=['rmse'])['rmse']
        assert rmses_user_based != rmses_item_based
예제 #2
0
def test_shrinkage_field():
    """Ensure the shrinkage field is taken into account."""

    sim_options = {'name': 'pearson_baseline', 'shrinkage': 0}
    bsl_options = {'n_epochs': 1}
    algo = KNNBasic(sim_options=sim_options)
    rmse_shrinkage_0 = evaluate(algo, data, measures=['rmse'])['rmse']

    sim_options = {'name': 'pearson_baseline', 'shrinkage': 100}
    bsl_options = {'n_epochs': 1}
    algo = KNNBasic(sim_options=sim_options, bsl_options=bsl_options)
    rmse_shrinkage_100 = evaluate(algo, data, measures=['rmse'])['rmse']

    assert rmse_shrinkage_0 != rmse_shrinkage_100
예제 #3
0
def test_name_field():
    """Ensure the name field is taken into account."""

    sim_options = {'name': 'cosine'}
    algo = KNNBasic(sim_options=sim_options)
    rmse_cosine = evaluate(algo, data, measures=['rmse'])['rmse']

    sim_options = {'name': 'msd'}
    algo = KNNBasic(sim_options=sim_options)
    rmse_msd = evaluate(algo, data, measures=['rmse'])['rmse']

    sim_options = {'name': 'pearson'}
    algo = KNNBasic(sim_options=sim_options)
    rmse_pearson = evaluate(algo, data, measures=['rmse'])['rmse']

    sim_options = {'name': 'pearson_baseline'}
    bsl_options = {'n_epochs': 1}
    algo = KNNBasic(sim_options=sim_options, bsl_options=bsl_options)
    rmse_pearson_bsl = evaluate(algo, data, measures=['rmse'])['rmse']

    for rmse_a, rmse_b in combinations(
        (rmse_cosine, rmse_msd, rmse_pearson, rmse_pearson_bsl), 2):
        assert (rmse_a != rmse_b)

    with pytest.raises(NameError):
        sim_options = {'name': 'wrong_name'}
        algo = KNNBasic(sim_options=sim_options)
        evaluate(algo, data)