
    riq                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZmZ d dl m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z? ej                  j                  d      ZBej                  j                  d      ZBdZCdd gd dgddggZDg dZEg dZF e       ZGd ZHej                  j                  de?      d        ZJd ZKej                  j                  de?      d        ZLej                  j                  d  e eMeGj                        d!d"#       e eMeGj                        d$%       e eMeGj                        d&d'(       e eMeGj                        d)d'(       e eMeGj                        d*%       e0 e eMeGj                        d+%            g      d,        ZOej                  j                  d-      ej                  j                  d.d!d*g      d/               ZPej                  j                  d0      ej                  j                  d1eeg      d2               ZQej                  j                  d3      ej                  j                  d1d4ged5fed6fg      d7               ZRej                  j                  d8e>      d9        ZSd: ZTd; ZUd< ZVd= ZWd> ZXej                  j                  d?        ZZej                  j                  d@dAdBg      dC        Z[ej                  j                  dDdEdFgfdGdHdIgfdJdHdIgfdKdFgfdLdHdIgfg      dM        Z\dN Z]ej                  j                  de?      dO        Z^ej                  j                  d@dAdBg      dP        Z_dQ Z`ej                  j                  dRdBdAg      dS        Zaej                  j                  dRdBdAg      dT        Zbej                  j                  dUdVdWdXdVdWdYdZg      ej                  j                  d[dUd\g      d]               Zcej                  j                  d0      ej                  j                  d^d_      ej                  j                  d.d      d`                      Zdej                  j                  d.da      db        Zedc Zfdd Zgej                  j                  dde ge?z         df        Zhdg Zidh Zjej                  j                  de?      di        Zkej                  j                  de?      dj        Zldk Zmdl Znej                  j                  de?      dm        Zoej                  j                  d5dd g      dn        Zpdo Zqej                  j                  dp ej                  ddq            ej                  j                  drg ds      dt               Zsej                  j                  d.eC      ej                  j                  d@dAdBg      du               Ztej                  j                  d. eu eveC       evd+g      z
              ej                  j                  dvdw      ej                  j                  dRdw      dx                      Zwej                  j                  d.d*d$g      ej                  j                  dRdw      ej                  j                  dydej                  f      dz                      Zyej                  j                  d5dX      ej                  j                  de?      d{               Zzej                  j                  d.g d|      ej                  j                  dRdBdAg      ej                  j                  de?      d}                      Z{d~ Z|d Z}ej                  j                  d      ej                  j                  dyg d      ej                  j                  dddg      d                      Z~ej                  j                  dyg d      d        Zej                  j                  dy ej                   ddd            ej                  j                  d5g d      d               Zej                  j                  dd      d        Zej                  j                  d6d ej                  d dd      f      ej                  j                  dd      d               Zej                  j                  dd      d        Zd Zej                  j                  d      d        Zej                  j                  dy ej                   ddd            ej                  j                  d5g d      d               Zd Zd Zej                  j                  d      ej                  j                  d. eu eveC       evd+g      z
              d               Zej                  j                  ej                  j                  dddBdddd dAdddd dBdddg      d               Zd Zej                  j                  d.g d      ej                  j                  dRdBdAg      d               Zej                  j                  d[ddddZd\g      d        Zej                  j                  d.eC      ej                  j                  de?      d               Zd Zd Zd Z edA      d        Zd Zej                  j                  d.eC      d        Zd Zd Zej                  j                  d0      ej                  j                  deeg      d               Zej                  j                  d      ej                  j                  deeg      d               Zd Zej                  j                  d      ej                  j                  d      d               Zd Zej                  j                  d      ej                  j                  dddg      d               Zy)    N)assert_allcloseassert_array_almost_equalassert_array_equal)sparse)LinAlgWarningsvd)config_context)HalfMultinomialLoss)clone)	load_irismake_classificationmake_low_rank_matrix)ConvergenceWarning)LogisticRegressionLogisticRegressionCVSGDClassifier)_log_reg_scoring_path_logistic_regression_path)brier_score_loss
get_scorerlog_lossmake_scorer)GridSearchCVKFoldLeaveOneGroupOutStratifiedKFoldcross_val_scoretrain_test_split)OneVsRestClassifier)LabelEncoderStandardScalerscale)l1_min_c)compute_class_weightshuffle)ignore_warnings)	_IS_32BITCOO_CONTAINERSCSR_CONTAINERSz6error::sklearn.exceptions.ConvergenceWarning:sklearn.*z6ignore:The default value for l1_ratios.*:FutureWarning)lbfgs	liblinear	newton-cgnewton-choleskysagsaga   )r   r1   r1   )   r1   r   c                    t        |      }t        j                  |      }|j                  d   }| j	                  ||      j                  |      }t        | j                  |       |j                  |fk(  sJ t        ||       | j                  |      }|j                  ||fk(  sJ t        |j                  d      t        j                  |             t        |j                  d      |       y)z;Check that the model is able to fit the classification datar   r1   axisN)lennpuniqueshapefitpredictr   classes_predict_probar   sumonesargmax)clfXy	n_samplesclasses	n_classes	predictedprobabilitiess           f/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_logistic.pycheck_predictionsrJ   9   s    AIiilGa I1%%a(Is||W-??yl***y!$%%a(M9i"8888m//Q/79KL}+++3Q7    csr_containerc                    t        t               t        t               t        t                | t              t               t        t        d      t        t               t        t        d       | t              t               t        t        d      t        t               t        t        d       | t              t               y )Nd   CFfit_intercept)rJ   r   rB   Y1rL   s    rI   test_predict_2_classesrU   K   s|     (*Ar2(*M!,<bA(3/B7(3/q1A2F(u=q"E(u=}Q?OQSTrK   c                      G d d      }  |        }g d}d}t        |d||d      }t        d	      \  }}|j                  ||       |j                  |d   k(  sJ |j                  |t        |      z  k(  sJ d|_        |j                  ||j                  |            }||j                  d   k(  sJ |j                  d
k(  sJ y)z0Test that LogisticRegressionCV calls the scorer.c                       e Zd Zd ZddZy)0test_logistic_cv_mock_scorer.<locals>.MockScorerc                 $    d| _         g d| _        y )Nr   )皙?g?皙?      ?)callsscores)selfs    rI   __init__z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__init__]   s    DJ.DKrK   Nc                     | j                   | j                  t        | j                         z     }| xj                  dz  c_        |S )Nr1   )r^   r]   r6   )r_   modelrB   rC   sample_weightscores         rI   __call__z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__call__a   s4    KK

