
    Piq                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZmZ d dl m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z? ej@        A                    d          ZBej@        A                    d          ZBdZCdd gd dgddggZDg dZEg dZF e            ZGd ZHej@        I                    de?          d             ZJd ZKej@        I                    de?          d             ZLej@        I                    d  e eMeGjN                  d!d"#           e eMeGjN                  d$%           e eMeGjN                  d&d'(           e eMeGjN                  d)d'(           e eMeGjN                  d*%           e0 e eMeGjN                  d+%                    g          d,             ZOej@        A                    d-          ej@        I                    d.d!d*g          d/                         ZPej@        A                    d0          ej@        I                    d1eeg          d2                         ZQej@        A                    d3          ej@        I                    d1d4ged5fed6fg          d7                         ZRej@        I                    d8e>          d9             ZSd: ZTd; ZUd< ZVd= ZWd> ZXej@        jY        d?             ZZej@        I                    d@dAdBg          dC             Z[ej@        I                    dDdEdFgfdGdHdIgfdJdHdIgfdKdFgfdLdHdIgfg          dM             Z\dN Z]ej@        I                    de?          dO             Z^ej@        I                    d@dAdBg          dP             Z_dQ Z`ej@        I                    dRdBdAg          dS             Zaej@        I                    dRdBdAg          dT             Zbej@        I                    dUdVdWdXdVdWdYdZg          ej@        I                    d[dUd\g          d]                         Zcej@        A                    d0          ej@        I                    d^d_          ej@        I                    d.d          d`                                     Zdej@        I                    d.da          db             Zedc Zfdd Zgej@        I                    dde ge?z             df             Zhdg Zidh Zjej@        I                    de?          di             Zkej@        I                    de?          dj             Zldk Zmdl Znej@        I                    de?          dm             Zoej@        I                    d5dd g          dn             Zpdo Zqej@        I                    dp ejr        ddq                    ej@        I                    drg ds          dt                         Zsej@        I                    d.eC          ej@        I                    d@dAdBg          du                         Ztej@        I                    d. eu eveC           evd+g          z
                      ej@        I                    dvdw          ej@        I                    dRdw          dx                                     Zwej@        I                    d.d*d$g          ej@        I                    dRdw          ej@        I                    dydejx        f          dz                                     Zyej@        I                    d5dX          ej@        I                    de?          d{                         Zzej@        I                    d.g d|          ej@        I                    dRdBdAg          ej@        I                    de?          d}                                     Z{d~ Z|d Z}ej@        A                    d          ej@        I                    dyg d          ej@        I                    dddg          d                                     Z~ej@        I                    dyg d          d             Zej@        I                    dy ej        ddd                    ej@        I                    d5g d          d                         Zej@        I                    dd          d             Zej@        I                    d6d ej        d dd          f          ej@        I                    dd          d                         Zej@        I                    dd          d             Zd Zej@        A                    d          d             Zej@        I                    dy ej        ddd                    ej@        I                    d5g d          d                         Zd Zd Zej@        A                    d          ej@        I                    d. eu eveC           evd+g          z
                      d                         Zej@        jY        ej@        I                    dddBdddd dAdddd dBdddg          d                         Zd Zej@        I                    d.g d          ej@        I                    dRdBdAg          d                         Zej@        I                    d[ddddZd\g          d             Zej@        I                    d.eC          ej@        I                    de?          d                         Zd Zd Zd Z edA          d             Zd Zej@        I                    d.eC          d             Zd Zd Zej@        A                    d0          ej@        I                    deeg          d                         Zej@        A                    d          ej@        I                    deeg          d                         Zd Zej@        A                    d          ej@        A                    d          d                         Zd Zej@        A                    d          ej@        I                    dddg          d                         ZdS )    N)assert_allcloseassert_array_almost_equalassert_array_equal)sparse)LinAlgWarningsvd)config_context)HalfMultinomialLoss)clone)	load_irismake_classificationmake_low_rank_matrix)ConvergenceWarning)LogisticRegressionLogisticRegressionCVSGDClassifier)_log_reg_scoring_path_logistic_regression_path)brier_score_loss
get_scorerlog_lossmake_scorer)GridSearchCVKFoldLeaveOneGroupOutStratifiedKFoldcross_val_scoretrain_test_split)OneVsRestClassifier)LabelEncoderStandardScalerscale)l1_min_c)compute_class_weightshuffle)ignore_warnings)	_IS_32BITCOO_CONTAINERSCSR_CONTAINERSz6error::sklearn.exceptions.ConvergenceWarning:sklearn.*z6ignore:The default value for l1_ratios.*:FutureWarning)lbfgs	liblinear	newton-cgnewton-choleskysagsaga   )r   r1   r1   )   r1   r   c                    t          |          }t          j        |          }|j        d         }|                     ||                              |          }t          | j        |           |j        |fk    sJ t          ||           |                     |          }|j        ||fk    sJ t          |
                    d          t          j        |                     t          |                    d          |           dS )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           |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/linear_model/tests/test_logistic.pycheck_predictionsrJ   9   s    AIillGa I1%%a((Is|W---?yl****y!$$$%%a((M9i"88888m//Q/779K9KLLL}+++33Q77777    csr_containerc                     t          t                      t          t                     t          t                       | t                    t                     t          t          d          t          t                     t          t          d           | t                    t                     t          t          d          t          t                     t          t          d           | t                    t                     d S )Nd   CFfit_intercept)rJ   r   rB   Y1rL   s    rI   test_predict_2_classesrU   K   s     (**Ar222(**MM!,<,<bAAA(3///B777(3///q1A1A2FFF(u===q"EEE(u===}}Q?O?OQSTTTTTrK   c                      G d d          }  |             }g d}d}t          |d||d          }t          d	          \  }}|                    ||           |j        |d         k    sJ |j        |t          |          z  k    sJ d|_        |                    ||                    |                    }||j        d         k    sJ |j        d
