a
    hcK                    @   st	  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jBCdZDee"d dZ!ee$d dZ#dZEdd gd dgddggZFg dZGg dZHe ZIdd ZJejBKd eAd!d" ZLd#d$ ZMe=d%d& ZNejBKd eAd'd( ZOejBCd)ejBKd*e!ePeIjQd+d,d-e!ePeIjQd.d/e!ePeIjQd0d/e!ePeIjQd1d2d,d3d4e!ePeIjQd5d2d,d3d4e!ePeIjQd6d/gd7d8 ZRejBCd)ejBKd9e!e#gd:d; ZSejBKd9e!e#gd<d= ZTejBCd)ejBKd>g d?d@dA ZUejBCd)dBdC ZVejBKdDe@dEdF ZWdGdH ZXdIdJ ZYdKdL ZZdMdN Z[dOdP Z\dQdR Z]dSdT Z^ejBKdUdVdWgfdXdYdZgfd[dYdZgfd\dWgfd]dYdZgfgd^d_ Z_d`da Z`ejBKd eAdbdc ZaejBCd)ddde Zbdfdg ZcejBCd)ejBKdhdidjgdkdl ZdejBKdhdidjgdmdn ZeejBKdodpdqdrdpdqdsdtgejBKdudodvgdwdx ZfejBKdydzejBKd>dd{d| ZgejBKd>d}d~d Zhdd Zidd ZjejBKd dd geA dd Zkdd Zldd ZmejBKd eAdd ZnejBKd eAdd Zodd Zpdd ZqejBKd eAdd ZrejBKdd3gejBKdddgdd Zsdd ZtejBCd)ejBKdeuddejBKdd,dgejBKdg ddd ZvejBCd)ejBKd>eEdd ZwejBKd>exeyeEeyd+d6g ejBKddejBKdhddd ZzejBKd eAdd Z{ejBCd)ejBKdd,dgejBKd>g dejBKdhdidjgejBKd eAdd Z|dd Z}dd Z~ejBKdg dejBKdddgdd ZejBKdg ddd ZejBKdedddejBKdg dâddń ZejBKddǡddɄ ZejBCd)dd˄ ZejBCd)ejBKdd̡ejBKdd͡ddτ ZejBCd)ddф Zddӄ ZejBKdedddejBKdg dâddՄ Zddׄ ZejBCd)ejBjKde!d ddڍe#d dddddݍgdd dߍejBKd>eEdd ZejBKd>exeyeEeyd+g dd ZejBKdddidddddjdddddidddgdd Zdd ZejBCd)ejBKd>g dejBKdhdidjgdd ZejBCd)ejBKdg d͢ejBKduddddtdvgdd ZejBKd>eEejBKd eAdd Zdd Zdd Zedjddd Zdd ZejBKd>eEdd  Zdd Zdd Zdd 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   r2   r2   )   r2   r   c                 C   s   t |}t|}|jd }| |||}t| j| |j|fksJJ t|| | |}|j||fkspJ t	|j
ddt| t|jdd| dS )z;Check that the model is able to fit the classification datar   r2   ZaxisN)lennpuniqueshapefitpredictr   classes_predict_probar   sumonesargmax)clfXy	n_samplesclasses	n_classesZ	predictedprobabilities rG   d/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/linear_model/tests/test_logistic.pycheck_predictions?   s    



rI   csr_containerc                 C   s   t tddtt t tdd| tt t tdddtt t tddd| tt t tdddtt t tddd| tt d S )Nr   r)   d   )Cr*   Ffit_interceptr*   )rI   r   rA   Y1rJ   rG   rG   rH   test_predict_2_classesQ   s    rQ   c                  C   s   G dd d} |  }g d}d}t |||d}tdd\}}||| |jd |d ks^J |j|t| kstJ d|_||||}||jd ksJ |jdksJ d S )	Nc                   @   s   e Zd Zdd ZdddZdS )z0test_logistic_cv_mock_scorer.<locals>.MockScorerc                 S   s   d| _ g d| _d S )Nr   )皙?g?皙?      ?)callsscores)selfrG   rG   rH   __init__c   s    z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__init__Nc                 S   s(   | j | jt| j   }|  jd7  _|S )Nr2   )rV   rU   r5   )rW   modelrA   rB   sample_weightscorerG   rG   rH   __call__g   s    z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__call__)N)__name__
__module____qualname__rX   r\   rG   rG   rG   rH   
MockScorerb   s   r`   )r2   r3         r3   )Csscoringcvr   r)   r2   )	r   r   r9   C_rU   r5   r[   r:   rV   )r`   Zmock_scorerrc   re   lrrA   rB   Zcustom_scorerG   rG   rH   test_logistic_cv_mock_scorera   s    
rh   c                  C   sh   t jj\} }t jt j }tddd}d}tjt|d |	t j| W d    n1 sZ0    Y  d S )Nr,   r3   )solvern_jobsz\'n_jobs' > 1 does not have any effect when 'solver' is set to 'liblinear'. Got 'n_jobs' = 2.match)
irisdatar8   target_namestargetr   pytestwarnsUserWarningr9   )rC   
n_featuresrp   rg   Zwarning_messagerG   rG   rH   test_lr_liblinear_warning   s    ru   c                 C   s,   t tddtt t tdd| tt d S )N
   rL   )rI   r   rA   Y2rP   rG   rG   rH   test_predict_3_classes   s    ry   z5ignore:.*'multi_class' was deprecated.*:FutureWarningr@   r,   ovr)rL   ri   multi_classr+   )rL   ri   r-   r/   {Gz?*   )rL   ri   tolr{   r*   r0   r.   c                 C   s   t jj\}}t jt j }| jdkrft * tdt	 | 
t j| W d   qt1 sZ0    Y  n| 
t j| tt|| j | t j}t||kdksJ | t j}t|jddt| t j|jdd }t||kdksJ 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?r2   r4   )rm   rn   r8   ro   rp   ri   warningscatch_warningssimplefilterr   r9   r   r6   r7   r;   r:   meanr<   r   r=   r>   r?   )r@   rC   rt   rp   predrF   rG   rG   rH   test_predict_iris   s    