S-= =>EJJ!OJLrK   N)__name__
__module____qualname__r`   re    rK   rI   
MockScorerrX   \   s    	/	rK   rk   )r1   r2         r2   r   F)Cs	l1_ratiosscoringcvuse_legacy_attributesr   random_stater1   N)	r   r   r:   C_r]   r6   rd   r;   r^   )rk   mock_scorerro   rr   lrrB   rC   custom_scores           rI   test_logistic_cv_mock_scorerrz   Y   s      ,K	B	
B	#
B A.DAqFF1aL 55BqE>> SW,,, K88Arzz!}-L;--a0000!!!rK   c                     t        t        d      t        t               t        t        d       | t              t               y )N
   rO   )rJ   r   rB   Y2rT   s    rI   test_predict_3_classesr~      s+    (2.26(2.a0@"ErK   rA   r*      )rP   solvermax_iterr,   rP   r   r.   {Gz?rP   r   tolr/   r-   r+   c                    t        |       } t        j                  j                  \  }}t        j                  t        j
                     }t        | dd      dv r| j                  |       | j                  t        j                  |       t        t        j                  |      | j                         | j                  t        j                        }t        j                  ||k(        dkD  sJ | j                  t        j                        }t!        |j#                  d      t        j$                  |             t        j                  |j'                  d         }t        j                  ||k(        dkD  sJ y)zTest logistic regression with the iris dataset.

    Test that different solvers handle multiclass data correctly and
    give good accuracy score (>0.95) for the training data.
    r   N)r.   r/   r+   rt   ffffff?r1   r4   )r   irisdatar9   target_namestargetgetattr
set_paramsr:   r   r7   r8   r<   r;   meanr=   r   r>   r?   r@   )rA   global_random_seedrD   _r   predrH   s          rI   test_predict_irisr      s   2 *C99??LIqt{{+FsHd#'CC$67GGDIIvryy(#,,7;;tyy!D7746>"T)))%%dii0MM%%1%-rwwy/AB]11q19:D7746>"T)))rK   z,error::sklearn.exceptions.ConvergenceWarningr   c                    t        j                  g dg dg      j                  }t        j                  g d      }t        d|j                  d   z  ddd| 	      }|j                  ||       t        |j                  d
d       t        |j                  ddggd       t        j                  g d      }|j                  ||       t        |j                  g dd       t        |j                  ddgddgddggdd       y)z<Compare Logistic regression with L2 regularization to glmnet)	r0   r   r1   r2   rl   rm   )	r   r   r1   r   r1   r1   r1   r   r   )	r   r   r   r1   r1   r1   r1   r1   r1         ?r   T:0yE>,  )rP   rR   r   r   r   g;?h㈵>rtolg&+4u?gGGٍ?)	r   r   r   r1   r1   r1   r2   r2   r2   )g:MupgH"q?gÜ麿gމUؿg	Wdg0Rfg'u=?gnHW?g;%r   atolN)	r7   arrayTr   r9   r:   r   
intercept_coef_)r   rB   rC   glms       rI   test_logistic_glmnetr      s      	13NOPRRA
,-A

!''!*
C GGAqMCNNM=CII >?dK6 	,-AGGAqMHt 		^,/=)	

 	rK   z.ignore:.*use_legacy_attributes.*:FutureWarningLRc                 &   t         j                  t         j                  }}dD ]G  }d| d} | |      }t        j                  t
        |      5  |j                  ||       d d d        I dD ][  }d|z  }| t        k(  r | |d	      }n
 | |d
      }t        j                  t
        |      5  |j                  ||       d d d        ] dD ]G  }d|z  } | |d      }t        j                  t
        |      5  |j                  ||       d d d        I dD ]\  }d| d}| t        k(  r | |d	      }n
 | |d      }t        j                  t
        |      5  |j                  ||       d d d        ^ | t        u rQd} | t        j                  d      }t        j                  t
        |      5  |j                  ||       d d d        y y # 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr+   zThe 'z4' solver does not support multiclass classification.r   match)r*   r,   r-   r.   z/Solver %s supports only 'l2' or None penalties,r1   )r   l1_ratior1   )r   rp   r*   r,   r-   r.   r/   z1Solver %s supports only dual=False, got dual=TrueT)r   dualz;Only 'saga' solver supports elasticnet penalty, got solver=.r\   )r\   z6penalty=None is not supported for the liblinear solverr+   r   )
r   r   r   pytestraises
ValueErrorr:   r   r7   inf)r   rB   rC   r   msgrx   s         rI   test_check_solver_optionr      s    99dkkqA   fXQRv]]:S1 	FF1aL	 	 C ?&H##6A.B6T2B]]:S1 	FF1aL	 	 K AFJvD)]]:S1 	FF1aL	 	   KF8STU##6C0B6V4B]]:S1 	FF1aL	 	 
F"&&-]]:S1 	FF1aL	 	  A	 		 	
	 		 		 	s<   G0G!<G.G;7HG	!G+	.G8	;H	Hzignore::FutureWarningargr   rp   c                      | dddd|d i}t        j                  t        d      5  |j                  t	        j
                  ddgdd	gg      t	        j
                  d
dg             d d d        y # 1 sw Y   y xY w)N
elasticnetr/   )penaltyr   z.*l1_ratio.*r   r1   r2   rl   rm   r   rj   )r   r   r   r:   r7   r   )r   r   rb   s      rI   $test_elasticnet_l1_ratio_err_helpfulr   -  st     B|FBsDkBE	z	9 @		"((QFQF+,bhh1v.>?@ @ @s   AA33A<coo_containerc                 H   t         j                  j                  \  }}t         j                  t         j                     }t        t         j                        }t               j                  ||      }|j                  |      }|j                          t        j                  |j                        sJ |j                  |      } | |      }|j                  |      }	|j                          |j                  |      }
t        ||       t        ||	       t        ||
       y rf   )r   r   r9   r   r   r"   r   r:   decision_functionsparsifyr   issparser   densifyr   )r   rD   
n_featuresr   rB   rA   pred_d_dpred_s_dsp_datapred_s_spred_d_ss              rI   test_sparsifyr   :  s     !IIOOIzt{{+FdiiA


"
"1f
-C$$Q'HLLN??399%%%$$Q'HAG$$W-HKKM$$W-Hh1h1h1rK   c                     t         j                  j                  d      } | j                  d      }t        j                  |j
                  d         }d|d<   t        d      }|d d }t        j                  t              5  |j                  t        |       d d d        t        j                  t              5  |j                  ||      j                  | j                  d             d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)Nr   )   r|   rt   r0   )rl      )r7   randomRandomStaterandom_sampler?   r9   r   r   r   r   r:   rB   r;   )rngX_y_rA   y_wrongs        rI   test_inconsistent_inputr   S  s    
))


"C			7	#B	!	BBqE
!
,C "gG	z	" 7 
z	" <B 1 1' :;< <	 < <s   C4:1D 4C= D	c                      t               } | j                  t        t               d| j                  d d  d| j
                  d d  t        | j                  t              d       y )Nr   )r   r:   rB   rS   r   r   r   r   rA   s    rI   test_write_parametersr   g  sG    

CGGArNCIIaLCNN1c33A6:rK   c                     t        j                  t        t         j                        } t         j                  | d<   t               }t        j                  t              5  |j                  | t               d d d        y # 1 sw Y   y xY w)Ndtyper   r1   )r7   r   rB   float64nanr   r   r   r   r:   rS   )Xnanlogistics     rI   test_nanr   p  s\     88ARZZ(DDJ!#H	z	" T2  s    B  B	c                 b   t         j                  j                  |       }t        j                  |j	                  dd      ddgz   |j	                  dd      f      }dgdz  dgdz  z   }t        j
                  ddd      }t        }dD ]  }  |t              ||ddg|d	d
|d| 	      \  }}}t        |      D ]W  \  }	}
t        |
d	d
|| d      }|j                  ||       |j                  j                         }t        |||	   dd|z         Y  dD ]  }dg}  |t              ||ddg|d|d|       \  }}}t        |d   dd| |      }|j                  ||       t        j                  |j                  j                         |j                  g      }t        ||d   dd|z          y )NrN   r2   r1   r0   r   rm   r|   r.   r/   Fr     )rE   ro   rR   r   r   r   ru   )rP   rR   r   r   ru   r   zwith solver = %s)decimalerr_msg)r*   r,   r-   r+   r.   r/        @@ư>     @)rE   ro   r   r   intercept_scalingru   )rP   r   r   ru   r   )r7   r   r   concatenaterandnlogspacer&   r   	enumerater   r:   r   ravelr   r   )r   r   rB   rC   ro   fr   coefsr   irP   rx   lr_coefs                rI   test_consistency_pathr   {  s   
))

 2
3C
		#q)QF2CIIc14EFGA	
c	RD3JA	Q2	BA " 3q23F+

r1 bM 	DAq##/B FF1aLhhnn&G%q16H66Q	8 X 
U3q23F%+	
r1  e%+
 	q!.."((.."2BMM!BC!U1Xq2Dv2M	
+
rK   c                     t         j                  j                  d      } t        j                  | j	                  dd      ddgz   | j	                  dd      f      }dgdz  dgdz  z   }dg}t        j                  t              5 }t        ||ddg|dddd       d d d        t              dk(  sJ |d   j                  j                  d   }d	|v sJ d
|v sJ d|v sJ d|v sJ y # 1 sw Y   NxY w)Nr   rN   r2   r1   r0   r           )rE   ro   r   r   ru   verbosez-lbfgs failed to converge after 1 iteration(s)z!Increase the number of iterationszscale the dataz%linear_model.html#logistic-regression)r7   r   r   r   r   r   warnsr   r   r6   messageargs)r   rB   rC   ro   recordwarn_msgs         rI   .test_logistic_regression_path_convergence_failr     s   
))


"C
		#q)QF2CIIc14EFGA	
c	RD3JA
B
 
(	) 
V!q1a&RS11VW	


 v;!ay  %%a(H:hFFF.(:::x'''2h>>>
 
s   C((C1c                    t        d|       \  }}t        | ddd      }|j                  ||       t        | ddd      }|j                  ||       t        | dz   ddd      }|j                  ||       t        |j                  |j                         d}t        j                  t        |	      5  t        |j                  |j                         d d d        y # 1 sw Y   y xY w)
N   rD   ru   TMbP?r+   )ru   r   r   r   r1   z)Arrays are not almost equal to 6 decimalsr   )r   r   r:   r   r   r   r   AssertionError)r   rB   rC   lr1lr2lr3r   s          rI    test_liblinear_dual_random_stater    s     :LMDAq
'	C GGAqM
'	C GGAqM
'!+	C GGAqM cii3
5C	~S	1 8!#))SYY78 8 8s   4!CC'rs   TFc           	         d\  }}}t         j                  j                  |       }|j                  ||      }t        j                  |j                  d|j                  |      z              }||j                         z  }||j                         z  }t        dgdd| d||      }|j                  ||       t        dd| d      }	|	j                  ||       t        |	j                  |j                         |j                  j                  d	|fk(  sJ t        |j                  d
d	g       t!        |j                        dk(  sJ |j"                  j                  dk(  sJ |j"                  j                  d   }
|j$                  j                  dk(  sJ |j$                  j                  d   }|rt        j&                  t)        |j*                  j-                                     }|j                  d	||
||fk(  sJ t        j&                  t)        |j.                  j-                                     }|j                  d	||
|fk(  sJ y |j*                  j                  |||
d	|fk(  sJ t1        |j2                  t4              sJ t1        |j6                  t4              sJ |j.                  j                  |||
fk(  sJ y )N2   r   rl   r   r   r   Fr+   )ro   rp   rR   ru   r   rr   rs   )rP   rR   ru   r   r1   r0   r2   r   r   )r7   r   r   r   signdotr   stdr   r:   r   r   r   r9   r   r<   r6   Cs_
l1_ratios_asarraylistcoefs_paths_valuesscores_
isinstancerv   float	l1_ratio_)r   rs   rD   r   n_cvr   X_refrC   lr_cvrx   n_Csn_l1_ratioscoefs_pathsr^   s                 rI   test_logistic_cvr    si    #+Iz4
))

 2
3CIIi,E
		!cii
3345A	UZZ\E	UYY[E 5'3E 
IIeQ	
U1CK
B FF5!bhh4;;J///u~~Aw/u~~!###99??d"""99??1D!!T)))""((+Kjje&8&8&?&?&A!BC  QdK$LLLLD!5!5!789||4{;;;;!!''D+tQ
+SSSS%((E***%//5111}}""t[$&????rK   zscoring, multiclass_agg_listaccuracy 	precision_macro	_weightedf1neg_log_lossrecallc                    t        d| dd      \  }}t        j                  d      t        j                  dd      }}t        d      }|j	                         }d|d	<   d
D ]  }	||	=  |j                  ||   ||          |D ]X  }
t        ||
z         }t        t        ||||ft        j                  |      dg|d d d d|d   d    ||||   ||                Z y )NrN   rl      )rD   ru   rF   n_informativeP   r   rO   l2r   )rP   n_jobs
warm_start)rE   ro   rq   max_squared_sumrc   score_paramsr2   r   )
r   r7   aranger   
get_paramsr:   r   r   r   r8   )r   rq   multiclass_agg_listrB   rC   traintestrx   paramskey	averagingscorers               rI   "test_logistic_cv_multinomial_scorer6  "  s   * $6!STDAq ))B-2s!34E	c	"B]]_F
 F9 - 3KFF1U8QuX( 
	Gi/0!!	
 		!5 $"!    2qw$(	

rK   c                     d\  } }}t        | ||dd      \  }}t               j                  g d      j                  |      }t	        j
                  |      dz
  }t               }t        dd      }t               }t        dd      }	|j                  ||       |j                  ||       |j                  ||       |	j                  ||       t        |j                  |j                         t        |j                  |      |j                  |             t        |j                        g dk(  sJ t        |j                  |	j                         t        |j                  |      |	j                  |             t        |j                        g dk(  sJ t        |	j                        g dk(  sJ t        t	        j                  |j                  |                  g dk(  sJ t        t	        j                  |	j                  |                  h d	k  sJ t        g d
d      j                  ||      }	t        t	        j                  |	j                  |                  g dk(  sJ t        dddd      j                  ||      }	t        t	        j                  |	j                  |                  ddgk(  sJ y)zTest internally encode labelsr  rl   r   )rD   r   rF   r&  ru   )barbazfoor1   F)ro   rs   >   r8  r9  r:  )r1   r2   r|   r2   )class_weightr8  r9  N)r   r    r:   inverse_transformr7   r   r   r   r   r   r=   sortedr<   r8   r;   set)
rD   r   rF   r  rC   y_strrx   r  lr_str	lr_cv_strs
             rI   2test_multinomial_logistic_regression_string_inputsrB  \  sR   '/$Iz9"HE1 N45GGJE
aA		B AUCE!F$GIFF5!	IIeQ
JJueMM%BHHfll+B$$U+V-A-A%-HI&//"&;;;;EKK1E''.	0G0G0NO&//"&;;;;)$$%)>>>> "))FNN51237LLLLryy**51237LLLL %
%PTTuI "))I--e456:OOOO #!A0NOSSuI "))I--e4565%.HHHrK   c                 t   t        dd|       \  }}d||dk  <    ||      }t        d      }|j                  ||       t        d      }|j                  ||       t        |j                  |j                         t        |j
                  |j
                         |j                  |j                  k(  sJ y )NrN   r   rD   r   ru   r   r   Frs   )r   r   r:   r   r   r   rv   )r   rL   rB   rC   csrrA   clfss          rI   test_logistic_cv_sparserH    s    !2DDAq Aa#gJ

C
U
;CGGAqMe<DHHS!djj#))4doos~~>77cffrK   c           
      L   t         j                  t         j                  }}|j                  \  }}d}t	        |      }t        |j                  ||            }t        |dd      }|j                  ||       |j                  j                  d|fk(  sJ t        |j                  g d       t        j                  t        |j                  j                                     }	|	j                  d|d|dz   fk(  sJ |j                   j                  d	k(  sJ t        j                  t        |j"                  j                                     }
|
j                  d|dfk(  sJ t%        t'        t)        d
            dt        j*                  ddd      i      j                  ||      }dD ]W  }|dv rdnd}t        ||d|dv rdndd|       }|dk(  rt-        |      }|j                  ||       |j/                  ||      }|j/                  ||      }||kD  sJ |j                  j                  |j                  j                  k(  sJ t        |j                  g d       | rt        j                  t        |j                  j                                     }	|	j                  d|d|dz   fk(  sJ |j                   j                  d	k(  sJ t        j                  t        |j"                  j                                     }
|
j                  d|dfk(  sJ t1        |j                  d   j                  d         D ]  }|j                  D cg c]  }|j                  |   |d d d df    }}t        j2                  |dd      j5                  t7        |j                         d      }t        j8                  ||z  d      }t        j:                  t        j<                  |      dk\        rJ  Jdddd|dz   f\  }}}}}|j                  j                  |||||fk(  sJ t?        |j@                  tB              sJ t?        |jD                  tB              sJ |j"                  j                  |||fk(  sJ t1        |j                  j                  d         D ]c  }|j                  |dd d d d d df   }t        j8                  ||z  d      }t        j:                  t        j<                  |      dk\        rcJ  Z tG        d      }t        jH                  |      }t7        |      dk(  sJ |j                  ||      D ]{  \  }}t7        t        jH                  ||               dk(  sJ t7        t        jH                  ||               dk(  sJ tK        ||         tK        ||         z  tK               k(  r{J  t        |d      j                  ||      }t        j:                  |j"                  dk(        sJ tM        tN        dd d|!      }t        ||t        j*                  d"dd      d#      j                  ||      }|j@                  d$k(  sJ |j"                   }t        j:                  |d%kD        sJ t        jP                  |      d&k  sJ y c c}w )'Nr2   r-   T)rr   r   rs   rl   r   r1   r2   r|   r1   )r|   r   estimator__Cr   rm   )numr*   r,   r.   r/   r        *   r   r   )r   r   ru   r   rr   rs   r*   r   r0   r4   )r   r0   n_splitsF)rr   rs   r   r=   )greater_is_betterresponse_methodscale_by_halflabelsi)rr   rq   ro   rs   r   ffffff?r[   ))r   r   r   r9   r   r  splitr   r:   r   r   r<   r7   r  r  r  r  r  r   r   r   r   r"   rd   rangeswapaxesreshaper6   r>   alldiffr  rv   r  r  r   r8   r>  r   r   min)rs   rB   rC   rD   r   r  rr   precomputed_foldsrA   r  r^   clf_ovrr   r   	clf_multimulti_score	ovr_scorefoldcr   normsn_foldsn_csr  rF   n_dofrE   r0  r1  rq   brier_scoress                                  rI   test_multinomial_cv_irisrk    s-    99dkkqAGGIz D		BRXXa^, %6dC GGAqM 99??q*o---s||Y/**T#"2"2"9"9";<=KD"j1n ====77==E!!!ZZS[[//123F<<AtR=((( .6GHI	R34 
c!Qi  8 ?3 O33(/1t"7
	 WaAaooa+MM!Q'	Y&&& yy)//"7"77779--y9 **T)*@*@*G*G*I%JKK$$D"j1n(EEEE==&&%///ZZY%6%6%=%=%? @AF<<AtR=000 i44Q7==a@A 3 FOEWEW@AI**1-dAssl;  E1a088Y]]9KRPuu}15vvbggen12223 <=b!Q
UV;V8GT;	5))//4    illE222i115999$$**wT.JJJJ i44::1=> 3
 "..tQ1crc/ABuu}8<vvbggen12223q?3H 
	BiilGw<1xx1~ 5t299QuX&'1,,,299QtW%&!+++1U8}s1T7|+su4445
 "E
B
F
Fq!
LC 66#++$%%%
 'G w2;;r1b#9QV	c!Qi  66T>>KK<L 66,$%%%66,#%%%Es    Z!c                 J   t        ddd|       \  }}t        dd|       }t        D ci c]   }|t        dd|i|j	                  ||      " }}t        j                  |d	
      D ]5  \  }}t        ||   j                  ||   j                  ddd| d|        7 yc c}w )z)Test solvers converge to the same result.r   r|   r   )rD   r   r&  ru   rZ   F)rP   rR   ru   r   r2   rr   -C6?zCompare  vs )r   r   r   Nrj   )	r   dictSOLVERSr   r:   	itertoolscombinationsr   r   )r   rB   rC   r2  r   classifierssolver_1solver_2s           rI    test_logistic_regression_solversrx  )  s    "ADVDAq Cu;MNF  	";&;F;??1EEK 
 (44[AF 
(!''!''xjXJ7	

s   %B rR   c                 8   t        ddddd      \  }}d}t        | |d      }d	d
d
d}t        t              t        dg      z
  D ci c]1  }|t	        d||j                  |d      d|j                  ||      3 }}t        j                  |d      D ]|  \  }}	t        ||   j                  ||	   j                  |dk(  s|	dk(  rdnd| d|	        | sCt        ||   j                  ||	   j                  |dk(  s|	dk(  rdnd| d|	        ~ yc c}w )zATest solvers converge to the same result for multiclass problems.r   r|   rl   r   rD   r   r&  rF   ru   r   rP  )rR   r   ru   r   '  r*   r.   r/   r+   rN   r   r   r2   rm  r/   {Gzt?r   rp  r   r   Nrj   )r   rq  r>  rr  r   getr:   rs  rt  r   r   r   )
rR   rB   rC   r   r2  solver_max_iterr   ru  rv  rw  s
             rI   +test_logistic_regression_solvers_multiclassr  C  sc    DAq C3RHF !$FFCO 'lS+%77	  	" 
O$7$7$D
HN

#a)	K  (44[AF (!''!''"f,F0BjXJ/		
 H%00H%00&&0H4FTT#*D
3	s   6Dc                    d\  }}}t         j                  j                  |      }t        ||| z   || z   d|      }| r	d|dddf<   t	        |      \  }}}	t        j
                  |dkD        sJ t        j                  |      t        j                  |      z  dk  sJ | r|ddddf   }|j                  dd	||z  
      }
|
j                  ||      }
|j                  dd|
      | z  }||
j                  z  |z   }t        |      }|j                  j                  |      }t        j                  |      }t        |      D ]5  }t        j                   |j#                  d||ddf               d   ||<   7 d}t%        | |      }dddd}ddd}t'        t(              t'        dg      z
  D ci c]Q  }|t+        d"t         j,                  ||j/                  ||      |j/                  |d      d|j1                  ||      S }}|j3                         D ].  }t5        ||   j6                  j9                  d      dd|       0 t;        j<                  |d      D ]|  \  }}t5        ||   j6                  ||   j6                  |dk(  s|dk(  rdnd| d | !       | sCt5        ||   j>                  ||   j>                  |dk(  s|dk(  rdnd| d | !       ~ yc c}w )#zGTest and compare solver results for unpenalized multinomial multiclass.)rN   rm   rl   rZ   )rD   r   effective_ranktail_strengthru   r1   Nr0   r   rN   rl   )lowhighsize)rF   )npvals)r   r   g&.>)rR   ru   r   r{  r|  r   r   r+   )rP   r   r   r   r   r4   绽|=)r   r   r2   rm  r/   r~  gMb`?rp  r  rj   ) r7   r   r   r   r   r\  maxr^  uniformr[  r   r
   linkinversezerosrY  argwheremultinomialrq  r>  rr  r   r   r  r:   keysr   r   r>   rs  rt  r   )rR   r   rD   r   rF   r   rB   UsVtcoef	interceptraw_predictionlossprobarC   r   r   r2  r  