k    sJ dS )z0Test that LogisticRegressionCV calls the scorer.c                       e Zd Zd ZddZdS )0test_logistic_cv_mock_scorer.<locals>.MockScorerc                 &    d| _         g d| _        d S )Nr   )皙?g?皙?      ?)callsscores)selfs    rI   __init__z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__init__]   s    DJ...DKKKrK   Nc                 t    | j         | j        t          | j                   z           }| xj        dz  c_        |S )Nr1   )r^   r]   r6   )r_   modelrB   rC   sample_weightscores         rI   __call__z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__call__a   s3    K
S-=-= =>EJJ!OJJLrK   N)__name__
__module____qualname__r`   re    rK   rI   
MockScorerrX   \   s7        	/ 	/ 	/	 	 	 	 	 	rK   rk   )r1   r2         r2   r   F)Cs	l1_ratiosscoringcvuse_legacy_attributesr   random_stater1   N)	r   r   r:   C_r]   r6   rd   r;   r^   )rk   mock_scorerro   rr   lrrB   rC   custom_scores           rI   test_logistic_cv_mock_scorerrz   Y   s           *,,K	B	
B	#
 
 
B A...DAqFF1aLLL 5BqE>>>> SWW,,,, K88Arzz!}}--L;-a00000!!!!!!rK   c                     t          t          d          t          t                     t          t          d           | t                    t                     d S )N
   rO   )rJ   r   rB   Y2rT   s    rI   test_predict_3_classesr~      sN    (2...2666(2...a0@0@"EEEEErK   rA   r*      )rP   solvermax_iterr,   rP   r   r.   {Gz?rP   r   tolr/   r-   r+   c                    t          |           } t          j        j        \  }}t          j        t          j                 }t          | dd          dv r|                     |           |                     t          j        |           t          t          j        |          | j                   |                     t          j                  }t          j        ||k              dk    sJ |                     t          j                  }t!          |                    d          t          j        |                     t          j        |                    d                   }t          j        ||k              dk    sJ dS )zTest logistic regression with the iris dataset.

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

 	 	 	 	 	 	rK   z.ignore:.*use_legacy_attributes.*:FutureWarningLRc                 x   t           j        t           j        }}dD ]]}d| d} | |          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   ^dD ]v}d|z  }| t          k    r | |d	          }n | |d
          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   wdD ]]}d|z  } | |d          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   ^dD ]w}d| d}| t          k    r | |d	          }n | |d          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   x| t          u red} | t          j	        d          }t          j        t
          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S d S )Nr+   zThe 'z4' solver does not support multiclass classification.r   match)r*   r,   r-   r.   z/Solver %s supports only 'l2' or None penalties,r1   )r   l1_ratior1   )r   rp   r*   r,   r-   r.   r/   z1Solver %s supports only dual=False, got dual=TrueT)r   dualz;Only 'saga' solver supports elasticnet penalty, got solver=.r\   )r\   z6penalty=None is not supported for the liblinear solverr+   r   )
r   r   r   pytestraises
ValueErrorr:   r   r7   inf)r   rB   rC   r   msgrx   s         rI   test_check_solver_optionr      s    9dkqA    RfRRRRv]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 C  ?&H###6A...BB6T222B]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	J  AFJRvD)))]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	    UFUUU###6C000BB6V444B]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 
FR"&---]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  sZ   
A--A1	4A1	C&&C*	-C*	#EE
	E
	G  G	G		H--H14H1zignore::FutureWarningargr   rp   c                     | dddd|d i}t          j        t          d          5  |                    t	          j        ddgdd	gg          t	          j        d
dg                     d d d            d S # 1 swxY w Y   d S )N
elasticnetr/   )penaltyr   z.*l1_ratio.*r   r1   r2   rl   rm   r   rj   )r   r   r   r:   r7   r   )r   r   rb   s      rI   $test_elasticnet_l1_ratio_err_helpfulr   -  s     BB|FBBsDkBBE	z	9	9	9 @ @		"(QFQF+,,bh1v.>.>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   AA99A= A=coo_containerc                    t           j        j        \  }}t           j        t           j                 }t          t           j                  }t                                          ||          }|                    |          }|	                                 t          j        |j                  sJ |                    |          } | |          }|                    |          }	|                                 |                    |          }
t          ||           t          ||	           t          ||
           d S rf   )r   r   r9   r   r   r"   r   r:   decision_functionsparsifyr   issparser   densifyr   )r   rD   
n_featuresr   rB   rA   pred_d_dpred_s_dsp_datapred_s_spred_d_ss              rI   test_sparsifyr   :  s    !IOIzt{+FdiA



"
"1f
-
-C$$Q''HLLNNN?39%%%%%$$Q''HmAG$$W--HKKMMM$$W--Hh111h111h11111rK   c                  ^   t           j                            d          } |                     d          }t          j        |j        d                   }d|d<   t          d          }|d d         }t          j        t                    5  |
                    t          |           d d d            n# 1 swxY w Y   t          j        t                    5  |
                    ||                              |                     d                     d d d            d S # 1 swxY w Y   d S )Nr   )   r|   rt   r0   )rl      )r7   randomRandomStaterandom_sampler?   r9   r   r   r   r   r:   rB   r;   )rngX_y_rA   y_wrongs        rI   test_inconsistent_inputr   S  s   
)


"
"C			7	#	#B	!		BBqE
!
,
,
,C "gG	z	"	"  7               
z	"	" < <B 1 1' : :;;;< < < < < < < < < < < < < < < < < <s$   B44B8;B8=D""D&)D&c                      t                      } |                     t          t                     d| j        d d <   d| j        d d <   t          |                     t                    d           d S )Nr   )r   r:   rB   rS   r   r   r   r   rA   s    rI   test_write_parametersr   g  sa    


CGGArNNNCIaaaLCN111c33A66:::::rK   c                  $   t          j        t          t           j                  } t           j        | d<   t                      }t          j        t                    5  |	                    | t                     d d d            d S # 1 swxY w Y   d S )Ndtyper   r1   )r7   r   rB   float64nanr   r   r   r   r:   rS   )Xnanlogistics     rI   test_nanr   p  s     8ARZ(((DDJ!##H	z	"	"  T2                 s   BB	B	c                    t           j                            |           }t          j        |                    dd          ddgz   |                    dd          f          }dgdz  dgdz  z   }t          j        ddd          }t          }dD ]}  |t                    ||ddg|d	d
|d| 	  	        \  }}}t          |          D ]e\  }	}
t          |
d	d
|| d          }|
                    ||           |j                                        }t          |||	         dd|z             fdD ]}dg}  |t                    ||ddg|d|d|           \  }}}t          |d         dd| |          }|
                    ||           t          j        |j                                        |j        g          }t          ||d         dd|z             d S )NrN   r2   r1   r0   r   rm   r|   r.   r/   Fr     )rE   ro   rR   r   r   r   ru   )rP   rR   r   r   ru   r   zwith solver = %s)decimalerr_msg)r*   r,   r-   r+   r.   r/        @@ư>     @)rE   ro   r   r   intercept_scalingru   )rP   r   r   ru   r   )r7   r   r   concatenaterandnlogspacer&   r   	enumerater   r:   r   ravelr   r   )r   r   rB   rC   ro   fr   coefsr   irP   rx   lr_coefs                rI   test_consistency_pathr   {  sb   
)

 2
3
3C
		#q))QF2CIIc14E4EFGGA	
c	RD3JA	Q2		BA "  3qq233F+

 

 

r1 bMM 	 	DAq##/  B FF1aLLLhnn&&G%q16H66Q    	  X 
 
U3qq233F%+	
 	
 	
r1  e%+
 
 
 	q!."(.."2"2BM!BCC!U1Xq2Dv2M	
 	
 	
 	
 	
+
 
rK   c                     t           j                            d          } t          j        |                     dd          ddgz   |                     dd          f          }dgdz  dgdz  z   }dg}t          j        t                    5 }t          ||ddg|dddd           d d d            n# 1 swxY w Y   t          |          dk    sJ |d         j
        j        d         }d	|v sJ d
|v sJ d|v sJ d|v sJ d S )Nr   rN   r2   r1   r0   r           )rE   ro   r   r   ru   verbosez-lbfgs failed to converge after 1 iteration(s)z!Increase the number of iterationszscale the dataz%linear_model.html#logistic-regression)r7   r   r   r   r   r   warnsr   r   r6   messageargs)r   rB   rC   ro   recordwarn_msgs         rI   .test_logistic_regression_path_convergence_failr     sv   
)


"
"C
		#q))QF2CIIc14E4EFGGA	
c	RD3JA
B
 
(	)	) 
V!q1a&RS11VW	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 v;;!ay %a(H:hFFFF.(::::x''''2h>>>>>>s   B22B69B6c                    t          d|           \  }}t          | ddd          }|                    ||           t          | ddd          }|                    ||           t          | dz   ddd          }|                    ||           t          |j        |j                   d}t          j        t          |	          5  t          |j        |j                   d d d            d S # 1 swxY w Y   d S )
N   rD   ru   TMbP?r+   )ru   r   r   r   r1   z)Arrays are not almost equal to 6 decimalsr   )r   r   r:   r   r   r   r   AssertionError)r   rB   rC   lr1lr2lr3r   s          rI    test_liblinear_dual_random_stater    sa    :LMMMDAq
'	  C GGAqMMM
'	  C GGAqMMM
'!+	  C GGAqMMM ci333
5C	~S	1	1	1 8 8!#)SY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   
C22C69C6rs   TFc           	      B   d\  }}}t           j                            |           }|                    ||          }t          j        |                    d|                    |          z                      }||                                z  }||                                z  }t          dgdd| d||          }|	                    ||           t          dd| d          }	|		                    ||           t          |	j        |j                   |j        j        d	|fk    sJ t          |j        d
d	g           t!          |j                  dk    sJ |j        j        dk    sJ |j        j        d         }
|j        j        dk    sJ |j        j        d         }|rt          j        t)          |j                                                            }|j        d	||
||fk    sJ t          j        t)          |j                                                            }|j        d	||
|fk    sJ d S |j        j        |||
d	|fk    sJ t1          |j        t4                    sJ t1          |j        t4                    sJ |j        j        |||
fk    sJ d S )N2   r   rl   r   r   r   Fr+   )ro   rp   rR   ru   r   rr   rs   )rP   rR   ru   r   r1   r0   r2   r   r   )r7   r   r   r   signdotr   stdr   r:   r   r   r   r9   r   r<   r6   Cs_
l1_ratios_asarraylistcoefs_paths_valuesscores_
isinstancerv   float	l1_ratio_)r   rs   rD   r   n_cvr   X_refrC   lr_cvrx   n_Csn_l1_ratioscoefs_pathsr^   s                 rI   test_logistic_cvr    s    #+Iz4
)

 2
3
3CIIi,,E
		!cii
3334455A	UZZ\\E	UYY[[E 5'3  E 
IIeQ	
U1CK
 
 
B FF5!bh444;J////u~Aw///u~!####9?d""""9?1D!T))))"(+K 	@je&8&?&?&A&A!B!BCC QdK$LLLLLD!5!5!7!78899|4{;;;;;;;!'D+tQ
+SSSSS%(E*****%/511111}"t[$&???????rK   zscoring, multiclass_agg_listaccuracy 	precision_macro	_weightedf1neg_log_lossrecallc                    t          d| dd          \  }}t          j        d          t          j        dd          }}t          d          }|                                }d|d	<   d
D ]}	||	= |                    ||         ||                    |D ]o}
t          ||
z             }t          t          ||||ft          j	        |          dg|d d d d|d         d          ||||         ||                              pd S )NrN   rl      )rD   ru   rF   n_informativeP   r   rO   l2r   )rP   n_jobs
warm_start)rE   ro   rq   max_squared_sumrc   score_paramsr2   r   )
r   r7   aranger   
get_paramsr:   r   r   r   r8   )r   rq   multiclass_agg_listrB   rC   traintestrx   paramskey	averagingscorers               rI   "test_logistic_cv_multinomial_scorer6  "  sa   * $6!ST  DAq )B--2s!3!34E	c	"	"	"B]]__F
 F9 -  3KKFF1U8QuX( 
 
	Gi/00!!	
 	!5 $"!      F2qw$((	
 	
 	
 	

 
rK   c                  l   d\  } }}t          | ||dd          \  }}t                                          g d                              |          }t	          j        |          dz
  }t                      }t          dd          }t                      }t          dd          }	|                    ||           |                    ||           |                    ||           |	                    ||           t          |j	        |j	                   t          |
                    |          |
                    |                     t          |j                  g dk    sJ t          |j	        |	j	                   t          |
                    |          |	
                    |                     t          |j                  g dk    sJ t          |	j                  g dk    sJ t          t	          j        |                    |                              g dk    sJ t          t	          j        |	                    |                              h d	k    sJ t          g d
d                              ||          }	t          t	          j        |	                    |                              g dk    sJ t          dddd                              ||          }	t          t	          j        |	                    |                              ddgk    sJ dS )zTest internally encode labelsr  rl   r   )rD   r   rF   r&  ru   )barbazfoor1   F)ro   rs   >   r8  r9  r:  )r1   r2   r|   r2   )class_weightr8  r9  N)r   r    r:   inverse_transformr7   r   r   r   r   r   r=   sortedr<   r8   r;   set)
rD   r   rF   r  rC   y_strrx   r  lr_str	lr_cv_strs
             rI   2test_multinomial_logistic_regression_string_inputsrB  \  s*   '/$Iz9"  HE1 NN44455GGJJE
aA			B AUCCCE!!F$GGGIFF5!	IIeQ
JJueMM%BHfl+++B$$U++V-A-A%-H-HIII&/""&;&;&;;;;;EK111E''..	0G0G0N0NOOO&/""&;&;&;;;;;)$%%)>)>)>>>>> ")FNN51122337L7L7LLLLLry**51122337L7L7LLLLL %


%PPPTTu I ")I--e445566:O:O:OOOOO #!A0N0NOOOSSu I ")I--e4455665%.HHHHHHrK   c                 |   t          dd|           \  }}d||dk     <    ||          }t          d          }|                    ||           t          d          }|                    ||           t          |j        |j                   t          |j        |j                   |j        |j        k    sJ d S )NrN   r   rD   r   ru   r   r   Frs   )r   r   r:   r   r   r   rv   )r   rL   rB   rC   csrrA   clfss          rI   test_logistic_cv_sparserH    s    !2D  DAq Aa#gJ
-

C
U
;
;
;CGGAqMMMe<<<DHHS!dj#)444dos~>>>7cfrK   c           	         t           j        t           j        }}|j        \  }}d}t	          |          }t          |                    ||                    }t          |dd          }|                    ||           |j	        j        d|fk    sJ t          |j        g d           t          j        t          |j                                                            }	|	j        d|d|dz   fk    sJ |j        j        d	k    sJ t          j        t          |j                                                            }
|
j        d|dfk    sJ t%          t'          t)          d
                    dt          j        ddd          i                              ||          }dD ]}|dv rdnd}t          ||d|dv rdndd|           |dk    rt-          |          }                    ||                               ||          }|                    ||          }||k    sJ |j	        j        j	        j        k    sJ t          j        g d           | ret          j        t          j                                                            }	|	j        d|d|dz   fk    sJ j        j        d	k    sJ t          j        t          j                                                            }
|
j        d|dfk    sJ t1          j        d         j        d                   D ]fdj        D             }t          j        |dd                              t7          j                  d          }t          j        ||z  d          }t          j        t          j        |          dk              sJ  dddd|dz   f\  }}}}}j        j        |||||fk    sJ t?          j         tB                    sJ t?          j"        tB                    sJ j        j        |||fk    sJ t1          j        j        d                   D ]_j        dd d d d d df         }t          j        ||z  d          }t          j        t          j        |          dk              sJ `tG          d          }t          j$        |          }t7          |          dk    sJ |                    ||          D ]\  }}t7          t          j$        ||                             dk    sJ t7          t          j$        ||                             dk    sJ tK          ||                   tK          ||                   z  tK                      k    sJ t          |d                              ||          }t          j        |j        d k              sJ tM          tN          dd!d|"          }t          ||t          j        d#dd          d$                              ||          }|j         d%k    sJ |j         }t          j        |d&k              sJ t          j(        |          d'k     sJ d S )(Nr2   r-   T)rr   r   rs   rl   r   r1   r2   r|   r1   )r|   r   estimator__Cr   rm   )numr*   r,   r.   r/   r        *   r   r   )r   r   ru   r   rr   rs   r*   r   c                 D    g | ]}j         |         d d d df         S )Nr0   )r  ).0c	clf_multifolds     rI   
<listcomp>z,test_multinomial_cv_iris.<locals>.<listcomp>  sA       @AI*1-dAAAssl;  rK   r0   r4   )r   r0   n_splitsF)rr   rs   r   r=   )greater_is_betterresponse_methodscale_by_halflabelsi)rr   rq   ro   rs   r   ffffff?r[   ))r   r   r   r9   r   r  splitr   r:   r   r   r<   r7   r  r  r  r  r  r   r   r   r   r"   rd   rangeswapaxesreshaper6   r>   alldiffr  rv   r  r  r   r8   r>  r   r   min)rs   rB   rC   rD   r   r  rr   precomputed_foldsrA   r  r^   clf_ovrr   r   multi_score	ovr_scorer   normsn_foldsn_csr  rF   n_dofrE   r0  r1  rq   brier_scoresrT  rU  s                               @@rI   test_multinomial_cv_irisrn    s    9dkqAGIz D			BRXXa^^,, %6d  C GGAqMMM 9?q*o----s|YYY///*T#"2"9"9";";<<==KD"j1n =====7=E!!!!ZS[//112233F<AtR=(((( .6GHHHII	R3334  
c!Qii  8 ?3 ?3 O3333(/11t"7
 
 
	 WaAaooa++MM!Q''	Y&&&& y)/"777779-yyy999  )	3*T)*@*G*G*I*I%J%JKKK$D"j1n(EEEEE=&%////ZY%6%=%=%?%? @ @AAF<AtR=0000 i4Q7=a@AA 3 3    ENEW   E1a0088Y]9K9KRPPuu}1555vbgenn12222223 <=b!Q
UV;V8GT;	5)/4     ilE22222i1599999$*wT.JJJJJ i4:1=>> 3 3
 ".tQ111crc/ABuu}8<<<vbgenn12222223 
			BillGw<<1xx1~~ 5 5t29QuX&&''1,,,,29QtW%%&&!++++1U8}}s1T7||+suu44444
