
    0PhcK                       d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlm	Z	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 d dl m!Z" d dl m#Z$ d dl m%Z%m&Z& d dl'm(Z(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@mAZA ejB        C                    d          ZD ee"d           Z! ee$d           Z#dZEdd gd dgddggZFg dZGg dZH e            ZId ZJejB        K                    deA          d              ZLd! ZMe=d"             ZNejB        K                    deA          d#             ZOejB        C                    d$          ejB        K                    d% e! ePeIjQ                  d&d'(           e! ePeIjQ                  d)*           e! ePeIjQ                  d+*           e! ePeIjQ                  d,d-d'd./           e! ePeIjQ                  d0d-d'd./           e! ePeIjQ                  d1*          g          d2                         ZRejB        C                    d$          ejB        K                    d3e!e#g          d4                         ZSejB        K                    d3e!e#g          d5             ZTejB        C                    d$          ejB        K                    d6g d7          d8                         ZUejB        C                    d$          d9             ZVejB        K                    d:e@          d;             ZWd< ZXd= ZYd> ZZd? Z[d@ Z\dA Z]dB Z^ejB        K                    dCdDdEgfdFdGdHgfdIdGdHgfdJdEgfdKdGdHgfg          dL             Z_dM Z`ejB        K                    deA          dN             ZaejB        C                    d$          dO             ZbdP ZcejB        C                    d$          ejB        K                    dQdRdSg          dT                         ZdejB        K                    dQdRdSg          dU             ZeejB        K                    dVdWdXdYdWdXdZd[g          ejB        K                    d\dVd]g          d^                         ZfejB        K                    d_d`          ejB        K                    d6d          da                         ZgejB        K                    d6db          dc             Zhdd Zide ZjejB        K                    ddf geAz             dg             Zkdh Zldi ZmejB        K                    deA          dj             ZnejB        K                    deA          dk             Zodl Zpdm ZqejB        K                    deA          dn             ZrejB        K                    dod.g          ejB        K                    dpdqdrg          ds                         Zsdt ZtejB        C                    d$          ejB        K                    du eju        ddv                    ejB        K                    dwd'dxg          ejB        K                    dyg dz          d{                                                 ZvejB        C                    d$          ejB        K                    d6eE          d|                         ZwejB        K                    d6 ex eyeE           eyd&d1g          z
                      ejB        K                    d}d~          ejB        K                    dQd~          d                                     ZzejB        K                    deA          d             Z{ejB        C                    d$          ejB        K                    dwd'dxg          ejB        K                    d6g d          ejB        K                    dQdRdSg          ejB        K                    deA          d                                                             Z|d Z}d Z~ejB        K                    dg d          ejB        K                    dddg          d                         ZejB        K                    dg d          d             ZejB        K                    d ej        ddd                    ejB        K                    dg d          d                         ZejB        K                    dd          d             ZejB        C                    d$          d             ZejB        C                    d$          ejB        K                    dpd          ejB        K                    dwd          d                                     ZejB        C                    d$          d             Zd ZejB        K                    d ej        ddd                    ejB        K                    dg d          d                         Zd ZejB        C                    d$          ejB        K                    d e!d d           e#d dddd          gd           ejB        K                    d6eE          d                                     ZejB        K                    d6 ex eyeE           eyd&g          z
                      d             ZejB        K                    ddqdRddddrdSddddrdRdddg          d             Zd ZejB        C                    d$          ejB        K                    d6g d          ejB        K                    dQdRdSg          d                                     ZejB        C                    d$          ejB        K                    dwg d          ejB        K                    d\dddd[d]g          d                                     ZejB        K                    d6eE          ejB        K                    deA          d                         Zd Zd Z edS          d             Zd ZejB        K                    d6eE          d             Zd Zd Zd ZdS )    N)partial)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal)sparse)LinAlgWarningsvd)config_context)HalfMultinomialLoss)clone)	load_irismake_classificationmake_low_rank_matrix)ConvergenceWarning)SGDClassifier)LogisticRegression)LogisticRegressionCV)_log_reg_scoring_path_logistic_regression_path)