solver_tolr   
regressorsrv  rw  s                            rI   7test_logistic_regression_solvers_multiclass_unpenalizedr  k  s    (1$Iz9
))

 2
3C-!M1	A !R%1vHAq"66!d(66!9rvvay 3&&&a"fI;;11:	+A;BD<<	:.D;mKIZ)+N3DIIn-E
A9 J{{3??QeAqDk?BCDI!J C<NOF #FFCOt,J 'lS+%77	  	" 
ffvs+$((5	

 
 #a)		J 	 //# 
v$$((a(0!%	

 (44Z1E (x &&x &&"f,F0BjXJ/		
 8$//8$//&&0H4FTT#*D
3	!	s   6AK&weightrZ   g?r   r\   rJ  r;  balancedc           	         t        |       }|dk(  r| }t        ddddd||      \  }}t        dd|dd	      }t        dd
di|}t	        t
              5  |j                  ||       ddd       t        t              t        g d      z
  D ]b  }t        dd
|i|}	|dv r|	j                  dd|dz          |	j                  ||       t        |	j                  |j                  d| d       d y# 1 sw Y   xY w)z+Test class_weight for LogisticRegressionCV.r  rO  rl   r   )rD   r   
n_repeatedr&  n_redundantrF   ru   r1   Fr   )ro   rR   r;  r   rs   r   r*   categoryN)r*   r+   r-   r   gC]r2<r{  )r   r   ru   r   z	 vs lbfgsr  rj   )r6   r   rq  r   r&   r   r:   r>  rr  r   r   r   )
r  r;  r   rF   rB   rC   r2  	clf_lbfgsr   rA   s
             rI   (test_logistic_regressioncv_class_weightsr    s!    FIx'DAq !#F %>G>v>I 
"4	5 a g,%N!OO 

";&;F;_$NNE8JQ8N   	1IIyTfXY;O	


 s   C33C<problem)singlerr   c                    d}d}t        ||z  dddd|      \  }}t        j                  j                  |      }t        j                  |j
                  d         }|d|j                  d      rd	nd