"E
B
B
B
F
Fq!
L
LC 6#+$%%%%%
 '  G w2;r1b#9#9QV  	c!Qii  6T>>>>K<L 6,$%%%%%6,#%%%%%%rK   c                    t          ddd|           \  t          dd|           fdt          D             }t          j        |d	
          D ]5\  }}t          ||         j        ||         j        ddd| d|            6dS )z)Test solvers converge to the same result.r   r|   r   )rD   r   r&  ru   rZ   F)rP   rR   ru   c                 V    i | ]%}|t          dd |i                              &S )r   rj   )r   r:   )rR  r   rB   r2  rC   s     rI   
<dictcomp>z4test_logistic_regression_solvers.<locals>.<dictcomp>1  sO        	";;&;F;;??1EE  rK   r2   rr   -C6?zCompare  vs )r   r   r   N)r   dictSOLVERS	itertoolscombinationsr   r   )r   classifierssolver_1solver_2rB   r2  rC   s       @@@rI    test_logistic_regression_solversr}  )  s    "ADV  DAq Cu;MNNNF       K
 (4[AFFF 
 
(!'!'7x77X77	
 	
 	
 	
 	

 
rK   rR   c           	         t          ddddd          \  d}t          | |d          d	d
d
dfdt          t                    t          dg          z
  D             }t	          j        |d          D ]\  }}t          ||         j        ||         j        |dk    s|dk    rdnd| d|            | r<t          ||         j        ||         j        |dk    s|dk    rdnd| d|            dS )zATest solvers converge to the same result for multiclass problems.r   r|   rl   r   rD   r   r&  rF   ru   r   rP  )rR   r   ru   r   '  r*   r.   r/   c                     i | ]:}|t          d|                    |d           d                              ;S )rN   r   r   rj   )r   getr:   )rR  r   rB   r2  solver_max_iterrC   s     rI   rq  z?test_logistic_regression_solvers_multiclass.<locals>.<dictcomp>T  sl         	" 
O$7$7$D$D
 
HN
 

#a))  rK   r+   r2   rr  r/   {Gzt?r   ru  r   r   N)	r   rv  r>  rw  rx  ry  r   r   r   )	rR   r   rz  r{  r|  rB   r2  r  rC   s	        @@@@rI   +test_logistic_regression_solvers_multiclassr  C  s      DAq C3RHHHF !$FFCCO       'llS+%7%77	  K (4[AFFF  (!'!'"f,,F0B0B//X//		
 	
 	
 	
  	H%0H%0&&00H4F4FTTT#3333	    rK   c           
         d\  }}}t           j                            |          }t          ||| z   || z   d|          | r	ddddf<   t	                    \  }}}t          j        |dk              sJ t          j        |          t          j        |          z  dk     sJ | rddddf         |                    dd	||z  
          }	|		                    ||          }	|                    dd|
          | z  }
