@@ -547,35 +547,35 @@ def test_logistic_regression_solvers_multiclass():
547
547
548
548
549
549
def test_logistic_regressioncv_class_weights ():
550
- X , y = make_classification ( n_samples = 20 , n_features = 20 , n_informative = 10 ,
551
- n_classes = 3 , random_state = 0 )
552
-
553
- msg = ( "In LogisticRegressionCV the liblinear solver cannot handle "
554
- "multiclass with class_weight of type dict. Use the lbfgs, "
555
- "newton-cg or sag solvers or set class_weight='balanced'" )
556
- clf_lib = LogisticRegressionCV ( class_weight = { 0 : 0.1 , 1 : 0.2 },
557
- solver = 'liblinear' )
558
- assert_raise_message ( ValueError , msg , clf_lib . fit , X , y )
559
- y_ = y . copy ()
560
- y_ [ y == 2 ] = 1
561
- clf_lib . fit ( X , y_ )
562
- assert_array_equal ( clf_lib . classes_ , [ 0 , 1 ])
563
-
564
- # Test for class_weight=balanced
565
- X , y = make_classification ( n_samples = 20 , n_features = 20 , n_informative = 10 ,
566
- random_state = 0 )
567
- clf_lbf = LogisticRegressionCV (solver = 'lbfgs ' , fit_intercept = False ,
568
- class_weight = 'balanced' )
569
- clf_lbf . fit ( X , y )
570
- clf_lib = LogisticRegressionCV ( solver = 'liblinear' , fit_intercept = False ,
571
- class_weight = 'balanced' )
572
- clf_lib .fit (X , y )
573
- clf_sag = LogisticRegressionCV ( solver = 'sag' , fit_intercept = False ,
574
- class_weight = 'balanced' , max_iter = 2000 )
575
- clf_sag .fit (X , y )
576
- assert_array_almost_equal (clf_lib .coef_ , clf_lbf .coef_ , decimal = 4 )
577
- assert_array_almost_equal (clf_sag .coef_ , clf_lbf .coef_ , decimal = 4 )
578
- assert_array_almost_equal (clf_lib .coef_ , clf_sag .coef_ , decimal = 4 )
550
+ for weight in [{ 0 : 0.1 , 1 : 0.2 }, { 0 : 0.1 , 1 : 0.2 , 2 : 0.5 }]:
551
+ n_classes = len ( weight )
552
+ for class_weight in ( weight , 'balanced' ):
553
+ X , y = make_classification ( n_samples = 30 , n_features = 3 ,
554
+ n_repeated = 0 ,
555
+ n_informative = 3 , n_redundant = 0 ,
556
+ n_classes = n_classes , random_state = 0 )
557
+
558
+ clf_lbf = LogisticRegressionCV ( solver = 'lbfgs' , Cs = 1 ,
559
+ fit_intercept = False ,
560
+ class_weight = class_weight )
561
+ clf_ncg = LogisticRegressionCV ( solver = 'newton-cg' , Cs = 1 ,
562
+ fit_intercept = False ,
563
+ class_weight = class_weight )
564
+ clf_lib = LogisticRegressionCV ( solver = 'liblinear' , Cs = 1 ,
565
+ fit_intercept = False ,
566
+ class_weight = class_weight )
567
+ clf_sag = LogisticRegressionCV (solver = 'sag ' , Cs = 1 ,
568
+ fit_intercept = False ,
569
+ class_weight = class_weight ,
570
+ tol = 1e-5 , max_iter = 10000 ,
571
+ random_state = 0 )
572
+ clf_lbf .fit (X , y )
573
+ clf_ncg . fit ( X , y )
574
+ clf_lib . fit ( X , y )
575
+ clf_sag .fit (X , y )
576
+ assert_array_almost_equal (clf_lib .coef_ , clf_lbf .coef_ , decimal = 4 )
577
+ assert_array_almost_equal (clf_ncg .coef_ , clf_lbf .coef_ , decimal = 4 )
578
+ assert_array_almost_equal (clf_sag .coef_ , clf_lbf .coef_ , decimal = 4 )
579
579
580
580
581
581
def test_logistic_regression_sample_weights ():
@@ -926,7 +926,6 @@ def test_n_iter():
926
926
assert_equal (clf .n_iter_ .shape , (1 , n_cv_fold , n_Cs ))
927
927
928
928
929
- @ignore_warnings
930
929
def test_warm_start ():
931
930
# A 1-iteration second fit on same data should give almost same result
932
931
# with warm starting, and quite different result without warm starting.
@@ -947,11 +946,11 @@ def test_warm_start():
10000
code>
947
946
solver = solver ,
948
947
random_state = 42 , max_iter = 100 ,
949
948
fit_intercept = fit_intercept )
950
- clf .fit (X , y )
951
- coef_1 = clf .coef_
949
+ with ignore_warnings (category = ConvergenceWarning ):
950
+ clf .fit (X , y )
951
+ coef_1 = clf .coef_
952
952
953
- clf .max_iter = 1
954
- with ignore_warnings ():
953
+ clf .max_iter = 1
955
954
clf .fit (X , y )
956
955
cum_diff = np .sum (np .abs (coef_1 - clf .coef_ ))
957
956
msg = ("Warm starting issue with %s solver in %s mode "
0 commit comments