
    /Цiq                       S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
  S SKJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S SKJrJrJr  S S	KJr  S S
KJrJrJr  S SK J!r!J"r"  S SK#J$r$J%r%J&r&J'r'  S SK(J)r)J*r*J+r+J,r,J-r-J.r.  S SK/J0r0  S SK1J2r2J3r3J4r4  S SK5J6r6  S SK7J8r8J9r9  S SK:J;r;  S SK<J=r=J>r>J?r?  \R                  R                  S5      rB\R                  R                  S5      rBSrCSS /S S/SS//rD/ SQrE/ SQrF\" 5       rGS rH\R                  R                  S\?5      S 5       rJS rK\R                  R                  S\?5      S 5       rL\R                  R                  S \" \M" \GR                  5      S!S"S#9\" \M" \GR                  5      S$S%9\" \M" \GR                  5      S&S'S(9\" \M" \GR                  5      S)S'S(9\" \M" \GR                  5      S*S%9\0" \" \M" \GR                  5      S+S%95      /5      S, 5       rO\R                  R                  S-5      \R                  R                  S.S!S*/5      S/ 5       5       rP\R                  R                  S05      \R                  R                  S1\\/5      S2 5       5       rQ\R                  R                  S35      \R                  R                  S1S4/\S54\S64/5      S7 5       5       rR\R                  R                  S8\>5      S9 5       rSS: rTS; rUS< rVS= rWS> rX\R                  R                  S? 5       rZ\R                  R                  S@SASB/5      SC 5       r[\R                  R                  SDSESF/4SGSHSI/4SJSHSI/4SKSF/4SLSHSI/4/5      SM 5       r\SN r]\R                  R                  S\?5      SO 5       r^\R                  R                  S@SASB/5      SP 5       r_SQ r`\R                  R                  SRSBSA/5      SS 5       ra\R                  R                  SRSBSA/5      ST 5       rb\R                  R                  SUSVSWSX.SVSWSYSZ./5      \R                  R                  S[SUS\/5      S] 5       5       rc\R                  R                  S05      \R                  R                  S^S_5      \R                  R                  S.S5      S` 5       5       5       rd\R                  R                  S.Sa5      Sb 5       reSc rfSd rg\R                  R                  SSe /\?-   5      Sf 5       rhSg riSh rj\R                  R                  S\?5      Si 5       rk\R                  R                  S\?5      Sj 5       rlSk rmSl rn\R                  R                  S\?5      Sm 5       ro\R                  R                  S5SS /5      Sn 5       rpSo rq\R                  R                  Sp\R                  " SSq5      5      \R                  R                  Sr/ SsQ5      St 5       5       rs\R                  R                  S.\C5      \R                  R                  S@SASB/5      Su 5       5       rt\R                  R                  S.\u" \v" \C5      \v" S+/5      -
  5      5      \R                  R                  SvSw5      \R                  R                  SRSw5      Sx 5       5       5       rw\R                  R                  S.S*S$/5      \R                  R                  SRSw5      \R                  R                  SyS\R                  45      Sz 5       5       5       ry\R                  R                  S5SX5      \R                  R                  S\?5      S{ 5       5       rz\R                  R                  S./ S|Q5      \R                  R                  SRSBSA/5      \R                  R                  S\?5      S} 5       5       5       r{S~ r|S r}\R                  R                  S5      \R                  R                  Sy/ SQ5      \R                  R                  SSS/5      S 5       5       5       r~\R                  R                  Sy/ SQ5      S 5       r\R                  R                  Sy\GR                   " SSS5      5      \R                  R                  S5/ SQ5      S 5       5       r\R                  R                  SS5      S 5       r\R                  R                  S6S\GR                  " S SS5      45      \R                  R                  SS5      S 5       5       r\R                  R                  SS5      S 5       rS r\R                  R                  S5      S 5       r\R                  R                  Sy\GR                   " SSS5      5      \R                  R                  S5/ SQ5      S 5       5       rS rS r\R                  R                  S5      \R                  R                  S.\u" \v" \C5      \v" S+/5      -
  5      5      S 5       5       r\R                  R                  \R                  R                  SSSBSSS.S SASSS.S SBSSS./5      S 5       5       rS r\R                  R                  S./ SQ5      \R                  R                  SRSBSA/5      S 5       5       r\R                  R                  S[SSSSZ.S\/5      S 5       r\R                  R                  S.\C5      \R                  R                  S\?5      S 5       5       rS rS rS r\" SAS9S 5       rS r\R                  R                  S.\C5      S 5       rS rS r\R                  R                  S05      \R                  R                  S\\/5      S 5       5       r\R                  R                  S5      \R                  R                  S\\/5      S 5       5       rS r\R                  R                  S5      \R                  R                  S5      S 5       5       rS r\R                  R                  S5      \R                  R                  SSS/5      S 5       5       rg)    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                    [        U5      n[        R                  " U5      nUR                  S   nU R	                  X5      R                  U5      n[        U R                  U5        UR                  U4:X  d   e[        Xb5        U R                  U5      nUR                  X54:X  d   e[        UR                  SS9[        R                  " U5      5        [        UR                  SS9U5        g)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           g/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_logistic.pycheck_predictionsrJ   9   s    AIiilGa I%%a(Is||W-??yl***y$%%a(M9"8888m//Q/79KL}+++3Q7    csr_containerc                 |   [        [        5       [        [        5        [        [        5       U " [        5      [        5        [        [        SS9[        [        5        [        [        SS9U " [        5      [        5        [        [        SS9[        [        5        [        [        SS9U " [        5      [        5        g )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                      " S S5      n U " 5       n/ SQnSn[        USUUSS9n[        SS	9u  pVUR                  XV5        UR                  US   :X  d   eUR                  U[        U5      -  :X  d   eSUl        UR                  XTR                  U5      5      nXqR                  S   :X  d   eUR                  S
:X  d   eg)z0Test that LogisticRegressionCV calls the scorer.c                   $    \ rS rSrS rSS jrSrg)0test_logistic_cv_mock_scorer.<locals>.MockScorer\   c                 $    SU l         / SQU l        g )Nr   )皙?g?皙?      ?callsscores)selfs    rI   __init__9test_logistic_cv_mock_scorer.<locals>.MockScorer.__init__]   s    DJ.DKrK   Nc                     U R                   U R                  [        U R                   5      -     nU =R                  S-  sl        U$ )Nr1   )r`   r_   r6   )ra   modelrB   rC   sample_weightscores         rI   __call__9test_logistic_cv_mock_scorer.<locals>.MockScorer.__call__a   s4    KK

S-= =>EJJ!OJLrK   r^   N)__name__
__module____qualname____firstlineno__rb   rh   __static_attributes__ rK   rI   
MockScorerrX   \   s    	/	rK   rq   )r1   r2         r2   r   F)Cs	l1_ratiosscoringcvuse_legacy_attributesr   random_stater1   N)	r   r   r:   C_r_   r6   rg   r;   r`   )rq   mock_scorerru   rx   lrrB   rC   custom_scores           rI   test_logistic_cv_mock_scorerr   Y   s      ,K	B	
B	#
B A.DAFF1L 55BqE>> SW,,, K88Azz!}-L--a0000!!!rK   c                     [        [        SS9[        [        5        [        [        SS9U " [        5      [        5        g )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                    [        U 5      n [        R                  R                  u  p#[        R                  [        R
                     n[        U SS5      S;   a  U R                  US9  U R                  [        R                  U5        [        [        R                  " U5      U R                  5        U R                  [        R                  5      n[        R                  " XT:H  5      S:  d   eU R                  [        R                  5      n[!        UR#                  SS9[        R$                  " U5      5        [        R                  UR'                  SS9   n[        R                  " XT:H  5      S:  d   eg)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+   rz   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??LIt{{+FsHd#'CC$67GGDIIvryy(#,,7;;tyy!D774>"T)))%%dii0MM%%1%-rwwy/AB]11q19:D774>"T)))rK   z,error::sklearn.exceptions.ConvergenceWarningr   c                    [         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ5      n[        SUR                  S   -  SSSU S	9nUR                  X5        [        UR                  S
SS9  [        UR                  SS//SS9  [         R                  " / SQ5      nUR                  X5        [        UR                  / SQSS9  [        UR                  SS/SS/SS//SSS9  g)z<Compare Logistic regression with L2 regularization to glmnet)	r0   r   r1   r2   rr   rs   )	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 GGAMCNNM=CII >?dK6 	,-AGGAMHt 		^,/=)	

 	rK   z.ignore:.*use_legacy_attributes.*:FutureWarningLRc                 ,   [         R                  [         R                  p!S HB  nSU S3nU " US9n[        R                  " [
        US9   UR                  X5        S S S 5        MD     S HT  nSU-  nU [        :X  a  U " USS	9nOU " US
S9n[        R                  " [
        US9   UR                  X5        S S S 5        MV     S HB  nSU-  nU " USS9n[        R                  " [
        US9   UR                  X5        S S S 5        MD     S HU  nSU S3nU [        :X  a  U " USS	9nOU " USS9n[        R                  " [
        US9   UR                  X5        S S S 5        MW     U [        L aK  SnU " [        R                  SS9n[        R                  " [
        US9   UR                  X5        S S S 5        g g ! , (       d  f       GM  = f! , (       d  f       GMs  = f! , (       d  f       GM,  = f! , (       d  f       M  = f! , (       d  f       g = f)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   rv   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   msgr~   s         rI   test_check_solver_optionr      s    99dkkq  fXQRv]]:S1FF1L 21   C?&H##6A.B6T2B]]:S1FF1L 21 C KAFJvD)]]:S1FF1L 21 K  KF8STU##6C0B6V4B]]:S1FF1L 21   
F"&&-]]:S1FF1L 21  A 21 21
 21 21 21s<   
F:$G,G G3H:
G
	
G	 
G0	3
H	
Hzignore::FutureWarningargr   rv   c                    U " SSSS.US 0D6n[         R                  " [        SS9   UR                  [        R
                  " SS/SS	//5      [        R
                  " S
S/5      5        S S S 5        g ! , (       d  f       g = f)N
elasticnetr/   )penaltyr   z.*l1_ratio.*r   r1   r2   rr   rs   r   rp   )r   r   r   r:   r7   r   )r   r   re   s      rI   $test_elasticnet_l1_ratio_err_helpfulr   -  sg     B|FBsDkBE	z	9		"((QFQF+,bhh1v.>? 
:	9	9s   AA33
Bcoo_containerc                 J   [         R                  R                  u  p[         R                  [         R                     n[        [         R                  5      n[        5       R                  XC5      nUR                  U5      nUR                  5         [        R                  " UR                  5      (       d   eUR                  U5      nU " U5      nUR                  U5      n	UR                  5         UR                  U5      n
[        Xg5        [        Xi5        [        Xj5        g rj   )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It{{+FdiiA


"
"1
-C$$Q'HLLN??399%%%%$$Q'HAG$$W-HKKM$$W-Hh1h1h1rK   c                  *   [         R                  R                  S5      n U R                  S5      n[         R                  " UR
                  S   5      nSUS'   [        SS9nUS S n[        R                  " [        5         UR                  [        U5        S S S 5        [        R                  " [        5         UR                  X5      R                  U R                  S5      5        S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nr   )   r   rz   r0   )rr      )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	" 1 1' :; 
#	"	 
#	" 
#	"s   C3:0D3
D
Dc                      [        5       n U R                  [        [        5        SU R                  S S & SU R
                  S S & [        U R                  [        5      S5        g )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                      [         R                  " [        [         R                  S9n [         R                  U S'   [        5       n[        R                  " [        5         UR                  U [        5        S S S 5        g ! , (       d  f       g = f)Ndtyper   r1   )r7   r   rB   float64nanr   r   r   r   r:   rS   )Xnanlogistics     rI   test_nanr   p  sS     88ARZZ(DDJ!#H	z	"T2 
#	"	"s   A??
Bc                 B   [         R                  R                  U 5      n[         R                  " UR	                  SS5      SS/-   UR	                  SS5      45      nS/S-  S/S-  -   n[         R
                  " SSS5      n[        nS H~  nU" [        5      " UUSS/US	S
USU S9	u  ptn[        U5       HO  u  p[        U
S	S
UU SS9nUR                  X#5        UR                  R                  5       n[        XU	   SSU-  S9  MQ     M     S H  nS/nU" [        5      " UUSS/USUSU S9u  ptn[        US   SSU US9nUR                  X#5        [         R                  " UR                  R                  5       UR                  /5      n[        XS   SSU-  S9  M     g )NrN   r2   r1   r0   r   rs   r   r.   r/   Fr     )rE   ru   rR   r   r   r   r{   )rP   rR   r   r   r{   r   zwith solver = %s)decimalerr_msg)r*   r,   r-   r+   r.   r/        @@ư>     @)rE   ru   r   r   intercept_scalingr{   )rP   r   r   r{   r   )r7   r   r   concatenaterandnlogspacer&   r   	enumerater   r:   r   ravelr   r   )r   r   rB   rC   ru   fr   coefsr   irP   r~   lr_coefs                rI   test_consistency_pathr   {  s   
))

 2
3C
		#q)QF2CIIc14EFGA	
c	RD3JA	Q2	BA "23F+

1 bMDA##/B FF1Lhhnn&G%q16H66Q " "8 XU23F%+	
1  e%+
 	q.."((.."2BMM!BC!1Xq2Dv2M	
+ XrK   c                      [         R                  R                  S5      n [         R                  " U R	                  SS5      SS/-   U R	                  SS5      45      nS/S-  S/S-  -   nS/n[
        R                  " [        5       n[        XSS/USSSSS9  S S S 5        [        W5      S:X  d   eUS   R                  R                  S   nS	U;   d   eS
U;   d   eSU;   d   eSU;   d   eg ! , (       d  f       N\= f)Nr   rN   r2   r1   r0   r           )rE   ru   r   r   r{   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   ru   recordwarn_msgs         rI   .test_logistic_regression_path_convergence_failr     s   
))


"C
		#q)QF2CIIc14EFGA	
c	RD3JA
B
 
(	)V!1a&RS11VW	
 
*
 v;!ay  %%a(H:hFFF.(:::x'''2h>>> 
*	)s   C//
C=c                    [        SU S9u  p[        U SSSS9nUR                  X5        [        U SSSS9nUR                  X5        [        U S-   SSSS9nUR                  X5        [        UR                  UR                  5        Sn[
        R                  " [        US	9   [        UR                  UR                  5        S S S 5        g ! , (       d  f       g = f)
N   rD   r{   TMbP?r+   )r{   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MDA
'	C GGAM
'	C GGAM
'!+	C GGAM cii3
5C	~S	1!#))SYY7 
2	1	1s   "!C
Cry   TFc           
         Su  p#n[         R                  R                  U 5      nUR                  X#5      n[         R                  " UR                  SUR                  U5      -  5      5      nXfR                  5       -  nXfR                  5       -  n[        S/SSU SUUS9nUR                  Xg5        [        SSU SS9n	U	R                  Xg5        [        U	R                  UR                  5        UR                  R                  S	U4:X  d   e[        UR                  S
S	/5        [!        UR                  5      S:X  d   eUR"                  R                  S:X  d   eUR"                  R                  S   n
UR$                  R                  S:X  d   eUR$                  R                  S   nU(       a  [         R&                  " [)        UR*                  R-                  5       5      5      nUR                  S	XJX4:X  d   e[         R&                  " [)        UR.                  R-                  5       5      5      nUR                  S	XJU4:X  d   eg UR*                  R                  XKU
S	U4:X  d   e[1        UR2                  [4        5      (       d   e[1        UR6                  [4        5      (       d   eUR.                  R                  XKU
4:X  d   eg )N2   r   rr   r   r   r   Fr+   )ru   rv   rR   r{   r   rx   ry   )rP   rR   r{   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_
isinstancer|   float	l1_ratio_)r   ry   rD   r   n_cvr   X_refrC   lr_cvr~   n_Csn_l1_ratioscoefs_pathsr`   s                 rI   test_logistic_cvr!    sY    #+I4
))

 2
3CIIi,E
		!cii
3345A	ZZ\E	YY[E 5'3E 
IIe	
U1CK
B FF5bhh4;;J///u~~Aw/u~~!###99??d"""99??1D!!T)))""((+Kjje&8&8&?&?&A!BC  QK$LLLLD!5!5!789||4{;;;;!!''DtQ
+SSSS%((E****%//51111}}""t$&????rK   zscoring, multiclass_agg_listaccuracy 	precision_macro	_weightedf1neg_log_lossrecallc                    [        SU SSS9u  p4[        R                  " S5      [        R                  " SS5      pe[        SS9nUR	                  5       nSUS	'   S
 H  n	X	 M     UR                  X5   XE   5        U HW  n
[        X-   5      n[        [        UUUU4[        R                  " U5      S/US S S S.UD6S   S   U" XsU   XF   5      5        MY     g )NrN   rr      )rD   r{   rF   n_informativeP   r   rO   l2r   )rP   n_jobs
warm_start)rE   ru   rw   max_squared_sumrf   score_paramsr2   r   )
r   r7   aranger   
get_paramsr:   r   r   r   r8   )r   rw   multiclass_agg_listrB   rC   traintestr~   paramskey	averagingscorers               rI   "test_logistic_cv_multinomial_scorer<  "  s   * $6!STDA ))B-2s!34	c	"B]]_F
 F9 -K -FF18QX(	G/0!!	
 		!5 $"!    2w(	
 )rK   c                  ~   Su  pn[        U UUSSS9u  p4[        5       R                  / SQ5      R                  U5      n[        R
                  " U5      S-
  n[        5       n[        SSS9n[        5       n[        SSS9n	UR                  X45        UR                  X45        UR                  X55        U	R                  X55        [        UR                  UR                  5        [        UR                  U5      UR                  U5      5        [        UR                  5      / SQ:X  d   e[        UR                  U	R                  5        [        UR                  U5      U	R                  U5      5        [        UR                  5      / SQ:X  d   e[        U	R                  5      / SQ:X  d   e[        [        R                  " UR                  U5      5      5      / SQ:X  d   e[        [        R                  " U	R                  U5      5      5      1 S	k::  d   e[        / S
QSS9R                  X55      n	[        [        R                  " U	R                  U5      5      5      / SQ:X  d   e[        SSSS.S9R                  X55      n	[        [        R                  " U	R                  U5      5      5      SS/:X  d   eg)zTest internally encode labelsr  rr   r   )rD   r   rF   r,  r{   )barbazfoor1   F)ru   ry   >   r>  r?  r@  )r1   r2   r   r2   )class_weightr>  r?  N)r   r    r:   inverse_transformr7   r   r   r   r   r   r=   sortedr<   r8   r;   set)
rD   r   rF   r  rC   y_strr~   r  lr_str	lr_cv_strs
             rI   2test_multinomial_logistic_regression_string_inputsrH  \  sB   '/$I9"HE N45GGJE
aA		B AUCE!F$GIFF5	IIe
JJu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I "))I--e456:OOOO #!A0NOSSI "))I--e4565%.HHHrK   c                 \   [        SSU S9u  p#SX"S:  '   U" U5      n[        SS9nUR                  X#5        [        SS9nUR                  XC5        [        UR                  UR                  5        [        UR
                  UR
                  5        UR                  UR                  :X  d   eg )NrN   r   rD   r   r{   r   r   Fry   )r   r   r:   r   r   r   r|   )r   rL   rB   rC   csrrA   clfss          rI   test_logistic_cv_sparserN    s    !2DDA A#gJ

C
U
;CGGAMe<DHHSdjj#))4doos~~>77cffrK   c           
         [         R                  [         R                  p!UR                  u  p4Sn[	        U5      n[        UR                  X5      5      n[        USSS9nUR                  X5        UR                  R                  SU4:X  d   e[        UR                  / SQ5        [        R                  " [        UR                  R                  5       5      5      n	U	R                  SUSUS-   4:X  d   eUR                   R                  S	:X  d   e[        R                  " [        UR"                  R                  5       5      5      n
U
R                  SUS4:X  d   e[%        ['        [)        SS
95      S[        R*                  " SSSS905      R                  X5      nS GH  nUS;   a  SOSn[        UUSUS;   a  SOSSU S9nUS:X  a  [-        U5      nUR                  X5        UR/                  X5      nUR/                  X5      nUU:  d   eUR                  R                  UR                  R                  :X  d   e[        UR                  / SQ5        U (       Ga  [        R                  " [        UR                  R                  5       5      5      n	U	R                  SUSUS-   4:X  d   eUR                   R                  S	:X  d   e[        R                  " [        UR"                  R                  5       5      5      n
U
R                  SUS4:X  d   e[1        UR                  S   R                  S   5       H  nUR                   Vs/ s H  nUR                  U   US S 2S S24   PM     nn[        R2                  " USS5      R5                  [7        UR                   5      S5      n[        R8                  " UU-  SS9n[        R:                  " [        R<                  " U5      S:  5      (       a  M   e   GMa  SSSSUS-   4u  nnnnnUR                  R                  UUUUU4:X  d   e[?        UR@                  [B        5      (       d   e[?        URD                  [B        5      (       d   eUR"                  R                  UUU4:X  d   e[1        UR                  R                  S   5       Hi  nUR                  USS S 2S S 2S S24   n[        R8                  " UU-  SS9n[        R:                  " [        R<                  " U5      S:  5      (       a  Mi   e   GM     [G        SS9n[        RH                  " U5      n[7        U5      S:X  d   eUR                  X5       H  u  nn[7        [        RH                  " UU   5      5      S:X  d   e[7        [        RH                  " UU   5      5      S:X  d   e[K        UU   5      [K        UU   5      -  [K        5       :X  a  M   e   [        USS9R                  X5      n[        R:                  " UR"                  S:H  5      (       d   e[M        [N        SS SUS!9n[        UU[        R*                  " S"SS5      SS#9R                  X5      nUR@                  S$:X  d   eUR"                  * n[        R:                  " US%:  5      (       d   e[        RP                  " U5      S&:  d   eg s  snf )'Nr2   r-   T)rx   r   ry   rr   r   r1   r2   r   r1   )r   r   estimator__Cr   rs   )numr*   r,   r.   r/   r        *   r  r   )r   r   r{   r   rx   ry   r*   r   r0   r4   )r   r0   n_splitsF)rx   ry   r   r=   )greater_is_betterresponse_methodscale_by_halflabelsi)rx   rw   ru   ry   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"   rg   rangeswapaxesreshaper6   r>   alldiffr  r|   r  r  r   r8   rD  r   r   min)ry   rB   rC   rD   r   r  rx   precomputed_foldsrA   r   r`   clf_ovrr   r   	clf_multimulti_score	ovr_scorefoldcr   normsn_foldsn_csr  rF   n_dofrE   r6  r7  rw   brier_scoress                                  rI   test_multinomial_cv_irisrq    s    99dkkqGGI D		BRXXa^, %6dC GGAM 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!i  8 O33(/1t"7
	 WaAaooa+MM!'	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 FOEWEWEWI**1-dAssl;EW   E1a088Y]]9KRPuu}15vvbggen12222 B <=b!Q
UV;V8GT;	5))//4    illE2222i1159999$$**wT.JJJJ i44::1=>
 "..tQ1crc/ABuu}8<vvbggen12222 ?q 8H 
	BiilGw<1xx~t299QuX&'1,,,299QtW%&!+++1U8}s1T7|+su444 &
 "E
B
F
Fq
LC 66#++$%%%%
 'G w2;;r1b#9QV	c!i  66T>>KK<L 66,$%%%%66,#%%%Es   #[c                 4   [        SSSU S9u  p[        SSU S9n[         Vs0 s H   nU[        SSU0UD6R	                  X5      _M"     nn[
        R                  " US	S
9 H0  u  pg[        XV   R                  XW   R                  SSSU SU 3S9  M2     gs  snf )z)Test solvers converge to the same result.r   r   r   )rD   r   r,  r{   r[   F)rP   rR   r{   r   r2   rr  -C6?zCompare  vs )r   r   r   Nrp   )	r   dictSOLVERSr   r:   	itertoolscombinationsr   r   )r   rB   rC   r8  r   classifierssolver_1solver_2s           rI    test_logistic_regression_solversr~  )  s    "ADVDA Cu;MNF F 	";&;F;??EE  
 (44[AF!''!''xjXJ7	
 Gs   'BrR   c                 (   [        SSSSSS9u  pSn[        XSS9nS	S
S
S.n[        [        5      [        S/5      -
   Vs0 s H0  nU[	        SXeR                  US5      S.UD6R                  X5      _M2     nn[        R                  " USS9 H|  u  p[        Xx   R                  Xy   R                  US:X  d  U	S:X  a  SOSU SU	 3S9  U (       d  ME  [        Xx   R                  Xy   R                  US:X  d  U	S:X  a  SOSU SU	 3S9  M~     gs  snf )zATest solvers converge to the same result for multiclass problems.r  r   rr   r   rD   r   r,  rF   r{   r   rV  )rR   r   r{   r   '  r*   r.   r/   r+   rN   r   r   r2   rs  r/   {Gzt?r  rv  r   r   Nrp   )r   rw  rD  rx  r   getr:   ry  rz  r   r   r   )
rR   rB   rC   r   r8  solver_max_iterr   r{  r|  r}  s
             rI   +test_logistic_regression_solvers_multiclassr  C  sT    DA CRHF !$FFCO 'lS+%77	 8F 	" 
$7$7$D
HN

#a)	 8	   (44[AF!''!''"f,F0BjXJ/		
 =%00%00&&0H4FTT#*D
3	 Gs    7Dc                    Su  p#n[         R                  R                  U5      n[        UX0-   X0-   SUS9nU (       a	  SUSS2S4'   [	        U5      u  pxn	[         R
                  " US:  5      (       d   e[         R                  " U5      [         R                  " U5      -  S:  d   eU (       a  USS2SS24   nUR                  SS	X4-  S
9n
U
R                  XC5      n
UR                  SSUS
9U -  nXjR                  -  U-   n[        US9nUR                  R                  U5      n[         R                  " U5      n[        U5       H4  n[         R                   " UR#                  SUUSS24   S95      S   UU'   M6     Sn[%        XS9nSSSS.nSSS.n['        [(        5      ['        S/5      -
   Vs0 s HQ  nU[+        S"[         R,                  UUR/                  UU5      UR/                  US5      S.UD6R1                  Xo5      _MS     nnUR3                  5        H)  n[5        UU   R6                  R9                  SS9SSUS9  M+     [:        R<                  " USS9 H  u  nn[5        UU   R6                  UU   R6                  US:X  d  US:X  a  SOSU S U 3S!9  U (       d  MH  [5        UU   R>                  UU   R>                  US:X  d  US:X  a  SOSU S U 3S!9  M     gs  snf )#zGTest and compare solver results for unpenalized multinomial multiclass.)rN   rs   rr   r[   )rD   r   effective_ranktail_strengthr{   r1   Nr0   r  rN   rr   )lowhighsize)rF   )npvals)r   r   g&.>)rR   r{   r   r  r  r   r   r+   )rP   r   r   r   r   r4   绽|=)r   r   r2   rs  r/   r  gMb`?rv  r  rp   ) r7   r   r   r   r   rb  maxrd  uniformra  r   r
   linkinversezerosr_  argwheremultinomialrw  rD  rx  r   r   r  r:   keysr   r   r>   ry  rz  r   )rR   r   rD   r   rF   r   rB   UsVtcoef	interceptraw_predictionlossprobarC   r   r   r8  r  
solver_tolr   
regressorsr|  r}  s                            rI   7test_logistic_regression_solvers_multiclass_unpenalizedr  k  s    (1$I9
))

 2
3C-!1	A !R%1vHA"66!d(66!9rvvay 3&&&a"fI;;11:+A;BD<<	.D;mKIZ)+N3DIIn-E
A9{{3??QeAqDk?BCDI!  COF #FFCOt,J 'lS+%77	 8F 	" 
ffvs+$((5	

 
 #a)	 8  	 //#v$$((a(0!%	
 $ (44Z1E(x &&x &&"f,F0BjXJ/		
 =8$//8$//&&0H4FTT#*D
3	 F!	s   3AK%weightr[   g?r   r]   rP  rA  balancedc           
         [        U 5      nUS:X  a  U n[        SSSSSUUS9u  pE[        SSUSSS	9n[        SS
S0UD6n[	        [
        S9   UR                  XE5        SSS5        [        [        5      [        / SQ5      -
   H^  n[        SS
U0UD6n	US;   a  U	R                  SSUS-   S9  U	R                  XE5        [        U	R                  UR                  SU S3S9  M`     g! , (       d  f       N= f)z+Test class_weight for LogisticRegressionCV.r  rU  rr   r   )rD   r   
n_repeatedr,  n_redundantrF   r{   r1   Fr   )ru   rR   rA  r   ry   r   r*   categoryN)r*   r+   r-   r   gC]r2<r  )r   r   r{   r  z	 vs lbfgsr  rp   )r6   r   rw  r   r&   r   r:   rD  rx  r   r   r   )
r  rA  r   rF   rB   rC   r8  	clf_lbfgsr   rA   s
             rI   (test_logistic_regressioncv_class_weightsr    s    FIx'DA !#F %>G>v>I 
"4	5a 
6 g,%N!OO";&;F;_$NNE8JQ8N   	IIyTfXY;O	
 P 
6	5s   C&&
C4problem)singlerx   c           	         SnSn[        X4-  SSSSUS9u  pV[        R                  R                  U5      n[        R                  " UR
                  S   5      nUSUR                  S5      (       a  S	OS
SS.n	U	R                  5       n
UR                  SSUS9US U& [        R                  " XXR                  [        5      SS9n[        R                  " XhR                  [        5      SS9nU S:X  a  [        nOU S:X  a  [        n[        R                  " [        R                  " US5      [        R                  " US5      [        R                  " US5      /5      n[!        [#        5       R%                  X^S95      nU	R'                  SUS.5        [        R                  " XR                  [        5      SS9n[!        [#        5       R%                  UUS95      nU
R'                  SUS.5        W" SSU0U	D6nU" SSU0U
D6nUS:X  a[  [(        R*                  " 5          [(        R,                  " S[.        5        UR1                  XVUS9  UR1                  X5        S S S 5        O!UR1                  XVUS9  UR1                  X5        U S:X  a&  [3        UR4                  S   UR4                  S   5        [3        UR6                  UR6                  SS9  g ! , (       d  f       NZ= f)Nr   rr   r   r2   r   )rD   r   r,  rF   r  r{   Fr.   順 r   r   r{   rR   r   r   r  r4   r  rx   r1   )groupsrN   )ru   rx   r   r*   ignorerf   r   r   rp   )r   r7   r   r   r?   r9   
startswithcopyrandintrepeatastypeintr   r   r   fullr  r   r^  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'DA ))

 2
3C		B +%0077GU	K ""$K"%++a9O+"PB1iin15J1iin15J(	D!...2.2.2
 /1777RS#_=>))OYYs^!L$$Z$H
 	#_=>66+6O66+6O $$&!!(,>?B7
7 '& 	A3J3$//2O4K4KA4NOO))?+@+@tL '&s   =K
Kr   c                     [        SSSSUS9u  p#US-   nUSSS	S
.n[        SU SSS.S.UD6nUR                  X#5        [        SSU 0UD6nUR                  X#US9  [        UR                  UR                  SS9  g )Nr   r   rr   r2   r  r1   Fr  r   r  r   )r   rA  r   r  r   r  rp   r   r   r:   r   r   )r   r   rB   rC   rf   r  	clf_cw_12	clf_sw_12s           rI   -test_logistic_regression_solver_class_weightsr  +  s     'DA EM +	K # aL4?I MM!"@&@K@IMM!mM4IOOY__4@rK   c                    [        SSSSU S9u  pUS-   n[        SSSSS	.SS
SU S9nUR                  X5        [        SSSS
SU S9nUR                  XU5        [        UR                  UR                  SS9  [        SSSSS	.SS
SSU S9nUR                  X5        [        SSSS
SSU S9nUR                  XU5        [        UR                  UR                  SS9  g )Nr   r   rr   r2   r  r1   r+   Fr   r  -q=)r   rR   rA  r   r   r   r{   )r   rR   r   r   r   r{   r  r  r   T)r   rR   rA  r   r   r   r   r{   )r   rR   r   r   r   r   r{   r  )r   rB   rC   rf   clf_cwclf_sws         rI   2test_sample_and_class_weight_equivalence_liblinearr  L  s    'DA EMq\'F JJq'F JJq]#FLL&,,U;q\'	F JJq'F JJq]#FLL&,,U;rK   c                 n    [         R                  " U 5      n[        SXS9n[        [	        X5      5      nU$ )Nr  )rE   rC   )r7   r8   r$   rw  zip)rC   rE   rA  class_weight_dicts       rI    _compute_class_weight_dictionaryr    s1    iilG'
GILS78rK   c                     U $ rj   rp   )xs    rI   <lambda>r    s    QrK   c                    [        [        R                  5      nUSS 2S S 24   nU" U5      n[        R                  SS  n[	        U5      n[        [        5      [        SS/5      -
   GH  n[        USU S9n[        SSS0UD6n[        SSU0UD6n	UR                  X45        U	R                  X45        [        UR                  5      S:X  d   e[        UR                  U	R                  S	S
9  [        R                  " UR                   S   5      n
UR                   H  nXU:H  ==   X[   -  ss'   M     [        S0 UD6R                  X4U
S9n[        UR                  U	R                  S	S
9  GM     USS2S S 24   n[        R                  SS n[	        U5      n[         Hi  n[        USU S9n[        SSS0UD6n[        SSU0UD6n	UR                  X45        U	R                  X45        [#        UR                  U	R                  SS9  Mk     g )N-   r+   r-     )r   r   r{   rA  r  rr   ru  r   r   r  rN   r   r+  r   rp   )r"   r   r   r   r  rD  rx  rw  r   r:   r6   r<   r   r   r7   r?   r9   r   )r   rL   X_irisrB   rC   r  r   r8  clf1clf2r  rk  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4==!Q&&&

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

DJJT: G  	r#vqyABsA8;VdAST!DzDVD!K/@KFK!$**djj!D rK   c           
         Su  pn[        UUSUU S9u  pE[        SS9R                  U5      n[        SS9n[        SSS9nUR	                  XE5        UR	                  XE5        UR
                  R                  X24:X  d   eUR
                  R                  X24:X  d   eS	 H  n[        UU S
SS9n	[        UU S
SSS9n
U	R	                  XE5        U
R	                  XE5        U	R
                  R                  X24:X  d   eU
R
                  R                  X24:X  d   e[        UR
                  U	R
                  SS9  [        UR
                  U
R
                  SS9  [        UR                  U	R                  SS9  M     S Ha  n[        UU S
SS/SS9nUR	                  XE5        [        UR
                  UR
                  SS9  [        UR                  UR                  SS9  Mc     g )N)r   r  rr   r   r  F)	with_meanr  )r   )rR   r   )r.   r/   r,   r  r   r{   r   r   )r   r{   r   r   rR   g~jth?r   r   r  rS  r   )r   r{   r   r   ru   ry   )
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$I9'DA 	'55a8A 5)EU>E	IIaO	IIaO;; 7777;; 7777."+	
 #+
 			!		!{{  Y$;;;;{{  Y$;;;; 	U[[t<U[[t<((%*:*:F- /6 8'+u"'
 	Q$?++U-=-=DI 8rK   c                     [        SSU S9u  p[        SSU S9nUR                  X5        [        R                  " S5      n[        UR                  U5      [        R                  " S5      5        g )Nr   rJ  Fr+   )rR   r   r{   )r   r   )r   r   r:   r7   r  r   r;   )r   rB   rC   rA   s       rI   %test_liblinear_decision_function_zeror    sc     0BDA K>PC GGAM 	As{{1~rxx{3rK   c                 b    [        SSUS9u  p#[        SSS9nUR                  U " U5      U5        g )Nr   r   rJ  r+   F)r   ry   r   r   r:   rL   r   rB   rC   rA   s        rI   test_liblinear_logregcv_sparser  	  s9     1CDA k
OCGGM!a rK   c                 f    [        SSUS9u  p#[        SSUSS9nUR                  U " U5      U5        g )Nr   r   rJ  r/   r   F)r   r   r{   ry   r  r  s        rI   test_saga_sparser    sE     1CDA '#	C GGM!a rK   c                  n    [        SS9n U R                  [        [        5        U R                  S:X  d   eg )NFrQ   r   )r   r:   rB   rS   r   r   s    rI   "test_logreg_intercept_scaling_zeror  $  s-     5
1CGGArN>>S   rK   c           
         [         R                  R                  U 5      nSn[        USU S9u  p4UR	                  US4S9n[         R
                  " US4S9n[         R                  " X5U4SS	9n[        SS
SSSSU S9nUR                  X45        [        SS
SSSSU S9nUR                  X45        [        UR                  UR                  SS9  g )NrN   r  rJ  rr   r  r2   r9   r1   r4   r   r+   Fr  r  r   rP   r   rR   r   r   r{   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DA jjy!nj-G	1~.J
J/a8A%
'L Q 
'G KKGMM<#5#5C@rK   c           
         [         R                  R                  U 5      nSn[        USU S9u  pEUR	                  SUS4S9n[         R
                  " US4S9n[         R                  " XFU4S	S
9nSXDS	:  '   U" U5      n[        S	SSSSSU S9nUR                  XE5        [        S	SSSSSU S9n	U	R                  XE5        [        U	R                  UR                  5        [        UR                  SSS 24   [         R
                  " S5      5        [        U	R                  SSS 24   [         R
                  " S5      5        [        S	SSSSSU S9n
U
R                  UR                  5       U5        [        U	R                  U
R                  5        g )Nr  r  rJ  r[   rr   )r"   r  r2   r   r1   r4   r   r   r+   Fr  r  )r   rP   r   rR   r   r   r{   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DA jjs)Qj8GA/J
J/a8AA!eHaA%
'L Q 
'G KKgmm\-?-?@ l00BC8"((1+FgmmArsF3RXXa[A '
'M aiik1%gmm]-@-@ArK   c                     [        SSU S9u  p#[        SU SSS9n[        SS/U4S	S
S.UD6nUR                  X#5        [	        SSUS.UD6nUR                  X#5        [        UR                  UR                  5        g )NrN   r  rJ  r/   r  r  r  r   TF)ru   rv   refitry   rP   r   rp   )r   rw  r   r:   r   r   r   )r   r   rB   rC   common_paramsr  r~   s          rI   !test_logistic_regression_cv_refitr    s     "3EDA '	M ! 5+#	
 E 
IIaO		FcH	F	FBFF1Lekk2884rK   c                    [        SSU SSS9u  p[        5       nUR                  X5        [        X#R	                  U5      5      n[        [        5       5      nUR                  X5        [        X%R	                  U5      5      nXd:  d   e[        X#R	                  U5      5      n[        X#R                  U5      5      nXt:  d   eg )Nr   r  rr   )rD   r   r{   rF   r,  )r   r   r:   r   r=   r   _predict_proba_lr)r   rB   rC   rg  clf_multi_lossrf  clf_ovr_lossclf_wrong_losss           rI   %test_logreg_predict_proba_multinomialr    s    'DA #$IMM!a!8!8!;<N!"4"67GKKA44Q78L((( a!8!8!;<Na!<!<Q!?@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                 z   [         R                  [         R                  R                  5       pTSXUS:H  '   US:X  a  US:  a  [        R
                  " S5        [        USU US9n[        R                  " [        US9   UR                  XE5        S S S 5        UR                  S   U:X  d   eg ! , (       d  f       N$= f)	Nr   r2   r-   r1   z/solver newton-cholesky might converge very fastgV瞯<)r   r   r{   r   r   )r   r   r   r  r   skipr   r   r   r:   n_iter_)r   r   r   r   rB   y_binr~   s          rI   test_max_iterr    s    ( yy$++**,uE1*""x!|EF	'	
B 
(	8
q 
9 ::a=H$$$ 
9	8s   <B,,
B:c           
      D   [         R                  [         R                  p2U S:X  a  [        U5      n[        R
                  " U5      R                  S   nUS:X  d   eUR                  5       nSXUS:H  '   SnSnSn[        SSU S	S
9n	U	R                  X%5        U	R                  R                  S:X  d   e[        SU USUS	US9n
U
R                  X%5        U(       a   U
R                  R                  SXvU4:X  d   eOU
R                  R                  XxU4:X  d   eU S;   a  g U	R                  X#5        U	R                  R                  S:X  d   eU
R                  X#5        U(       a   U
R                  R                  SXvU4:X  d   eg U
R                  R                  XxU4:X  d   eg )Nr*   r   rr   r2   rs   r1   r   r   rV  )r   rP   r   r{   r   r  )r   r   ru   rv   rx   r{   ry   r   )r   r   r   r"   r7   r8   r9   r  r   r:   r  r   )r   ry   rB   rC   rF   r  r  	n_cv_foldr  rA   clf_cvs              rI   test_n_iterr"    s    99dkkq!H		!""1%I>> FFHEE1*DIK V"
MCGGA;;$$$!3F JJq~~##9K'HHHH~~##	'EEEE  GGAM;;$$$
JJq~~##9K'HHHH~~##	'EEEErK   r0  )TFc                    [         R                  [         R                  pT[        SUUU US9n[	        [
        S9   UR                  XE5        UR                  nSUl        UR                  XE5        S S S 5        [        R                  " [        R                  " WUR                  -
  5      5      nSU SU< SU< 3n	U(       a  SU:  d   U	5       eg US:  d   U	5       eg ! , (       d  f       Nu= f)	Nru  )r   r0  r   r{   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   r0  rR   rB   rC   rA   coef_1cum_diffr   s
             rI   test_warm_startr(  #  s     99dkkq
'#C 
"4	5 
6 vvbffVcii/01H
*6(
0ZM	3  X~"s"~#~"s"~ 
6	5s   6C
C-rP   c           	      
   [         R                  [         R                  pT[        USUUU S9n[	        [
        S9   UR                  XE5        SSS5        [        USSUUU S9n[	        [
        S9   UR                  XE5        UR                  XE5        SSS5        [        UR                  UR                  5        U(       a!  [        UR                  UR                  5        gg! , (       d  f       N= f! , (       d  f       Nh= f)zITest that 2 steps at once are the same as 2 single steps with warm start.r2   )r   r   rR   rP   r{   r  Nr1   T)r   r   r0  rR   rP   r{   )
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    
 99dkkq#
'D 
"4	5 
6 #
'D 
"4	5 
6 DJJ

+9 ! 
6	5 
6	5s   C#/#C4#
C14
Dc                 P   [        5       nUR                  UR                  pT[        R                  " U/S-  5      n[        R                  " U/S-  5      nXES:*     nXUS:*     S-  S-
  n[        SSU S9u  pU" U5      nXg4X44 H  u  pEUR                  S   n
[        R                  " SSS5       Hn  n[        S	X-  -  US
SSU SS9n[        S	X-  -  USSSU SS9nUR                  XE5        UR                  XE5        [        UR                  UR                  S5        Mp     M     g )Nrr   r1   r2   r  r  rJ  r   r0   r   r/   rT  Fr   )rP   r   r   r   rR   r{   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_liblinearr0  f  s9    ;D99dkkq
sQwA
sQwA1fIE1fIMAE,2DH X&H(!56GGAJ	[[Q*E%*+!#/D +*+!"#/I HHQNMM!%djj)//1E1 + 7rK   )r+   r,   r-   r/   c                    U S:X  a  [         R                  O[         R                  n[         R                  " [        5      R                  [         R                  5      n[         R                  " [        5      R                  [         R                  5      n[         R                  " [        5      R                  [         R                  5      n[         R                  " [        5      R                  [         R                  5      nU" [        [         R                  S9nU" [        [         R                  S9n	Sn
[        U SU
US9n[        U5      nUR                  XE5        UR                  R                  U:X  d   e[        U5      nUR                  X5        UR                  R                  U:X  d   e[        U5      nUR                  Xg5        UR                  R                  [         R                  :X  d   e[        U5      nUR                  X5        UR                  R                  [         R                  :X  d   eSU
-  n[        R                  S:X  a  [        (       a  Sn[        UR                  UR                  R                  [         R                  5      US	9  U S
:X  a	  U(       a  Sn[        UR                  UR                  US	9  [        UR                  UR                  US	9  g )Nr+   r   gMb@?rV  )r   r{   r   rR   gQ@ntr   r  r/   r[   )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_matchrB    s     &4"**J88A;bjj)D88B<rzz*D88A;bjj)D88B<rzz*D4K4KJ!#	H (OE	IId;;
*** ?L['##z111 (OE	IId;;

*** ?L['##rzz111 j D	ww$99 EKK!3!3BJJ!?dKM EKK!3!3$?EKK!3!3$?rK   c                    [         R                  R                  U 5      n[         R                  " UR	                  SS5      SS/-   UR	                  SS5      45      n[         R
                  " S/S-  S/S-  -   5      n[        SSSU S9n[        SS	SU S9n[        X4R                  X#5      R                  U5      5      n[        S
5       H  nUR                  X#5        M     [        X5R                  U5      5      n[        XhSS9  g )NrN   r2   r1   r0   r.   Fr   )r   r0  r   r{   Tr   r   r   )r7   r   r   r   r   r   r   r   r:   r=   r_  r   )	r   r   rB   rC   lr_no_wslr_wslr_no_ws_lossr   
lr_ws_losss	            rI   test_warm_start_converge_LRrH    s     ))

 2
3C
		#q)QF2CIIc14EFGA
!sbTCZ'(A!D?QH 4>PE QQ 2 @ @ CDM1X		! !0034JMD9rK   c           
      p   [        U S9u  pSn[        5       nS H=  n[        UUSU SSS9nUR                  X5        UR	                  UR
                  5        M?     Uu  pxn	[        R                  " XxSSS	9(       a   e[        R                  " XySSS	9(       a   e[        R                  " XSSS	9(       a   eg )
Nrz   r$  )r]   r1   r   r/   r  rT  )rP   r   r   r{   r   r   r   r   )r   r  r   r:   appendr   r7   allclose)
r   rB   rC   rP   coeffsr   r~   elastic_net_coeffs	l1_coeffs	l2_coeffss
             rI   test_elastic_net_coeffsrP    s     ,>?DAAVF+
 	qbhh   06,9 {{-qtLLL{{-qtLLL{{9adCCCCrK   z1ignore:.*'penalty' was deprecated.*:FutureWarning)r  r[   r1   r   rN   r       .Azpenalty, l1_ratio)l1r1   )r.  r   c           	          [        U S9u  pE[        SUUSU SS9n[        X!SU SS9nUR                  XE5        UR                  XE5        [        UR                  UR                  5        g )Nrz   r   r/   r   )r   rP   r   r   r{   r   )r   rP   r   r{   r   )r   r   r:   r   r   )r   rP   r   r   rB   rC   lr_enetlr_expecteds           rI   "test_elastic_net_l1_l2_equivalencerV    sr     ,>?DA 
'G %V:LRVK KKOOAgmm[->->?rK   )r  r1   rN   rQ  c                    [        SSS9u  p[        XSS9u  p4pVS[        R                  " SSS5      0n[	        SU SSS	S
9n[        XSS9n	[	        SU SSS	S
9n
[	        SU SSS	S
9nXU4 H  nUR                  X55        M     U	R                  XF5      U
R                  XF5      :  d   eU	R                  XF5      UR                  XF5      :  d   eg )NrT  r   rz   r   r1   r   r]   r/   r   )r   rP   r   r{   r   T)r  )r   r   r7   linspacer   r   r:   rg   )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_l2rb  (  s    
 s3DA'71'M$GWbkk!Q23J!
H 
h$	7BaQDF  aQDF F#! $ 88F#v||F'CCCC88F#v||F'CCCCrK   r   r2   rs   )r[   r]   ?c           
         ^ ^^^ [        SSSSSSSS9u  mm[        T5      m[        TT SSSS	9n[        SSST SS
9nUR                  TT5        UR                  TT5        U UUU4S jnU" U5      U" U5      :  d   eg )Nr   r2   r  r   r   rD   rF   r   r,  r  r  r{   r/   F)r   rP   r   r{   rR   )r   r   r{   rP   rR   c                   > U R                   R                  5       nT[        TU R                  T5      5      -  nUT[        R
                  " [        R                  " U5      5      -  -  nUST-
  S-  [        R                  " X5      -  -  nU$ )Nr   r]   )r   r   r   r=   r7   r>   r%  r  )r~   r  objrP   rB   r   rC   s      rI   enet_objectiveEtest_LogisticRegression_elastic_net_objective.<locals>.enet_objectivej  su    xx~~(1b..q122x"&&...h#%t(:::
rK   )r   r"   r   r:   )rP   r   rT  lr_l2rh  rB   rC   s   ``   @@rI   -test_LogisticRegression_elastic_net_objectiverk  J  s     DAq 	aA 
G 6QeE KK1	IIaO  '"^E%::::rK   rF   )r2   rr   c           
         [        SU SSS9u  p[        S5      n[        R                  " SSS5      n[        R                  " SSS5      n[        UUS	USS
SS9nUR                  X5        XTS.n[        S	SS
S9n[        XUS9n	U	R                  X5        U	R                  S   UR                  :X  d   eU	R                  S   UR                  :X  d   eg )NrN   rr   r   )rD   rF   r,  r{   r   r1   r   rs   r/   r   F)rv   ru   r   rx   r{   r   ry   r  )r   r{   r   rx   r   rP   )r   r   r7   rX  r   r   r:   r   r   best_params_r  r|   )
rF   rB   rC   rx   rv   ru   lrcvr]  r~   r_  s
             rI   2test_LogisticRegressionCV_GridSearchCV_elastic_netrp  u  s    
 	DA 
	BAq!$I	RA	B#D 	HHQN1J	
B
 
b	,BFF1L??:&$..888??3477***rK   rt   c           
         Sn[        SUUUSS9u  p4[        R                  " SSS5      n[        UU SSS	S
SS9nUR	                  X45        US:X  a  SOUnUR
                  R                  U4:X  d   eUR                  R                  U4:X  d   eUR                  R                  X4:X  d   e[        UR
                  UR
                  S   5        [        U 5      S:  a$  [        UR                  UR                  S   5        g g )Nr  r   r   rD   rF   r,  r   r{   r   rs   rr   r/   r   FT)ru   rv   r   r{   r   r  ry   r2   r1   )r   r7   r   r   r:   r|   r9   r  r   r   r6   )rv   rF   r   rB   rC   ru   ro  s          rI   "test_LogisticRegressionCV_no_refitrs    s    
 JDA 
RA	B"D 	HHQN!^I77==YL(((>>I<///::	6666DGGTWWQZ(
9~q(9: rK   c           
      Z   Sn[        SU U USS9u  p#[        R                  " SSS5      n[        R                  " SSS	5      nS	n[	        UUS
USSSS9nUR                  X#5        [        R                  " [        UR                  R                  5       5      5      nU S	:X  a  SOU n UR                  U UUR                  UR                  US-   4:X  d   e[        R                  " [        UR                  R                  5       5      5      n	U	R                  XUR                  UR                  4:X  d   eUR                  R                  SXdR                  UR                  4:X  d   e[        UR                  UR                  S   5        [        UR                   UR                   S   5        g )Nr  r   r   rr  r   rs   rr   r1   r2   r/   r   T)ru   rv   r   rx   r{   r   ry   )r   r7   r   rX  r   r:   r  r  r  r  r9   r  r  r  r   r|   r  )
rF   r   rB   rC   ru   rv   rm  ro  r   r`   s
             rI   5test_LogisticRegressionCV_elasticnet_attribute_shapesru    s{   
 JDA 
RA	BAq!$IG"D 	HHQN**T$"3"3":":"<=>K!^I
Q!    ZZT\\00234F<<IHHHH<<!Wggy~~!FFFF DGGTWWQZ(DNNDNN1$56rK   c            	      4   [         R                  [         R                  p[        SSSS9R	                  X5      n[        S5      n[        UR                  X5      5      nSS/SS/SS	/4 H  u  pVXE   S   n[        UR                  U   SSS
9R	                  X   X   5      n[        R                  " U5       HY  n	[        UR                  U	   XVSS24   UR                  U	   SS9  [        UR                  U	   XVS4   UR                  U	   SS9  M[     M     g)zETest that LogisticRegressionCV produces the correct result on a fold.r-   r   T)r   r   ry   r   r   r1   rr   r+  r   Nr0   r   r   )r   r   r   r   r:   r   r  r^  r   r  r7   r8   r   r  r   r   )
rB   rC   ro  rx   foldsidx_foldidx_Ctrain_fold_0r~   cls
             rI   "test_LogisticRegressionCV_on_foldsr|    s    99dkkq d$	c!i 	
 
	B! E FQFQF3q)hhuo$
 #aoq
/	 	 ))A,B!!"%hss&:; !!"%hr&9:b!  4rK   c                      Sn [         R                  " [        U S9   [        SSSS9R	                  [
        [        5        S S S 5        g ! , (       d  f       g = f)NzQl1_ratio parameter is only used when penalty is 'elasticnet'\. Got \(penalty=l1\)r   rR  r/   r]   )r   r   r   )r   r   UserWarningr   r:   rB   rS   )r   s    rI   test_l1_ratio_non_elasticnetr    sA    	.  
k	-4EII!RP 
.	-	-s   $A		
Ac                    Sn[        USSSSSU S9u  pE[        U5      n[        SUU SS SS	U-  U-  S
S9n[        UU SSSUSS9nUR	                  XE5        UR	                  XE5        [        UR                  UR                  SS9  g )NrT  r2   r   r   re  r   Fr  r   r   )r   r   r{   rR   r   r   r/  r  r   r   r/   )r   r{   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'DA 	aA
'Ag	!	C '
C GGAMGGAMCIIsyyt4rK   c            
         [        SSSSSSSS9u  p/ SQn[        U U[        R                  " U5      SUS	SS
9u  n  n[        R
                  " [        5         [        US   US   SS9  S S S 5        [        R
                  " [        5         [        US   US   SS9  S S S 5        [        R
                  " [        5         [        US   US   SS9  S S S 5        g ! , (       d  f       Nw= f! , (       d  f       NT= f! , (       d  f       g = f)Nr   rr   r2   r   r1   rD   rF   r,  r  n_clusters_per_classr{   r   )r   r1   r  rR  r/   )rE   r   ru   r   r{   r  )r   r   r7   r8   r   r   r  r   )rB   rC   ru   r   r   s        rI   /test_logistic_regression_path_coefs_multinomialr  K  s     DA 
B+				!KE1a 
~	&!%(E!Ha@ 
'	~	&!%(E!Ha@ 
'	~	&!%(E!Ha@ 
'	&	 
'	&	&	&	&	&s$   CC+?C<
C(+
C9<
D
c            
      "   [        SSSSSSSS9u  p[        R                  " U5      n[        R                  " S5      n[	        U UUUSS9  S	[
        R                  " [        UR                  5      5       S
3n[        R                  " [        US9   [	        XX#SSS9  S S S 5        [        SSSSSSSS9u  p[        R                  " U5      n[        R                  " S5      n[	        U UUUSS9  [        R                  " S5      n[	        U UUUSS9  S	[
        R                  " [        UR                  5      5       S3n[        R                  " [        US9   [	        XX#SSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   rr   r2   r   r1   r  )rr   rr   )rE   r  r{   z Initialization coef is of shape z.+expected.+\(3, 2\)r   F)rE   r  r{   rR   )r1   rr   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   DA iilG 776?D		 ,BIIc$**o,F+G	   
z	-!'1E	
 
.
 DA iilG
 771:D		 776?D		 ,BIIc$**o,F+G)	*  
z	-!'1E	
 
.	-S 
.	-R 
.	-s   E/F /
E= 
Fc                    [        SSU S9u  p#Sn[        S USS9n[        R                  " [        US9   UR                  X#5        S S S 5        [        S USU S	9n[        S
[        R                  USU S9nUR                  X#5      R                  U5      nUR                  X#5      R                  U5      n	[        X5        g ! , (       d  f       N= f)Nr   r   )rD   r  r{   z&Setting penalty=None will ignore the Crs   )r   r   rP   r   r   )r   r   r   r{   r.  )r   rP   r   r   r{   )
r   r   r   r   r~  r:   r7   r   r;   r   )
r   r   rB   rC   r   r~   lr_nonelr_l2_C_inf	pred_nonepred_l2_C_infs
             rI   test_penalty_noner    s     A4FDA 3C	D1	=B	k	-
q 
. !Vc@RG %
&&'K A!))!,IOOA)11!4My0 
.	-s   C
Cr8  r   r   )r   r   r   r   r  c                    [         R                  " SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//[         R                  " S5      S9n[         R                  " / SQ[         R                  " S5      S9n[         R                  " X"/5      n[         R                  " USU-
  /5      n[         R
                  " [        U5      S-  S	9nS
U[        U5      S & [        XEX`S9u  pEn[        SU S9nUR                  " S0 UD6  [        U5      R                  X#5      n[        U5      R                  XEUS9n	S H0  n
[        X5      " U5      n[        X5      " U5      n[        X5        M2     g )Nr1   rr   r2   rs   r  r   )r1   r1   r1   r1   r2   r2   r2   r2   r1   r1   r1   r1   r2   r2   r2   r2   r  r   r   rz   r+   )r   r{   r  )r;   r=   r   rp   )r7   r   r   vstackhstackr?   r6   r%   r   r   r   r:   r   r   )r   r8  rB   rC   X2y2rf   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 
A6	B	Aq1u:	BGG#a&1*-MM#a&(#
BM "CUVH!&!(O''-MHo))")NOC!-8;#O<Q?; DrK   c                     [        SSS9u  p[        SS9nSS/n/ SQn[        UUUS	SS
SSS9nUR                  X5        UR                  S   R                  SS9n[        U5       H_  u  px[        U5       HK  u  p[        UU
S	SS
SS9n[        XXS9R                  5       nXgU	4   [        R                  " U5      :X  a  MK   e   Ma     g )Nr   r   r  r   rW  r[   rc  )r[   r1   r   r/      r  T)ru   rv   rx   r   r{   r   r   ry   r1   r4   )rP   r   r   r{   r   r   rm  )r   r   r   r:   r  r   r   r   r   r   approx)rB   rC   rx   rv   ru   ro  avg_scores_lrcvr   rP   jr   r~   avg_score_lrs                rI   'test_scores_attribute_layout_elasticnetr  	  s     A>DA	!	$Bc
I	B"	D 	HHQNll1o***2O"$Y/KA#!B +2!;@@BL"a4(FMM,,GGGG 0 rK   )r*   r,   r-   c                    [         R                  [         R                     n[        [	        [         R
                  5      UUU S9n[        [         R
                  5      nUR                  XS5        [        UR                  R                  SS9SSS9  U(       a3  UR                  R                  SS9[        R                  " SSS9:X  d   egg)	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   r{   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GGH CIIMMqM)159~~!!q!)V]]1%-HHHH rK   r   g      $@c                     [        SS9u  p#[        U5      n[        R                  " U5      nSUS US-  & UR	                  5       n[        U USS9nUR                  X#US9  [        Xe5        g )NT
return_X_yr2   r   )r{   rA  r   r  )r   r6   r7   r?   r  r   r:   r   )r   rA  rB   rC   r   WexpectedrA   s           rI   test_sample_weight_not_modifiedr  c	  sn    %DAQJ

AA
avvxH
'!C
 GGAG"H rK   c           	         U" [         R                  " SSUS95      nS H'  n[        X4[        X45      R	                  S5      5        M)     [
        R                  R                  U5      nUR                  SUR                  S   S9nU S	;   a=  S
n[        R                  " [        US9   [        U S9R                  X65        S S S 5        g [        U S9R                  X65        g ! , (       d  f       g = f)Nr  r   rz   )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%)009: &
))

 2
3CAAGGAJ'A--@]]:S1f-11!7 21 	&)--a3 21s   'C""
C0c                     [         R                  " SS/5      R                  SS5      n [         R                  " SS/5      nSn[        R                  " [
        US9   [        SS9R                  X5        S S S 5        g ! , (       d  f       g = f)	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   ra  r   r   r   r   r:   )rB   rC   r   s      rI    test_liblinear_with_large_valuesr  	  sn    
 	!U$$R+A
!QA	) 
 
z	-+.2218 
.	-	-s   A>>
Bc                      [         R                  " / SQ/5      R                  n [         R                  " / SQ5      nU R                  S   S:X  d   e[	        SSS9R                  X5        g )N)r]   g?g?g      ?r\   gHzG?r   r]  )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  	  sT     	>?@BBA
)*A771:??k>BB1HrK   c           
         [         R                  R                  5       n[         R                  R                  5       nXS:g     nX"S:g     n[	        5       R                  U5      n[        XSS9S-  n[        SUSSSS	U S
9n[        R                  " 5          [        R                  " S[        5        UR                  X25        S S S 5        g ! , (       d  f       g = f)Nr2   r  )r  gnt@r1   r+   r   rN   r   )r   rP   r   r   r   r   r{   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E"_4A

!'C 
	 	 	"g'9: 
#	"	"s   -C
Cenable_metadata_routingc                    [         R                  R                  U 5      n[        SUS9u  p#[        SUS9u  pE[         R                  " [        U5      5      nSUS[        U5      S-  & SU0n[        S5      n[        USSS	9n	U	R                  " X#40 UD6  [        S5      n
U
R                  SS
9  [        U
SSS	9nUR                  " X#40 UD6  [         R                  " U	R                  S   UR                  S   5      (       a   eU	R                  " XE40 UD6nUR                  " XE40 UD6n[         R                  " X5      (       a   eg)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   Nrf   r"  gTqs*>T)rw   r   ry   r  r1   )r7   r   r   r   r?   r6   r   r   r:   set_score_requestrK  r  rg   )r   r   rB   rC   X_ty_trf   kwargsscorer1lr_cv1scorer2lr_cv2score_1score_2s                 rI   8test_lr_cv_scores_differ_when_sample_weight_is_requestedr  	  s<    ))

 2
3CC@DA"TDHCGGCFOM#$M-CFaK }-F$G!"F
 JJqv$GD1!"F
 JJqv{{6>>!,fnnQ.?@@@@ll3.v.Gll3.v.G{{7,,,,,rK   c                     [         R                  R                  S5      n [        SU S9u  p[        SU S9u  p4[         R                  " [        U5      5      nSUS[        U5      S-  & SU0n[        SS9   [        S5      n[        USS	9nUR                  " X40 UD6  UR                  " X440 UD6n	SSS5        [        S
S9   [        S5      n
U
R                  S
S9  [        U
SS	9nUR                  " X40 UD6  UR                  " X440 UD6nSSS5        [        WR                  S   WR                  S   5        [        W	W5        g! , (       d  f       N= f! , (       d  f       NR= f)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   Nrf   Fr  r"  )rw   ry   Tr  r1   )r7   r   r   r   r?   r6   r	   r   r   r:   rg   r  r   r  )r   rB   rC   r  r  rf   r  r  r  r  r  r  r  s                rI   3test_lr_cv_scores_without_enabling_metadata_routingr  	  sJ   
 ))


#C#>DA"RcBHCGGCFOM#$M-CFaK }-F		6Z(%"'
 	

1"6",,s262 
7 
	5Z(!!!5%"'
 	

1"6",,s262 
6 FNN1%v~~a'89GW%) 
7	6 
6	5s   5<EAE
E
E'c                 z   [        SS9u  pUS:H  n[        [        S9   [        U SS9R	                  X5      nS S S 5        U S;  a  WR
                  S:X  d   eU S:w  a  [        WR                  [        R                  " UR                  5      5        [        UR                  U5      [        R                  " UR                  S   UR                  S	95        [        UR                  U5      [        R                  " UR                  S   S4S
S	95        WR                  X5      S:  d   eg ! , (       d  f       N= f)NTr  r2   r  r   r  )r/   r.   r*   )r9   
fill_valuer]   r]  )r   r&   r   r   r:   r  r   r   r7   
zeros_liker   r  r9   r   r=   rg   )r   rB   rC   rA   s       rI   test_zero_max_iterr  
  s     %DA	QA	"4	5 ;??E 
6_${{a		2==#;<!!!$GG!''!*@	
 	a GG1771:q/c:	
 99Q?S   # 
6	5s   D,,
D:c                     [        SSS9u  p[        SS9nSn[        SS9   SS	0n[        R                  " [
        US
9   UR                  " X40 UD6  SSS5        [        R                  " [
        US
9   UR                  " X40 UD6  SSS5        SSS5        g! , (       d  f       NL= f! , (       d  f       N(= f! , (       d  f       g= f)zTest that the right error message is raised when metadata params
are passed while not supported when `enable_metadata_routing=False`.r   r   r  FrK  z1is only supported if enable_metadata_routing=Truer  extra_paramr   r   N)r   r   r	   r   r   r   r:   rg   )rB   rC   r  r   r8  s        rI   5test_passing_params_without_enabling_metadata_routingr  "
  s     !<DA u=E
=C		6%]]:S1IIa%f% 2 ]]:S1KK'' 2 
7	6 21 21 
7	6s:   B;B!B;4B*B;
B'	#B;*
B8	4B;;
C	c                    [        SSU S9u  pSn[        SUS9n[        R                  " 5          [        R                  " S5        UR                  X5        UR                  S   nS S S 5        WS	:  d   e[        S
US9n[        [        S9   UR                  X5        UR                  S   nS S S 5        WU:X  d   e[        S
X5S	-
  S9n[        [        S9   [        R                  " [        SS9   UR                  X5        UR                  S   n	S S S 5        S S S 5        W	UR                  S	-
  :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NN= f! , (       d  f       NW= f)Nr   r  rJ  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
  sW    2DDA 	A "A6H		 	 	"g&Q''* 
#
 1 &71=E	-	0		!MM!$	 
1 $$$ ' Aq0@M 
-	0\\,4NOa# - 5 5a 8 P 
1
  6 6 ::::9 
#	" 
1	0 PO 
1	0s;   7D9!E
E,2!EE,9
E

E
E)	%E,,
E:	Estimatorc                     Sn[         R                  " [        US9   U " SS9R                  [        R
                  [        R                  5        SSS5        g! , (       d  f       g= f)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  ^
  sA     NC	z	-%))$))T[[A 
.	-	-s   3A
A&z7ignore:.*default.*use_legacy_attributes.*:FutureWarningestc                     [        SSSS9u  pU " SS9nSn[        R                  " [        US9   UR	                  X5        S	S	S	5        g	! , (       d  f       g	= f)
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   r~   r   s        rI   test_penalty_deprecatedr  h
  sH     bJDA	T	B
$C	m3	/
q 
0	/	/s   A


Ac                      [        SSSS9u  p[        5       nSn[        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)Nrr   r  r+  r  z@The default value of use_legacy_attributes will change from Truer   )r   r   r   r   r  r:   rB   rC   r~   r   s       rI   :test_logisticregressioncv_warns_with_use_legacy_attributesr  t
  sD    bJDA		B
LC	m3	/
q 
0	/	/s   A
Az3ignore:l1_ratios parameter is only us.*:UserWarningc                     [        SSSS9u  p[        SS9nSn[        R                  " [        US9   UR                  X5        SSS5        [        5       nS	n[        R                  " [        US9   UR                  X5        SSS5        [        SS
9nSn[        R                  " [        US9   UR                  X5        SSS5        g! , (       d  f       N= f! , (       d  f       N^= f! , (       d  f       g= f)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)rv   z'l1_ratios=None' was deprecated)r   r   r   r   r  r:   r   r  s       rI   test_l1_ratio_None_deprecatedr  }
  s     bJDA	T	*B
*C	m3	/
q 
0 
	B
7C	m3	/
q 
0 
	-B
+C	m3	/
q 
0	/ 
0	/
 
0	/
 
0	/s#   C
1C/C,

C
C),
C:c                      [        SSSS9u  p[        SS9nSn[        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)	Nrr   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  
  sF    bJDA	1	%B
"C	m3	/
q 
0	/	/s   A
Azignore:'penalty' was deprecated)rR  r   )r.  r   c                     [        SS9u  p#[        SXS9nSU  SU 3n[        R                  " [        US9   UR                  X#5        SSS5        g! , (       d  f       g= f)	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   r~  r:   )r   r   rB   rC   r~   r   s         rI   $test_lr_penalty_l1ratio_incompatibler  
  sS     ,DA	67	NB)'/(
LC	k	-
q 
.	-	-s   A
A )ry  r4  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
pytestmarkrx  rB   rS   r   r   rJ   parametrizerU   r   r   r6   r   r   r   r   r   r   r   r   r   r   r   thread_unsafer	  r!  r<  rH  rN  rq  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r3  r  r"  rC  rD  r(  r   r*  r0  rB  rH  rP  rV  rb  r   rk  rp  rX  rs  ru  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  rp   rK   rI   <module>r     sI    	 	    
  + " -  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 RYYq!_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 bkk"a34_5%; 6 5%;R f-%+ .%+P tR[[Aq-A&BCf-; . D;D f-,7 .,7^!J OPQ QQ bkk"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   