|	j
        z  |
z   }t          |          }|j                            |          }t          j        |          t          |          D ]>}t          j        |                    d||ddf                             d         |<   ?dt%          | |          dddddddfdt'          t(                    t'          dg          z
  D             }|                                D ]4}t-          ||         j                            d          dd|           5t3          j        |d          D ]\  }}t-          ||         j        ||         j        |dk    s|dk    rdnd| d | !           | r<t-          ||         j        ||         j        |dk    s|dk    rdnd| d | !           dS )"zGTest and compare solver results for unpenalized multinomial multiclass.)rN   rm   rl   rZ   )rD   r   effective_ranktail_strengthru   r1   Nr0   r   rN   rl   )lowhighsize)rF   )npvals)r   r   g&.>)rR   ru   r   r  r  r   r   c                     i | ]Z}|t          dt          j        |                    |                              |d           d                              [S )rN   )rP   r   r   r   rj   )r   r7   r   r  r:   )rR  r   rB   r2  r  
solver_tolr   rC   s     rI   rq  zKtest_logistic_regression_solvers_multiclass_unpenalized.<locals>.<dictcomp>  s     	 	 	  	" 
fvs++$((55	
 

 
 
 #a))	 	 	rK   r+   r   r4   绽|=)r   r   r2   rr  r/   r  gMb`?ru  r  )r7   r   r   r   r   rb  maxrd  uniformra  r   r
   linkinversezerosr_  argwheremultinomialrv  r>  rw  keysr   r   r>   rx  ry  r   )rR   r   rD   r   rF   r   UsVtcoef	interceptraw_predictionlossprobar   
regressorsr   r{  r|  rB   r2  r  r  r   rC   s                      @@@@@@rI   7test_logistic_regression_solvers_multiclass_unpenalizedr  k  s    (1$Iz9
)

 2
3
3C-!M1	 	 	A  !!!R%1vvHAq"6!d(6!99rvayy 3&&&& aaa"fI;;11:	+A;BBD<<	:..D;;mKIZ)+N333DIn--E
A9 J J{3??QeAqqqDk?BBCCDI!
C<NOOOF #FFCCOt,,J	 	 	 	 	 	 	 	 	 'llS+%7%77	 	 	J //## 
 
v$((a(00!%	
 	
 	
 	
 	
 (4Z1EEE  (x &x &"f,,F0B0B//X//		
 	
 	
 	
  	8$/8$/&&00H4F4FTTT#3333	    rK   weightrZ   g?r   r\   rJ  r;  balancedc           	      H   t          |           }|dk    r| }t          ddddd||          \  }}t          dd|dd	          }t          dd
di|}t	          t
                    5  |                    ||           ddd           n# 1 swxY w Y   t          t                    t          g d          z
  D ]e}t          dd
|i|}	|dv r|		                    dd|dz              |	                    ||           t          |	j        |j        d| d           fdS )z+Test class_weight for LogisticRegressionCV.r  rO  rl   r   )rD   r   
n_repeatedr&  n_redundantrF   ru   r1   Fr   )ro   rR   r;  r   rs   r   r*   categoryN)r*   r+   r-   r   gC]r2<r  )r   r   ru   r   z	 vs lbfgsr  rj   )r6   r   rv  r   r&   r   r:   r>  rw  r   r   r   )
r  r;  r   rF   rB   rC   r2  	clf_lbfgsr   rA   s
             rI   (test_logistic_regressioncv_class_weightsr    s    FIx'  DAq !#  F %>>G>v>>I 
"4	5	5	5  a               g,,%N%N%N!O!OO 

 

";;&;F;;_$$NNE8JQ8N     	1IyTf;O;O;O	
 	
 	
 	
 	


 

s   (BBBproblem)singlerr   c                 z   d}d}t          ||z  dddd|          \  }}t          j                            |          }t          j        |j        d                   }|d|                    d          rd	nd
dd}	|	                                }
|                    dd|          |d |<   t          j	        ||
                    t                    d          }t          j	        ||
                    t                    d          }| dk    r	t          }n| dk    rt          }t          j        t          j        |d          t          j        |d          t          j        |d          g          }t!          t#                                          ||                    }|	                    d|d           t          j	        ||
                    t                    d          }t!          t#                                          ||                    }|
                    d|d            |dd|i|	} |dd|i|
}|dk    rtt)          j                    5  t)          j        dt.                     |                    |||           |                    ||           d d d            n# 1 swxY w Y   n.|                    |||           |                    ||           | dk    r&t3          |j        d         |j        d                    t3          |j        |j        d           d S )Nr   rl   r   r2   r   )rD   r   r&  rF   r  ru   Fr.   順 r   r   ru   rR   r   r   r  r4   r  rr   r1   )groupsrN   )ro   rr   r   r*   ignorerc   r   r   rj   )r   r7   r   r   r?   r9   
startswithcopyrandintrepeatastypeintr   r   r   fullr  r   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'  DAq )

 2
3
3C			B +%0077BGGU	 K ""$$K"%++a9O+"P"PB1biinn1555J1biinn1555J(	D!..22.22.22
 
 /1177/7RRSS#_==>>>)ORYYs^^!LLL$$Z$HH
 
 	#_==>>>b666+66Ob666+66O $&& 	8 	8!(,>???1B777
J777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	Aq333J
333$/2O4KA4NOOOO)?+@tLLLLLLs   $A	J99J= J=r   c                     t          dddd|          \  }}|dz   }|ddd	d
}t          d| dddd|}|                    ||           t          dd| i|}|                    |||           t          |j        |j        d           d S )Nr   r   rl   r2   r  r1   Fr  r   r  r   )r   r;  r   r  r   r  rj   r   r   r:   r   r   )r   r   rB   rC   rc   r  	clf_cw_12	clf_sw_12s           rI   -test_logistic_regression_solver_class_weightsr  +  s     '  DAq EM +	 K # aLL 4? I MM!Q"@@&@K@@IMM!QmM444IOY_4@@@@@@rK   c           
         t          dddd|           \  }}|dz   }t          ddddd	dd
d|           }|                    ||           t          dddd
d|           }|                    |||           t          |j        |j        d           t          ddddd	dd
dd|           }|                    ||           t          dddd
dd|           }|                    |||           t          |j        |j        d           d S )Nr   r   rl   r2   r  r1   r+   Fr   r  -q=)r   rR   r;  r   r   r   ru   )r   rR   r   r   r   ru   r  r  r   T)r   rR   r;  r   r   r   r   ru   )r   rR   r   r   r   r   ru   r  )r   rB   rC   rc   clf_cwclf_sws         rI   2test_sample_and_class_weight_equivalence_liblinearr  L  sz    '  DAq EMq\\'  F JJq!'  F JJq!]###FL&,U;;;;q\\'	 	 	F JJq!'  F JJq!]###FL&,U;;;;;;rK   c                     t          j        |           }t          d||           }t          t	          ||                    }|S )Nr  )rE   rC   )r7   r8   r$   rv  zip)rC   rE   r;  class_weight_dicts       rI    _compute_class_weight_dictionaryr    sA    illG'
GqIIILS,7788rK   c                     | S rf   rj   )xs    rI   <lambda>r    s    Q rK   c                    t          t          j                  }|dd d d f         } ||          }t          j        dd          }t	          |          }t          t                    t          ddg          z
  D ]}t          |d|           }t          dddi|}t          dd|i|}	|	                    ||           |		                    ||           t          |j                  dk    sJ t          |j        |	j        d	
           t          j        |j        d                   }
|j        D ]}|
||k    xx         ||         z  cc<   t          di |	                    |||
          }t          |j        |	j        d	
           |ddd d f         }t          j        dd         }t	          |          }t          D ]x}t          |d|           }t          dddi|}t          dd|i|}	|	                    ||           |		                    ||           t#          |j        |	j        d           yd S )N-   r+   r-     )r   r   ru   r;  r  rl   rt  r   r   r  rN   r   r%  r   rj   )r"   r   r   r   r  r>  rw  rv  r   r:   r6   r<   r   r   r7   r?   r9   r   )r   rL   X_irisrB   rC   r  r   r2  clf1clf2r  rS  clf3s                rI   &test_logistic_regression_class_weightsr    s|    49FrssAAAvAaABCCA8;;g,,k3D%E!F!FF ; ;VdASTTT!DDzDVDD!KK/@KFKKAA4=!!Q&&&&
DJT::::WQWQZ   	/ 	/AqAvJJJ+A..JJJJ!++F++//1B/GG
DJT::::: 	r#vqqqyABsFA8;; E EVdASTTT!DDzDVDD!KK/@KFKKAA!$*dj!DDDDDE ErK   c           	         d\  }}}t          ||d||           \  }}t          d                              |          }t          d          }t          dd          }|                    ||           |                    ||           |j        j        ||fk    sJ |j        j        ||fk    sJ d	D ]}t          || d
d          }	t          || d
dd          }
|	                    ||           |
                    ||           |	j        j        ||fk    sJ |