dd}	|	j                         }
|j                  dd|      |d | t        j                  ||j                  t              d      }t        j                  ||j                  t              d      }| dk(  rt        }n| dk(  rt        }t        j                  t        j                  |d      t        j                  |d      t        j                  |d      g      }t!        t#               j%                  ||            }|	j'                  d|d       t        j                  ||j                  t              d      }t!        t#               j%                  ||            }|
j'                  d|d        dd|i|	} |dd|i|
}|dk(  r^t)        j*                         5  t)        j,                  dt.               |j1                  |||       |j1                  ||       d d d        n&|j1                  |||       |j1                  ||       | dk(  r&t3        |j4                  d   |j4                  d          t3        |j6                  |j6                  d       y # 1 sw Y   WxY w)Nr   rl   r   r2   r   )rD   r   r&  rF   r  ru   Fr.   順 r   r   ru   rR   r   r   r  r4   r  rr   r1   )groupsrN   )ro   rr   r   r*   ignorerc   r   r   rj   )r   r7   r   r   r?   r9   
startswithcopyrandintrepeatastypeintr   r   r   fullr  r   rX  updatewarningscatch_warningssimplefilterr   r:   r   r  r   )r  r   r   n_samples_per_cv_groupn_cv_groupsrB   rC   r   swkw_weightedkw_repeated
X_repeated
y_repeatedr   groups_weightedsplits_weightedgroups_repeatedsplits_repeatedclf_sw_weightedclf_sw_repeateds                       rI   'test_logistic_regression_sample_weightsr    s    !K(;6'DAq ))

 2
3C		B +%007GU	K ""$K"%++a9O+"PB1biin15J1biin15J(	D!...2.2.2
 /177/7RS#_=>))ORYYs^!L$$Z$H
 	#_=>66+6O66+6O $$& 	8!!(,>?1B7
J7	8 	8 	Aq3J
3$//2O4K4KA4NOO))?+@+@tL	8 	8s   'AK%%K.r   c                    t        dddd|      \  }}|dz   }|ddd	d
}t        d| dddd|}|j                  ||       t        dd| i|}|j                  |||       t        |j                  |j                  d       y )Nr   r   rl   r2   rz  r1   Fr  r   r  r   )r   r;  r   r  r   r  rj   r   r   r:   r   r   )r   r   rB   rC   rc   r  	clf_cw_12	clf_sw_12s           rI   -test_logistic_regression_solver_class_weightsr  +  s     'DAq EM +	K # aL4?I MM!Q"@&@K@IMM!QmM4IOOY__4@rK   c           
         t        dddd|       \  }}|dz   }t        ddddd	dd
d|       }|j                  ||       t        dddd
d|       }|j                  |||       t        |j                  |j                  d       t        ddddd	dd
dd|       }|j                  ||       t        dddd
dd|       }|j                  |||       t        |j                  |j                  d       y )Nr   r   rl   r2   rz  r1   r+   Fr   r{  -q=)r   rR   r;  r   r   r   ru   )r   rR   r   r   r   ru   r  r  r   T)r   rR   r;  r   r   r   r   ru   )r   rR   r   r   r   r   ru   r  )r   rB   rC   rc   clf_cwclf_sws         rI   2test_sample_and_class_weight_equivalence_liblinearr  L  s    'DAq EMq\'F JJq!'F JJq!]#FLL&,,U;q\'	F JJq!'F JJq!]#FLL&,,U;rK   c                 v    t        j                  |       }t        d||       }t        t	        ||            }|S )Nr  )rE   rC   )r7   r8   r$   rq  zip)rC   rE   r;  class_weight_dicts       rI    _compute_class_weight_dictionaryr    s5    iilG'
GqILS,78rK   c                     | S rf   rj   )xs    rI   <lambda>r    s    Q rK   c                 >   t        t        j                        }|dd d d f   } ||      }t        j                  dd  }t	        |      }t        t              t        ddg      z
  D ]  }t        |d|       }t        dddi|}t        dd|i|}	|j                  ||       |	j                  ||       t        |j                        dk(  sJ t        |j                  |	j                  d	
       t        j                  |j                   d         }
|j                  D ]  }|
||k(  xx   ||   z  cc<    t        di |j                  |||
      }t        |j                  |	j                  d	
        |ddd d f   }t        j                  dd }t	        |      }t        D ]p  }t        |d|       }t        dddi|}t        dd|i|}	|j                  ||       |	j                  ||       t#        |j                  |	j                  d       r y )N-   r+   r-     )r   r   ru   r;  r  rl   ro  r   r   r  rN   r   r%  r   rj   )r"   r   r   r   r  r>  rr  rq  r   r:   r6   r<   r   r   r7   r?   r9   r   )r   rL   X_irisrB   rC   r  r   r2  clf1clf2r  re  clf3s                rI   &test_logistic_regression_class_weightsr    s    499FrsAvAaABCA8;g,k3D%E!FF ;VdAST!DzDVD!K/@KFKAA4==!Q&&&

DJJT:WWQWWQZ  	/AqAvJ+A..J	/!+F+//1B/G

DJJT:;  	r#vqyABsA8; EVdAST!DzDVD!K/@KFKAA!$**djj!DErK   c           	         d\  }}}t        ||d||       \  }}t        d      j                  |      }t        d      }t        dd      }|j	                  ||       |j	                  ||       |j
                  j                  ||fk(  sJ |j
                  j                  ||fk(  sJ d	D ]  }t        || d
d      }	t        || d
dd      }
|	j	                  ||       |
j	                  ||       |	j
                  j                  ||fk(  sJ |
j
                  j                  ||fk(  sJ t        |j
                  |	j
                  d       t        |j
                  |
j
                  d       t        |j                  |	j                  d        dD ]j  }t        || d
ddgd      }|j	                  ||       t        |j
                  |j
                  d       t        |j                  |j                  d       l y )N)r   r   rl   r|   rz  F)	with_meanr  )r   )rR   r   )r.   r/   r,   r  r   ru   r   r   )r   ru   r   r   rR   g~jth?r   r   r   rM  r   )r   ru   r   r   ro   rs   )
r   r!   fit_transformr   r:   r   r9   r   r   r   )r   rD   r   rF   rB   rC   ref_iref_wr   clf_iclf_wclf_paths               rI   $test_logistic_regression_multinomialr    s    (2$Iz9'DAq 	'55a8A 5)EU>E	IIaO	IIaO;;J 7777;;J 7777. G"+	
 #+
 			!Q		!Q{{  Y
$;;;;{{  Y
$;;;; 	U[[t<U[[t<((%*:*:F-G6 8 J'+u"'
 	Q$?++U-=-=DIJrK   c                     t        dd|       \  }}t        dd|       }|j                  ||       t        j                  d      }t        |j                  |      t        j                  d             y )Nr   rD  Fr+   )rR   r   ru   )r   r   )r   r   r:   r7   r  r   r;   )r   rB   rC   rA   s       rI   %test_liblinear_decision_function_zeror    sg     0BDAq K>PC GGAqM 	As{{1~rxx{3rK   c                 p    t        dd|      \  }}t        dd      }|j                   | |      |       y )Nr|   r   rD  r+   F)r   rs   r   r   r:   rL   r   rB   rC   rA   s        rI   test_liblinear_logregcv_sparser  	  s;     1CDAq k
OCGGM!a rK   c                 t    t        dd|      \  }}t        dd|d      }|j                   | |      |       y )Nr|   r   rD  r/   r   F)r   r   ru   rs   r  r  s        rI   test_saga_sparser    sG     1CDAq '#	C GGM!a rK   c                  r    t        d      } | j                  t        t               | j                  dk(  sJ y )NFrQ   r   )r   r:   rB   rS   r   r   s    rI   "test_logreg_intercept_scaling_zeror  $  s-     5
1CGGArN>>S   rK   c           	         t         j                  j                  |       }d}t        |d|       \  }}|j	                  |df      }t        j
                  |df      }t        j                  |||fd	      }t        dd