.r   LRc              	   C   s  t jt j }}dD ]V}d| d}| |dd}tjt|d ||| W d    q1 s^0    Y  qdD ]T}d| }| |d	d
d}tjt|d ||| W d    qn1 s0    Y  qndD ]V}d| }| |dd
d}tjt|d ||| W d    q1 s0    Y  qdD ]Z}d| d}| |dd}tjt|d ||| W d    n1 sr0    Y  q$| tu rd}| d dd}tjt|d ||| W d    n1 s0    Y  d S )Nr,   zSolver z( does not support a multinomial backend.multinomial)ri   r{   rk   )r+   r-   r.   r/   z/Solver %s supports only 'l2' or None penalties,l1rz   )ri   penaltyr{   r+   r-   r.   r/   r0   z1Solver %s supports only dual=False, got dual=TrueT)ri   dualr{   z;Only 'saga' solver supports elasticnet penalty, got solver=.
elasticnet)ri   r   z6penalty=None is not supported for the liblinear solverr,   r   ri   )rm   rn   rp   rq   raises
ValueErrorr9   r   )r   rA   rB   ri   msgrg   rG   rG   rH   test_check_solver_option   s4    ,,.0
r   c                 C   sf   | ddd}t jtdd8 |tddgdd	ggtd
dg W d    n1 sX0    Y  d S )Nr   r0   r   z.*l1_ratio.*rk   r2   r3   ra   rb   r   )rq   r   r   r9   r6   array)r   rY   rG   rG   rH   $test_elasticnet_l1_ratio_err_helpful   s    r   ri   r+   r-   r/   r0   c                 C   s   t jdktj}tddg| }t| dddd}|t j| |j	j
dt jj
d fks^J |jj
d	ksnJ t|t j| t| ddd
d}|t j| |jtj|t jdd }t||kdksJ d S )Nr   Zsetosaz
not-setosar   r}     )ri   r{   r*   max_iterr2   r2   F)ri   r{   r*   rN   r4   ?)rm   rp   astyper6   Zintpr   r   r9   rn   coef_r8   
intercept_r   r:   r;   r?   Zpredict_log_probar   )ri   rp   r@   Zmlrr   rG   rG   rH   test_multinomial_binary   s    r   c                 C   s~   t | d\}}tddd| d}||| ||}||}t|t|t|   }tjd| |f }t|| d S )Nr)   r   r0   MbP?)r{   ri   r~   r*   r2   )	r   r   r9   decision_functionr<   r6   expZc_r   )global_random_seedrA   rB   r@   ZdecisionprobaZexpected_proba_class_1Zexpected_probarG   rG   rH   %test_multinomial_binary_probabilities  s    

 r   coo_containerc                 C   s   t jj\}}t jt j }tt j}tdd||}||}|	  t
|jsVJ ||}| |}||}	|  ||}
t|| t||	 t||
 d S Nr   r)   )rm   rn   r8   ro   rp   r    r   r9   r   Zsparsifyr   issparser   Zdensifyr   )r   rC   rt   rp   rA   r@   Zpred_d_dZpred_s_dZsp_dataZpred_s_sZpred_d_srG   rG   rH   test_sparsify.  s    






r   c                  C   s   t jd} | d}t |jd }d|d< tdd}|d d }tt	 |
t| W d    n1 sp0    Y  tt	( |
||| d W d    n1 s0    Y  d S )Nr   )   rv   r)   r1   )ra      )r6   randomRandomStateZrandom_sampler>   r8   r   rq   r   r   r9   rA   r:   )rngZX_Zy_r@   Zy_wrongrG   rG   rH   test_inconsistent_inputG  s    

*r   c                  C   sF   t dd} | tt d| jd d < d| jd d < t| td d S r   )r   r9   rA   rO   r   r   r   r   r@   rG   rG   rH   test_write_parameters[  s
    
r   c                  C   s^   t jtt jd} t j| d< tdd}tt |	| t
 W d    n1 sP0    Y  d S )Ndtyper   r2   r   r)   )r6   r   rA   float64nanr   rq   r   r   r9   rO   )ZXnanZlogisticrG   rG   rH   test_nand  s
    

r   c                  C   s\  t jd} t | ddddg | ddf}dgd dgd  }t ddd}t}dD ]z}|t|||d	d
|ddd\}}}t|D ]J\}}	t	|	d	d
|ddd}
|

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

|| t |
j |
jg}t||d dd| d qd S )Nr   rK   r3   r2   r1   rb   rv   r/   r0   Fh㈵>  )rc   rN   r~   ri   r   r*   )rL   rN   r~   ri   r*   r   zwith solver = %s)decimalerr_msg)r+   r-   r.   r,   r/   r0        @@ư>     @)rc   r~   ri   intercept_scalingr*   )rL   r~   r   r*   ri   )r6   r   r   concatenaterandnlogspacer$   r   	enumerater   r9   r   ravelr   r   )r   rA   rB   rc   fri   coefs_irL   rg   Zlr_coefrG   rG   rH   test_consistency_patho  sj    &


	r   c               
   C   s   t jd} t | ddddg | ddf}dgd dgd  }dg}tt&}t|||ddddd W d    n1 s0    Y  t	|dksJ |d j
jd }d	|v sJ d
|v sJ d|v sJ d|v sJ d S )Nr   rK   r3   r2   r1   r           )rc   r~   r   r*   verboselbfgs failed to convergez!Increase the number of iterationszscale the dataz%linear_model.html#logistic-regression)r6   r   r   r   r   rq   rr   r   r   r5   messageargs)r   rA   rB   rc   recordZwarn_msgrG   rG   rH   .test_logistic_regression_path_convergence_fail  s    &$r   c                  C   s   t ddd\} }tddddd}|| | tddddd}|| | tddddd}|| | t|j|j d	}tjt|d
 t|j|j W d    n1 s0    Y  d S )N   r   rC   r*   Tr   r,   )r*   r   r~   ri      z)Arrays are not almost equal to 6 decimalsrk   )r   r   r9   r   r   rq   r   AssertionError)rA   rB   Zlr1Zlr2Zlr3r   rG   rG   rH    test_liblinear_dual_random_state  s4    r   c            	      C   s&  d\} }t jd}|| |}t |d|| }|| 8 }||  }tdgdddd}|	|| t