get_scorerlog_loss)GridSearchCVLeaveOneGroupOutStratifiedKFoldcross_val_scoretrain_test_split)OneVsRestClassifier)LabelEncoderStandardScalerscale)l1_min_c)compute_class_weightshuffle)ignore_warningsskip_if_no_parallel)	_IS_32BITCOO_CONTAINERSCSR_CONTAINERSz6error::sklearn.exceptions.ConvergenceWarning:sklearn.*random_state)lbfgs	liblinear	newton-cgnewton-choleskysagsaga   )r   r3   r3   )   r3   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   r3   axisN)lennpuniqueshapefitpredictr   classes_predict_probar   sumonesargmax)clfXy	n_samplesclasses	n_classes	predictedprobabilitiess           h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/linear_model/tests/test_logistic.pycheck_predictionsrL   ?   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                 0   t          t          d          t          t                     t          t          d           | t                    t                     t          t          dd          t          t                     t          t          dd           | t                    t                     t          t          dd          t          t                     t          t          dd           | t                    t                     d S )Nr   r*   d   )Cr+   Ffit_interceptr+   )rL   r   rD   Y1rN   s    rK   test_predict_2_classesrV   Q   s     (a888!R@@@(a888--:J:JBOOO(3Q???BGGG(3Q???qAQAQSUVVV(u1MMMqRTUUUQ???qAQAQSU    rM   c                      G d d          }  |             }g d}d}t          |||          }t          d          \  }}|                    ||           |j        d         |d         k    sJ |j        |t          |          z  k    sJ d|_        |                    ||                    |                    }||j        d         k    sJ |j        dk    sJ d S )	Nc                       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    rK   __init__z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__init__c   s    DJ...DKKKrM   Nc                 t    | j         | j        t          | j                   z           }| xj        dz  c_        |S )Nr3   )r_   r^   r8   )r`   modelrD   rE   sample_weightscores         rK   __call__z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__call__g   s3    K
S-=-= =>EJJ!OJJLrM   N)__name__
__module____qualname__ra   rf    rM   rK   
MockScorerrY   b   s7        	/ 	/ 	/	 	 	 	 	 	rM   rl   )r3   r4         r4   )Csscoringcvr   r*   r3   )	r   r   r<   C_r^   r8   re   r=   r_   )rl   mock_scorerro   rq   lrrD   rE   custom_scores           rK   test_logistic_cv_mock_scorerrv   a   s           *,,K	B	
B	[R	@	@	@BA...DAqFF1aLLL 58r!u SWW,,,, K88Arzz!}}--L;-a00000!!!!!!rM   c                  4   t           j        j        \  } }t           j        t           j                 }t          dd          }d}t          j        t          |          5  |	                    t           j        |           d d d            d S # 1 swxY w Y   d S )Nr-   r4   )solvern_jobsz\'n_jobs' > 1 does not have any effect when 'solver' is set to 'liblinear'. Got 'n_jobs' = 2.match)
irisdatar;   target_namestargetr   pytestwarnsUserWarningr<   )rF   
n_featuresr   rt   warning_messages        rK   test_lr_liblinear_warningr      s     IOIzt{+F	;q	9	9	9B	 
 
k	9	9	9 " "
ty&!!!" " " " " " " " " " " " " " " " " "s   !BBBc                     t          t          d          t          t                     t          t          d           | t                    t                     d S )N
   rQ   )rL   r   rD   Y2rU   s    rK   test_predict_3_classesr      sN    (2...2666(2...a0@0@"EEEEErM   z5ignore:.*'multi_class' was deprecated.*:FutureWarningrC   r-   ovr)rQ   rx   multi_classr,   )rQ   rx   r.   r0   {Gz?*   )rQ   rx   tolr   r+   r1   r/   c                    t           j        j        \  }}t           j        t           j                 }| j        dk    rft          j                    5  t          j        dt                     | 
                    t           j        |           ddd           n# 1 swxY w Y   n | 
                    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 both multinomial and OvR solvers handle multiclass data correctly and
    give good accuracy score (>0.95) for the training data.
    r,   ignoreNffffff?r3   r6   )r|   r}   r;   r~   r   rx   warningscatch_warningssimplefilterr   r<   r   r9   r:   r>   r=   meanr?   r   r@   rA   rB   )rC   rF   r   r   predrJ   s         rK   test_predict_irisr      s   4 !IOIzt{+F
zW$&& 	' 	'!(,>???GGDIv&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 		6"""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))))))s   ;BBBLRc                    t           j        t           j        }}dD ]^}d| d} | |d          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   _dD ]^}d|z  } | |d	d
          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   _dD ]^}d|z  } | |dd
          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   _dD ]^}d| d} | |d          }t          j        t
          |          5  |                    ||           d d d            n# 1 swxY w Y   _| t          u r[d} | d d          }t          j        t
          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S d S )Nr-   zSolver z( does not support a multinomial backend.multinomial)rx   r   rz   )r,   r.   r/   r0   z/Solver %s supports only 'l2' or None penalties,l1r   )rx   penaltyr   r,   r.   r/   r0   r1   z1Solver %s supports only dual=False, got dual=TrueT)rx   dualr   z;Only 'saga' solver supports elasticnet penalty, got solver=.
elasticnet)rx   r   z6penalty=None is not supported for the liblinear solverr-   r   rx   )r|   r}   r   r   raises
ValueErrorr<   r   )r   rD   rE   rx   msgrt   s         rK   test_check_solver_optionr      s    9dkqA    HHHHRv=999]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 C  ?&HRvt???]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	J  AFJRvDe<<<]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	    UFUUURv|444]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 
FR[111]:S111 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  sZ   A..A2	5A2	,CC	C	D00D4	7D4	.FF	F	G44G8;G8c                     | dd          }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 )Nr   r1   r   z.*l1_ratio.*rz   r3   r4   rm   rn   r   )r   r   r   r<   r9   array)r   rc   s     rK   $test_elasticnet_l1_ratio_err_helpfulr      s     B|F333E	z	9	9	9 @ @		"(QFQF+,,bh1v.>.>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   AA99A= A=rx   r,   r.   r0   r1   c                    t           j        dk                        t          j                  }t          j        ddg          |         }t          | ddd          }|                    t           j        |           |j	        j
        dt           j        j
        d         fk    sJ |j        j
        d	k    sJ t          |                    t           j                  |           t          | ddd
          }|                    t           j        |           |j        t          j        |                    t           j                  d                   }t          j        ||k              dk    sJ d S )Nr   setosaz
not-setosar   r     )rx   r   r+   max_iterr3   r3   F)rx   r   r+   rS   r6   ?)r|   r   astyper9   intpr   r   r<   r}   coef_r;   
intercept_r   r=   r>   rB   predict_log_probar   )rx   r   rC   mlrr   s        rK   test_multinomial_binaryr      sJ    kAo%%bg..FXx.//7F
=rD  C GGDIv9?q$)/!"455555>4''''s{{49--v666
=rQV  C GGDIv<	#"7"7	"B"BKKKLD746>""S((((((rM   c                    t          |           \  }}t          ddd|           }|                    ||           |                    |          }|                    |          }t          j        |          t          j        |          t          j        |           z   z  }t
          j        d|z
  |f         }t          ||           d S )Nr*   r   r1   MbP?)r   rx   r   r+   r3   )	r   r   r<   decision_functionr?   r9   expc_r   )global_random_seedrD   rE   rC   decisionprobaexpected_proba_class_1expected_probas           rK   %test_multinomial_binary_probabilitiesr     s     ,>???DAq
!'	  C GGAqMMM$$Q''Ha  EVH--1A1ABFH9DUDU1UVU1557MMNN~.....rM   coo_containerc                    t           j        j        \  }}t           j        t           j                 }t          t           j                  }t          d                              ||          }|                    |          }|	                                 t          j        |j                  sJ |                    |          } | |          }|                    |          }	|                                 |                    |          }
t          ||           t          ||	           t          ||
           d S Nr   r*   )r|   r}   r;   r~   r   r!   r   r<   r   sparsifyr   issparser   densifyr   )r   rF   r   r   rD   rC   pred_d_dpred_s_dsp_datapred_s_spred_d_ss              rK   test_sparsifyr   .  s    !IOIzt{+FdiA
!
,
,
,
0
0F
;
;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1rM   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   r*   r2   )rm      )r9   randomRandomStaterandom_samplerA   r;   r   r   r   r   r<   rD   r=   )rngX_y_rC   y_wrongs        rK   test_inconsistent_inputr   G  s   
)


"
"C			7	#	#B	!		BBqE
!
,
,
,C "gG	z	"	"  7               
z	"	" < <B 1 1' : :;;;< < < < < < < < < < < < < < < < < <s$   B44B8;B8=D""D&)D&c                      t          d          } |                     t          t                     d| j        d d <   d| j        d d <   t          |                     t                    d           d S r   )r   r<   rD   rT   r   r   r   r   rC   s    rK   test_write_parametersr   [  sf    
!
,
,
,CGGArNNNCIaaaLCN111c33A66:::::rM   c                  (   t          j        t          t           j                  } t           j        | d<   t          d          }t          j        t                    5  |	                    | t                     d d d            d S # 1 swxY w Y   d S )Ndtyper   r3   r   r*   )r9   r   rD   float64nanr   r   r   r   r<   rT   )Xnanlogistics     rK   test_nanr   d  s     8ARZ(((DDJ!q111H	z	"	"  T2                 s   BBBc                     t           j                            d          } 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
|dd          \  }}}t          |          D ]e\  }}	t          |	d	d
|dd          }
|

                    ||           |
j                                        }t          |||         dd|z             fdD ]}dg}  |t                    |||d|dd          \  }}}t          |d         ddd|          }
|

                    ||           t          j        |
j                                        |
j        g          }t          ||d         dd|z             d S )Nr   rP   r4   r3   r2   rn   r   r0   r1   Fh㈵>  )ro   rS   r   rx   r   r+   )rQ   rS   r   rx   r+   r   zwith solver = %s)decimalerr_msg)r,   r.   r/   r-   r0   r1        @@ư>     @)ro   r   rx   intercept_scalingr+   )rQ   r   r   r+   rx   )r9   r   r   concatenaterandnlogspacer%   r   	enumerater   r<   r   ravelr   r   )r   rD   rE   ro   frx   coefs_irQ   rt   lr_coefs               rK   test_consistency_pathr   o  sS   
)


"
"C
		#q))QF2CIIc14E4EFGGA	
c	RD3JA	Q2		BA "  3qq233	
 	
 	
r1 bMM 	 	DAq##  B FF1aLLLhnn&&G%q16H66Q    	  X 
 
U3qq233%
 
 
r1  e%
 
 
 	q!."(.."2"2BM!BCC!U1Xq2Dv2M	
 	
 	
 	
 	
)
 
rM   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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   rP   r4   r3   r2   r           )ro   r   r   r+   verboselbfgs failed to convergez!Increase the number of iterationszscale the dataz%linear_model.html#logistic-regression)r9   r   r   r   r   r   r   r   r   r8   messageargs)r   rD   rE   ro   recordwarn_msgs         rK   .test_logistic_regression_path_convergence_failr    so   
)


"
"C
		#q))QF2CIIc14E4EFGGA	
c	RD3JA
B
 
(	)	) 
V!qRS11a	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 v;;!ay %a(H%1111.(::::x''''2h>>>>>>s   B//B36B3c                     t          dd          \  } }t          dddd          }|                    | |           t          dddd          }|                    | |           t          d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   r   rF   r+   Tr   r-   )r+   r   r   rx      z)Arrays are not almost equal to 6 decimalsrz   )r   r   r<   r   r   r   r   AssertionError)rD   rE   lr1lr2lr3r   s         rK    test_liblinear_dual_random_stater    sY   !<<<DAq
	  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   C//C36C3c                  2   d\  } }t           j                            d          }|                    | |          }t          j        |                    d|                    |          z                      }||                                z  }||                                z  }t          dgddd          }|	                    ||           t          ddd	          }|	                    ||           t          |j        |j                   t          |j        j        d
|f           t          |j        dd
g           t!          |j                  dk    sJ t          j        t%          |j                                                            }t          |j        d
dd
|f           t          |j        j        d           t          j        t%          |j                                                            }t          |j        d           d S )N)2   r   r   r         ?Fr-   rm   )ro   rS   rx   rq   )rQ   rS   rx   r3   r2   r4   r   )r3   rm   r3   )r9   r   r   r   signdotr   stdr   r<   r   r   r   r   r;   r>   r8   asarraylistcoefs_paths_valuesCs_scores_)	rF   r   r   X_refrE   lr_cvrt   coefs_pathsr_   s	            rK   test_logistic_cvr    s   !Iz
)


"
"CIIi,,E
		!cii
3334455A	UZZ\\E	UYY[[E 5ka  E 
IIeQ	c{	K	K	KBFF5!bh444u{(1j/:::u~Aw///u~!####*T%"4";";"="=>>??K{(1aJ*?@@@uy---ZU]11334455Fv|Y/////rM   zscoring, multiclass_agg_listaccuracy 	precision_macro	_weightedf1neg_log_lossrecallc                    t          dddd          \  }}t          j        d          t          j        dd          }}t          d          }|                                }d	D ]}||= |                    ||         ||                    |D ]b}	t          | |	z             }
t          t          ||||fdg|
d d d d d
|ddiz  d         d          |
|||         ||                              cd S )NrP   r   rm      )rF   r+   rH   n_informativeP   r  r   )rQ   ry   
warm_start)ro   rp   	pos_classmax_squared_sumrd   score_paramsr   r   r4   )	r   r9   aranger   
get_paramsr<   r   r   r   )rp   multiclass_agg_listrD   rE   traintestrt   paramskey	averagingscorers              rK   "test_logistic_cv_multinomial_scorer7    sS   & A!  DAq )B--2s!3!34E	c	"	"	"B]]__F,  3KKFF1U8QuX( 
 
	Gi/00!!	
 5 $"!  ]M::    F2qw$((	
 	
 	
 	

 
rM   c                     d\  } }}t          | ||dd          \  }}t                                          g d                              |          }t	          j        |          dz
  }t                      }t          d          }t                      }t          d          }	|                    ||           |                    ||           |                    ||           |	                    ||           t          |j	        |j	                   t          |j                  g dk    sJ t          |j	        |	j	                   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        |	                    |                              g dk    sJ t          dddd	                              ||          }	t          t	          j        |	                    |                              d
dgk    sJ d S )N)r  r   rm   rm   r   )rF   r   rH   r(  r+   )barbazfoor3   )ro   r4   )class_weightr9  r:  )r   r   r<   inverse_transformr9   r   r   r   r   r   sortedr>   r:   r=   )
rF   r   rH   r  rE   y_strrt   r  lr_str	lr_cv_strs
             rK   2test_multinomial_logistic_regression_string_inputsrB  1  sg   '/$Iz9"  HE1 NN44455GGJJE
aA			B A&&&E!!F$***IFF5!	IIeQ
JJueMM%bh555&/""&;&;&;;;;;ek9?;;;&/""&;&;&;;;;;)$%%)>)>)>>>>> ")FNN51122337L7L7LLLLL")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HrM   c                 t   t          ddd          \  }}d||dk     <    | |          }t                      }|                    ||           t                      }|                    ||           t          |j        |j                   t          |j        |j                   |j        |j        k    sJ d S )Nr  r   r   rF   r   r+   r   r  )r   r   r<   r   r   r   rr   )rN   rD   rE   csrrC   clfss         rK   test_logistic_cv_sparserG  Z  s    JJJDAqAa#gJ
-

C

 
 CGGAqMMM!!DHHS!dj#)444dos~>>>7cfrM   c                     t           j        t           j        }} | j        \  }}d}t	          |          }t          |                    | |                    }t          |d          }|                    | |           t          |d          }|	                                }	d|	|	dk    <   |                    | |	           t          |j        d         |j        d                    t          |j        dd          |j                   t          |j        d         t          j        d d f         |j                   |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 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           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 _d S )Nr4   r   )rq   r   r3   r   rm   r   r3   r4   r   )r   r   r        r   r   r   )rx   r   r+   r   rq   r,   )r|   r}   r   r;   r   r  splitr   r<   copyr   r  r   r   r9   newaxisr   r>   r  r  r  r  r!   re   )r1  r   rF   r   n_cvrq   precomputed_foldsrC   clf1target_copyr  r_   rx   r   	clf_multimulti_score	ovr_scores                    rK   test_ovr_multinomial_irisrV  k  s|    It{6E!KIz
 D			BRXXeV4455 "3
G
G
GCGGE6  #4%HHHD++--K$%Kq !HHUK    CKNDLO444CN122&888CIaLQQQ/<<< 9?q*o----s|YYY///*T#"2"9"9";";<<==KD"j1n =====7=E!!!!ZS[//112233F<AtR=(((( 8 - - O3333(/11t
 
 
	 W%LLEeV$$$ooeV44IIeV,,	Y&&&& y)/"777779-yyy999ji&<&C&C&E&E!F!FGG Qb*q.$AAAAA}"e++++D!2!9!9!;!;<<==|4},,,,,3- -rM   c                  
   t          ddd          \  t          dd          fdt          D             } t          j        | d	
          D ]-\  }}t          | |         j        | |         j        d           .dS )z)Test solvers converge to the same result.r   r   r   )r   r(  r+   Fr   rR   c                 V    i | ]%}|t          dd |i                              &S )rx   rk   )r   r<   ).0rx   rD   r3  rE   s     rK   
<dictcomp>z4test_logistic_regression_solvers.<locals>.<dictcomp>  sO        	";;&;F;;??1EE  rM   r4   rrm   r   N)r   dictSOLVERS	itertoolscombinationsr   r   )
regressorssolver_1solver_2rD   r3  rE   s      @@@rK    test_logistic_regression_solversre    s    "AANNNDAqB777F       J
 (4Z1EEE 
 
(!x &
8(<(BA	
 	
 	
 	
 	

 
rM   rS   FTc           	         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   rm   r   rF   r   r(  rH   r+   :0yE>r   )rS   r   r+      '  r,   r0   r1   c                     i | ]:}|t          d|                    |d           d                              ;S )rP   rx   r   rk   )r   getr<   )rY  rx   rD   r3  solver_max_iterrE   s     rK   rZ  z?test_logistic_regression_solvers_multiclass.<locals>.<dictcomp>  sl         	" 
O$7$7$D$D
 
HN
 

#a))  rM   r-   r4   r[  r1   {Gzt?r    vs rtolr   N)	r   r^  setr_  r`  ra  r   r   r   )	rS   r   rb  rc  rd  rD   r3  ro  rE   s	        @@@@rK   +test_logistic_regression_solvers_multiclassru    s    2QR  DAq C3RHHHF !$FFCCO       'llS+%7%77	  J (4Z1EEE  (x &x &"f,,F0B0B//X//		
 	
 	
 	
  	8$/8$/&&00H4F4FTTT#3333	    rM   c           
         t          j        dd           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dfdt+          t,                    t+          dg          z
  D             }|                                D ]4}t1          ||         j                            d          dd|           5t7          j        |d           D ]\  }}t1          ||         j        ||         j        |d!k    s|d!k    rd"nd#| d$| %           | r<t1          ||         j        ||         j        |d!k    s|d!k    rd"nd
