@@ -547,35 +547,35 @@ def test_logistic_regression_solvers_multiclass():
547547
548548
549549def 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 )
579579
580580
581581def test_logistic_regression_sample_weights ():
@@ -926,7 +926,6 @@ def test_n_iter():
926926 assert_equal (clf .n_iter_ .shape , (1 , n_cv_fold , n_Cs ))
927927
928928
929- @ignore_warnings
930929def test_warm_start ():
931930 # A 1-iteration second fit on same data should give almost same result
932931 # with warm starting, and quite different result without warm starting.
@@ -947,11 +946,11 @@ def test_warm_start():
947946 solver = solver ,
948947 random_state = 42 , max_iter = 100 ,
949948 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_
952952
953- clf .max_iter = 1
954- with ignore_warnings ():
953+ clf .max_iter = 1
955954 clf .fit (X , y )
956955 cum_diff = np .sum (np .abs (coef_1 - clf .coef_ ))
957956 msg = ("Warm starting issue with %s solver in %s mode "
0 commit comments