dddd	}|	|| t|j|j t|jjd
|f t|jdd
g t|jdksJ t t|j }t|jd
dd
|f t|jjd t t|j }t|jd d S )N)2   r   r   r         ?Fr,   ra   )rc   rN   ri   re   )rL   rN   ri   r2   r1   r3   r   )r2   ra   r2   )r6   r   r   r   signdotr   Zstdr   r9   r   r   r   r   r8   r;   r5   asarraylistcoefs_paths_valuesCs_scores_)	rC   rt   r   X_refrB   lr_cvrg   coefs_pathsrV   rG   rG   rH   test_logistic_cv  s*    
r   zscoring, multiclass_agg_listaccuracy 	precisionZ_macroZ	_weightedf1Zneg_log_lossZrecallc                 C   s   t ddddd\}}tdtdd }}tdd}| }d	D ]
}||= qB||| ||  |D ]\}	t| |	 }
tt||||fdg|
d d d d d
|ddiB d d |
||| ||  qfd S )NrK   r   ra      )rC   r*   rE   n_informativeP   r   rw   )rL   rj   
warm_start)rc   rd   Z	pos_classZmax_squared_sumrZ   Zscore_paramsr{   r   r3   )	r   r6   aranger   
get_paramsr9   r   r   r   )rd   Zmulticlass_agg_listrA   rB   traintestrg   paramskeyZ	averagingZscorerrG   rG   rH   "test_logistic_cv_multinomial_score  sB    


r   c            
      C   sv  d\} }}t | ||ddd\}}t g d|}t|d }t }tdd}t }tdd}	||| ||| ||| |	|| t|j	|j	 t
|jg dksJ t|j	|	j	 t
|jg dksJ t
|	jg dksJ t
t||g dksJ t
t|	|g dks6J tddddd	||}	t
t|	|d
dgksrJ d S )N)r   r   ra   ra   r   )rC   rt   rE   r   r*   )barbazZfoor2   )rc   r3   )class_weightr   r   )r   r   r9   Zinverse_transformr6   r   r   r   r   r   sortedr;   r7   r:   )
rC   rt   rE   r   rB   Zy_strrg   r   Zlr_strZ	lr_cv_strrG   rG   rH   2test_multinomial_logistic_regression_string_inputs1  s:    



""r   c                 C   sz   t dddd\}}d||dk < | |}t }||| t }||| t|j|j t|j|j |j|jksvJ d S )Nr   r   r   rC   rt   r*   r   r   )r   r   r9   r   r   r   rf   )rJ   rA   rB   Zcsrr@   ZclfsrG   rG   rH   test_logistic_cv_sparseZ  s    r   c                  C   sn  t jt j } }| j\}}d}t|}t|| |}t|dd}|| | t|d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sJ t|jg d tt|j }
|
jd|d|d fksJ |jjd	ks*J tt|j }|jd|dfksTJ d
D ]}|dv rldnd}t||d|dv rdnddd}|dkrt| } || | || |}|| |}||ksJ |jj|jjksJ t|jg d tt|j }
|
jd|d|d fks*J |jjd	ks<J tt|j }|jd|dfksXJ qXd S )Nr3   rz   )re   r{   r2   r   ra   r   r2   r3   rv   )rv   r   r        r}   r   r|   )ri   r   r*   r~   re   r+   )rm   rn   rp   r8   r   r   splitr   r9   copyr   r   r   r   r6   Znewaxisr   r;   r   r   r   r   r    r[   )r   rp   rC   rt   Zn_cvre   Zprecomputed_foldsr@   clf1Ztarget_copyr   rV   ri   r   	clf_multiZmulti_scoreZ	ovr_scorerG   rG   rH   test_ovr_multinomial_irisk  sV    
 

r  c                     sj   t dddd\ tddd fdd	tD } tj| d
dD ]"\}}t| | j| | jdd qBdS )z)Test solvers converge to the same result.rv   r   r   )rt   r   r*   Fr}   rM   c                    s(   i | ] }|t f d |i qS ri   )r   r9   .0ri   rA   r   rB   rG   rH   
<dictcomp>  s   z4test_logistic_regression_solvers.<locals>.<dictcomp>r3   rra   r   N)r   dictSOLVERS	itertoolscombinationsr   r   )
regressorssolver_1solver_2rG   r  rH    test_logistic_regression_solvers  s    r  rN   FTc                    s   t dddddd\ d}t| |ddd	d
d
d fddtttdg D }tj|ddD ]\}}t|| j|| j|dks|dkrdnd| d| d | rht|| j|| j|dks|dkrdnd| d| d qhdS )zATest solvers converge to the same result for multiclass problems.r   rv   ra   r   rC   rt   r   rE   r*   :0yE>r}   )rN   r~   r*      '  r+   r/   r0   c              
      s2   i | ]*}|t f ||d d qS )rK   ri   r   )r   getr9   r  rA   r   solver_max_iterrB   rG   rH   r    s   z?test_logistic_regression_solvers_multiclass.<locals>.<dictcomp>r,   r3   r  r0   {Gzt?r    vs rtolr   N)	r   r  setr  r  r  r   r   r   )rN   r~   r  r  r  rG   r  rH   +test_logistic_regression_solvers_multiclass  s.    

r!  c              	      s^  t jddd d\}}}tj|}t|||  ||  d|d | rRd ddd	f< t \}}}t|d
ksrJ t|t	| dk sJ | r dddd	f  |j
dd|| d}	|	||}	|j
d	d|d|  }
 |	j |
 }t|d}|j|}t|t|D ].}t|jd||ddf dd |< qdt| ddddddddd fddtttdg D }| D ]$}t|| jjdddd|d qtj|d d!D ]\}}t|| j|| j|d"ks|d"krd#nd$| d%| d& | rt|| j|| j|d"ks>|d"krBd#nd
| d%| d& qdS )'zGTest and compare solver results for unpenalized multinomial multiclass.numpyz1.22.0)Z
minversion)rK   rb   ra   rR   )rC   rt   Zeffective_rankZtail_strengthr*   r2   Nr1   r   rK   ra   )lowhighsize)rE   )nZpvals)r   r   g&.>r}   rM   r  r  r  r  r   c                    s@   i | ]8}|t f tj|||d d qS )rK   )rL   ri   r~   r   )r   r6   infr  r9   r  rA   r   r  
solver_tolr~   rB   rG   rH   r    s   