| d$| %           dS )&zGTest and compare solver results for unpenalized multinomial multiclass.numpyz1.22.0)
minversion)rP   rn   rm   r[   )rF   r   effective_ranktail_strengthr+   r3   Nr2   r   rP   rm   )lowhighsize)rH   )npvals)r   r   g&.>r   rR   ri  rj  rk  rh  r   c                     i | ]Z}|t          dt          j        |                    |                              |d           d                              [S )rP   )rQ   rx   r   r   rk   )r   r9   infrn  r<   )rY  rx   rD   r3  ro  
solver_tolr   rE   s     rK   rZ  zKtest_logistic_regression_solvers_multiclass_unpenalized.<locals>.<dictcomp>  s     	 	 	  	" 
fvs++$((55	
 

 
 
 #a))	 	 	rM   r-   r   r6   绽|=)atolr   r4   r[  r1   rp  gMb`?rq  rr  )r   importorskipr9   r   r   r   r
   allmaxminuniformreshapeTr   linkinversezerosrangeargwherer   r^  rt  r_  keysr   r   r@   r`  ra  r   )rS   r   rF   r   rH   r   UsVtcoef	interceptraw_predictionlossr   r   rb  rx   rc  rd  rD   r3  ro  r  r   rE   s                      @@@@@@rK   7test_logistic_regression_solvers_multiclass_unpenalizedr    s    H5555'0$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B???F #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	    rM   weightr[   g?r   r]   rI  r<  balancedc           	      F   t          |           }|dk    r| }t          ddddd||          \  }}t          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  rK  rm   r   )rF   r   
n_repeatedr(  n_redundantrH   r+   r3   Frh  )ro   rS   r<  r   rx   r,   categoryN)r,   r-   r/   r   gC]r2<rj  )r   r   r+   r   z	 vs lbfgsrr  rk   )r8   r   r^  r   r%   r   r<   rt  r_  
set_paramsr   r   )
r  r<  r   rH   rD   rE   r3  	clf_lbfgsrx   rC   s
             rK   (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)singlerq   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 )Nri  rm   r   r4   r   )rF   r   r(  rH   r  r+   Fr0   順 r   rh  r+   rS   r   r   r}  r6   r  rq   r3   )groupsrP   )ro   rq   rx   r,   r   rd   r   r  rk   )r   r9   r   r   rA   r;   
startswithrM  randintrepeatr   intr   r   r   fullr  r   rL  updater   r   r   r   r<   r   r  r   )r  rx   r   n_samples_per_cv_groupn_cv_groupsrD   rE   r   swkw_weightedkw_repeated
X_repeated
y_repeatedr   groups_weightedsplits_weightedgroups_repeatedsplits_repeatedclf_sw_weightedclf_sw_repeateds                       rK   '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 )N,  r   rm   r4   rg  r3   Fr  rh  r  r   )rx   r<  rx   r  r   r  rk   r   r   r<   r   r   )rx   r   rD   rE   rd   r  	clf_cw_12	clf_sw_12s           rK   -test_logistic_regression_solver_class_weightsr    s     '  DAq EM +	 K # aLL 4? I MM!Q"@@&@K@@IMM!QmM444IOY_4@@@@@@rM   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   rm   r4   rg  r3   r-   Fr   r   rj  -q=)rx   rS   r<  r   r   r   r+   )rx   rS   r   r   r   r+   r  r  l2T)rx   rS   r<  r   r   r   r   r+   )rx   rS   r   r   r   r   r+   r  )r   rD   rE   rd   clf_cwclf_sws         rK   2test_sample_and_class_weight_equivalence_liblinearr    sz    '  DAq EMq\\'  F JJq!'  F JJq!]###FL&,U;;;;q\\'	 	 	F JJq!'  F JJq!]###FL&,U;;;;;;rM   c                     t          j        |           }t          d||           }t          t	          ||                    }|S )Nr  )rG   rE   )r9   r:   r#   r^  zip)rE   rG   r<  class_weight_dicts       rK    _compute_class_weight_dictionaryr     sA    illG'
GqIIILS,7788rM   c                     | S rg   rk   xs    rK   <lambda>r    s    Q rM   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 ]w}t          |d          }t          dddi|}t          dd|i|}|	                    ||           |	                    ||           t#          |j        |j        d           xd S )N-   r-   r/   r   rm  r<  r  rm   -C6?rs  r   r  rP   r'  r]  rk   )r!   r|   r}   r   r  rt  r_  r^  r   r<   r8   r>   r   r   r9   rA   r;   r   )rN   X_irisrD   rE   r  rx   r3  rQ  clf2r  cclf3s               rK   &test_logistic_regression_class_weightsr    sv    49FrssAAAvAaABCCA8;;g,,k3D%E!F!FF ; ;Vd333!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Vd333!DDzDVDD!KK/@KFKKAA!$*dj!DDDDDE ErM   c                     d\  } }}t          | |d|d          \  }}t          d                              |          }d}t          |d	          }t          |dd
          }|                    ||           |                    ||           |j        j        ||fk    sJ |j        j        ||fk    sJ dD ]}t          |ddd          }t          |d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 ]d}t          |dddg          }
|
                    ||           t          |
j        |j        d           t          |
j        |j        d           ed S )N)r  r  rm   r   r   rg  F)	with_meanr,   r   rx   r   )rx   rS   r   )r0   r1   r.   r   r   gHz>)rx   r+   r   r   )rx   r+   r   r   rS   r   r  r   r   r  )rx   r   r   ro   )
r   r    fit_transformr   r<   r   r;   r   r   r   )rF   r   rH   rD   rE   rx   ref_iref_wclf_iclf_wclf_paths              rK   $test_logistic_regression_multinomialr  /  si    (1$Iz9  DAq 	'''55a88A Ff$777EfEtLLLE	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'Ddu
 
 
 	Q$????+U-=DIIIIIJ JrM   c                     t          ddd          \  } }t          dd          }|                    | |           t          j        d          } t          |                    |           t          j        d                     d S )Nr   r   rD  Fr-   )rS   rx   )r   r   )r   r   r<   r9   r  r   r=   )rD   rE   rC   s      rK   %test_liblinear_decision_function_zeror  j  sx     qqIIIDAq
5
E
E
ECGGAqMMM 	As{{1~~rx{{33333rM   c                     t          ddd          \  }}t          d          }|                     | |          |           d S )Nr   r   r   rD  r-   rx   r   r   r<   rN   rD   rE   rC   s       rK   test_liblinear_logregcv_sparser  y  sP     JJJDAq
k
2
2
2CGGMM!a     rM   c                     t          ddd          \  }}t          dd          }|                     | |          |           d S )Nr   r   r   rD  r1   r   r  r  r  s       rK   test_saga_sparser    sR     JJJDAq
f$
7
7
7CGGMM!a     rM   c                      t          d          } |                     t          t                     | j        dk    sJ d S )NF)rS   r   )r   r<   rD   rT   r   r   s    rK   "test_logreg_intercept_scaling_zeror    s>     5
1
1
1CGGArNNN>S      rM   c                     t           j                            d          } d}t          |dd          \  }}|                     |df          }t          j        |df	          }t          j        |||fd
          }t          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                     d S )Nr   r  r  r   rD  rm   r  r4   r;   r3   r6   r   r  r-   Fr  r   rQ   rx   rS   r   r1   r   r   rQ   rx   rS   r   r   r   )r9   r   r   r   normalrA   r   r   r<   r   r   r  )r   rF   rD   rE   X_noise
X_constantlr_liblinearlr_sagas           rK   test_logreg_l1r    sb    )


#
#CIrPQRRRDAqjjy!nj--G	1~...J
7J/a888A%
  L Q 
  G KK1gm\-?@@@ l0BCC8"(1++FFFgmArssF3RXa[[AAAAArM   c                 |   t           j                            d          }d}t          |dd          \  }}|                    d|df          }t          j        |d	f
          }t          j        |||fd          }d||dk     <    | |          }t          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  r  r   rD  r[   rm   )r!   r}  r4   r  r3   r6   r   r  r-   Fr  r  r1   r   r  r  r   )r9   r   r   r   r  r  r   r   r<   r   r   toarray)
rN   r   rF   rD   rE   r  r  r  r  lr_saga_denses
             rK   test_logreg_l1_sparse_datar    s   
 )


#
#CIrPQRRRDAq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ArM   random_seedr   r   r  c                     t          dd|           \  }}t          d|| dd          }t          ddgd	d
|}|                    ||           t	          dddi|}|                    ||           t          |j        |j                   d S )NrP   r  rD  r1   r   r  )rx   r   r+   r   r   r  T)ro   refitrQ   rk   )r   r^  r   r<   r   r   r   )r  r   rD   rE   common_paramsr  rt   s          rK   !test_logistic_regression_cv_refitr    s     +VVVDAq   M !GSEGGGGE	IIaOOO		3	3c	3]	3	3BFF1aLLLek2844444rM   c                     t          ddddd          \  } }t          d          }|                    | |           t          ||                    |                     }t          t          d                    }|                    | |           t          ||                    |                     }||k    sJ t          ||                    |                     }t          ||                    |                     }||k    sJ d S )Nr   r  r   rm   )rF   r   r+   rH   r(  r,   r  )r   r   r<   r   r?   r   _predict_proba_lr)rD   rE   rS  clf_multi_lossclf_ovrclf_ovr_lossclf_wrong_losss          rK   %test_logreg_predict_proba_multinomialr    s   !qPR  DAq #'222IMM!Qa!8!8!;!;<<N!"4G"D"D"DEEGKK1Aw44Q7788L.(((( a!8!8!;!;<<Na!<!<Q!?!?@@NN******rM   r   r   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.)r0   ?The max_iter was reached which means the coef_ did not converge)r1   r  )r,   r   )r/   z6Newton solver did not converge after [0-9]* iterationsc                    t           j        t           j                                        }}d||dk    <   |dv r|dk    rt	          j        d           |dk    r| dk    rt	          j        d           t          | d	|d|
          }t	          j        t          |          5  |	                    ||           d d d            n# 1 swxY w Y   |j
        d         | k    sJ d S )Nr   r4   r   r   z+'multinomial' is not supported by liblinearr/   r3   z/solver newton-cholesky might converge very fastgV瞯<)r   r   r   r+   rx   rz   )r|   r}   r   rM  r   skipr   r   r   r<   n_iter_)r   r   rx   r   rD   y_binrt   s          rK   test_max_iterr    s9   , y$+**,,uAE%1*K=$@$@ABBB"""x!||EFFF	
 
 
B 
(	8	8	8  
q%               :a=H$$$$$$s   !CCCc                    t           j        t           j        }}| dk    rt          |          }t	          j        |          j        d         }|dk    sJ |                                }d||dk    <   d}d}t          dd| d	          }|	                    ||           |j
        j        d
k    sJ t          d| ||d          }|	                    ||           |j
        j        d||fk    sJ |                    d          	                    ||           |j
        j        |fk    sJ |                    d          	                    ||           |j
        j        |||fk    sJ | dv rd S |                    d          	                    ||           |j
        j        d
k    sJ |                    d          	                    ||           |j
        j        d||fk    sJ d S )Nr,   r   rm   r4   rn   r   r  r   )r   rQ   rx   r+   r   )r   rx   ro   rq   r+   r3   r   r   r   r   )r|   r}   r   r!   r9   r:   r;   rM  r   r<   r  r   r  )	rx   rD   rE   rH   r  n_Cs	n_cv_foldrC   clf_cvs	            rK   test_n_iterr  G  s    9dkqA!HH	!"1%I>>>> FFHHEE%1*DI V"
M
M
MCGGAu;$$$$!DYR  F JJq%>Ay$#77777 NNuN%%))!Q///;,,,,
%((,,Q222>Iy$#?????  NN}N--11!Q777;$$$$
-0044Q:::>Ay$#7777777rM   r*  )TFc                    t           j        t           j        }}t          d|| 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 )
Nr  r   )r   r*  rx   r+   rS   r  r3   z Warm starting issue with solver zwith fit_intercept=z and warm_start=       @)r|   r}   r   r   r%   r   r<   r   r   r9   r@   abs)	rx   r*  rS   rD   rE   rC   coef_1cum_diffr   s	            rK   test_warm_startr  z  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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d          \  }} | |          }||f||ffD ]\  }}dD ]}|j        d         }	t          j        d	dd          D ]}
t          d
|	|
z  z  ddd|dd          }t          d
|	|
z  z  ddd|dd          }|	                    ||           |	                    ||           t          |j        |j        d           d S )Nrm   r3   r4   r  r  r   rD  )r   r  r2   r  r1   ri  Fr   )rQ   rx   r   rS   r   r+   r   r-   )r   r}   r   r9   r   r   r;   r   r   r<   r   r   )rN   r|   rD   rE   X_binr  X_sparsey_sparser   rF   alphar1   r-   s                rK   test_saga_vs_liblinearr%    s   ;;D9dkqA
sQwA
sQwAa1fIEa1fIMAE,!  Hh }X&&H(H!56 J J1# 	J 	JG
IRA.. J J)Y./! "'#!"   /Y./& "'#!"  	 Aa###)$*ioqIIII1J	JJ JrM   )r-   r.   r/   r1   c                    | dk    r|dk    rt          j        d|  d           | 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   zSolver=z' does not support multinomial logistic.r   gMb@?r   )rx   r   r+   r   rS   gQ@ntr   r  r1   r[   )r   r  r9   r   float32r   rD   r   rT   r   r   r<   r   r   osnamer'   r   )rx   r   rS   rN   
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                     rK   test_dtype_matchr7    s    !=!=MfMMMNNN%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$??????rM   c                  x   t           j                            d          } 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 )Nr   rP   r4   r3   r2   r0   F)rx   r*  r+   Tr   r   r  )r9   r   r   r   r   r   r   r   r<   r?   r  r   )r   rD   rE   lr_no_wslr_wslr_no_ws_lossr   
lr_ws_losss           rK   test_warm_start_converge_LRr=    s%    )


"
"C
		#q))QF2CIIc14E4EFGGA
!sbTCZ'((A!5qQQQHe1MMMEQQ 2 2 @ @ C CDDM1XX  		!Q!U003344JM:D999999rM   c            
         t          d          \  } }d}d}t                      }d|fddfD ]K\  }}t          ||dd|d	d
          }|                    | |           |                    |j                   L|\  }}	}
t          j        ||	dd          rJ t          j        ||
dd          rJ t          j        |
|	dd          rJ d S )Nr   r*   r  r]   r   )r   N)r  Nr1   r   ri  )r   rQ   rx   r+   l1_ratior   r   r[   )rs  r  )r   r  r   r<   appendr   r9   allclose)rD   rE   rQ   r?  coeffsr   ratiort   elastic_net_coeffs	l1_coeffs	l2_coeffss              rK   test_elastic_net_coeffsrG  ,  s    A...DAqAHVVF((3\<P    
 
 
 	q!bh/5,	9{-yqsKKKKKK{-yqsKKKKKK{9iacBBBBBBBBrM   rQ   )r   r[   r3   r   rP   r       .Azpenalty, l1_ratio)r   r3   )r  r   c                 
   t          d          \  }}t          d| |ddd          }t          || ddd          }|                    ||           |                    ||           t          |j        |j                   d S )Nr   r*   r   r1   r   )r   rQ   r?  rx   r+   r   r   rQ   rx   r+   r   )r   r   r<   r   r   )rQ   r   r?  rD   rE   lr_enetlr_expecteds          rK   "test_elastic_net_l1_l2_equivalencerM  H  s    
 A...DAq 
  G %1V!  K KK1OOAqgm[->?????rM   )r   r3   rP   rH  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 )NrJ  r   r*   r?  r3   r   r   r1   r   rJ  T)r  r   r  )r   r   r9   linspacer   r   r<   re   )rQ   rD   rE   X_trainX_testy_trainy_test
param_gridenet_clfgsl1_clfl2_clfrC   s                rK   test_elastic_net_vs_l1_l2rY  `  sS   
 s333DAq'711'M'M'M$GVWfbk!Q223J!&qd  H 
h
$	7	7	7B&qd  F  &qd  F FF# " "!!!!88FF##v||FF'C'CCCCC88FF##v||FF'C'CCCCCCCrM   r4   rn   r?  )r[   r]   r   c           	      L    t          ddddddd          \  t                    t          ddd d	
          }t          ddd d	          }|                               |                                fd} ||           ||          k     sJ d S )Nr   r4   r  r   r   rF   rH   r   r(  r  r  r+   r   r1   F)r   rx   r+   rQ   r?  rS   r  )r   rx   r+   rQ   rS   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?   r9   r@   r  r  )rt   r  objrQ   rD   r?  rE   s      rK   enet_objectivezEtest_LogisticRegression_elastic_net_objective.<locals>.enet_objective  s    x~~(1b..q11222x"&....h#%tT(:(:::
rM   )r   r!   r   r<   )rQ   r?  rK  lr_l2r_  rD   rE   s   ``   @@rK   -test_LogisticRegression_elastic_net_objectivera  }  s      DAq 	aA 
  G V!q  E KK1	IIaOOO        >'""^^E%:%:::::::rM   rH   )r4   rm   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d          }t          |||          }	|	                    ||           |	j	        d         |j
        d         k    sJ |	j	        d         |j        d         k    sJ d S )NrP   rm   r   rF   rH   r(  r+   r   r3   rn   r   r1   r   )r   ro   rx   rq   	l1_ratiosr+   r   rQ   r?  )r   rx   r+   r   rq   r?  rQ   )r   r   r9   rO  r   r   r<   r   r   best_params_	l1_ratio_rr   )