j        j        ||fk    sJ t          |j        |	j        d           t          |j        |
j        d           t          |j        |	j        d           dD ]f}t          || d
ddgd          }|                    ||           t          |j        |j        d           t          |j        |j        d           gd S )N)r   r   rl   r|   r  F)	with_meanr  )r   )rR   r   )r.   r/   r,   r  r   ru   r   r   )r   ru   r   r   rR   g~jth?r   r   r   rM  r   )r   ru   r   r   ro   rs   )
r   r!   fit_transformr   r:   r   r9   r   r   r   )r   rD   r   rF   rB   rC   ref_iref_wr   clf_iclf_wclf_paths               rI   $test_logistic_regression_multinomialr    si    (2$Iz9'  DAq 	'''55a88A 5)))EU>>>E	IIaOOO	IIaOOO;J 77777;J 77777. G G"+	
 
 
 #+
 
 
 			!Q		!Q{ Y
$;;;;;{ Y
$;;;;; 	U[t<<<<U[t<<<<(%*:FFFFF
 8 J J'+u"'
 
 
 	Q$????+U-=DIIIIIJ JrK   c                    t          dd|           \  }}t          dd|           }|                    ||           t          j        d          }t          |                    |          t          j        d                     d S )Nr   rD  Fr+   )rR   r   ru   )r   r   )r   r   r:   r7   r  r   r;   )r   rB   rC   rA   s       rI   %test_liblinear_decision_function_zeror    s     0B  DAq K>P  C GGAqMMM 	As{{1~~rx{{33333rK   c                     t          dd|          \  }}t          dd          }|                     | |          |           d S )Nr|   r   rD  r+   F)r   rs   r   r   r:   rL   r   rB   rC   rA   s        rI   test_liblinear_logregcv_sparser  	  s\     1C  DAq k
O
O
OCGGMM!a     rK   c                     t          dd|          \  }}t          dd|d          }|                     | |          |           d S )Nr|   r   rD  r/   r   F)r   r   ru   rs   r  r  s        rI   test_saga_sparser    sl     1C  DAq '#	  C GGMM!a     rK   c                      t          d          } |                     t          t                     | j        dk    sJ d S )NFrQ   r   )r   r:   rB   rS   r   r   s    rI   "test_logreg_intercept_scaling_zeror  $  s>     5
1
1
1CGGArNNN>S      rK   c           	         t           j                            |           }d}t          |d|           \  }}|                    |df          }t          j        |df          }t          j        |||fd	          }t          dd
dddd|           }|                    ||           t          dd
dddd|           }|                    ||           t          |j
        |j
        d           d S )NrN   r   rD  rl   r  r2   r9   r1   r4   r   r+   Fr  r  r   rP   r   rR   r   r   ru   r/   g333333?r  )r7   r   r   r   normalr?   r   r   r:   r   r   )	r   r   rD   rB   rC   X_noise
X_constantlr_liblinearlr_sagas	            rI   test_logreg_l1r  ,  s)    )

 2
3
3CI9K  DAq jjy!nj--G	1~...J
7J/a888A%
'  L Q 
'  G KK1GM<#5C@@@@@@rK   c           	         t           j                            |           }d}t          |d|           \  }}|                    d|df          }t          j        |df          }t          j        |||fd	
          }d||d	k     <    ||          }t          d	ddddd|           }|                    ||           t          d	ddddd|           }	|	                    ||           t          |	j
        |j
                   t          |j
        ddd f         t          j        d                     t          |	j
        ddd f         t          j        d                     t          d	ddddd|           }
|
                    |                                |           t          |	j
        |
j
                   d S )Nr  r   rD  rZ   rl   )r"   r  r2   r  r1   r4   r   r   r+   Fr  r  )r   rP   r   rR   r   r   ru   r/   r  r   )r7   r   r   r   r  r  r   r   r:   r   r   toarray)r   rL   r   rD   rB   rC   r  r  r  r  lr_saga_denses              rI   test_logreg_l1_sparse_datar  Q  s   
 )

 2
3
3CI9K  DAq jjs)Qj88GA///J
7J/a888AAa!eHaA%
'  L Q 
'  G KK1gm\-?@@@ l0BCC8"(1++FFFgmArssF3RXa[[AAA '
'  M aiikk1%%%gm]-@AAAAArK   c                 &   t          dd|           \  }}t          d| dd          }t          ddg|fd	d
d|}|                    ||           t	          dd|d|}|                    ||           t          |j        |j                   d S )NrN   r   rD  r/   r  r  r  r   TF)ro   rp   refitrs   rP   r   rj   )r   rv  r   r:   r   r   r   )r   r   rB   rC   common_paramsr  rx   s          rI   !test_logistic_regression_cv_refitr    s     "3E  DAq '	  M ! 5+#	 
  E 