zKtest_logistic_regression_solvers_multiclass_unpenalized.<locals>.<dictcomp>r,   r   r4   绽|=)atolr   r3   r  r0   r  gMb`?r  r  )rq   Zimportorskipr6   r   r   r   r	   allmaxminuniformZreshapeTr   linkZinversezerosrangeZargwherer   r  r   r  keysr   r   r=   r  r  r   )rN   r   rC   rt   rE   r   UsZVtcoefZ	interceptZraw_predictionlossr   r   r  ri   r  r  rG   r(  rH   7test_logistic_regression_solvers_multiclass_unpenalized  sf    


,


r9  weightrR   g?r   rT   r   r   balancedc           
   	   C   s   t | }|dkr| }tddddd||d\}}tdd|dd	}tf d
di|}ttd ||| W d   n1 s|0    Y  tttg d D ]X}tf d
|i|}	|dv r|	j	dd|d d |	|| t
|	j|jd| dd qdS )z+Test class_weight for LogisticRegressionCV.r:  r   ra   r   )rC   rt   
n_repeatedr   n_redundantrE   r*   r2   Fr  )rc   rN   r   r~   ri   r+   categoryN)r+   r,   r.   r   gC]r2<r  )r~   r   r*   r   z	 vs lbfgsr  )r5   r   r  r   r$   r   r9   r   r  
set_paramsr   r   )
r:  r   r   rE   rA   rB   r   Z	clf_lbfgsri   r@   rG   rG   rH   (test_logistic_regressioncv_class_weights-  s>    
		*
rA  problem)singlere   c                 C   s  d}d}t || dddd|d\}}tj|}t|jd }|d|drRd	nd
dd}	|	 }
|jdd|d|d |< tj	||
tdd}tj	||
tdd}| dkrt}n| dkrJt}tt|dt|dt|dg}tt j||d}|	d|d tj	||
tdd}tt j||d}|
d|d |f d|i|	}|f d|i|
}|dkrt 8 tdt |j|||d ||| W d    n1 s0    Y  n|j|||d ||| | dkrt|jd |jd  t|j|jdd d S )Nr  ra   r   r3   r   )rC   rt   r   rE   r=  r*   Fr/   順 r   r  r*   rN   r   r~   r%  r4   rC  re   r2   )groupsrK   )rc   re   ri   r+   r   rZ   r   r+  )r   r6   r   r   r>   r8   
startswithr   randintrepeatr   intr   r   r   fullr   r   r   updater   r   r   r   r9   r   r   r   )rB  ri   r   Zn_samples_per_cv_groupZn_cv_groupsrA   rB   r   swkw_weightedZkw_repeatedZ
X_repeatedZ
y_repeatedr   Zgroups_weightedZsplits_weightedZgroups_repeatedZsplits_repeatedZclf_sw_weightedZclf_sw_repeatedrG   rG   rH   'test_logistic_regression_sample_weights]  sd    






.
rR  r   c                 C   s   t dddd|d\}}|d }|ddd	d
}tf | dddd|}||| tf d| i|}|j|||d t|j|jdd d S )N,  r   ra   r3   r  r2   FrD  r  rE  r   )ri   r   ri   rH  r   rI  r   r   r9   r   r   )ri   r   rA   rB   rZ   rQ  Z	clf_cw_12Z	clf_sw_12rG   rG   rH   -test_logistic_regression_solver_class_weights  s,    

rU  c              
   C   s   t dddd| d\}}|d }tddddd	d
dd| d}||| tddd
dd| d}|||| t|j|jdd tddddd	dddd| d}||| tdddddd| d}|||| t|j|jdd d S )NrS  r   ra   r3   r  r2   r,   Fr   r   r  -q=)ri   rN   r   r   r   r~   r*   )ri   rN   r   r   r~   r*   r*  rI  l2T)ri   rN   r   r   r   r~   r   r*   )ri   rN   r   r   r~   r   r*   rT  )r   rA   rB   rZ   Zclf_cwZclf_swrG   rG   rH   2test_sample_and_class_weight_equivalence_liblinear  sd    
	
	rX  c                 C   s*   t | }td|| d}tt||}|S )Nr;  )rD   rB   )r6   r7   r"   r  zip)rB   rD   r   class_weight_dictrG   rG   rH    _compute_class_weight_dictionary   s    
r[  c                 C   s   | S NrG   xrG   rG   rH   <lambda>      r_  c                 C   s  t tj}|dd d d f }| |}tjdd  }t|}tttddg D ]}t|dd}tf ddi|}tf d|i|}|	|| |	|| t
|jdksJ t|j|jd	d
 t|jd }	|jD ]}
|	||
k  ||
 9  < qtf i |j	|||	d}t|j|jd	d
 qP|ddd d f }tjdd }t|}tD ]`}t|dd}tf ddi|}tf d|i|}|	|| |	|| t|j|jdd qPd S )N-   r,   r.   r   r  r   r;  ra   -C6?r  r   rH  rK   r   r
  )r    rm   rn   rp   r[  r   r  r  r   r9   r5   r;   r   r   r6   r>   r8   r   )rJ   ZX_irisrA   rB   rZ  ri   r   r   Zclf2rP  cZclf3rG   rG   rH   &test_logistic_regression_class_weights  s8    

re  c                  C   s  d\} }}t | |d|dd\}}tdd|}d}t|dd	}t|ddd
}||| ||| |jj||fkszJ |jj||fksJ dD ]}t|dddd}t|ddddd}	||| |	|| |jj||fksJ |	jj||fksJ t|j|jdd t|j|	jdd t|j|jdd qdD ]H}t	|dddgd}
|
|| t|
j|jdd t|
j|jdd q4d S )N)r   r   ra   rv   r   r  F)Z	with_meanr+   r   ri   r~   )ri   rN   r~   )r/   r0   r-   r}   r   gHz>)ri   r*   r   r~   )ri   r*   r   r~   rN   r   rc  r|   r   r   )ri   r   r~   rc   )
r   r   fit_transformr   r9   r   r8   r   r   r   )rC   rt   rE   rA   rB   ri   Zref_iZref_wZclf_iZclf_wZclf_pathrG   rG   rH   $test_logistic_regression_multinomial/  sX    


rh  c                  C   sN   t dddd\} }tddd}|| | td} t|| td d S )Nr   r   r   Fr,   )rN   ri   )r   r   )r   r   r9   r6   r2  r   r:   )rA   rB   r@   rG   rG   rH   %test_liblinear_decision_function_zeroj  s
    