rH   rD   rE   rq   re  ro   lrcvrT  rt   rV  s
             rK   2test_LogisticRegressionCV_GridSearchCV_elastic_netrk    s-   
 !!  DAq 
		BAq!$$I	RA		B  D 	HHQNNNy11J		
 
 
B 
b*	,	,	,BFF1aLLL?:&$.*;;;;;?3471:------rM   c            
         t          dddd          \  } }t          | |d          \  }}}}t          d          }t          j        ddd          }t          j        dd	d          }t          d
|d||ddd          }	|	                    ||           ||d}
t          d
dddd          }t          ||
|          }|                    ||           |	
                    |          |
                    |          k                                    dk    sJ |	
                    |          |
                    |          k                                    dk    sJ d S )NrP   rm   r   rc  r*   r   r3   rd  rn   r   r1   r   r   )r   ro   rx   rq   re  r+   r   r   rf  )r   rx   r+   r   r   rg  r\   )r   r   r   r9   rO  r   r   r<   r   r   r=   r   )rD   rE   rP  rQ  rR  rS  rq   re  ro   rj  rT  rt   rV  s                rK   6test_LogisticRegressionCV_GridSearchCV_elastic_net_ovrrm    s    !!  DAq (811'M'M'M$GVWf			BAq!$$I	RA		B	 	 	D 	HHWgy11J	
 
 
B 
b*	,	,	,BFF7G LL!!RZZ%8%88>>@@CGGGGLL  BJJv$6$66<<>>#EEEEEErM   )r  r   )r   r   autoc           
      t   d}d}t          d|||d          \  }}t          j        ddd          }| dk    rt          j        dd	d
          }nd }t	          | |d|d|dd          }|                    ||           |j        j        |fk    sJ |j        j        |fk    sJ |j	        j        ||fk    sJ d S )Nrm   r  ri  r   rF   rH   r(  r   r+   rd  rn   r   r3   r4   r1   r   F)r   ro   rx   re  r+   r   r   r  )