dddd|       }|j                  ||       t        dd
dddd|       }|j                  ||       t        |j                  |j                  d       y )NrN   r   rD  rl   r  r2   r9   r1   r4   r   r+   Fr{  r  r   rP   r   rR   r   r   ru   r/   g333333?r  )r7   r   r   r   normalr?   r   r   r:   r   r   )	r   r   rD   rB   rC   X_noise
X_constantlr_liblinearlr_sagas	            rI   test_logreg_l1r  ,  s     ))

 2
3CI9KDAq jjy!nj-G	1~.J
7J/a8A%
'L Q 
'G KK1GMM<#5#5C@rK   c           	      J   t         j                  j                  |       }d}t        |d|       \  }}|j	                  d|df      }t        j
                  |df      }t        j                  |||fd	
      }d||d	k  <    ||      }t        d	ddddd|       }|j                  ||       t        d	ddddd|       }	|	j                  ||       t        |	j                  |j                         t        |j                  ddd f   t        j
                  d             t        |	j                  ddd f   t        j
                  d             t        d	ddddd|       }
|
j                  |j                         |       t        |	j                  |
j                         y )Nr  r   rD  rZ   rl   )r"   r  r2   r  r1   r4   r   r   r+   Fr  r{  )r   rP   r   rR   r   r   ru   r/   r  r   )r7   r   r   r   r  r  r   r   r:   r   r   toarray)r   rL   r   rD   rB   rC   r  r  r  r   lr_saga_denses              rI   test_logreg_l1_sparse_datar  Q  s   
 ))

 2
3CI9KDAq jjs)Qj8GA/J
7J/a8AAa!eHaA%
'L Q 
'G KK1gmm\-?-?@ l00BC8"((1+FgmmArsF3RXXa[A '
'M aiik1%gmm]-@-@ArK   c                    t        dd|       \  }}t        d| dd      }t        ddg|fd	d
d|}|j                  ||       t	        dd|d|}|j                  ||       t        |j                  |j                         y )NrN   r   rD  r/   r{  r  r  r   TF)ro   rp   refitrs   rP   r   rj   )r   rq  r   r:   r   r   r   )r   r   rB   rC   common_paramsr  rx   s          rI   !test_logistic_regression_cv_refitr    s     "3EDAq '	M ! 5+#	
 E 
IIaO		FcH	F	FBFF1aLekk2884rK   c                    t        dd| dd      \  }}t               }|j                  ||       t        ||j	                  |            }t        t                     }|j                  ||       t        ||j	                  |            }||kD  sJ t        ||j	                  |            }t        ||j                  |            }||kD  sJ y )Nr|   r   rl   )rD   r   ru   rF   r&  )r   r   r:   r   r=   r   _predict_proba_lr)r   rB   rC   ra  clf_multi_lossr`  clf_ovr_lossclf_wrong_losss           rI   %test_logreg_predict_proba_multinomialr    s    'DAq #$IMM!Qa!8!8!;<N!"4"67GKK1Aw44Q78L.((( a!8!8!;<Na!<!<Q!?@NN***rK   r   r   zsolver, message))r,   zAnewton-cg failed to converge.* Increase the number of iterations.)r+   z@Liblinear failed to converge, increase the number of iterations.)r.   ?The max_iter was reached which means the coef_ did not converge)r/   r  )r*   lbfgs failed to converge)r-   z6Newton solver did not converge after [0-9]* iterationsc                 x   t         j                  t         j                  j                         }}d||dk(  <   |dk(  r|dkD  rt	        j
                  d       t        |d| |      }t	        j                  t        |      5  |j                  ||       d d d        |j                  d   |k(  sJ y # 1 sw Y   xY w)	Nr   r2   r-   r1   z/solver newton-cholesky might converge very fastgV瞯<)r   r   ru   r   r   )r   r   r   r  r   skipr   r   r   r:   n_iter_)r   r   r   r   rB   y_binrx   s          rI   test_max_iterr    s    ( yy$++**,uAE%1*""x!|EF	'	
B 
(	8 
q% ::a=H$$$ s    B00B9c           	      8   t         j                  t         j                  }}| dk(  rt        |      }t	        j
                  |      j                  d   }|dk(  sJ |j                         }d||dk(  <   d}d}d}t        dd| d	
      }	|	j                  ||       |	j                  j                  dk(  sJ t        d| |d|d	|      }
|
j                  ||       |r|
j                  j                  d|||fk(  s J |
j                  j                  |||fk(  sJ | dv ry |	j                  ||       |	j                  j                  dk(  sJ |
j                  ||       |r |
j                  j                  d|||fk(  sJ y |
j                  j                  |||fk(  sJ y )Nr*   r   rl   r2   rm   r1   r   r   rP  )r   rP   r   ru   r   r  )r   r   ro   rp   rr   ru   rs   r   )r   r   r   r"   r7   r8   r9   r  r   r:   r  r   )r   rs   rB   rC   rF   r  r  	n_cv_foldr  rA   clf_cvs              rI   test_n_iterr    s    99dkkqA!H		!""1%I>> FFHEE%1*DIK V"
MCGGAu;;$$$!3F JJq%~~##9dK'HHHH~~##	;'EEEE  GGAqM;;$$$
JJq!~~##9dK'HHHH~~##	;'EEEErK   r*  )TFc                    t         j                  t         j                  }}t        d||| |      }t	        t
              5  |j                  ||       |j                  }d|_        |j                  ||       d d d        t        j                  t        j                  |j                  z
              }d| d|d|}	|rd|kD  sJ |	       y |dkD  sJ |	       y # 1 sw Y   exY w)	Nro  )r   r*  r   ru   rR   r  r1   z Warm starting issue with solver zwith fit_intercept=z and warm_start=       @)r   r   r   r   r&   r   r:   r   r   r7   r>   abs)
r   r   r*  rR   rB   rC   rA   coef_1cum_diffr   s
             rI   test_warm_startr"  #  s     99dkkqA
'#C 
"4	5 11 vvbffVcii/01H
*6(
0ZM	3  X~"s"~#~"s"~ s   8CC&rP   c                    t         j                  t         j                  }}t        |d|||       }t	        t
              5  |j                  ||       ddd       t        |dd|||       }t	        t
              5  |j                  ||       |j                  ||       ddd       t        |j                  |j                         |r!t        |j                  |j                         yy# 1 sw Y   xY w# 1 sw Y   YxY w)zITest that 2 steps at once are the same as 2 single steps with warm start.r2   )r   r   rR   rP   ru   r  Nr1   T)r   r   r*  rR   rP   ru   )
r   r   r   r   r&   r   r:   r   r   r   )r   r   rR   rP   rB   rC   r  r  s           rI   test_warm_start_newton_solverr$  D  s    
 99dkkqA#
'D 
"4	5 A #
'D 
"4	5 AA DJJ

+9 !  s   C.=%C:.C7:Dc                 j   t               }|j                  |j                  }}t        j                  |gdz        }t        j                  |gdz        }||dk     }||dk     dz  dz
  }t        dd|       \  }}	 ||      }||f||	ffD ]  \  }}|j                  d   }
t        j                  ddd      D ]w  }t        d	|
|z  z  |d
dd| d      }t        d	|
|z  z  |ddd| d      }|j                  ||       |j                  ||       t        |j                  |j                  d       y  y )Nrl   r1   r2   r  r   rD  r   r0   r   r/   rN  Fr   )rP   r   r   r   rR   ru   r   r+   )r   r   r   r7   r   r   r9   r   r   r:   r   r   )r   rL   r   r   rB   rC   X_binr  X_sparsey_sparserD   alphar/   r+   s                 rI   test_saga_vs_liblinearr*  f  s]    ;D99dkkqA
sQwA
sQwAa1fIEa1fIMAE,2DHh X&H(H!56 F1GGAJ	[[Q* 	FE%U*+!#/D +U*+!"#/I HHQNMM!Q%djj)//1E1	FFrK   )r+   r,   r-   r/   c                    | dk(  rt         j                  nt         j                  }t        j                  t              j                  t         j                        }t        j                  t              j                  t         j                        }t        j                  t              j                  t         j                        }t        j                  t              j                  t         j                        } |t        t         j                        } |t        t         j                        }	d}
t        | d|
|      }t        |      }|j                  ||       |j                  j                  |k(  sJ t        |      }|j                  ||       |j                  j                  |k(  sJ t        |      }|j                  ||       |j                  j                  t         j                  k(  sJ t        |      }|j                  |	|       |j                  j                  t         j                  k(  sJ d|
z  }t        j                  dk(  rt        rd}t        |j                  |j                  j                  t         j                        |	       | d
k(  r|rd}t        |j                  |j                  |	       t        |j                  |j                  |	       y )Nr+   r   gMb@?rP  )r   ru   r   rR   gQ@ntr   r  r/   rZ   )r7   r   float32r   rB   r  rS   r   r   r:   r   r   osnamer'   r   )r   rR   rL   
out32_typeX_32y_32X_64y_64X_sparse_32X_sparse_64r  lr_templlr_32lr_32_sparselr_64lr_64_sparser   s                    rI   test_dtype_matchr<    s     &4"**J88A;bjj)D88B<rzz*D88A;bjj)D88B<rzz*D4K4KJ!#	H (OE	IIdD;;
*** ?L[$'##z111 (OE	IIdD;;

*** ?L[$'##rzz111 j D	ww$9 EKK!3!3BJJ!?dKM EKK!3!3$?EKK!3!3$?rK   c                 "   t         j                  j                  |       }t        j                  |j	                  dd      ddgz   |j	                  dd      f      }t        j
                  dgdz  dgdz  z         }t        ddd|       }t        dd	d|       }t        ||j                  ||      j                  |            }t        d
      D ]  }|j                  ||        t        ||j                  |            }t        ||d       y )NrN   r2   r1   r0   r.   Fr   )r   r*  r   ru   Tr   r   r   )r7   r   r   r   r   r   r   r   r:   r=   rY  r   )	r   r   rB   rC   lr_no_wslr_wslr_no_ws_lossr   
lr_ws_losss	            rI   test_warm_start_converge_LRrB    s     ))

 2
3C
		#q)QF2CIIc14EFGA
!sbTCZ'(A!D?QH 4>PE QQ 2 @ @ CDM1X 		!Q!U0034JM:D9rK   c           	      r   t        |       \  }}d}t               }dD ]@  }t        ||d| dd      }|j                  ||       |j	                  |j
                         B |\  }}}	t        j                  ||dd	      rJ t        j                  ||	dd	      rJ t        j                  |	|dd	      rJ y )
Nrt   r  )r\   r1   r   r/   r   rN  )rP   r   r   ru   r   r   r   r   )r   r  r   r:   appendr   r7   allclose)
r   rB   rC   rP   coeffsr   rx   elastic_net_coeffs	l1_coeffs	l2_coeffss
             rI   test_elastic_net_coeffsrJ    s     ,>?DAqAVF 
 +
 	q!bhh
  06,	9 {{-yqtLLL{{-yqtLLL{{9iadCCCCrK   z1ignore:.*'penalty' was deprecated.*:FutureWarning)r   rZ   r1   r|   rN   r       .Azpenalty, l1_ratio)l1r1   )r(  r   c                     t        |       \  }}t        d||d| d      }t        ||d| d      }|j                  ||       |j                  ||       t        |j                  |j                         y )Nrt   r   r/   r   )r   rP   r   r   ru   r   )r   rP   r   ru   r   )r   r   r:   r   r   )r   rP   r   r   rB   rC   lr_enetlr_expecteds           rI   "test_elastic_net_l1_l2_equivalencerP    sz     ,>?DAq 
'G %1V:LRVK KK1OOAqgmm[->->?rK   )r   r1   rN   rK  c                    t        dd      \  }}t        ||d      \  }}}}dt        j                  ddd      i}t	        d| ddd	
      }t        ||d      }	t	        d| ddd	
      }
t	        d| ddd	
      }|	|
|fD ]  }|j                  ||        |	j                  ||      |
j                  ||      k\  sJ |	j                  ||      |j                  ||      k\  sJ y )NrN  r   rt   r   r1   r   r\   r/   r   )r   rP   r   ru   r   T)r  )r   r   r7   linspacer   r   r:   rd   )rP   rB   rC   X_trainX_testy_trainy_test
param_gridenet_clfgsl1_clfl2_clfrA   s                rI   test_elastic_net_vs_l1_l2r\  (  s   
 s3DAq'711'M$GVWfbkk!Q23J!
H 
h
$	7BaQDF  aQDF FF# "!" 88FF#v||FF'CCCC88FF#v||FF'CCCCrK   r   r2   rm   )rZ   r\   ?c           	      
    t        ddddddd      \  t              t         ddd	      }t        ddd d
      }|j                         |j                          fd} ||       ||      k  sJ y )Nr   r2   r   r|   r   rD   rF   r   r&  r  r  ru   r/   F)r   rP   r   ru   rR   )r   r   ru   rP   rR   c                    | j                   j                         }t        | j                              z  }|t	        j
                  t	        j                  |            z  z  }|dz
  dz  t	        j                  ||      z  z  }|S )Nr   r\   )r   r   r   r=   r7   r>   r  r	  )rx   r  objrP   rB   r   rC   s      rI   enet_objectivezEtest_LogisticRegression_elastic_net_objective.<locals>.enet_objectivej  sw    xx~~(1b..q122x"&&...h#%tT(:::
rK   )r   r"   r   r:   )rP   r   rN  lr_l2rb  rB   rC   s   ``   @@rI   -test_LogisticRegression_elastic_net_objectiverd  J  s     DAq 	aA 
G 6QeE KK1	IIaO '"^E%::::rK   rF   )r2   rl   c           	         t        d| dd      \  }}t        d      }t        j                  ddd      }t        j                  ddd      }t        ||d	|dd
d      }|j                  ||       ||d}t        d	dd
      }t        |||      }	|	j                  ||       |	j                  d   |j                  k(  sJ |	j                  d   |j                  k(  sJ y )NrN   rl   r   )rD   rF   r&  ru   r   r1   r   rm   r/   r   F)rp   ro   r   rr   ru   r   rs   r	  )r   ru   r   rr   r   rP   )r   r   r7   rR  r   r   r:   r   r   best_params_r  rv   )
rF   rB   rC   rr   rp   ro   lrcvrW  rx   rY  s
             rI   2test_LogisticRegressionCV_GridSearchCV_elastic_netri  u  s    
 	DAq 
	BAq!$I	RA	B#D 	HHQNy1J	
B
 
b*	,BFF1aL??:&$..888??3477***rK   rn   c           	      
   d}t        d|||d      \  }}t        j                  ddd      }t        || ddd	d
d      }|j	                  ||       |dk(  rdn|}|j
                  j                  |fk(  sJ |j                  j                  |fk(  sJ |j                  j                  ||fk(  sJ t        |j
                  |j
                  d          t        |       dkD  r$t        |j                  |j                  d          y y )Nr   r   r   rD   rF   r&  r   ru   r   rm   rl   r/   r   FT)ro   rp   r   ru   r   r  rs   r2   r1   )r   r7   r   r   r:   rv   r9   r  r   r   r6   )rp   rF   r   rB   rC   ro   rh  s          rI   "test_LogisticRegressionCV_no_refitrl    s   
 JDAq 
RA	B"D 	HHQN!^I77==YL(((>>I<///::	:6666DGGTWWQZ(
9~q(9: rK   c           	      ^   d}t        d| | |d      \  }}t        j                  ddd      }t        j                  ddd	      }d	}t	        ||d
|ddd      }|j                  ||       t        j                  t        |j                  j                                     }| d	k(  rdn| } |j                  | ||j                  |j                  |dz   fk(  sJ t        j                  t        |j                  j                                     }	|	j                  | ||j                  |j                  fk(  sJ |j                  j                  d||j                  |j                  fk(  sJ t        |j                  |j                  d          t        |j                   |j                   d          y )Nr   r   r   rk  r   rm   rl   r1   r2   r/   r   T)ro   rp   r   rr   ru   r   rs   )r   r7   r   rR  r   r:   r  r  r  r  r9   r  r  r  r   rv   r  )
rF   r   rB   rC   ro   rp   rg  rh  r  r^   s
             rI   5test_LogisticRegressionCV_elasticnet_attribute_shapesrn    s   
 JDAq 
RA	BAq!$IG"D 	HHQN**T$"3"3":":"<=>K!^I
Q!    ZZT\\00234F<<IwHHHH<<!Wbggy~~!FFFF DGGTWWQZ(DNNDNN1$56rK   c            	      T   t         j                  t         j                  }} t        ddd      j	                  | |      }t        d      }t        |j                  | |            }ddgddgdd	gfD ]  \  }}||   d   }t        |j                  |   dd
      j	                  | |   ||         }t        j                  |      D ]`  }	t        |j                  |	   ||ddf   |j                  |	   d       t        |j                  |	   ||df   |j                  |	   d       b  y)zETest that LogisticRegressionCV produces the correct result on a fold.r-   r   T)r   r   rs   r   r   r1   rl   r%  r   Nr0   r   r   )r   r   r   r   r:   r   r  rX  r   r  r7   r8   r   r  r   r   )