ri  c                 C   s0   t dddd\}}tdd}|| || d S )Nrv   r   r   r   r,   r  r   r   r9   rJ   rA   rB   r@   rG   rG   rH   test_liblinear_logregcv_sparsey  s    
rl  c                 C   s2   t dddd\}}tddd}|| || d S )Nrv   r   r   r   r0   r|   rf  rj  rk  rG   rG   rH   test_saga_sparse  s    rm  c                  C   s(   t dd} | tt | jdks$J d S )NF)rN   r   )r   r9   rA   rO   r   r   rG   rG   rH   "test_logreg_intercept_scaling_zero  s    
rn  c                  C   s   t jd} d}t|ddd\}}| j|dfd}t j|dfd	}t j|||fd
d}tdddddd}||| tddddddd}||| t	|j
|j
 t	|j
ddd f t d t	|j
ddd f t d d S )Nr}   r   r   r   r   ra   rF  r3   r8   r2   r4   r   r   r,   Fr*  r   rL   ri   rN   r~   r0   r   r   rL   ri   rN   r   r~   r   )r6   r   r   r   normalr>   r   r   r9   r   r   r2  )r   rC   rA   rB   X_noise
X_constantlr_liblinearlr_sagarG   rG   rH   test_logreg_l1  s4    rx  c           
      C   s*  t jd}d}t|ddd\}}|jd|dfd}t j|d	fd
}t j|||fdd}d||dk < | |}tdddddd}||| tddddddd}||| t	|j
|j
 t	|j
ddd f t d t	|j
ddd f t d tddddddd}	|	| | t	|j
|	j
 d S )Nr}   r   r   r   r   rR   ra   )r    r%  r3   ro  r2   r4   r   r   r,   Fr*  rp  r0   r   rq  rr  r   )r6   r   r   r   rs  r2  r   r   r9   r   r   Ztoarray)
rJ   r   rC   rA   rB   rt  ru  rv  rw  Zlr_saga_denserG   rG   rH   test_logreg_l1_sparse_data  sL    ry  random_seedr   r   rW  c                 C   sv   t dd| d\}}td|| ddd}tf dgd	d
|}||| tf ddi|}||| t|j|j d S )NrK   r   r   r0   r   rV  )ri   r   r*   r   r~   r   T)rc   refitrL   )r   r  r   r9   r   r   r   )rz  r   rA   rB   Zcommon_paramsr   rg   rG   rG   rH   !test_logistic_regression_cv_refit  s    r|  c                  C   s   t dddddd\} }tdd}|| | t||| }ttdd}|| | t||| }||ksrJ t||| }t||| }||ksJ d S )Nrv   r   r   ra   )rC   rt   r*   rE   r   r+   r  )r   r   r9   r   r<   r   Z_predict_proba_lr)rA   rB   r  Zclf_multi_lossZclf_ovrZclf_ovr_lossZclf_wrong_lossrG   rG   rH   %test_logreg_predict_proba_multinomial  s    


r}  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.)r/   ?The max_iter was reached which means the coef_ did not converge)r0   r~  )r+   r   )r.   z6Newton solver did not converge after [0-9]* iterationsc                 C   s   t jt j  }}d||dk< |dv r8|dkr8td |dkrR| dkrRtd t| d	|d|d
}tjt|d |	|| W d    n1 s0    Y  |j
d | ksJ d S )Nr   r3   r   r   z+'multinomial' is not supported by liblinearr.   r2   z/solver newton-cholesky might converge very fastgV瞯<)r   r~   r{   r*   ri   rk   )rm   rn   rp   r   rq   skipr   rr   r   r9   n_iter_)r   r{   ri   r   rA   y_binrg   rG   rG   rH   test_max_iter  s     

*r  c           	      C   sl  t jt j }}| dkrt|}t|jd }|dks:J | }d||dk< d}d}tdd| dd	}|	|| |j
jd
ksJ td| ||dd}|	|| |j
jd||fksJ |jdd	|| |j
j|fksJ |jdd	|| |j
j|||fksJ | dv rd S |jdd	|| |j
jd
ks<J |jdd	|| |j
jd||fkshJ d S )Nr+   r   ra   r3   rb   r|   r   r}   )r~   rL   ri   r*   r   )r~   ri   rc   re   r*   r2   rz   r{   r   r   )rm   rn   rp   r    r6   r7   r8   r   r   r9   r  r   r@  )	ri   rA   rB   rE   r  Zn_CsZ	n_cv_foldr@   Zclf_cvrG   rG   rH   test_n_iterG  s6    

r  r   )TFc           	      C   s   t jt j }}td|| d|d}ttd4 ||| |j}d|_||| W d    n1 sd0    Y  t	
t	||j }d|  d|d|}|rd	|ksJ |n|d	ksJ |d S )
Nrb  r}   )r~   r   ri   r*   rN   r>  r2   z Warm starting issue with solver zwith fit_intercept=z and warm_start=       @)rm   rn   rp   r   r$   r   r9   r   r   r6   r=   abs)	ri   r   rN   rA   rB   r@   Zcoef_1Zcum_diffr   rG   rG   rH   test_warm_startz  s.    	*r  c                 C   s  t  }|j|j }}t|gd }t|gd }||dk }||dk d d }tdddd\}}| |}||f||ffD ]\}}dD ]}|jd }	td	ddD ]h}
td
|	|
  ddd|ddd}td
|	|
  ddd|ddd}|	|| |	|| t
|j|jd qqq~d S )Nra   r2   r3   r   r   r   r   )r   rW  r1   r   r0   r  Fr   )rL   ri   r   rN   r   r*   r~   r,   )r   rn   rp   r6   r   r   r8   r   r   r9   r   r   )rJ   rm   rA   rB   ZX_binr  ZX_sparseZy_sparser   rC   alphar0   r,   rG   rG   rH   test_saga_vs_liblinear  sF    