r   r9   r   rO  r   r<   rr   r;   ri  r   )	r   r   rH   r   rD   rE   ro   re  rj  s	            rK   "test_LogisticRegressionCV_no_refitrq     s     IJ  DAq 
RA		B,K1a((				 	 	D 	HHQNNN7=YL((((>I<////:	:6666666rM   c            
         d} d}t          d| | |d          \  }}t          j        ddd          }t          j        ddd	          }d	}t	          d
|d||ddd          }|                    ||           t          j        t          |j        	                                                    }|j
        | ||j        |j        |dz   fk    sJ t          j        t          |j        	                                                    }	|	j
        | ||j        |j        fk    sJ |j        j
        | ||j        |j        fk    sJ d S )Nrm   r  ri  r   rp  rd  rn   r3   r4   r   r1   r   r   )r   ro   rx   rq   re  r   r+   r   )r   r9   r   rO  r   r<   r  r  r  r  r;   r}  r  r  )
rH   r   rD   rE   ro   re  n_foldsrj  r  r_   s
             rK   5test_LogisticRegressionCV_elasticnet_attribute_shapesrt  )  sm   
 IJ  DAq 
RA		BAq!$$IG	 	 	D 	HHQNNN*T$"3":":"<"<==>>K
Q!     ZT\00223344F<IwHHHHH<)Wbgy~!NNNNNNNrM   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\)rz   r   r1   r]   )r   rx   r?  )r   r   r   r   r<   rD   rT   )r   s    rK   test_l1_ratio_non_elasticnetrv  U  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           
      R   d}t          |dddddd          \  }}t          |          }t          dddd d	|d
