def check_l1_min_c(X, y, loss, fit_intercept=True, intercept_scaling=1.0): min_c = l1_min_c( X, y, loss=loss, fit_intercept=fit_intercept, intercept_scaling=intercept_scaling, ) clf = { "log": LogisticRegression(penalty="l1", solver="liblinear"), "squared_hinge": LinearSVC(loss="squared_hinge", penalty="l1", dual=False), }[loss] clf.fit_intercept = fit_intercept clf.intercept_scaling = intercept_scaling clf.C = min_c clf.fit(X, y) assert (np.asarray(clf.coef_) == 0).all() assert (np.asarray(clf.intercept_) == 0).all() clf.C = min_c * 1.01 clf.fit(X, y) assert (np.asarray(clf.coef_) != 0).any() or (np.asarray(clf.intercept_) != 0).any()
def check_l1_min_c(X, y, loss, fit_intercept=True, intercept_scaling=None): min_c = l1_min_c(X, y, loss=loss, fit_intercept=fit_intercept, intercept_scaling=intercept_scaling) clf = { 'log': LogisticRegression(penalty='l1', solver='liblinear'), 'squared_hinge': LinearSVC(loss='squared_hinge', penalty='l1', dual=False), }[loss] clf.fit_intercept = fit_intercept clf.intercept_scaling = intercept_scaling clf.C = min_c clf.fit(X, y) assert (np.asarray(clf.coef_) == 0).all() assert (np.asarray(clf.intercept_) == 0).all() clf.C = min_c * 1.01 clf.fit(X, y) assert ((np.asarray(clf.coef_) != 0).any() or (np.asarray(clf.intercept_) != 0).any())
def test_unsupported_loss(): with pytest.raises(ValueError): l1_min_c(dense_X, Y1, loss='l1')
def test_ill_posed_min_c(): X = [[0, 0], [0, 0]] y = [0, 1] with pytest.raises(ValueError): l1_min_c(X, y)
def test_l1_min_c_l2_loss(): # loss='l2' should raise ValueError msg = "loss type not in" with pytest.raises(ValueError, match=msg): l1_min_c(dense_X, Y1, loss="l2")