r  )r,   r-   r.   r0   c                 C   s  | dkr"|dkr"t d|  d | dkr0tjntj}tttj}tttj}tttj}tttj}|ttjd}	|ttjd}
d}t	| |d||d}t
|}||| |jj|ksJ t
|}||	| |jj|ksJ t
|}||| |jjtjks J t
|}||
| |jjtjksHJ d	| }tjd
krftrfd}t|j|jtj|d | dkr|rd}t|j|j|d t|j|j|d d S )Nr,   r   zSolver=z' does not support multinomial logistic.r   gMb@?r}   )ri   r{   r*   r~   rN   gQ@ntr|   rI  r0   rR   )rq   r  r6   r   Zfloat32r   rA   r   rO   r   r   r9   r   r   osnamer&   r   )ri   r{   rN   rJ   Z
out32_typeZX_32Zy_32ZX_64Zy_64ZX_sparse_32ZX_sparse_64r)  Zlr_templZlr_32Zlr_32_sparseZlr_64Zlr_64_sparser+  rG   rG   rH   test_dtype_match  sJ    	r  c                  C   s   t jd} t | ddddg | ddf}t dgd dgd  }tdddd}tdd	dd}t||||	|}t
d
D ]}||| qt||	|}t||dd d S )Nr   rK   r3   r2   r1   r/   F)ri   r   r*   Tr   r   rc  )r6   r   r   r   r   r   r   r   r9   r<   r3  r   )r   rA   rB   Zlr_no_wsZlr_wsZlr_no_ws_lossr   Z
lr_ws_lossrG   rG   rH   test_warm_start_converge_LR  s    &r  c               
   C   s   t dd\} }d}d}t }d|fddfD ]6\}}t||dd|d	d
d}|| | ||j q*|\}}	}
tj||	dddrJ tj||
dddrJ tj|
|	dddrJ d S )Nr   r)   r  rT   r   )r   N)rW  Nr0   r   r  )r   rL   ri   r*   l1_ratior~   r   rR   )r  r+  )r   r   r   r9   appendr   r6   allclose)rA   rB   rL   r  Zcoeffsr   ratiorg   Zelastic_net_coeffsZ	l1_coeffsZ	l2_coeffsrG   rG   rH   test_elastic_net_coeffs,  s(    	
r  rL   )r   rR   r2   rv   rK   r       .Azpenalty, l1_ratio)r   r2   )rW  r   c                 C   s^   t dd\}}td| |dddd}t|| dddd}||| ||| t|j|j d S )Nr   r)   r   r0   r|   )r   rL   r  ri   r*   r~   r   rL   ri   r*   r~   )r   r   r9   r   r   )rL   r   r  rA   rB   lr_enetZlr_expectedrG   rG   rH   "test_elastic_net_l1_l2_equivalenceH  s    
r  )r   r2   rK   r  c                 C   s   t ddd\}}t||dd\}}}}dtdddi}td| ddd	d
}t||dd}	td| ddd	d
}
td| ddd	d
}|	|
|fD ]}||| q|	|||
||ksJ |	|||||ksJ d S )Nr   r   r)   r  r2   r   r   r0   r|   r  T)r{  r   rW  )r   r   r6   linspacer   r   r9   r[   )rL   rA   rB   X_trainX_testy_trainy_test
param_gridZenet_clfgsZl1_clfZl2_clfr@   rG   rG   rH   test_elastic_net_vs_l1_l2`  s"    


r  r3   rb   r  )rR   rT   r   c              	      s   t dddddddd\ttddd d	d
}tddd d	d}| |  fdd}||||k sJ d S )Nr   r3   r   rv   r   rC   rE   rt   r   r=  r<  r*   r   r0   F)r   ri   r*   rL   r  rN   rW  )r   ri   r*   rL   rN   c                    sV   | j  } t|  }|tt| 7 }|d d t|| 7 }|S )Nr   rT   )r   r   r   r<   r6   r=   r  r   )rg   r7  objrL   rA   r  rB   rG   rH   enet_objective  s
    
zEtest_LogisticRegression_elastic_net_objective.<locals>.enet_objective)r   r    r   r9   )rL   r  r  Zlr_l2r  rG   r  rH   -test_LogisticRegression_elastic_net_objective}  s2    
	
r  rE   )r3   ra   c           
   	   C   s   t d| ddd\}}td}tddd}tddd}td	|d
||ddd}||| ||d}td	d
ddd}t|||d}	|	|| |	j	d |j
d ksJ |	j	d |jd ksJ d S )NrK   ra   r   rC   rE   r   r*   r   r2   rb   r   r0   r|   )r   rc   ri   re   	l1_ratiosr*   r~   rL   r  )r   ri   r*   r~   re   r  rL   )r   r   r6   r  r   r   r9   r   r   Zbest_params_	l1_ratio_rf   )
rE   rA   rB   re   r  rc   lrcvr  rg   r  rG   rG   rH   2test_LogisticRegressionCV_GridSearchCV_elastic_net  s6    
	
r  c               
   C   s   t ddddd\} }t| |dd\}}}}td}tddd}tdd	d}td
|d||dddd}	|	|| ||d}
td
ddddd}t	||
|d}||| |	
||
|k dksJ |	
||
|k dksJ d S )NrK   ra   r   r  r)   r   r2   r  rb   r   r0   rz   r|   )r   rc   ri   re   r  r*   r{   r~   r  )r   ri   r*   r{   r~   r  rS   )r   r   r   r6   r  r   r   r9   r   r   r:   r   )rA   rB   r  r  r  r  re   r  rc   r  r  rg   r  rG   rG   rH   6test_LogisticRegressionCV_GridSearchCV_elastic_net_ovr  s<    	


 r  )rW  r   )rz   r   autoc           	   
   C   s   d}d}t d|||dd\}}tddd}| dkrDtdd	d
}nd }t| |d|d|ddd}||| |jj|fks~J |jj|fksJ |j	j||fksJ d S )Nra   r   r  r   rC   rE   r   rt   r*   r  rb   r   r2   r3   r0   r|   F)r   rc   ri   r  r*   r{   r~   r{  )
r   r6   r   r  r   r9   rf   r8   r  r   )	r   r{   rE   rt   rA   rB   rc   r  r  rG   rG   rH   "test_LogisticRegressionCV_no_refit   s6    

r  c            
   
   C   s   d} d}t d| | |dd\}}tddd}tddd	}d	}td
|d||dddd}||| tt|j	 }|j
| ||j|j|d fksJ tt|j	 }	|	j
| ||j|jfksJ |jj
| ||j|jfksJ d S )Nra   r   r  r   r  r  rb   r2   r3   r   r0   rz   r|   )r   rc   ri   re   r  r{   r*   r~   )r   r6   r   r  r   r9   r   r   r   r   r8   r%  r   r  )
rE   rt   rA   rB   rc   r  Zn_foldsr  r   rV   rG   rG   rH   5test_LogisticRegressionCV_elasticnet_attribute_shapes)  sD    


r  c                  C   sL   d} t jt| d& tddddtt W d    n1 s>0    Y  d S )NzQl1_ratio parameter is only used when penalty is 'elasticnet'\. Got \(penalty=l1\)rk   r   r0   rT   )r   ri   r  )rq   rr   rs   r   r9   rA   rO   )r   rG   rG   rH   test_l1_ratio_non_elasticnetU  s    r  c              
   C   s   d}t |ddddddd\}}t|}tdddd d	|d
|  | dd}tddddd|| dd}||| ||| t|j|jdd d S )Nr   r3   r   r   r2   r  r   Fr   r   r   )r   r*   rN   r~   r   r  r  r8  r   r   r0   )r   r*   rN   r~   r   r  rL   ri   r
  )r   r    r   r   r9   r   r   )rL   r  rC   rA   rB   ZsgdlogrG   rG   rH   test_elastic_net_versus_sgd^  sD    
	

r  c               	   C   s  t dddddddd\} }g d}t| |d|d	dd
d\}}}tt& t|d |d dd W d    n1 st0    Y  tt& t|d |d dd W d    n1 s0    Y  tt& t|d |d dd W d    n1 s0    Y  d S )Nr  ra   r3   r   r2   )rC   rE   r   r=  Zn_clusters_per_classr*   rt   )r   r2   r  r   r0   r   )r   rc   ri   r*   r{   r
  )r   r   rq   r   r   r   )rA   rB   rc   r   r   rG   rG   rH   /test_logistic_regression_path_coefs_multinomial  s2    
	
44r  estr   )r*   r   ra   r   )r*   re   rc   r~   r   c                 C   s   | j jS r\  )	__class__r]   r]  rG   rG   rH   r_    r`  )Zidsc              	      sX   fdd}t tj}|d d d }|dd d }tjd d d }|dk}|||d|d}|||d|d}	t|j|	j t|||	| |||d|d}
|d	kr|||d|d}t|
j|j t|
||| nx|||d
|d}t|
j|j t|
||| t|j|||d
|djr2J t|j|||d
|djrTJ d S )Nc                    s   t  jf i || |S r\  )r   r@  r9   )rA   rB   kwr  rG   rH   r9     s    z6test_logistic_regression_multi_class_auto.<locals>.fitrv   r2   r   r  )r{   ri   rz   r,   r   )	r    rm   rn   rp   r   r   r<   r6   r  )r  ri   r9   Zscaled_datarA   X2Zy_multir  Zest_auto_binZest_ovr_binZest_auto_multiZest_ovr_multiZest_multi_multirG   r  rH   )test_logistic_regression_multi_class_auto  s<    