| z  |z  d          }t          ddddd|| d          }|                    ||           |                    ||           t          |j        |j        d           d S )NrJ  r4   r   r   r3   r\  r   Fr   r  r   )r   r+   rS   r   r   r?  r$  r  r   r   r1   )r   r+   rS   r   r   r?  rQ   rx   r]  )r   r!   r   r   r<   r   r   )rQ   r?  rF   rD   rE   sgdlogs          rK   test_elastic_net_versus_sgdrz  ^  s     I  DAq 	aA
Ag	!	 	 	C 
	 	 	C GGAqMMMGGAqMMMciA>>>>>>rM   c            	      P   t          ddddddd          \  } }g d}t          | |d|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 )Nri  rm   r4   r   r3   )rF   rH   r(  r  n_clusters_per_classr+   r   )r   r3   rj  r   r1   r   )r   ro   rx   r+   r   r]  )r   r   r   r   r	  r   )rD   rE   ro   r   r   s        rK   /test_logistic_regression_path_coefs_multinomialr}    s:      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   A<<B B  CCC/DD"DestrJ  )r+   r   rm   r   )r+   rq   ro   r   r   c                     | j         j        S rg   )	__class__rh   r  s    rK   r  r    s    !+& rM   )idsc           	           fd}t          t          j                  }|d d d         }|dd d         }t          j        d d d         }|dk    } |||d|          } |||d|          }	t	          |j        |	j                   t	          |                    |          |	                    |                      |||d|          }