IIaOOO		FcH	F	F	F	FBFF1aLLLek2844444rK   c                    t          dd| dd          \  }}t                      }|                    ||           t          ||                    |                    }t          t                                }|                    ||           t          ||                    |                    }||k    sJ t          ||                    |                    }t          ||                    |                    }||k    sJ d S )Nr|   r   rl   )rD   r   ru   rF   r&  )r   r   r:   r   r=   r   _predict_proba_lr)r   rB   rC   rT  clf_multi_lossrf  clf_ovr_lossclf_wrong_losss           rI   %test_logreg_predict_proba_multinomialr    s   '  DAq #$$IMM!Qa!8!8!;!;<<N!"4"6"677GKK1Aw44Q7788L.(((( a!8!8!;!;<<Na!<!<Q!?!?@@NN******rK   r   r   zsolver, message))r,   zAnewton-cg failed to converge.* Increase the number of iterations.)r+   z@Liblinear failed to converge, increase the number of iterations.)r.   ?The max_iter was reached which means the coef_ did not converge)r/   r  )r*   lbfgs failed to converge)r-   z6Newton solver did not converge after [0-9]* iterationsc                    t           j        t           j                                        }}d||dk    <   |dk    r|dk    rt	          j        d           t          |d| |          }t	          j        t          |          5  |	                    ||           d d d            n# 1 swxY w Y   |j
        d         |k    sJ d S )	Nr   r2   r-   r1   z/solver newton-cholesky might converge very fastgV瞯<)r   r   ru   r   r   )r   r   r   r  r   skipr   r   r   r:   n_iter_)r   r   r   r   rB   y_binrx   s          rI   test_max_iterr    s   ( y$+**,,uAE%1*"""x!||EFFF	'	
 
 
B 
(	8	8	8  
q%               :a=H$$$$$$s   B%%B),B)c           	         t           j        t           j        }}| dk    rt          |          }t	          j        |          j        d         }|dk    sJ |                                }d||dk    <   d}d}d}t          dd| d	
          }	|		                    ||           |	j
        j        dk    sJ t          d| |d|d	|          }
|
	                    ||           |r|
j
        j        d|||fk    sJ n|
j
        j        |||fk    sJ | dv rd S |		                    ||           |	j
        j        dk    sJ |
	                    ||           |r|
j
        j        d|||fk    sJ d S |
j
        j        |||fk    sJ d S )Nr*   r   rl   r2   rm   r1   r   r   rP  )r   rP   r   ru   r   r  )r   r   ro   rp   rr   ru   rs   r   )r   r   r   r"   r7   r8   r9   r  r   r:   r  r   )r   rs   rB   rC   rF   r  r  	n_cv_foldr  rA   clf_cvs              rI   test_n_iterr#    s    9dkqA!HH	!"1%I>>>> FFHHEE%1*DIK V"
M
M
MCGGAu;$$$$!3  F JJq% F~#9dK'HHHHHH~#	;'EEEEE  GGAqMMM;$$$$
JJq! F~#9dK'HHHHHHH~#	;'EEEEEEErK   r*  )TFc                    t           j        t           j        }}t          d||| |          }t	          t
                    5  |                    ||           |j        }d|_        |                    ||           d d d            n# 1 swxY w Y   t          j
        t          j        ||j        z
                      }d| d|d|}	|rd|k    s
J |	            d S |dk    s
J |	            d S )	Nrt  )r   r*  r   ru   rR   r  r1   z Warm starting issue with solver zwith fit_intercept=z and warm_start=       @)r   r   r   r   r&   r   r:   r   r   r7   r>   abs)
r   r   r*  rR   rB   rC   rA   coef_1cum_diffr   s
             rI   test_warm_startr)  #  sW    9dkqA
'#  C 
"4	5	5	5  11               vbfVci/0011H	36 	3 	3	3 	3%/	3 	3   #X~~~s~~~~~#~~~s~~~~~s   ;B		BBrP   c                 0   t           j        t           j        }}t          |d|||           }t	          t
                    5  |                    ||           ddd           n# 1 swxY w Y   t          |dd|||           }t	          t
                    5  |                    ||           |                    ||           ddd           n# 1 swxY w Y   t          |j        |j                   |rt          |j	        |j	                   dS dS )zITest that 2 steps at once are the same as 2 single steps with warm start.r2   )r   r   rR   rP   ru   r  Nr1   T)r   r   r*  rR   rP   ru   )
r   r   r   r   r&   r   r:   r   r   r   )r   r   rR   rP   rB   rC   r  r  s           rI   test_warm_start_newton_solverr+  D  s   
 9dkqA#
'  D 
"4	5	5	5  A               #
'  D 
"4	5	5	5  AA               DJ
+++ :99999: :s$   A%%A),A)-CCCc                    t                      }|j        |j        }}t          j        |gdz            }t          j        |gdz            }||dk             }||dk             dz  dz
  }t          dd|           \  }}	 ||          }||f||	ffD ]\  }}|j        d         }
t          j        ddd          D ]}t          d	|
|z  z  |d
dd| d          }t          d	|
|z  z  |ddd| d          }|	                    ||           |	                    ||           t          |j        |j        d           d S )Nrl   r1   r2   r  r   rD  r   r0   r   r/   rN  Fr   )rP   r   r   r   rR   ru   r   r+   )r   r   r   r7   r   r   r9   r   r   r:   r   r   )r   rL   r   r   rB   rC   X_binr  X_sparsey_sparserD   alphar/   r+   s                 rI   test_saga_vs_liblinearr1  f  s    ;;D9dkqA
sQwA
sQwAa1fIEa1fIMAE,2D  Hh }X&&H(H!56 F F1GAJ	[Q** 	F 	FE%U*+!#/  D +U*+!"#/  I HHQNNNMM!Q%dj)/1EEEE1	FF FrK   )r+   r,   r-   r/   c                    | dk    rt           j        nt           j        }t          j        t                                        t           j                  }t          j        t                                        t           j                  }t          j        t                                        t           j                  }t          j        t                                        t           j                  } |t          t           j                  } |t          t           j                  }	d}
t          | d|
|          }t          |          }|	                    ||           |j
        j        |k    sJ t          |          }|	                    ||           |j
        j        |k    sJ t          |          }|	                    ||           |j
        j        t           j        k    sJ t          |          }|	                    |	|           |j
        j        t           j        k    sJ d|
z  }t          j        dk    r	t          rd}t          |j
        |j
                            t           j                  |	           | d
k    r|rd}t          |j
        |j
        |	           t          |j
        |j
        |	           d S )Nr+   r   gMb@?rP  )r   ru   r   rR   gQ@ntr   r  r/   rZ   )r7   r   float32r   rB   r  rS   r   r   r:   r   r   osnamer'   r   )r   rR   rL   
out32_typeX_32y_32X_64y_64X_sparse_32X_sparse_64r  lr_templlr_32lr_32_sparselr_64lr_64_sparser   s                    rI   test_dtype_matchrC    sb     &44"*J8A;;bj))D8B<<rz**D8A;;bj))D8B<<rz**D-444K-444KJ!#	  H (OOE	IIdD;
**** ??L[$'''#z1111 (OOE	IIdD;
**** ??L[$'''#rz1111 j D	w$9 EK!3!3BJ!?!?dKKKKM EK!3$????EK!3$??????rK   c                 |   t           j                            |           }t          j        |                    dd          ddgz   |                    dd          f          }t          j        dgdz  dgdz  z             }t          ddd|           }t          dd	d|           }t          ||                    ||          	                    |                    }t          d
          D ]}|                    ||           t          ||	                    |                    }t          ||d           d S )NrN   r2   r1   r0   r.   Fr   )r   r*  r   ru   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_LRrI    s>    )

 2
3
3C
		#q))QF2CIIc14E4EFGGA
!sbTCZ'((A!D?Q  H 4>P  E QQ 2 2 @ @ C CDDM1XX  		!Q!U003344JM:D999999rK   c           	         t          |           \  }}d}t                      }dD ]G}t          ||d| dd          }|                    ||           |                    |j                   H|\  }}}	t          j        ||dd	          rJ t          j        ||	dd	          rJ t          j        |	|dd	          rJ d S )
Nrt   r%  )r\   r1   r   r/   r   rN  )rP   r   r   ru   r   r   r   r   )r   r  r   r:   appendr   r7   allclose)
r   rB   rC   rP   coeffsr   rx   elastic_net_coeffs	l1_coeffs	l2_coeffss
             rI   test_elastic_net_coeffsrQ    s     ,>???DAqAVVF 
  
 +
 
 
 	q!bh/5,	9 {-yqtLLLLLL{-yqtLLLLLL{9iadCCCCCCCCrK   z1ignore:.*'penalty' was deprecated.*:FutureWarning)r   rZ   r1   r|   rN   r       .Azpenalty, l1_ratio)l1r1   )r(  r   c                 
   t          |           \  }}t          d||d| d          }t          ||d| d          }|                    ||           |                    ||           t          |j        |j                   d S )Nrt   r   r/   r   )r   rP   r   r   ru   r   )r   rP   r   ru   r   )r   r   r:   r   r   )r   rP   r   r   rB   rC   lr_enetlr_expecteds           rI   "test_elastic_net_l1_l2_equivalencerW    s     ,>???DAq 
'  G %1V:LRV  K KK1OOAqgm[->?????rK   )r   r1   rN   rR  c                 $   t          dd          \  }}t          ||d          \  }}}}dt          j        ddd          i}t	          d| ddd	
          }t          ||d          }	t	          d| ddd	
          }
t	          d| ddd	
          }|	|
|fD ]}|                    ||           |	                    ||          |
                    ||          k    sJ |	                    ||          |                    ||          k    sJ d S )NrN  r   rt   r   r1   r   r\   r/   r   )r   rP   r   ru   r   T)r  )r   r   r7   linspacer   r   r:   rd   )rP   rB   rC   X_trainX_testy_trainy_test
param_gridenet_clfgsl1_clfl2_clfrA   s                rI   test_elastic_net_vs_l1_l2rc  (  sW   
 s333DAq'711'M'M'M$GVWfbk!Q223J!
  H 
h
$	7	7	7BaQD  F  aQD  F FF# " "!!!!88FF##v||FF'C'CCCCC88FF##v||FF'C'CCCCCCCrK   r   r2   rm   )rZ   r\   ?c           	      J    t          ddddddd          \  t                    t           ddd	          }t          ddd d
          }|                               |                                fd} ||           ||          k     sJ d S )Nr   r2   r   r|   r   rD   rF   r   r&  r  r  ru   r/   F)r   rP   r   ru   rR   )r   r   ru   rP   rR   c                     | j                                         }t          |                                         z  }|t	          j        t	          j        |                    z  z  }|dz
  dz  t	          j        ||          z  z  }|S )Nr   r\   )r   r   r   r=   r7   r>   r&  r	  )rx   r  objrP   rB   r   rC   s      rI   enet_objectivezEtest_LogisticRegression_elastic_net_objective.<locals>.enet_objectivej  s    x~~(1b..q11222x"&....h#%tT(:(:::
rK   )r   r"   r   r:   )rP   r   rU  lr_l2ri  rB   rC   s   ``   @@rI   -test_LogisticRegression_elastic_net_objectiverk  J  s      DAq 	aA 
  G 6Qe  E KK1	IIaOOO        >'""^^E%:%:::::::rK   rF   )r2   rl   c           	         t          d| dd          \  }}t          d          }t          j        ddd          }t          j        ddd          }t          ||d	|dd
d          }|                    ||           ||d}t          d	dd
          }t          |||          }	|	                    ||           |	j	        d         |j
        k    sJ |	j	        d         |j        k    sJ d S )NrN   rl   r   )rD   rF   r&  ru   r   r1   r   rm   r/   r   F)rp   ro   r   rr   ru   r   rs   r  )r   ru   r   rr   r   rP   )r   r   r7   rY  r   r   r:   r   r   best_params_r  rv   )
rF   rB   rC   rr   rp   ro   lrcvr^  rx   r`  s
             rI   2test_LogisticRegressionCV_GridSearchCV_elastic_netrp  u  s$   
 	  DAq 
		BAq!$$I	RA		B#  D 	HHQNNNy11J	
 
 
B
 
b*	,	,	,BFF1aLLL?:&$.8888?347******rK   rn   c           	         d}t          d|||d          \  }}t          j        ddd          }t          || ddd	d
d          }|                    ||           |dk    rdn|}|j        j        |fk    sJ |j        j        |fk    sJ |j        j        ||fk    sJ t          |j        |j        d                    t          |           dk    r"t          |j        |j        d                    d S d S )Nr   r   r   rD   rF   r&  r   ru   r   rm   rl   r/   r   FT)ro   rp   r   ru   r   r  rs   r2   r1   )r   r7   r   r   r:   rv   r9   r  r   r   r6   )rp   rF   r   rB   rC   ro   ro  s          rI   "test_LogisticRegressionCV_no_refitrs    s,   
 J  DAq 
RA		B"  D 	HHQNNN!^^I7=YL((((>I<////:	:66666DGTWQZ(((
9~~q(9::::: rK   c           	         d}t          d| | |d          \  }}t          j        ddd          }t          j        ddd	          }d	}t	          ||d
|ddd          }|                    ||           t          j        t          |j        	                                                    }| d	k    rdn| } |j
        | ||j        |j        |dz   fk    sJ t          j        t          |j        	                                                    }	|	j
        | ||j        |j        fk    sJ |j        j
        d||j        |j        fk    sJ t          |j        |j        d                    t          |j        |j        d                    d S )Nr   r   r   rr  r   rm   rl   r1   r2   r/   r   T)ro   rp   r   rr   ru   r   rs   )r   r7   r   rY  r   r:   r  r  r  r  r9   r  r  r  r   rv   r  )
rF   r   rB   rC   ro   rp   rj  ro  r  r^   s
             rI   5test_LogisticRegressionCV_elasticnet_attribute_shapesru    s   
 J  DAq 
RA		BAq!$$IG"  D 	HHQNNN*T$"3":":"<"<==>>K!^^I
Q!     ZT\00223344F<IwHHHHH<!Wbgy~!FFFFF DGTWQZ(((DNDN1$566666rK   c            	         t           j        t           j        }} t          ddd                              | |          }t          d          }t          |                    | |                    }ddgddgdd	gfD ]\  }}||         d         }t          |j	        |         dd
                              | |         ||                   }t          j        |          D ]f}	t          |j        |	         ||ddf         |j        |	         d           t          |j        |	         ||df         |j        |	         d           gdS )zETest that LogisticRegressionCV produces the correct result on a fold.r-   r   T)r   r   rs   r   r   r1   rl   r%  r   Nr0   r   r   )r   r   r   r   r:   r   r  r^  r   r  r7   r8   r   r  r   r   )
rB   rC   ro  rr   foldsidx_foldidx_Ctrain_fold_0rx   cls
             rI   "test_LogisticRegressionCV_on_foldsr|    s   9dkqA d$  	c!Qii 	
 
		B!Q  E FQFQF3  %Xq)huo$
 
 
 #aoq
/
/	 	 )A,, 	 	B!"%hss&:;    !"%hr&9:b!    	 rK   c                      d} t          j        t          |           5  t          ddd                              t
          t                     d d d            d S # 1 swxY w Y   d S )NzQl1_ratio parameter is only used when penalty is 'elasticnet'\. Got \(penalty=l1\)r   rS  r/   r\   )r   r   r   )r   r   UserWarningr   r:   rB   rS   )r   s    rI   test_l1_ratio_non_elasticnetr    s    	.  
k	-	-	- Q Q4EEEII!RPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   1AA #A c           
      P   d}t          |ddddd|           \  }}t          |          }t          d|| dd dd	|z  |z  d
          }t          || ddd|d          }|                    ||           |                    ||           t          |j        |j        d           d S )NrN  r2   r   r   rf  r   Fr  r   r   )r   r   ru   rR   r   r   r0  r  r   r   r/   )r   ru   rR   r   r   rP   r   gffffff?r  )r   r"   r   r   r:   r   r   )r   rP   r   rD   rB   rC   sgdlogs           rI   test_elastic_net_versus_sgdr  !  s     I'  DAq 	aA
'Ag	!	 	 	C '
  C GGAqMMMGGAqMMMCIsyt444444rK   c            	      t   t          ddddddd          \  } }g d}t          | |t          j        |          d|d	d
          \  }}}t	          j        t                    5  t          |d         |d         d           d d d            n# 1 swxY w Y   t	          j        t                    5  t          |d         |d         d           d d d            n# 1 swxY w Y   t	          j        t                    5  t          |d         |d         d           d d d            d S # 1 swxY w Y   d S )Nr   rl   r2   r   r1   rD   rF   r&  r  n_clusters_per_classru   r   )r   r1   r  rS  r/   )rE   r   ro   r   ru   r  )r   r   r7   r8   r   r   r   r   )rB   rC   ro   r   r   s        rI   /test_logistic_regression_path_coefs_multinomialr  K  sB      DAq 
		B+			!  KE1a 
~	&	& A A!%(E!Ha@@@@A A A A A A A A A A A A A A A	~	&	& A A!%(E!Ha@@@@A A A A A A A A A A A A A A A	~	&	& A A!%(E!Ha@@@@A A A A A A A A A A A A A A A A A As6   #BBB2CC!$C!D--D14D1c            	      t   t          ddddddd          \  } }t          j        |          }t          j        d          }t	          | |||d           d	t          j        t          |j                             d
}t          j
        t          |          5  t	          | |||dd           d d d            n# 1 swxY w Y   t          ddddddd          \  } }t          j        |          }t          j        d          }t	          | |||d           t          j        d          }t	          | |||d           d	t          j        t          |j                             d}t          j
        t          |          5  t	          | |||dd           d d d            d S # 1 swxY w Y   d S )Nr   rl   r2   r   r1   r  )rl   rl   )rE   r  ru   z Initialization coef is of shape z.+expected.+\(3, 2\)r   F)rE   r  ru   rR   )r1   rl   z.+expected.+\(2,\) or \(1, 2\))r   r7   r8   r?   r   reescapestrr9   r   r   r   )rB   rC   rE   r  r   s        rI   (test_logistic_regression_path_init_coefsr  k  s     DAq illG 76??D		   	 BIc$*oo,F,F 	  	  	   
z	-	-	- 
 
!q'1E	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

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

    Further details can be found in [2].

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

    .. [2] :arxiv:`Noah Simon and Jerome Friedman and Trevor Hastie. (2013)
           "A Blockwise Descent Algorithm for Group-penalized Multiresponse and
           Multinomial Regression". <1311.6529>`
    )rP   r   rR   ru   r   r4   r  r  gdy=)r&  N)r   r   r   r   r6   r   r"   r:   r   r   r>   r   r   r  )r   r   rR   r   rA   X_scaleds         rI   (test_multinomial_identifiability_on_irisr  8	  s    2 t{+F

di..#'	  C TYHGGHf CIMMqM))159999 I~!!q!))V]1%-H-H-HHHHHI IHHrK   r   g      $@c                 "   t          d          \  }}t          |          }t          j        |          }d|d |dz  <   |                                }t          | |d          }|                    |||           t          ||           d S )NT
return_X_yr2   r   )ru   r;  r   r  )r   r6   r7   r?   r  r   r:   r   )r   r;  rB   rC   r   WexpectedrA   s           rI   test_sample_weight_not_modifiedr  c	  s    %%%DAqQJ

AA
avvxxH
'!  C
 GGAqG"""Ha     rK   c           	      >    |t          j        dd|                    }dD ]4}t          ||t          ||                              d                     5t
          j                            |          }|                    d|j	        d                   }| d	v r\d
}t          j        t          |          5  t          |                               ||           d d d            d S # 1 swxY w Y   d S t          |                               ||           d S )Nr   r|   rt   )indicesindptrint64r2   r   r  )r+   r.   r/   z0Only sparse matrices with 32-bit integer indicesr   r   )r   randsetattrr   r  r7   r   r   r  r9   r   r   r   r   r:   )r   r   rL   rB   attrr   rC   r   s           rI   test_large_sparse_matrixr  u	  sf    	fk"b7IJJJKKA% ; ;4D))0099::::
)

 2