r  c           	      C   s   t dddd\}}d}td | dd}tjt|d ||| W d    n1 sT0    Y  td | dd}td	tj| dd
}||||}||||}t	|| d S )Nr   r   )rC   r=  r*   z&Setting penalty=None will ignore the Crb   )r   ri   rL   rk   )r   ri   r*   rW  )r   rL   ri   r*   )
r   r   rq   rr   rs   r9   r6   r'  r:   r   )	ri   rA   rB   r   rg   Zlr_noneZlr_l2_C_infZ	pred_noneZpred_l2_C_infrG   rG   rH   test_penalty_none  s    *
r  r   r   r   )r   r   r~   r   rV  c                 C   s\  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 dd}t jg dt dd}t ||g}t |d| g}t jt|d d	}d
|t|d < t|||d
d\}}}tddd}|j	f i |  t
|||}t
|j|||d}dD ],}	t||	|}
t||	|}t|
| q*d S )Nr2   ra   r3   rb   floatr   )r2   r2   r2   r2   r3   r3   r3   r3   r2   r2   r2   r2   r3   r3   r3   r3   rM  ro  r   r)   r,   r}   )ri   r*   rH  )r:   r<   r   )r6   r   r   ZvstackZhstackr>   r5   r#   r   r@  r   r9   getattrr   )r   rA   rB   r  y2rZ   Zbase_clfZclf_no_weightZclf_with_weightmethodZX_clf_no_weightZX_clf_with_weightrG   rG   rH   /test_logisticregression_liblinear_sample_weight  sH    r  c                  C   s   t ddd\} }tdd}ddg}g d}td	d
|||dddd}|| | |jd jdd}t|D ]^\}}t|D ]L\}	}
td	d
||
dddd}t|| ||d }|||	f t	
|ksxJ qxqhd S )Nr   r   r   r   )Zn_splitsrR   r   )rR   r2   rv   r   r0      r   )r   ri   r  rc   re   r*   r   r~   r2   r4   )r   ri   rL   r  r*   r   r~   r  )r   r   r   r9   r   r   r   r   r   rq   approx)rA   rB   re   r  rc   r  Zavg_scores_lrcvr   rL   jr  rg   Zavg_score_lrrG   rG   rH   'test_scores_attribute_layout_elasticnet(  s:    


r  )r+   r-   r.   c                 C   s   t jj\}}t jt j }ttt jd|d}tt j}||| t	|j
jddddd |r~|jjddtjdddks~J 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+   )rL   ri   rN   r   r4   r*  rI  gdy=)r  N)rm   rn   r8   ro   rp   r   r5   r    r9   r   r   r=   r   rq   r  )ri   rN   rC   rt   rp   r@   ZX_scaledrG   rG   rH   (test_multinomial_identifiability_on_irisT  s    
r  r   g      $@c                 C   sf   t dd\}}t|}t|}d|d |d < | }td|d| d}|j|||d t|| d S )NTZ
return_X_yr3   r   r  )r*   r   r   r{   rH  )r   r5   r6   r>   r   r   r9   r   )r{   r   rA   rB   rt   Wexpectedr@   rG   rG   rH   test_sample_weight_not_modified  s    
r  c                 C   s   |t jdd|d}dD ]}t||t||d qtj|}|jd|j	d d}| d	v rd
}t
jt|d" t| d|| W d    q1 s0    Y  nt| d|| d S )Nr   rv   r)   )indicesZindptrZint64r3   r   rF  )r,   r/   r0   z0Only sparse matrices with 32-bit integer indicesrk   r  )r   Zrandsetattrr  r   r6   r   r   rK  r8   rq   r   r   r   r9   )ri   r   rJ   rA   attrr   rB   r   rG   rG   rH   test_large_sparse_matrix  s    2r  c                  C   sJ   t g dgj} t g d}| jd dks2J tddd| | d S )N)rT   g?g?g      ?rS   gHzG?r   ffffff?)r2   r2   r   r   r2   r2   r   r2   r2   r-   T)ri   rN   )r6   r   r0  r8   r   r9   )rA   rB   rG   rG   rH   test_single_feature_newton_cg  s    r  c               	   C   s   t j } t j }| |dk } ||dk }t | }t| |ddd }tddddd	d
|d}t	 ( t
dt ||| W d    n1 s0    Y  d S )Nr3   r  )r8  gnt@r   r,   r   rK   r   r   )r   ri   r~   r   r   r*   rL   error)rm   rn   r   rp   r   rg  r!   r   r   r   r   r   r9   )rA   rB   ZX_preprL   r@   rG   rG   rH   test_liblinear_not_stuck  s$    