rB   rC   rh  rr   foldsidx_foldidx_Ctrain_fold_0rx   cls
             rI   "test_LogisticRegressionCV_on_foldsru    s<   99dkkqA d$	c!Qi 	
 
	B!Q E FQFQF3 %Xq)hhuo$
 #aoq
/	 	 ))A, 	B!!"%hss&:; !!"%hr&9:b!	rK   c                      d} t        j                  t        |       5  t        ddd      j	                  t
        t               d d d        y # 1 sw Y   y xY w)NzQl1_ratio parameter is only used when penalty is 'elasticnet'\. Got \(penalty=l1\)r   rL  r/   r\   )r   r   r   )r   r   UserWarningr   r:   rB   rS   )r   s    rI   test_l1_ratio_non_elasticnetrx    sN    	.  
k	- Q4EII!RPQ Q Qs   'AAc           
      *   d}t        |ddddd|       \  }}t        |      }t        d|| dd dd	|z  |z  d
      }t        || ddd|d      }|j	                  ||       |j	                  ||       t        |j                  |j                  d       y )NrN  r2   r   r   r_  r   Fr  r   r   )r   r   ru   rR   r   r   r)  r  r   r   r/   )r   ru   rR   r   r   rP   r   gffffff?r  )r   r"   r   r   r:   r   r   )r   rP   r   rD   rB   rC   sgdlogs           rI   test_elastic_net_versus_sgdr|  !  s     I'DAq 	aA
'Ag	!	C '
C GGAqMGGAqMCIIsyyt4rK   c            	         t        ddddddd      \  } }g d}t        | |t        j                  |      d|d	d
      \  }}}t	        j
                  t              5  t        |d   |d   d       d d d        t	        j
                  t              5  t        |d   |d   d       d d d        t	        j
                  t              5  t        |d   |d   d       d d d        y # 1 sw Y   vxY w# 1 sw Y   LxY w# 1 sw Y   y xY w)Nr   rl   r2   r   r1   rD   rF   r&  r  n_clusters_per_classru   r   )r   r1   r{  rL  r/   )rE   r   ro   r   ru   r  )r   r   r7   r8   r   r   r   r   )rB   rC   ro   r   r   s        rI   /test_logistic_regression_path_coefs_multinomialr  K  s    DAq 
B+				!KE1a 
~	& A!%(E!Ha@A	~	& A!%(E!Ha@A	~	& A!%(E!Ha@A A	A AA AA As$   C&C2C>&C/2C;>Dc            	      >   t        ddddddd      \  } }t        j                  |      }t        j                  d      }t	        | |||d       d	t        j                  t        |j                               d
}t        j                  t        |      5  t	        | |||dd       d d d        t        ddddddd      \  } }t        j                  |      }t        j                  d      }t	        | |||d       t        j                  d      }t	        | |||d       d	t        j                  t        |j                               d}t        j                  t        |      5  t	        | |||dd       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rl   r2   r   r1   r~  )rl   rl   )rE   r  ru   z Initialization coef is of shape z.+expected.+\(3, 2\)r   F)rE   r  ru   rR   )r1   rl   z.+expected.+\(2,\) or \(1, 2\))r   r7   r8   r?   r   reescapestrr9   r   r   r   )rB   rC   rE   r  r   s        rI   (test_logistic_regression_path_init_coefsr  k  s   DAq iilG 776?D		 ,BIIc$**o,F+G	   
z	- 
!q'1E	


 DAq iilG
 771:D		 776?D		 ,BIIc$**o,F+G)	*  