3
3CAAGAJ''A---@]:S111 	8 	8f---11!Q777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	&)))--a33333s   :%C,,C03C0c                  :   t          j        ddg                              dd          } t          j        ddg          }d}t          j        t
          |          5  t          d                              | |           d d d            d S # 1 swxY w Y   d S )	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  	  s    
 	!U$$R++A
!QA	) 
 
z	-	-	- 9 9+...221a8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   %BBBc                      t          j        g dg          j        } t          j        g d          }| j        d         dk    sJ t	          dd                              | |           d S )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  	  sr     	>>>?@@BA
)))**A71:????k>>>BB1aHHHHHrK   c           	         t           j                                        }t           j                                        }||dk             }||dk             }t	                                          |          }t          ||d          dz  }t          d|dddd	| 
          }t          j	                    5  t          j
        dt                     |                    ||           d d d            d S # 1 swxY w Y   d S )Nr2   r  )r  gnt@r1   r+   r   rN   r   )r   rP   r   r   r   r   ru   error)r   r   r  r   r!   r  r#   r   r  r  r  r   r:   )r   rB   rC   X_preprP   rA   s         rI   test_liblinear_not_stuckr  	  s8   	AA	!q&	A	!q&	A++A..FAE"""_4A

!'  C 
	 	"	"  g'9:::                 s   41C22C69C6enable_metadata_routingc                    t           j                            |           }t          d|          \  }}t          d|          \  }}t          j        t          |                    }d|dt          |          dz  <   d|i}t          d          }t          |dd	          }	 |	j        ||fi | t          d          }
|
	                    d
           t          |
dd	          } |j        ||fi | t          j
        |	j        d         |j        d                   rJ  |	j        ||fi |} |j        ||fi |}t          j
        ||          rJ dS )zTest that `sample_weight` is correctly passed to the scorer in
    `LogisticRegressionCV.fit` and `LogisticRegressionCV.score` by
    checking the difference in scores with the case when `sample_weight`
    is not requested.
    r  r   r2   Nrc   r  gTqs*>T)rq   r   rs   r  r1   )r7   r   r   r   r?   r6   r   r   r:   set_score_requestrL  r  rd   )r   r   rB   rC   X_ty_trc   kwargsscorer1lr_cv1scorer2lr_cv2score_1score_2s                 rI   8test_lr_cv_scores_differ_when_sample_weight_is_requestedr  	  s    )

 2
