def test_empty_model(): clf = CDClassifier(C=1e-5, penalty="l1") clf.fit(bin_dense, bin_target) assert_equal(clf.n_nonzero(), 0) acc = clf.score(bin_dense, bin_target) assert_equal(acc, 0.5) clf = CDClassifier(C=1e-5, penalty="l1", debiasing=True) clf.fit(bin_dense, bin_target) assert_equal(clf.n_nonzero(), 0) acc = clf.score(bin_dense, bin_target) assert_equal(acc, 0.5)
def test_warm_start_l1r(): clf = CDClassifier(warm_start=True, random_state=0, penalty="l1") clf.C = 0.1 clf.fit(bin_dense, bin_target) n_nz = clf.n_nonzero() clf.C = 0.2 clf.fit(bin_dense, bin_target) n_nz2 = clf.n_nonzero() assert_true(n_nz < n_nz2)
def test_debiasing_warm_start(): clf = CDClassifier(penalty="l1", max_iter=10, warm_start=True, random_state=0) clf.C = 0.5 clf.fit(bin_dense, bin_target) assert_equal(clf.n_nonzero(), 74) assert_almost_equal(clf.score(bin_dense, bin_target), 1.0) clf.C = 1.0 clf.fit(bin_dense, bin_target) # FIXME: not the same sparsity as without warm start... assert_equal(clf.n_nonzero(), 77) assert_almost_equal(clf.score(bin_dense, bin_target), 1.0)
def test_empty_model(bin_dense_train_data): bin_dense, bin_target = bin_dense_train_data clf = CDClassifier(C=1e-5, penalty="l1") clf.fit(bin_dense, bin_target) assert clf.n_nonzero() == 0 acc = clf.score(bin_dense, bin_target) assert acc == 0.5 clf = CDClassifier(C=1e-5, penalty="l1", debiasing=True) clf.fit(bin_dense, bin_target) assert clf.n_nonzero() == 0 acc = clf.score(bin_dense, bin_target) assert acc == 0.5
def test_debiasing_l1(): for warm_debiasing in (True, False): clf = CDClassifier(penalty="l1", debiasing=True, warm_debiasing=warm_debiasing, C=0.05, Cd=1.0, max_iter=10, random_state=0) clf.fit(bin_dense, bin_target) assert_equal(clf.n_nonzero(), 22) assert_almost_equal(clf.score(bin_dense, bin_target), 0.955, 3)
def test_fit_linear_binary_l1r(): clf = CDClassifier(C=1.0, random_state=0, penalty="l1") clf.fit(bin_dense, bin_target) acc = clf.score(bin_dense, bin_target) assert_almost_equal(acc, 1.0) n_nz = clf.n_nonzero() perc = clf.n_nonzero(percentage=True) assert_equal(perc, float(n_nz) / bin_dense.shape[1]) clf = CDClassifier(C=0.1, random_state=0, penalty="l1") clf.fit(bin_dense, bin_target) acc = clf.score(bin_dense, bin_target) assert_almost_equal(acc, 0.97) n_nz2 = clf.n_nonzero() perc2 = clf.n_nonzero(percentage=True) assert_equal(perc2, float(n_nz2) / bin_dense.shape[1]) assert_true(n_nz > n_nz2)
def test_debiasing_l1l2(): for warm_debiasing in (True, False): clf = CDClassifier(penalty="l1/l2", loss="squared_hinge", multiclass=False, debiasing=True, warm_debiasing=warm_debiasing, max_iter=20, C=0.01, random_state=0) clf.fit(mult_csc, mult_target) assert_greater(clf.score(mult_csc, mult_target), 0.75) assert_equal(clf.n_nonzero(percentage=True), 0.08)
def test_fit_linear_binary_l1r(bin_dense_train_data): bin_dense, bin_target = bin_dense_train_data clf = CDClassifier(C=1.0, random_state=0, penalty="l1") clf.fit(bin_dense, bin_target) assert not hasattr(clf, 'predict_proba') acc = clf.score(bin_dense, bin_target) np.testing.assert_almost_equal(acc, 1.0) n_nz = clf.n_nonzero() perc = clf.n_nonzero(percentage=True) assert perc == n_nz / bin_dense.shape[1] clf = CDClassifier(C=0.1, random_state=0, penalty="l1") clf.fit(bin_dense, bin_target) acc = clf.score(bin_dense, bin_target) np.testing.assert_almost_equal(acc, 0.97) n_nz2 = clf.n_nonzero() perc2 = clf.n_nonzero(percentage=True) assert perc2 == n_nz2 / bin_dense.shape[1] assert n_nz > n_nz2
def test_fit_squared_loss_l1(): clf = CDClassifier(C=0.5, random_state=0, penalty="l1", loss="squared", max_iter=100, shrinking=False) clf.fit(bin_dense, bin_target) assert_almost_equal(clf.score(bin_dense, bin_target), 0.985, 3) y = bin_target.copy() y[y == 0] = -1 assert_array_almost_equal(np.dot(bin_dense, clf.coef_.ravel()) - y, clf.errors_.ravel()) n_nz = clf.n_nonzero() assert_equal(n_nz, 89)
def test_debiasing_l1(bin_dense_train_data, warm_debiasing): bin_dense, bin_target = bin_dense_train_data clf = CDClassifier(penalty="l1", debiasing=True, warm_debiasing=warm_debiasing, C=0.05, Cd=1.0, max_iter=10, random_state=0) clf.fit(bin_dense, bin_target) assert clf.n_nonzero() == 22 np.testing.assert_almost_equal(clf.score(bin_dense, bin_target), 0.955, 3)
def test_debiasing_l1l2(mult_sparse_train_data, warm_debiasing): mult_sparse, mult_target = mult_sparse_train_data clf = CDClassifier(penalty="l1/l2", loss="squared_hinge", multiclass=False, debiasing=True, warm_debiasing=warm_debiasing, max_iter=20, C=0.01, random_state=0) clf.fit(mult_sparse, mult_target) assert clf.score(mult_sparse, mult_target) > 0.75 assert 0.0 <= clf.n_nonzero(percentage=True) <= 0.1