z	- 
!q'1E	

 
S
 
R
 
s   F,FFFc                    t        dd|       \  }}d}t        d |d      }t        j                  t        |      5  |j                  ||       d d d        t        d |d| 	      }t        d
t        j                  |d|       }|j                  ||      j                  |      }|j                  ||      j                  |      }	t        ||	       y # 1 sw Y   xY w)Nr   r   )rD   r  ru   z&Setting penalty=None will ignore the Crm   )r   r   rP   r   r   )r   r   r   ru   r(  )r   rP   r   r   ru   )
r   r   r   r   rw  r:   r7   r   r;   r   )
r   r   rB   rC   r   rx   lr_nonelr_l2_C_inf	pred_nonepred_l2_C_infs
             rI   test_penalty_noner    s     A4FDAq 3C	D1	=B	k	- 
q! !Vc@RG %
&&'K Aq!))!,IOOAq)11!4My-0 s   CCr2  r   r   )r   r   r   r   r  c                    t        j                  ddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddggt        j                  d            }t        j                  g dt        j                  d            }t        j                  ||g      }t        j                  |d|z
  g      }t        j
                  t        |      dz  	      }d
|t        |      d  t        ||||       \  }}}t        d|       } |j                  di | t        |      j                  ||      }t        |      j                  |||      }	dD ]2  }
 t        ||
      |      } t        |	|
      |      }t        ||       4 y )Nr1   rl   r2   rm   r  r   )r1   r1   r1   r1   r2   r2   r2   r2   r1   r1   r1   r1   r2   r2   r2   r2   r  r  r   rt   r+   )r   ru   r  )r;   r=   r   rj   )r7   r   r   vstackhstackr?   r6   r%   r   r   r   r:   r   r   )r   r2  rB   rC   X2y2rc   base_clfclf_no_weightclf_with_weightmethodX_clf_no_weightX_clf_with_weights                rI   /test_logisticregression_liblinear_sample_weightr    s    	FFFFFFFFFFFFFFFF!	
$ hhw'	A* 	8	A 
Aq6	B	Aq1u:	BGG#a&1*-MM#a&(#
B,>BM "CUVHH!&!(O''1-MHo))"b)NOC <8'-8;<GOV<Q?):;<rK   c            
         t        dd      \  } }t        d      }ddg}g d}t        |||d	dd
dd      }|j                  | |       |j                  d   j                  d      }t        |      D ]e  \  }}t        |      D ]R  \  }	}
t        ||
d	dd
d      }t        || ||      j                         }|||	f   t        j                  |      k(  rRJ  g y )Nr   r   r   r   rQ  rZ   r]  )rZ   r1   r|   r/      r   T)ro   rp   rr   r   ru   r   r   rs   r1   r4   )rP   r   r   ru   r   r   rf  )r   r   r   r:   r  r   r   r   r   r   approx)rB   rC   rr   rp   ro   rh  avg_scores_lrcvr   rP   jr   rx   avg_score_lrs                rI   'test_scores_attribute_layout_elasticnetr  	  s    A>DAq	!	$Bc
I	B"	D 	HHQNll1o***2O" H1$Y/ 	HKAx#!B +2q!;@@BL"1a4(FMM,,GGGG	HHrK   )r*   r,   r-   c                    t         j                  t         j                     }t        t	        t         j
                        |||       }t        t         j
                        }|j                  ||       t        |j                  j                  d      dd       |r7|j                  j                  d      t        j                  dd      k(  sJ yy)	a|  Test that the multinomial classification is identifiable.

    A multinomial with c classes can be modeled with
    probability_k = exp(X@coef_k) / sum(exp(X@coef_l), l=1..c) for k=1..c.
    This is not identifiable, unless one chooses a further constraint.
    According to [1], the maximum of the L2 penalized likelihood automatically
    satisfies the symmetric constraint:
    sum(coef_k, k=1..c) = 0

    Further details can be found in [2].

    Reference
    ---------
    .. [1] :doi:`Zhu, Ji and Trevor J. Hastie. "Classification of gene microarrays by
           penalized logistic regression". Biostatistics 5 3 (2004): 427-43.
           <10.1093/biostatistics/kxg046>`

    .. [2] :arxiv:`Noah Simon and Jerome Friedman and Trevor Hastie. (2013)
           "A Blockwise Descent Algorithm for Group-penalized Multiresponse and
           Multinomial Regression". <1311.6529>`
    )rP   r   rR   ru   r   r4   r  r  gdy=)r  N)r   r   r   r   r6   r   r"   r:   r   r   r>   r   r   r  )r   r   rR   r   rA   X_scaleds         rI   (test_multinomial_identifiability_on_irisr  8	  s    2 t{{+F

dii.#'	C TYYHGGHf CIIMMqM)159~~!!q!)V]]1%-HHHH rK   r   g      $@c                     t        d      \  }}t        |      }t        j                  |      }d|d |dz   |j	                         }t        | |d      }|j                  |||       t        ||       y )NT
return_X_yr2   r   )ru   r;  r   r  )r   r6   r7   r?   r  r   r:   r   )r   r;  rB   rC   r   WexpectedrA   s           rI   test_sample_weight_not_modifiedr  c	  st    %DAqQJ

AA
avvxH
'!C
 GGAqG"Ha rK   c           	          |t        j                  dd|            }dD ](  }t        ||t        ||      j	                  d             * t
        j                  j                  |      }|j                  d|j                  d         }| d	v rCd
}t        j                  t        |      5  t        |       j                  ||       d d d        y t        |       j                  ||       y # 1 sw Y   y xY w)Nr   r|   rt   )indicesindptrint64r2   r   r  )r+   r.   r/   z0Only sparse matrices with 32-bit integer indicesr   r   )r   randsetattrr   r  r7   r   r   r  r9   r   r   r   r   r:   )r   r   rL   rB   attrr   rC   r   s           rI   test_large_sparse_matrixr  u	  s     	fkk"b7IJKA% ;4D)009:;
))

 2
3CAAGGAJ'A--@]]:S1 	8f-11!Q7	8 	8 	&)--a3	8 	8s   ,C//C8c                     t        j                  ddg      j                  dd      } t        j                  ddg      }d}t        j                  t
        |      5  t        d      j                  | |       d d d        y # 1 sw Y   y xY w)	Nr   g}Ô%ITr0   r1   zUsing the 'liblinear' solver while X contains a maximum value > 1e30 results in a frozen fit. Please choose another solver or rescale the input X.r   r+   r   )r7   r   r[  r   r   r   r   r:   )rB   rC   r   s      rI    test_liblinear_with_large_valuesr  	  sy    
 	!U$$R+A
!QA	) 
 
z	- 9+.221a89 9 9s   BBc                      t        j                  g dg      j                  } t        j                  g d      }| j                  d   dk(  sJ t	        dd      j                  | |       y )N)r\   g?g?g      ?r[   gHzG?r   rW  )r1   r1   r   r   r1   r1   r   r1   r1   r,   T)r   rR   )r7   r   r   r9   r   r:   )rB   rC   s     rI   test_single_feature_newton_cgr  	  sV     	>?@BBA
)*A771:??k>BB1aHrK   c           	         t         j                  j                         }t         j                  j                         }||dk7     }||dk7     }t	               j                  |      }t        ||d      dz  }t        d|dddd	| 
      }t        j                         5  t        j                  dt               |j                  ||       d d d        y # 1 sw Y   y xY w)Nr2   r{  )r  gnt@r1   r+   r   rN   r   )r   rP   r   r   r   r   ru   error)r   r   r  r   r!   r  r#   r   r  r  r  r   r:   )r   rB   rC   X_preprP   rA   s         rI   test_liblinear_not_stuckr  	  s    		AA	!q&	A	!q&	A++A.FAE"_4A

!'C 
	 	 	" g'9:  s   -CCenable_metadata_routingc                    t         j                  j                  |       }t        d|      \  }}t        d|      \  }}t        j                  t        |            }d|dt        |      dz   d|i}t        d      }t        |dd	      }	 |	j                  ||fi | t        d      }
|
j                  d
       t        |
dd	      } |j                  ||fi | t        j                  |	j                  d   |j                  d         rJ  |	j                  ||fi |} |j                  ||fi |}t        j                  ||      rJ y)zTest that `sample_weight` is correctly passed to the scorer in
    `LogisticRegressionCV.fit` and `LogisticRegressionCV.score` by
    checking the difference in scores with the case when `sample_weight`
    is not requested.
    r  r   r2   Nrc   r  gTqs*>T)rq   r   rs   r  r1   )r7   r   r   r   r?   r6   r   r   r:   set_score_requestrE  r  rd   )r   r   rB   rC   X_ty_trc   kwargsscorer1lr_cv1scorer2lr_cv2score_1score_2s                 rI   8test_lr_cv_scores_differ_when_sample_weight_is_requestedr  	  sL    ))

 2
3CC@DAq"TDHCGGCFOM#$M-CFaK }-F$G!"F
 FJJq!v$GD1!"F
 FJJq!v{{6>>!,fnnQ.?@@@fll3.v.Gfll3.v.G{{7G,,,,rK   c                     t         j                  j                  d      } t        d|       \  }}t        d|       \  }}t        j                  t        |            }d|dt        |      dz   d|i}t        d      5  t        d      }t        |d	      } |j                  ||fi |  |j                  ||fi |}	ddd       t        d
      5  t        d      }
|
j                  d
       t        |
