コード例 #1
0
def test_ffm_vector_kendall_tau():
    order = np.array([1, 2, 3, 4, 5])
    order_wrong = np.array([5, 3, 4, 2, 1])
    order_inv = np.array([5, 4, 3, 2, 1])

    assert kendall_tau(order, order) == 1
    assert kendall_tau(order, order_inv) == -1
    assert kendall_tau(order, order_wrong) != -1
コード例 #2
0
ファイル: test_ranking.py プロジェクト: 0x0all/fastFM
def test_fm_sgr_ranking():
    w0, w, V, y, X = get_test_problem()
    X_test = X.copy()
    X_train = X.copy()

    import itertools
    pairs = [p for p in itertools.combinations(range(len(y)), 2)]
    compares = np.zeros((len(pairs), 2), dtype=np.float64)

    for i, p in enumerate(pairs):
        if y[p[0]] > y[p[1]]:
            compares[i, 0] = p[0]
            compares[i, 1] = p[1]
        else:
            compares[i, 0] = p[1]
            compares[i, 1] = p[0]

    print(compares)
    fm = bpr.FMRecommender(n_iter=2000,
            init_stdev=0.01, l2_reg_w=.5, l2_reg_V=.5, rank=2,
            step_size=.002, random_state=11)
    fm.fit(X_train, compares)
    y_pred = fm.predict(X_test)
    y_pred = np.argsort(y_pred)
    print(y)
    print(y_pred)
    print(np.argsort(y))
    assert utils.kendall_tau(np.argsort(y), y_pred) == 1
コード例 #3
0
def test_fm_sgr_ranking():
    w0, w, V, y, X = get_test_problem()
    X_test = X.copy()
    X_train = X.copy()

    import itertools
    pairs = [p for p in itertools.combinations(range(len(y)), 2)]
    compares = np.zeros((len(pairs), 2), dtype=np.float64)

    for i, p in enumerate(pairs):
        if y[p[0]] > y[p[1]]:
            compares[i, 0] = p[0]
            compares[i, 1] = p[1]
        else:
            compares[i, 0] = p[1]
            compares[i, 1] = p[0]

    print(compares)
    fm = bpr.FMRecommender(n_iter=2000,
                           init_stdev=0.01, l2_reg_w=.5, l2_reg_V=.5, rank=2,
                           step_size=.002, random_state=11)
    fm.fit(X_train, compares)
    y_pred = fm.predict(X_test)
    y_pred = np.argsort(y_pred)
    print(y)
    print(y_pred)
    print(np.argsort(y))
    assert utils.kendall_tau(np.argsort(y), y_pred) == 1