|dk    ra |||d|          }t	          |
j        |j                   t	          |
                    |          |                    |                     d S  |||d	|          }t	          |
j        |j                   t	          |
                    |          |                    |                     t          j        |j         |||d	|          j                  rJ t          j        |j         |||d	|          j                  rJ d S )
Nc                 `     t                    j        di |                    | |          S )Nrk   )r   r  r<   )rD   rE   kwr~  s      rK   r<   z6test_logistic_regression_multi_class_auto.<locals>.fit  s2    $uSzz$**r**..q!444rM   r   r3   r   rn  )r   rx   r   r-   r   )	r!   r|   r}   r   r   r   r?   r9   rA  )r~  rx   r<   scaled_datarD   X2y_multir  est_auto_binest_ovr_binest_auto_multiest_ovr_multiest_multi_multis   `            rK   )test_logistic_regression_multi_class_autor    sS   5 5 5 5 5 	""KDDbDA	QUU	Bk$$B$GqLE3q%VFCCCL#aE&AAAKL&(9:::L..r22K4M4Mb4Q4QRRRSGGGGNAwE&III,m.ABBB((,,m.I.I".M.M	
 	
 	
 	
 	
 #amFSSS,o.CDDD((,,o.K.KB.O.O	
 	
 	

 ;C5mFCCCI
 
 	
 	
 	
 ;C7fEEEK
 
 	
 	
 	
 	
 	
rM   c                    t          d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   )rF   r  r+   z&Setting penalty=None will ignore the Crn   )r   rx   rQ   rz   )r   rx   r+   r  )r   rQ   rx   r+   )
r   r   r   r   r   r<   r9   r  r=   r   )	rx   rD   rE   r   rt   lr_nonelr_l2_C_inf	pred_nonepred_l2_C_infs	            rK   test_penalty_noner    s?    11MMMDAq
2C	D1	=	=	=B	k	-	-	-  
q!               !f1MMMG$vA  K Aq!!))!,,IOOAq))11!44My-00000s   A((A,/A,r3  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          |||d
          \  }}}t          dd          } |j	        di |  t          |                              ||          }t          |                              |||          }dD ]D}	 t          ||	          |          }
 t          ||	          |          }t          |
|           Ed S )Nr3   rm   r4   rn   floatr   )r3   r3   r3   r3   r4   r4   r4   r4   r3   r3   r3   r3   r4   r4   r4   r4   r  r  r   r*   r-   r   )rx   r+   r  )r=   r?   r   rk   )r9   r   r   vstackhstackrA   r8   r$   r   r  r   r<   getattrr   )r3  rD   rE   r  y2rd   base_clfclf_no_weightclf_with_weightmethodX_clf_no_weightX_clf_with_weights               rK   /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MJJJBM!2FFFHH!!&!!!(OO''1--MHoo))"b)NNOC < <8'-88;;<GOV<<Q??):;;;;< <rM   c                     t          dd          \  } }t          d          }ddg}g d}t          d	d
|||ddd          }|                    | |           |j        d                             d          }t          |          D ]w\  }}t          |          D ]b\  }	}
t          d	d
||
ddd          }t          || ||                                          }|||	f         t          j
        |          k    sJ cxd S )Nr   r   r  r   )n_splitsr[   r   )r[   r3   r   r   r1      r   )r   rx   re  ro   rq   r+   r   r   r3   r6   )r   rx   rQ   r?  r+   r   r   rg  )r   r   r   r<   r  r   r   r   r   r   approx)rD   rE   rq   re  ro   rj  avg_scores_lrcvr   rQ   jr?  rt   avg_score_lrs                rK   'test_scores_attribute_layout_elasticnetr  (  sU    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rM   )r,   r.   r/   c                    t           j        j        \  }}t           j        t           j                 }t          t          t           j                  d|          }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>`
    r,   )rQ   rx   rS   r   r6   r  r  gdy=)r  N)r|   r}   r;   r~   r   r   r8   r!   r<   r   r   r@   r   r   r  )rx   rS   rF   r   r   rC   X_scaleds          rK   (test_multinomial_identifiability_on_irisr  T  s    4 !IOIz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HrM   r  g      $@c                 $   t          d          \  }}t          |          }t          j        |          }d|d |dz  <   |                                }t          d|d|           }|                    |||           t          ||           d S )NT
return_X_yr4   r   ri  )r+   r<  r   r   r  )r   r8   r9   rA   rM  r   r<   r   )r   r<  rD   rE   r   WexpectedrC   s           rK   test_sample_weight_not_modifiedr    s     %%%DAqQJ