d	      } |j                  ||fi |  |j                  ||fi |}ddd       t        j                  d   j                  d          t        	       y# 1 sw Y   xY w# 1 sw Y   HxY w)zTest that `sample_weight` is passed correctly to the scorer in
    `LogisticRegressionCV.fit` and `LogisticRegressionCV.score` even
    when `enable_metadata_routing=False`
    r|   r   r2   Nrc   Fr  r  )rq   rs   Tr  r1   )r7   r   r   r   r?   r6   r	   r   r   r:   rd   r  r   r  )r   rB   rC   r  r  rc   r  r  r  r  r  r  r  s                rI   3test_lr_cv_scores_without_enabling_metadata_routingr  	  sl   
 ))


#C#>DAq"RcBHCGGCFOM#$M-CFaK }-F		6 3Z(%"'
 	

1a"6"&,,sC2623 
	5 3Z(!!!5%"'
 	

1a"6"&,,sC2623 FNN1%v~~a'89GW%)3 33 3s   ?AE"AE."E+.E7c                    t        d      \  }}|dk(  }t        t              5  t        | d      j	                  ||      }d d d        | dvrj
                  dk(  sJ | dk7  rt        j                  t        j                  |j                               t        |j                  |      t        j                  |j                  d   |j                  	             t        |j                  |      t        j                  |j                  d   dfd
	             j                  ||      dk  sJ y # 1 sw Y   xY w)NTr  r2   r  r   r}  )r/   r.   r*   )r9   
fill_valuer\   rW  )r   r&   r   r   r:   r  r   r   r7   
zeros_liker   r  r9   r   r=   rd   )r   rB   rC   rA   s       rI   test_zero_max_iterr  
  s    %DAq	QA	"4	5 F ;??1EF_${{a		2==#;<!!!$GG!''!*@	
 	a GG1771:q/c:	
 99Q?S   #F Fs   D66D?c                     t        dd      \  } }t        d      }d}t        d      5  dd	i}t        j                  t
        |
      5   |j                  | |fi | ddd       t        j                  t
        |
      5   |j                  | |fi | ddd       ddd       y# 1 sw Y   JxY w# 1 sw Y   xY w# 1 sw Y   yxY w)zTest that the right error message is raised when metadata params
    are passed while not supported when `enable_metadata_routing=False`.r|   r   r   FrE  z1is only supported if enable_metadata_routing=Truer  extra_paramr   r   N)r   r   r	   r   r   r   r:   rd   )rB   rC   r  r   r2  s        rI   5test_passing_params_without_enabling_metadata_routingr  "
  s     !<DAq u=E
=C		6 (%]]:S1 	&EIIa%f%	& ]]:S1 	(EKK1''	(( (	& 	&	( 	(( (s;    CB) #CB5C)B2	.C5B>	:CC
c                    t        dd|       \  }}d}t        d|      }t        j                         5  t        j                  d       |j                  ||       |j                  d   }d d d        d	k\  sJ t        d
|      }t        t              5  |j                  ||       |j                  d   }d d d        |k(  sJ t        d
||d	z
        }t        t              5  t        j                  t        d      5  |j                  ||       |j                  d   }	d d d        d d d        	|j                  d	z
  k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   >xY w# 1 sw Y   BxY w)Nr|   r   rD  gꌠ9Y>)Fr*   )r   rP   r  r   r1   r-   r  )r   rP   r   r  r   )r   r   r  r  r  r:   r  r&   r   r   r   r   r   )
r   rB   rC   rP   lr_lbfgsn_iter_lbfgslr_nc	n_iter_nclr_nc_limitedn_iter_nc_limiteds
             rI   &test_newton_cholesky_fallback_to_lbfgsr  3
  s{    2DDAq 	A "A6H		 	 	" +g&Q''*+
 1 &71=E	-	0 %		!QMM!$	% $$$ ' Aq0@M 
-	0 9\\,4NO 	9a# - 5 5a 8	99
  6 6 ::::9+ +% %	9 	99 9s;   7E"E*E1"E%(E1EE"%E.	*E11E:	Estimatorc                     d}t        j                  t        |      5   | d      j                  t        j
                  t        j                         ddd       y# 1 sw Y   yxY w)z<Check that liblinear raises an error on multiclass problems.zAThe 'liblinear' solver does not support multiclass classificationr   r+   r   N)r   r   r   r:   r   r   r   )r  r   s     rI    test_liblinear_multiclass_raisesr  ^
  sN     NC	z	- B%))$))T[[AB B Bs   6AA&z7ignore:.*default.*use_legacy_attributes.*:FutureWarningestc                     t        ddd      \  }} | d      }d}t        j                  t        |      5  |j	                  ||       d	d	d	       y	# 1 sw Y   y	xY w)
z?Check that penalty in LogisticRegression and *CV is deprecated.r2   r   r%  rF   rD   r&  r(  )r   z'penalty' was deprecatedr   N)r   r   r   FutureWarningr:   )r  rB   rC   rx   r   s        rI   test_penalty_deprecatedr  h
  sU     bJDAq	T	B
$C	m3	/ 
q!  s   AAc                      t        ddd      \  } }t               }d}t        j                  t        |      5  |j                  | |       d d d        y # 1 sw Y   y xY w)Nrl   r  r%  r  z@The default value of use_legacy_attributes will change from Truer   )r   r   r   r   r  r:   rB   rC   rx   r   s       rI   :test_logisticregressioncv_warns_with_use_legacy_attributesr  t
  sQ    bJDAq		B
LC	m3	/ 
q!  s   AAz3ignore:l1_ratios parameter is only us.*:UserWarningc                     t        ddd      \  } }t        d      }d}t        j                  t        |      5  |j                  | |       ddd       t               }d	}t        j                  t        |      5  |j                  | |       ddd       t        d
      }d}t        j                  t        |      5  |j                  | |       ddd       y# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   yxY w)z=Check that l1_ratio=None in LogisticRegression is deprecated.r2   r   r%  r  N)r   z'l1_ratio=None' was deprecatedr   z+The default value for l1_ratios will change)rp   z'l1_ratios=None' was deprecated)r   r   r   r   r  r:   r   r  s       rI   test_l1_ratio_None_deprecatedr  }
  s     bJDAq	T	*B
*C	m3	/ 
q! 
	B
7C	m3	/ 
q! 
	-B
+C	m3	/ 
q!  
 
 s#   C=C)C5C&)C25C>c                      t        ddd      \  } }t        d      }d}t        j                  t        |      5  |j                  | |       d d d        y # 1 sw Y   y xY w)	Nrl   r  r%  r  r1   )r)  z'n_jobs' has no effectr   )r   r   r   r   r  r:   r  s       rI   )test_logisticregression_warns_with_n_jobsr  
  sS    bJDAq	1	%B
"C	m3	/ 
q!  s   AA zignore:'penalty' was deprecated)rL  r   )r(  r   c                     t        d      \  }}t        d| |      }d|  d| }t        j                  t        |      5  |j                  ||       ddd       y# 1 sw Y   yxY w)	z=Check that incompatible penalty and l1_ratio raise a warning.r   )rD   r/   )r   r   r   zInconsistent values: penalty=z with l1_ratio=r   N)r   r   r   r   rw  r:   )r   r   rB   rC   rx   r   s         rI   $test_lr_penalty_l1ratio_incompatibler  
  sb     ,DAq	67X	NB)'/(
LC	k	- 
q!  s   AA&)rs  r.  r  r  numpyr7   r   numpy.testingr   r   r   scipyr   scipy.linalgr   r   sklearnr	   sklearn._lossr
   sklearn.baser   sklearn.datasetsr   r   r   sklearn.exceptionsr   sklearn.linear_modelr   r   r   sklearn.linear_model._logisticr   r   sklearn.metricsr   r   r   r   sklearn.model_selectionr   r   r   r   r   r   sklearn.multiclassr   sklearn.preprocessingr    r!   r"   sklearn.svmr#   sklearn.utilsr$   r%   sklearn.utils._testingr&   sklearn.utils.fixesr'   r(   r)   markfilterwarnings
pytestmarkrr  rB   rS   r}   r   rJ   parametrizerU   rz   r~   r6   r   r   r   r   r   r   r   r   r   r   r   thread_unsafer  r  r6  rB  rH  rk  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-  r  r  r=  r>  r"  r   r$  r*  r<  rB  rJ  rP  r\  r   rd  ri  rR  rl  rn  ru  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj   rK   rI   <module>r      sQ    	 	    
  + " -  Q Q 1 X X P O  3 E E   7 2 I I[[''<
 [[''<
 P!Wq!fq!f{8$ .9
U :
U&"R .9F :F
 	S^GcJS^K@$))n	

 	$))n	

 	S^4EF.TYYTU&*'&*2 JKG->#?@B A LBL LM 24HIJ+ K N+^ 34	5M*%(<k'JK@	 5
@ .92 :20<(;=
@?0 8 8D 04-@(@ A(@V "	bT	x-. 
+&'	"	Hk*+(
(
V0If .9 :" 04-@D& AD&N
4 5$-8$ 9$N 5$-8B 9BJ $4###6N#OP(J)?@,
 A Q,
` LM$45S@M 6 N
@MF FAA<8<v ;-.*HI$E J$EN<J~4& .9! :! .9! :!!"AJ .95B :5Bp aV,5 -5>+4 YRYYq!_5"%# 6$%( 7+04-@4F A ,4Fn 6#g,k]9K*K#LM}5-8# 9 6 N#< $5{#CD-8q"&&k*: + 9 E:> V,.9)F : -)FX C 5$-8.9A@ : 9
A@H:*D8 OPAB,y).DE@ F C Q@. 23D 4DB kbkk"a34_5%; 6 5%;R f-%+ .%+P t[R[[Aq-A&BCf-; . D;D f-,7 .,7^!J OPQ QQ kbkk"a34_5%5 6 5%5PA@F
T OP6#g,k]9K*K#LM1 N Q1> dEUEeF,< ,<^'HT #LM5$-8&I 9 N&IR cds*CZ)PQ! R!" 7+.94 : ,4&9"I2 -#- .#-L &F 7+! ,!2("';V LM'9;O&PQB R NB UV!35I JK L W QRUV W S* =>,{K.HI J ?rK   