r  Zenable_metadata_routingc                  C   s  t jd} td| d\}}td| d\}}t t|}d|dt|d < d|i}td}t|d}|j||fi | td}	|	j	dd	 t|	d}
|
j||fi | t 
|jd
 |
jd
 rJ |j||fi |}|
j||fi |}t 
||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.
    rv   r   r3   NrZ   r   rd   TrH  r2   )r6   r   r   r   r>   r5   r   r   r9   set_score_requestr  r   r[   )r   rA   rB   X_ty_trZ   kwargsscorer1lr_cv1scorer2lr_cv2score_1score_2rG   rG   rH   8test_lr_cv_scores_differ_when_sample_weight_is_requested  s"    

r  c                  C   sP  t jd} td| d\}}td| d\}}t t|}d|dt|d < d|i}tddJ td}t|d	}|j	||fi | |j
||fi |}	W d   n1 s0    Y  td
dV td}
|
jd
d t|
d	}|j	||fi | |j
||fi |}W d   n1 s"0    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`
    rv   r   r3   NrZ   Fr  r   r  TrH  r2   )r6   r   r   r   r>   r5   r
   r   r   r9   r[   r  r   r   )r   rA   rB   r  r  rZ   r  r  r  r  r  r  r  rG   rG   rH   3test_lr_cv_scores_without_enabling_metadata_routing  s&    
2
4r  c                 C   s   t dd\}}|dk}ttd$ t| dd||}W d    n1 sJ0    Y  | dvrj|jdksjJ | dkrt|jt	|j t|
|tj|jd |jd	 t||tj|jd dfd
d	 |||dk sJ d S )NTr  r3   r>  r   r  )r0   r/   r+   )r8   Z
fill_valuerT   r  )r   r$   r   r   r9   r  r   r   r6   Z
zeros_liker   rN  r8   r   r<   r[   )ri   rA   rB   r@   rG   rG   rH   test_zero_max_iter	  s"    2r  c               	   C   s   t ddd\} }t }d}tdd ddi}tjt|d	$ |j| |fi | W d
   n1 sf0    Y  tjt|d	$ |j| |fi | W d
   n1 s0    Y  W d
   n1 s0    Y  d
S )zTest that the right error message is raised when metadata params
    are passed while not supported when `enable_metadata_routing=False`.rv   r   r   z1is only supported if enable_metadata_routing=TrueFr  Zextra_paramr   rk   N)r   r   r
   rq   r   r   r9   r[   )rA   rB   r   r   r   rG   rG   rH   5test_passing_params_without_enabling_metadata_routing!	  s    2r  c                  C   sB  t dddd\} }tdd}d}tjt|d || | W d	   n1 sP0    Y  tdd}tjt|d || | W d	   n1 s0    Y  t d
ddd\} }tdd}d}tjt|d || | W d	   n1 s0    Y  tdd}tjt|d || | W d	   n1 s40    Y  d	S )z)Check `multi_class` parameter deprecated.ra   r   r   )rE   rC   r   rz   r  z'multi_class' was deprecatedrk   Nr3   r   z-'multi_class' was deprecated.*binary problems)r   r   rq   rr   FutureWarningr9   r   )rA   rB   rg   r   ZlrCVrG   rG   rH   test_multi_class_deprecated3	  s     
*
*
*
r  c           
   	   C   sj  t dd| d\}}d}td|d}t 0 td ||| |jd }W d    n1 s`0    Y  |d	ksvJ td
|d}ttd& ||| |jd }W d    n1 s0    Y  ||ksJ td
||d	 d}ttdV t	j
tdd& ||| |jd }	W d    n1 s(0    Y  W d    n1 sH0    Y  |	|jd	 ksfJ d S )Nrv   r   r   gꌠ9Y>)Fr+   )ri   rL   r  r   r2   r.   r>  )ri   rL   r   r   rk   )r   r   r   r   r   r9   r  r$   r   rq   rr   r   r   )
r   rA   rB   rL   Zlr_lbfgsZn_iter_lbfgsZlr_ncZ	n_iter_ncZlr_nc_limitedZn_iter_nc_limitedrG   rG   rH   &test_newton_cholesky_fallback_to_lbfgsK	  s.    


((
Jr  )r  r  r   	functoolsr   r"  r6   rq   Znumpy.testingr   r   r   r   Zscipyr   Zscipy.linalgr   r	   Zsklearnr
   Zsklearn._lossr   Zsklearn.baser   Zsklearn.datasetsr   r   r   Zsklearn.exceptionsr   Zsklearn.linear_modelr   Zsklearn.linear_model._logisticr   ZLogisticRegressionDefaultr   ZLogisticRegressionCVDefaultr   r   Zsklearn.metricsr   r   Zsklearn.model_selectionr   r   r   r   r   Zsklearn.multiclassr   Zsklearn.preprocessingr   r   r    Zsklearn.svmr!   Zsklearn.utilsr"   r#   Zsklearn.utils._testingr$   r%   Zsklearn.utils.fixesr&   r'   r(   markfilterwarningsZ
pytestmarkr  rA   rO   rx   rm   rI   ZparametrizerQ   rh   ru   ry   r5   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r!  r9  rA  rR  rU  rX  r[  re  rh  ri  rl  rm  rn  rx  ry  r|  r}  r   r  r  r   r   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rG   rG   rG   rH   <module>   s  
!



(
	



	>!



#)


B
#
G.C
;
&;

$
2

1
.
H
)
(

.
&

+	(!

*

-,
*