AA
avvxxH
\C[  C GGAqG"""Ha     rM   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   r*   )indicesindptrint64r4   r   r  )r-   r0   r1   z0Only sparse matrices with 32-bit integer indicesrz   r  )r   randsetattrr  r   r9   r   r   r  r;   r   r   r   r   r<   )rx   r   rN   rD   attrr   rE   r   s           rK   test_large_sparse_matrixr    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        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   ffffff?)r3   r3   r   r   r3   r3   r   r3   r3   r.   T)rx   rS   )r9   r   r  r;   r   r<   )rD   rE   s     rK   test_single_feature_newton_cgr    sr     	>>>?@@BA
)))**A71:????k>>>BB1aHHHHHrM   c            	         t           j                                        } t           j                                        }| |dk             } ||dk             }t	                                          |           }t          | |d          dz  }t          d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 )Nr4   ry  )r  gnt@r   r-   r   rP   r   r   )r   rx   r   r   r   r+   rQ   error)r|   r}   rM  r   r    r  r"   r   r   r   r   r   r<   )rD   rE   X_preprQ   rC   s        rK   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                            d          } t          d|           \  }}t          d|           \  }}t          j        t          |                    }d|dt          |          dz  <   d|i}t          d          }t          |          } |j        ||fi | t          d          }	|		                    d	           t          |	          }
 |
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  r4   Nrd   r  rp   Tr  r3   )r9   r   r   r   rA   r8   r   r   r<   set_score_requestrA  r  re   )r   rD   rE   X_ty_trd   kwargsscorer1lr_cv1scorer2lr_cv2score_1score_2s                rK   8test_lr_cv_scores_differ_when_sample_weight_is_requestedr    s}    )


#
#C#>>>DAq"RcBBBHCGCFFOOM#$M-CFFaK- }-F$$G!'222FFJq!v$$GD111!'222FFJq!v{6>!,fnQ.?@@@@@fl3..v..Gfl3..v..G{7G,,,,,,,rM   c                  8   t           j                            d          } t          d|           \  }}t          d|           \  }}t          j        t          |                    }d|dt          |          dz  <   d|i}t          d          5  t          d          }t          |	          } |j	        ||fi |  |j
        ||fi |}	ddd           n# 1 swxY w Y   t          d
          5  t          d          }
|
                    d
           t          |
	          } |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  r4   Nrd   Fr  r  r  Tr  r3   )r9   r   r   r   rA   r8   r   r   r   r<   re   r  r   r  )r   rD   rE   r  r  rd   r  r  r  r  r  r  r  s                rK   3test_lr_cv_scores_without_enabling_metadata_routingr    s=   
 )


#
#C#>>>DAq"RcBBBHCGCFFOOM#$M-CFFaK- }-F		6	6	6 3 3Z((%g666
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%g666
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"9A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  r4   r  r   rm  )r1   r0   r,   )r;   
fill_valuer]   r  )r   r%   r   r   r<   r  r   r   r9   
zeros_liker   r  r;   r   r?   re   )rx   rD   rE   rC   s       rK   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}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  z1is only supported if enable_metadata_routing=TrueFr  extra_paramr  rz   N)r   r   r   r   r   r   r<   re   )rD   rE   r  r   r3  s        rK   5test_passing_params_without_enabling_metadata_routingr  !	  s    !<<<DAq ""E
=C		6	6	6 ( (%]:S111 	& 	&EIa%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ]:S111 	( 	(EK1'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sY    CA1%C1A5	5C8A5	9CB3'C3B7	7C:B7	;CCC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          }t          j        t          |          5  |                    | |           d	d	d	           n# 1 swxY w Y   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	           d	S # 1 swxY w Y   d	S )z)Check `multi_class` parameter deprecated.rm   r  r'  )rH   rF   r(  r   r  z'multi_class' was deprecatedrz   Nr4   r   z-'multi_class' was deprecated.*binary problems)r   r   r   r   FutureWarningr<   r   )rD   rE   rt   r   lrCVs        rK   test_multi_class_deprecatedr  3	  s}   bJJJDAq		.	.	.B
(C	m3	/	/	/  
q!                E222D	m3	/	/	/  A               bJJJDAq		6	6	6B
9C	m3	/	/	/  
q!                M:::D	m3	/	/	/  A                 sH   A&&A*-A*B??CCD//D36D3%F		FF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,   )rx   rQ   r  r   r3   r/   r  )rx   rQ   r   r   rz   )r   r   r   r   r   r<   r  r%   r	   r   r   r   r   )
r   rD   rE   rQ   lr_lbfgsn_iter_lbfgslr_nc	n_iter_nclr_nc_limitedn_iter_nc_limiteds
             rK   &test_newton_cholesky_fallback_to_lbfgsr  K	  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)r`  r)  r   	functoolsr   rw  r9   r   numpy.testingr   r   r   r   scipyr   scipy.linalgr	   r
   sklearnr   sklearn._lossr   sklearn.baser   sklearn.datasetsr   r   r   sklearn.exceptionsr   sklearn.linear_modelr   sklearn.linear_model._logisticr   LogisticRegressionDefaultr   LogisticRegressionCVDefaultr   r   sklearn.metricsr   r   sklearn.model_selectionr   r   r   r   r   sklearn.multiclassr   sklearn.preprocessingr   r    r!   sklearn.svmr"   sklearn.utilsr#   r$   sklearn.utils._testingr%   r&   sklearn.utils.fixesr'   r(   r)   markfilterwarnings
pytestmarkr_  rD   rT   r   r|   rL   parametrizerV   rv   r   r   r8   r}   r   r   r   r   r   r   r   r   r   r   r  r  r  r7  rB  rG  rV  re  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  r  r  r>  rt  r  r%  r7  r=  rG  rM  rY  r   ra  rk  rm  rq  rt  rv  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rk   rM   rK   <module>r     s       				                              + + + + + + + + " " " " " " - - - - - -       Q Q Q Q Q Q Q Q Q Q 1 1 1 1 1 1 . . . . . .                  1 0 0 0 0 0 0 0              3 2 2 2 2 2 E E E E E E E E E E             7 7 7 7 7 7 7 7 G G G G G G G G I I I I I I I I I I[''< 
 W6QGGG w:KKK  P!Wq!fq!fYYYYy{{8 8 8$ .99  :9" " "B " " " .99F F :9F STT	SS^^KUSSSSS^^G<<<SS^^K@@@c$)nnU%VX	
 	
 	
 	c$)nn	
 	
 	
 	SS^^4EFFF &* *'  UT(*: STT 24HIJJ% % KJ UT%P  24HIJJ@ @ KJ@ STT#H#H#HII) ) JI UT)2 STT/ / UT/* .992 2 :920< < <(; ; ;  ;
 ;
 ;
|? ? ?,8 8 8B0 0 06 "	bT	x-. 
+&'	"	Hk*+  
  
  
F&I &I &IR .99  :9  STT?- ?- UT?-D
 
 
$ STT5$-88    98 UT F 5$-88D D 98DN $4$4###6N6N#OPP(J)?@@+
 +
 A@ QP+
\ $455S @M @M  65@MF F A A A<8< 8< 8<v   ;;-.*HII#E #E JI#EL8J 8J 8Jv4 4 4 .99! ! :9! .99! ! :9!! ! !!B !B !BH .99/B /B :9/Bd --T4L115 5 21 .-50+ + +. STTYRYq!__55(>??   "% %#  @? 65 UT(%0 STT7++.8 .8 ,+ UT.8b ffSS\\CC6G(H$I$IIJJ  }55-88# # 98 65 
#< .99*J *J :9*J\ STT(>??CCC  5$-88.99E@ E@ :9 98  @? UTE@P: : :"C C C8 AAABB,y).DEE@ @ FE CB@, 22233D D 43D8 kbk"a3344___55&; &; 65 54&;R f--#. #. .-#.P STT*F *F UT*F\ STT$899(FGG 7  7 HG :9 UT 7L STT(O (O UT(OVQ Q Q kbk"a3344___55%? %? 65 54%?PA A AB STT	C888!aTCPPP 	'&    7++'
 '
 ,+  UT'
T 66##g,,k]9K9K*K#L#LMM1 1 NM1* %$GG$u$GG%4HH *< *< *<Z(H (H (HX STT#L#L#LMM5$-88&I &I 98 NM UT&IT STT(F(F(FGGcds*C*CZ)PQQ! ! RQ HG UT! 7++.994 4 :9 ,+4&I I I  2 ---- - .--<& & &: 7++! ! ,+!2( ( ($  0'; '; '; '; ';rM   