def test_fista_multiclass_l1_no_line_search(): for data in (mult_dense, mult_csr): clf = FistaClassifier(max_iter=500, penalty="l1", multiclass=True, max_steps=0) clf.fit(data, mult_target) assert_almost_equal(clf.score(data, mult_target), 0.95, 2)
def test_fista_multiclass_l1l2_log_margin(): for data in (mult_dense, mult_csr): clf = FistaClassifier(max_iter=500, penalty="l1/l2", loss="log_margin", multiclass=True) clf.fit(data, mult_target) assert_almost_equal(clf.score(data, mult_target), 0.95)
def test_fista_bin_l1_no_line_search(): for data in (bin_dense, bin_csr): clf = FistaClassifier(max_iter=500, penalty="l1", max_steps=0) clf.fit(data, bin_target) assert_greater(clf.score(data, bin_target), 0.95)
def test_fista_bin_l1(): for data in (bin_dense, bin_csr): clf = FistaClassifier(max_iter=500, penalty="l1") clf.fit(data, bin_target) assert_greater(clf.score(data, bin_target), 0.95)
def test_fista_multiclass_l1_no_line_search(): for data in (mult_dense, mult_csr): clf = FistaClassifier(max_iter=500, penalty="l1", multiclass=True, max_steps=0) clf.fit(data, mult_target) assert_greater(clf.score(data, mult_target), 0.95)
def test_fista_multiclass_l1l2(): for data in (mult_dense, mult_csr): clf = FistaClassifier(max_iter=500, penalty="l1/l2", multiclass=True) clf.fit(data, mult_target) assert_greater(clf.score(data, mult_target), 0.96)
def rank(M, eps=1e-9): U, s, V = svd(M, full_matrices=False) return np.sum(s > eps) bunch = fetch_20newsgroups_vectorized(subset="train") X_train = bunch.data y_train = bunch.target # Reduces dimensionality to make the example faster ch2 = SelectKBest(chi2, k=5000) X_train = ch2.fit_transform(X_train, y_train) bunch = fetch_20newsgroups_vectorized(subset="test") X_test = bunch.data y_test = bunch.target X_test = ch2.transform(X_test) clf = FistaClassifier(C=1.0 / X_train.shape[0], max_iter=200, penalty="trace", multiclass=True) for alpha in (1e-3, 1e-2, 0.1, 0.2, 0.3): print "alpha=", alpha clf.alpha = alpha clf.fit(X_train, y_train) print clf.score(X_test, y_test) print rank(clf.coef_)
def test_fista_multiclass_trace(): for data in (mult_dense, mult_csr): clf = FistaClassifier(max_iter=100, penalty="trace", multiclass=True) clf.fit(data, mult_target) assert_almost_equal(clf.score(data, mult_target), 0.98, 2)
def test_fista_bin_l1_no_line_search(): for data in (bin_dense, bin_csr): clf = FistaClassifier(max_iter=500, penalty="l1", max_steps=0) clf.fit(data, bin_target) assert_almost_equal(clf.score(data, bin_target), 1.0, 2)
def test_fista_bin_l1(): for data in (bin_dense, bin_csr): clf = FistaClassifier(max_iter=500, penalty="l1") clf.fit(data, bin_target) assert_almost_equal(clf.score(data, bin_target), 1.0, 2)