예제 #1
0
def test_naive_multiclass_ova_vs_binary_asgd():

    rstate = RandomState(42)

    n_classes = 3

    Xtrn, ytrn = get_fake_multiclass_data(N_POINTS, N_FEATURES, n_classes,
                                          rstate)
    Xtst, ytst = get_fake_multiclass_data(N_POINTS, N_FEATURES, n_classes,
                                          rstate)

    # -- ground truth 'gt': emulate OVA with binary asgd classifiers
    # binary assignments
    ytrns = ytrn[np.newaxis, :] == np.arange(n_classes)[:, np.newaxis]
    # transform into -1 / +1
    ytrns = 2 * ytrns - 1
    # get individual predictions
    basgds = [
        BinaryASGD(*DEFAULT_ARGS, rstate=RandomState(999),
                   **DEFAULT_KWARGS).partial_fit(Xtrn, ysel) for ysel in ytrns
    ]
    ytsts = [basgd.decision_function(Xtst) for basgd in basgds]
    # convert to array of shape (n_classes, n_points)
    gt = np.array(ytsts).T

    # -- given 'gv': use the OVA class
    clf = OVAASGD(*((n_classes, ) + DEFAULT_ARGS),
                  rstate=RandomState(999),
                  **DEFAULT_KWARGS)
    clf.partial_fit(Xtrn, ytrn)
    gv = clf.decision_function(Xtst)

    # -- test
    assert_allclose(gv, gt, rtol=RTOL, atol=ATOL)
예제 #2
0
def test_naive_multiclass_ova_vs_binary_asgd():

    rstate = RandomState(42)

    n_classes = 3

    Xtrn, ytrn = get_fake_multiclass_data(
        N_POINTS, N_FEATURES, n_classes, rstate)
    Xtst, ytst = get_fake_multiclass_data(
        N_POINTS, N_FEATURES, n_classes, rstate)

    # -- ground truth 'gt': emulate OVA with binary asgd classifiers
    # binary assignments
    ytrns = ytrn[np.newaxis, :] == np.arange(n_classes)[:, np.newaxis]
    # transform into -1 / +1
    ytrns = 2 * ytrns - 1
    # get individual predictions
    basgds = [
        BinaryASGD(
            *DEFAULT_ARGS,
            rstate=RandomState(999),
            **DEFAULT_KWARGS).partial_fit(Xtrn, ysel)
        for ysel in ytrns
    ]
    ytsts = [basgd.decision_function(Xtst) for basgd in basgds]
    # convert to array of shape (n_classes, n_points)
    gt = np.array(ytsts).T

    # -- given 'gv': use the OVA class
    clf = OVAASGD(*((n_classes,) + DEFAULT_ARGS),
                  rstate=RandomState(999), **DEFAULT_KWARGS)
    clf.partial_fit(Xtrn, ytrn)
    gv = clf.decision_function(Xtst)

    # -- test
    assert_allclose(gv, gt, rtol=RTOL, atol=ATOL)