3
3CC@@@DAq"TDDDHCGCFFOOM#$M-CFFaK- }-F$$G!"  F
 FJq!v$$GD111!"  F
 FJq!v{6>!,fnQ.?@@@@@fl3..v..Gfl3..v..G{7G,,,,,,,rK   c                  <   t           j                            d          } t          d|           \  }}t          d|           \  }}t          j        t          |                    }d|dt          |          dz  <   d|i}t          d          5  t          d          }t          |d	          } |j	        ||fi |  |j
        ||fi |}	ddd           n# 1 swxY w Y   t          d
          5  t          d          }
|
                    d
           t          |
d	          } |j	        ||fi |  |j
        ||fi |}ddd           n# 1 swxY w Y   t          |j        d         |j        d                    t          |	|           dS )zTest that `sample_weight` is passed correctly to the scorer in
    `LogisticRegressionCV.fit` and `LogisticRegressionCV.score` even
    when `enable_metadata_routing=False`
    r|   r   r2   Nrc   Fr  r  )rq   rs   Tr  r1   )r7   r   r   r   r?   r6   r	   r   r   r:   rd   r  r   r  )r   rB   rC   r  r  rc   r  r  r  r  r  r  r  s                rI   3test_lr_cv_scores_without_enabling_metadata_routingr  	  sU   
 )


#
#C#>>>DAq"RcBBBHCGCFFOOM#$M-CFFaK- }-F		6	6	6 3 3Z((%"'
 
 
 	
1a""6"""&,sC226223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
	5	5	5 3 3Z((!!!555%"'
 
 
 	
1a""6"""&,sC226223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 FN1%v~a'8999GW%%%%%s%   ?CC#&C#:AEE"Ec                    t          d          \  }}|dk    }t          t                    5  t          | d                              ||          }d d d            n# 1 swxY w Y   | dvr|j        dk    sJ | dk    rt          |j        t          j	        |j                             t          |
                    |          t          j        |j        d         |j        	                     t          |                    |          t          j        |j        d         dfd
	                     |                    ||          dk     sJ d S )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=   rd   )r   rB   rC   rA   s       rI   test_zero_max_iterr  
  s    %%%DAq	QA	"4	5	5	5 F F ;;;??1EEF F F F F F F F F F F F F F F_$${a	2=#;#;<<<!!!$$G!'!*@@@	
 	
 	
 	a  G171:q/c:::	
 	
 	
 99Q??S      s   &A!!A%(A%c                     t          dd          \  } }t          d          }d}t          d          5  dd	i}t          j        t
          |
          5   |j        | |fi | ddd           n# 1 swxY w Y   t          j        t
          |
          5   |j        | |fi | ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zTest that the right error message is raised when metadata params
    are passed while not supported when `enable_metadata_routing=False`.r|   r   r   FrE  z1is only supported if enable_metadata_routing=Truer  extra_paramr   r   N)r   r   r	   r   r   r   r:   rd   )rB   rC   r  r   r2  s        rI   5test_passing_params_without_enabling_metadata_routingr  "
  s    !<<<DAq u===E
=C		6	6	6 ( (%]:S111 	& 	&EIa%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ]:S111 	( 	(EK1'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sY    CA3'C3A7	7C:A7	;CB5)C5B9	9C<B9	=CCCc                 L   t          dd|           \  }}d}t          d|          }t          j                    5  t          j        d           |                    ||           |j        d         }d d d            n# 1 swxY w Y   |d	k    sJ t          d
|          }t          t                    5  |                    ||           |j        d         }d d d            n# 1 swxY w Y   ||k    sJ t          d
||d	z
            }t          t                    5  t          j
        t          d          5  |                    ||           |j        d         }	d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |	|j        d	z
  k    sJ d S )Nr|   r   rD  gꌠ9Y>)Fr*   )r   rP   r  r   r1   r-   r  )r   rP   r   r  r   )r   r   r  r  r  r:   r  r&   r   r   r   r   r   )
r   rB   rC   rP   lr_lbfgsn_iter_lbfgslr_nc	n_iter_nclr_nc_limitedn_iter_nc_limiteds
             rI   &test_newton_cholesky_fallback_to_lbfgsr  3
  s    2D  DAq 	A "A666H		 	"	" + +g&&&Q'*+ + + + + + + + + + + + + + +
 1 &71===E	-	0	0	0 % %		!QM!$	% % % % % % % % % % % % % % % $$$$ ' Aq0@  M 
-	0	0	0 9 9\,4NOOO 	9 	9a### - 5a 8	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	99 9 9 9 9 9 9 9 9 9 9 9 9 9 9
  6 :::::::sY   8B  BB9$C))C-0C-&F	$E2&F	2E6	6F	9E6	:F		FF	Estimatorc                     d}t          j        t          |          5   | d                              t          j        t          j                   ddd           dS # 1 swxY w Y   dS )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  ^
  s     NC	z	-	-	- B B	%%%))$)T[AAAB B B B B B B B B B B B B B B B B Bs   5A  A$'A$z7ignore:.*default.*use_legacy_attributes.*:FutureWarningestc                     t          ddd          \  }} | d          }d}t          j        t          |          5  |                    ||           d	d	d	           d	S # 1 swxY w Y   d	S )
z?Check that penalty in LogisticRegression and *CV is deprecated.r2   r   r%  rF   rD   r&  r(  )r   z'penalty' was deprecatedr   N)r   r   r   FutureWarningr:   )r  rB   rC   rx   r   s        rI   test_penalty_deprecatedr  h
  s     bJJJDAq	T			B
$C	m3	/	/	/  
q!                 s   A##A'*A'c                      t          ddd          \  } }t                      }d}t          j        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nrl   r  r%  r  z@The default value of use_legacy_attributes will change from Truer   )r   r   r   r   r  r:   rB   rC   rx   r   s       rI   :test_logisticregressioncv_warns_with_use_legacy_attributesr  t
  s    bJJJDAq			B
LC	m3	/	/	/  
q!                 s   A%%A),A)z3ignore:l1_ratios parameter is only us.*:UserWarningc                  P   t          ddd          \  } }t          d          }d}t          j        t          |          5  |                    | |           ddd           n# 1 swxY w Y   t                      }d	}t          j        t          |          5  |                    | |           ddd           n# 1 swxY w Y   t          d
          }d}t          j        t          |          5  |                    | |           ddd           dS # 1 swxY w Y   dS )z=Check that l1_ratio=None in LogisticRegression is deprecated.r2   r   r%  r  N)r   z'l1_ratio=None' was deprecatedr   z+The default value for l1_ratios will change)rp   z'l1_ratios=None' was deprecated)r   r   r   r   r  r:   r   r  s       rI   test_l1_ratio_None_deprecatedr  }
  s    bJJJDAq	T	*	*	*B
*C	m3	/	/	/  
q!               
		B
7C	m3	/	/	/  
q!               
	-	-	-B
+C	m3	/	/	/  
q!                 s6   A&&A*-A*B??CC7DD"Dc                      t          ddd          \  } }t          d          }d}t          j        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S )	Nrl   r  r%  r  r1   )r)  z'n_jobs' has no effectr   )r   r   r   r   r  r:   r  s       rI   )test_logisticregression_warns_with_n_jobsr  
  s    bJJJDAq	1	%	%	%B
"C	m3	/	/	/  
q!                 s   A''A+.A+zignore:'penalty' was deprecated)rS  r   )r(  r   c                     t          d          \  }}t          d| |          }d|  d| }t          j        t          |          5  |                    ||           ddd           dS # 1 swxY w Y   dS )	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   rx   r   s         rI   $test_lr_penalty_l1ratio_incompatibler  
  s     ,,,DAq	67X	N	N	NB
L'
L
L(
L
LC	k	-	-	-  
q!                 s   	A--A14A1)rx  r5  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
pytestmarkrw  rB   rS   r}   r   rJ   parametrizerU   rz   r~   r6   r   r   r   r   r   r   r   r   r   r   r   thread_unsafer  r  r6  rB  rH  rn  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-  r  r#  r=  r>  r)  r   r+  r1  rC  rI  rQ  rW  rc  r   rk  rp  rY  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  rj   rK   rI   <module>r     sv       				 				               
       + + + + + + + + " " " " " " - - - - - -       Q Q Q Q Q Q Q Q Q Q 1 1 1 1 1 1 X X X X X X X X X X        P O O O O O O O O O O O                3 2 2 2 2 2 E E E E E E E E E E             7 7 7 7 7 7 7 7 2 2 2 2 2 2 I I I I I I I I I I[''< 
 [''< 
 P!Wq!fq!fYYYYy{{8 8 8$ .99
U 
U :9
U&" &" &"R .99F F :9F
 	SS^^GcJJJSS^^K@@@c$)nn	
 	
 	

 	c$)nn	
 	
 	

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