o
    \iR                    @   s	  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jBCd*ejBKd+e!ePeIjQd,d-d.e!ePeIjQd/d0e!ePeIjQd1d0e!ePeIjQd2d3d-d4d5e!ePeIjQd6d3d-d4d5e!ePeIjQd7d0gd8d9 ZRejBCd)ejBKd:e!e#gd;d< ZSejBKd:e!e#gd=d> ZTejBCd)ejBKd?g d@dAdB ZUejBCd)dCdD ZVejBKdEe@dFdG ZWdHdI ZXdJdK ZYdLdM ZZdNdO Z[dPdQ Z\dRdS Z]dTdU Z^ejBKdVdWdXgfdYdZd[gfd\dZd[gfd]dXgfd^dZd[gfgd_d` Z_dadb Z`ejBKd eAdcdd ZaejBCd)dedf Zbdgdh ZcejBCd)ejBKdidjdkgdldm ZdejBKdidjdkgdndo ZeejBKdpdqdrdsdqdrdtdugejBKdvdpdwgdxdy ZfejBKdzd{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jBKdd4gejBKdddgdd Zsdd ZtejBCd)ejBKdeuddejBKdd-dgejBKdg ddd ZvejBCd)ejBCd*ejBKd?eEdd ZwejBKd?exeyeEeyd,g ejBKddejBKdiddd ZzejBKd?d7d1gejBKdidejBKdddd Z{ejBKd eAdd Z|ejBCd)ejBKdd-dgejBKd?g dejBKdidjdkgejBKd eAdd Z}dd Z~dd ZejBKdg dejBKdddgdd Ze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jBCd*ejBjKde!d ddލe#d dddddgdd dejBKd?eEdd ZejBKd?exeyeEeyd,g dd ZejBKdddjdddddkdddddjdddgdd Zdd ZejBCd)ejBKd?g dejBKdidjdkgdd ZejBCd)ejBKdg dѢejBKdvddddudwgdd ZejBKd?eEejBKd eAdd Zdd Zdd Zedkddd  Zdd ZejBKd?eEdd Zdd Zdd Zd	d
 ZejBKde!e#g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s%J t|| | |}|j||fks8J t	|j
ddt| t|jdd| dS )z;Check that the model is able to fit the classification datar   r2   axisN)lennpuniqueshapefitpredictr   classes_predict_probar   sumonesargmax)clfXy	n_samplesclasses	n_classes	predictedprobabilities rI   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_logistic.pycheck_predictions?   s   



rK   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*   )rK   r   rB   Y1rL   rI   rI   rJ   test_predict_2_classesQ   s   rS   c                  C   s   G dd d} |  }g d}d}t |||d}tdd\}}||| |jd |d ks/J |j|t| ks:J d|_||||}||jd ksOJ |jdksVJ 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)selfrI   rI   rJ   __init__c   s   z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__init__Nc                 S   s(   | j | jt| j   }|  jd7  _|S )Nr2   )rX   rW   r6   )rY   modelrB   rC   sample_weightscorerI   rI   rJ   __call__g   s   z9test_logistic_cv_mock_scorer.<locals>.MockScorer.__call__N)__name__
__module____qualname__rZ   r^   rI   rI   rI   rJ   
MockScorerb   s    rc   )r2   r3         r3   )Csscoringcvr   r)   r2   )	r   r   r:   C_rW   r6   r]   r;   rX   )rc   mock_scorerrf   rh   lrrB   rC   custom_scorerI   rI   rJ   test_logistic_cv_mock_scorera   s   
rm   c                  C   s^   t dd\} }tddd}d}tjt|d || | W d    d S 1 s(w   Y  d S )Nr   r)   r,   r3   )solvern_jobsz\'n_jobs' > 1 does not have any effect when 'solver' is set to 'liblinear'. Got 'n_jobs' = 2.match)r   r   pytestwarnsUserWarningr:   )rB   rC   rk   warning_messagerI   rI   rJ   test_lr_liblinear_warning   s   "rv   c                 C   s,   t tddtt t tdd| tt d S )N
   rN   )rK   r   rB   Y2rR   rI   rI   rJ   test_predict_3_classes   s   rz   z5ignore:.*'multi_class' was deprecated.*:FutureWarningzIignore:.*'liblinear' solver for multiclass classification is deprecated.*rA   r,   ovr)rN   rn   multi_classr+   )rN   rn   r-   r/   {Gz?*   )rN   rn   tolr|   r*   r0   r.   c                 C   s   t jj\}}t jt j }| jdkr3t  tdt	 | 
t j| W d   n1 s-w   Y  n| 
t j| tt|| j | t j}t||kdksTJ | t j}t|jddt| t j|jdd }t||kdkszJ 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   )irisdatar9   target_namestargetrn   warningscatch_warningssimplefilterr   r:   r   r7   r8   r<   r;   meanr=   r   r>   r?   r@   )rA   rD   
n_featuresr   predrH   rI   rI   rJ   test_predict_iris   s    

r   LRc              	   C   s  t jt j}}dD ]+}d| d}| |dd}tjt|d ||| W d    n1 s/w   Y  q	dD ]*}d| }| |d	d
d}tjt|d ||| W d    n1 s\w   Y  q7dD ]*}d| }| |dd
d}tjt|d ||| W d    n1 sw   Y  qddD ]+}d| d}| |dd}tjt|d ||| W d    n1 sw   Y  q| tu rd}| d dd}tjt|d ||| W d    d S 1 sw   Y  d S d S )Nr,   zSolver z( does not support a multinomial backend.multinomial)rn   r|   rp   )r+   r-   r.   r/   z/Solver %s supports only 'l2' or None penalties,l1r{   )rn   penaltyr|   r+   r-   r.   r/   r0   z1Solver %s supports only dual=False, got dual=TrueT)rn   dualr|   z;Only 'saga' solver supports elasticnet penalty, got solver=.
elasticnet)rn   r   z6penalty=None is not supported for the liblinear solverr,   r   rn   )r   r   r   rr   raises
ValueErrorr:   r   )r   rB   rC   rn   msgrk   rI   rI   rJ   test_check_solver_option   sH   "r   c                 C   sh   | ddd}t jtdd |tddgdd	ggtd
dg W d    d S 1 s-w   Y  d S )Nr   r0   r   z.*l1_ratio.*rp   r2   r3   rd   re   r   )rr   r   r   r:   r7   array)r   r[   rI   rI   rJ   $test_elasticnet_l1_ratio_err_helpful   s   *"r   rn   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s7J t|t j| t| ddd
d}|t j| |jtj|t jdd }t||kdkshJ d S )Nr   setosaz
not-setosar   r~     )rn   r|   r*   max_iterr2   r2   F)rn   r|   r*   rP   r4   ?)r   r   astyper7   intpr   r   r:   r   coef_r9   
intercept_r   r;   r<   r@   predict_log_probar   )rn   r   rA   mlrr   rI   rI   rJ   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|   rn   r   r*   r2   )	r   r   r:   decision_functionr=   r7   expc_r   )global_random_seedrB   rC   rA   decisionprobaexpected_proba_class_1expected_probarI   rI   rJ   %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s+J ||}| |}||}	|  ||}
t|| t||	 t||
 d S Nr   r)   )r   r   r9   r   r   r    r   r:   r   sparsifyr   issparser   densifyr   )r   rD   r   r   rB   rA   pred_d_dpred_s_dsp_datapred_s_spred_d_srI   rI   rJ   test_sparsify0  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 s8w   Y  tt	 |
||| d W d    d S 1 sZw   Y  d S )Nr   )   rw   r)   r1   )rd      )r7   randomRandomStaterandom_sampler?   r9   r   rr   r   r   r:   rB   r;   )rngX_y_rA   y_wrongrI   rI   rJ   test_inconsistent_inputI  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   r:   rB   rQ   r   r   r   r   rA   rI   rI   rJ   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    d S 1 s)w   Y  d S )Ndtyper   r2   r   r)   )r7   r   rB   float64nanr   rr   r   r   r:   rQ   )XnanlogisticrI   rI   rJ   test_nanf  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 ]=}|t|||d	d
|ddd\}}}t|D ]%\}}	t	|	d	d
|ddd}
|

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

|| t |
j |
jg}t||d dd| d qnd S )Nr   rM   r3   r2   r1   re   rw   r/   r0   Fh㈵>  )rf   rP   r   rn   r   r*   )rN   rP   r   rn   r*   r   zwith solver = %s)decimalerr_msg)r+   r-   r.   r,   r/   r0        @@ư>     @)rf   r   rn   intercept_scalingr*   )rN   r   r   r*   rn   )r7   r   r   concatenaterandnlogspacer$   r   	enumerater   r:   r   ravelr   r   )r   rB   rC   rf   frn   coefs_irN   rk   lr_coefrI   rI   rJ   test_consistency_pathq  sn   &

	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 sAw   Y  t	|dksNJ |d j
jd }d	|v s\J d
|v sbJ d|v shJ d|v snJ d S )Nr   rM   r3   r2   r1   r           )rf   r   r   r*   verbosez-lbfgs failed to converge after 1 iteration(s)z!Increase the number of iterationszscale the dataz%linear_model.html#logistic-regression)r7   r   r   r   r   rr   rs   r   r   r6   messageargs)r   rB   rC   rf   recordwarn_msgrI   rI   rJ   .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    d S 1 sUw   Y  d S )N   r   rD   r*   Tr   r,   )r*   r   r   rn      z)Arrays are not almost equal to 6 decimalsrp   )r   r   r:   r   r   rr   r   AssertionError)rB   rC   lr1lr2lr3r   rI   rI   rJ    test_liblinear_dual_random_state  s6   "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sfJ 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,   rd   )rf   rP   rn   rh   )rN   rP   rn   r2   r1   r3   r   )r2   rd   r2   )r7   r   r   r   signdotr   stdr   r:   r   r   r   r   r9   r<   r6   asarraylistcoefs_paths_valuesCs_scores_)	rD   r   r   X_refrC   lr_cvrk   coefs_pathsrX   rI   rI   rJ   test_logistic_cv  s*   
r  zscoring, multiclass_agg_listaccuracy 	precision_macro	_weightedf1neg_log_lossrecallc                 C   s   t ddddd\}}tdtdd}}tdd}| }d	D ]}||= q!||| ||  |D ].}	t| |	 }
tt||||fdg|
d d d d d
|ddiB d d |
||| ||  q3d S )NrM   r   rd      )rD   r*   rF   n_informativeP   r   rx   )rN   ro   
warm_start)rf   rg   	pos_classmax_squared_sumr\   score_paramsr|   r   r3   )	r   r7   aranger   
get_paramsr:   r   r   r   )rg   multiclass_agg_listrB   rC   traintestrk   paramskey	averagingscorerrI   rI   rJ   "test_logistic_cv_multinomial_score  sD   


r  c            
      C   sp  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s\J t|j	|	j	 t
|jg dksnJ t
|	jg dksyJ t
t||g dksJ t
t|	|g dksJ tddddd	||}	t
t|	|d
dgksJ d S )N)r   r   rd   rd   r   )rD   r   rF   r  r*   )barbazfoor2   )rf   r3   )class_weightr  r  )r   r   r:   inverse_transformr7   r   r   r   r   r   sortedr<   r8   r;   )
rD   r   rF   r  rC   y_strrk   r  lr_str	lr_cv_strrI   rI   rJ   2test_multinomial_logistic_regression_string_inputs3  s:   



  $r'  c                 C   sz   t dddd\}}d||dk < | |}t }||| t }||| t|j|j t|j|j |j|jks;J d S )Nr   r   r   rD   r   r*   r   r   )r   r   r:   r   r   r   ri   )rL   rB   rC   csrrA   clfsrI   rI   rJ   test_logistic_cv_sparse\  s   r+  c                  C   sZ  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slJ t|jg d tt|j }
|
jd|d|d fksJ |jjd	ksJ tt|j }|jd|dfksJ d
D ]}|dv rd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s*J qd S )Nr3   r{   )rh   r|   r2   r   rd   r   r2   r3   rw   )rw   r   r        r~   r   r}   )rn   r   r*   r   rh   r+   )r   r   r   r9   r   r   splitr   r:   copyr   r   r   r   r7   newaxisr   r<   r   r   r   r   r    r]   )r  r   rD   r   n_cvrh   precomputed_foldsrA   clf1target_copyr  rX   rn   r   	clf_multimulti_score	ovr_scorerI   rI   rJ   test_ovr_multinomial_irism  sX   
 r9  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 q!dS )z)Test solvers converge to the same result.rw   r   r   )r   r  r*   Fr~   rO   c                    s(   i | ]}|t dd |i qS )rn   rI   )r   r:   .0rn   rB   r  rC   rI   rJ   
<dictcomp>  s    z4test_logistic_regression_solvers.<locals>.<dictcomp>r3   rrd   r   N)r   dictSOLVERS	itertoolscombinationsr   r   )
regressorssolver_1solver_2rI   r<  rJ    test_logistic_regression_solvers  s   rH  rP   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sI|dkrKdnd| d| d | rtt|| j|| j|dksh|dkrjdnd| d| d q4dS )zATest solvers converge to the same result for multiclass problems.r   rw   rd   r   rD   r   r  rF   r*   :0yE>r~   )rP   r   r*      '  r+   r/   r0   c              
      s2   i | ]}|t d||d d qS )rM   rn   r   rI   )r   getr:   r:  rB   r  solver_max_iterrC   rI   rJ   r=    s    z?test_logistic_regression_solvers_multiclass.<locals>.<dictcomp>r,   r3   r>  r0   {Gzt?r    vs rtolr   N)	r   rA  setrB  rC  rD  r   r   r   )rP   r   rE  rF  rG  rI   rP  rJ   +test_logistic_regression_solvers_multiclass  s2   

rW  c              	      sF  d\}}}t j|}t|||  ||  d|d | r"d dddf< t \}}}t |dks2J t |t | dk s@J | rL 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 |< qd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 ]C\}}t|| j|| j|dks|dkrd nd!| d"| d# | r t|| j|| j|dks|dkrd nd| d"| d# qdS )$zGTest and compare solver results for unpenalized multinomial multiclass.)rM   re   rd   rT   )rD   r   effective_ranktail_strengthr*   r2   Nr1   r   rM   rd   )lowhighsize)rF   )npvals)r   r   g&.>r~   rO   rK  rL  rM  rJ  r   c                    s@   i | ]}|t dtj|||d d qS )rM   )rN   rn   r   r   rI   )r   r7   infrO  r:   r:  rB   r  rQ  
solver_tolr   rC   rI   rJ   r=    s    

zKtest_logistic_regression_solvers_multiclass_unpenalized.<locals>.<dictcomp>r,   r   r4   绽|=)atolr   r3   r>  r0   rR  gMb`?rS  rT  )r7   r   r   r   r	   allmaxminuniformreshapeTr   linkinversezerosrangeargwherer   rA  rV  rB  keysr   r   r>   rC  rD  r   )rP   r   rD   r   rF   r   UsVtcoef	interceptraw_predictionlossr   r   rE  rn   rF  rG  rI   r`  rJ   7test_logistic_regression_solvers_multiclass_unpenalized  sh   


*

rw  weightrT   g?r   rV   r,  r!  balancedc           
   	   C   s   t | }|dkr
| }tddddd||d\}}tdd|dd	}tdd
di|}ttd ||| W d   n1 s>w   Y  tttg d D ],}tdd
|i|}	|dv rf|	j	dd|d d |	|| t
|	j|jd| dd qMdS )z+Test class_weight for LogisticRegressionCV.rx  r.  rd   r   )rD   r   
n_repeatedr  n_redundantrF   r*   r2   FrJ  )rf   rP   r!  r   rn   r+   categoryN)r+   r,   r.   r   gC]r2<rL  )r   r   r*   r   z	 vs lbfgsrT  rI   )r6   r   rA  r   r$   r   r:   rV  rB  
set_paramsr   r   )
rx  r!  r   rF   rB   rC   r  	clf_lbfgsrn   rA   rI   rI   rJ   (test_logistic_regressioncv_class_weights-  sB   
		
r  problem)singlerh   c                 C   s  d}d}t || dddd|d\}}tj|}t|jd }|d|dr)d	nd
dd}	|	 }
|jdd|d|d |< tj	||
tdd}tj	||
tdd}| dkr[t}nI| dkrt}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 |dd|i|	}|dd|i|
}|dkrt  tdt |j|||d ||| W d    n1 sw   Y  n|j|||d ||| | dkrt|jd |jd  t|j|jdd d S )NrK  rd   r   r3   r   )rD   r   r  rF   r{  r*   Fr/   順 r   rJ  r*   rP   r   r   r\  r4   r  rh   r2   )groupsrM   )rf   rh   rn   r+   r   r\   r   rc  rI   )r   r7   r   r   r?   r9   
startswithr0  randintrepeatr   intr   r   r   fullr   r   r/  updater   r   r   r   r:   r   r   r   )r  rn   r   n_samples_per_cv_groupn_cv_groupsrB   rC   r   swkw_weightedkw_repeated
X_repeated
y_repeatedr   groups_weightedsplits_weightedgroups_repeatedsplits_repeatedclf_sw_weightedclf_sw_repeatedrI   rI   rJ   'test_logistic_regression_sample_weights]  sh   





r  r   c                 C   s   t dddd|d\}}|d }|ddd	d
}td| dddd|}||| tdd| i|}|j|||d t|j|jdd d S )N,  r   rd   r3   rI  r2   Fr  rJ  r  r   )rn   r!  rn   r  r   r  rI   r   r   r:   r   r   )rn   r   rB   rC   r\   r  	clf_cw_12	clf_sw_12rI   rI   rJ   -test_logistic_regression_solver_class_weights  s,   

r  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 )Nr  r   rd   r3   rI  r2   r,   Fr   r   rL  -q=)rn   rP   r!  r   r   r   r*   )rn   rP   r   r   r   r*   rb  r  l2T)rn   rP   r!  r   r   r   r   r*   )rn   rP   r   r   r   r   r*   r  )r   rB   rC   r\   clf_cwclf_swrI   rI   rJ   2test_sample_and_class_weight_equivalence_liblinear  sd   
	
	r  c                 C   s*   t | }td|| d}tt||}|S )Nry  )rE   rC   )r7   r8   r"   rA  zip)rC   rE   r!  class_weight_dictrI   rI   rJ    _compute_class_weight_dictionary   s   
r  c                 C   s   | S r_   rI   xrI   rI   rJ   <lambda>  s    r  c                 C   s  t tj}|dd d d f }| |}tjdd  }t|}tttddg D ]h}t|dd}tdddi|}tdd|i|}|	|| |	|| t
|jdksWJ t|j|jd	d
 t|jd }	|jD ]}
|	||
k  ||
 9  < qktdi |j	|||	d}t|j|jd	d
 q(|ddd d f }tjdd }t|}tD ]/}t|dd}tdddi|}tdd|i|}|	|| |	|| t|j|jdd qd S )N-   r,   r.   r   rN  r!  ry  rd   -C6?rU  r   r  rM   r  r@  rI   )r    r   r   r   r  rV  rB  rA  r   r:   r6   r<   r   r   r7   r?   r9   r   )rL   X_irisrB   rC   r  rn   r  r4  clf2r  cclf3rI   rI   rJ   &test_logistic_regression_class_weights  s:   

r  c                  C   s  d\} }}t | |d|dd\}}tdd|}d}t|dd	}t|ddd
}||| ||| |jj||fks=J |jj||fksGJ dD ]N}t|dddd}t|ddddd}	||| |	|| |jj||fksrJ |	jj||fks|J t|j|jdd t|j|	jdd t|j|jdd qIdD ]#}t	|dddgd}
|
|| t|
j|jdd t|
j|jdd qd S )N)r   r   rd   rw   r   rI  F)	with_meanr+   r   rn   r   )rn   rP   r   )r/   r0   r-   r~   r   gHz>)rn   r*   r   r   )rn   r*   r   r   rP   r   r  r}   r   r   )rn   r   r   rf   )
r   r   fit_transformr   r:   r   r9   r   r   r   )rD   r   rF   rB   rC   rn   ref_iref_wclf_iclf_wclf_pathrI   rI   rJ   $test_logistic_regression_multinomial/  sZ   


r  c                  C   sN   t dddd\} }tddd}|| | td} t|| td d S )Nr   r   r(  Fr,   )rP   rn   )r   r   )r   r   r:   r7   rl  r   r;   )rB   rC   rA   rI   rI   rJ   %test_liblinear_decision_function_zeroj  s
   
r  c                 C   s0   t dddd\}}tdd}|| || d S )Nrw   r   r   r(  r,   rn   r   r   r:   rL   rB   rC   rA   rI   rI   rJ   test_liblinear_logregcv_sparsey  s   
r  c                 C   s2   t dddd\}}tddd}|| || d S )Nrw   r   r   r(  r0   r}   r  r  r  rI   rI   rJ   test_saga_sparse  s   r  c                  C   s(   t dd} | tt | jdksJ d S )NF)rP   r   )r   r:   rB   rQ   r   r   rI   rI   rJ   "test_logreg_intercept_scaling_zero  s   
r  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(  rd   r  r3   r9   r2   r4   r   r   r,   Frb  r   rN   rn   rP   r   r0   r   r   rN   rn   rP   r   r   r   )r7   r   r   r   normalr?   r   r   r:   r   r   rl  )r   rD   rB   rC   X_noise
X_constantlr_liblinearlr_sagarI   rI   rJ   test_logreg_l1  s4   "r  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(  rT   rd   )r    r\  r3   r  r2   r4   r   r   r,   Frb  r  r0   r   r  r  r   )r7   r   r   r   r  rl  r   r   r:   r   r   toarray)
rL   r   rD   rB   rC   r  r  r  r  lr_saga_denserI   rI   rJ   test_logreg_l1_sparse_data  sL   r  random_seedr   r   r  c                 C   sv   t dd| d\}}td|| ddd}tddgd	d
|}||| tdddi|}||| t|j|j d S )NrM   r   r(  r0   r   r  )rn   r   r*   r   r   r   T)rf   refitrN   rI   )r   rA  r   r:   r   r   r   )r  r   rB   rC   common_paramsr  rk   rI   rI   rJ   !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s9J t||| }t||| }||ksOJ d S )Nrw   r   r   rd   )rD   r   r*   rF   r  r+   r  )r   r   r:   r   r=   r   _predict_proba_lr)rB   rC   r6  clf_multi_lossclf_ovrclf_ovr_lossclf_wrong_lossrI   rI   rJ   %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+   lbfgs failed to converge)r.   z6Newton solver did not converge after [0-9]* iterationsc                 C   s   t jt j }}d||dk< |dv r|dkrtd |dkr)| dkr)td t| d	|d|d
}tjt|d |	|| W d    n1 sJw   Y  |j
d | ksXJ 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*   rn   rp   )r   r   r   r0  rr   skipr   rs   r   r:   n_iter_)r   r|   rn   r   rB   y_binrk   rI   rI   rJ   test_max_iter  s"   

r  c           	      C   sd  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sAJ td| ||dd}|	|| |j
jd||fks[J |jdd	|| |j
j|fksnJ |jdd	|| |j
j|||fksJ | dv rd S |jdd	|| |j
jd
ksJ |jdd	|| |j
jd||fksJ d S )Nr+   r   rd   r3   re   r}   r   r~   )r   rN   rn   r*   r   )r   rn   rf   rh   r*   r2   r{   r|   r   r   )r   r   r   r    r7   r8   r9   r0  r   r:   r  r   r~  )	rn   rB   rC   rF   r  n_Cs	n_cv_foldrA   clf_cvrI   rI   rJ   test_n_iterG  s6   
r  r  )TFc           	      C   s   t jt j}}td|| d|d}ttd ||| |j}d|_||| W d    n1 s2w   Y  t	
t	||j }d|  d|d|}|rYd	|ksWJ |d S |d	ksaJ |d S )
Nr  r~   )r   r  rn   r*   rP   r|  r2   z Warm starting issue with solver zwith fit_intercept=z and warm_start=       @)r   r   r   r   r$   r   r:   r   r   r7   r>   abs)	rn   r  rP   rB   rC   rA   coef_1cum_diffr   rI   rI   rJ   test_warm_start}  s0   r  r  Nc                 C   s   t jt j}}t|d||| d}ttd ||| W d   n1 s&w   Y  t|dd||| d}ttd ||| ||| W d   n1 sQw   Y  t|j|j |rht|j	|j	 dS dS )zITest that 2 steps at once are the same as 2 single steps with warm start.r3   )rn   r   rP   r   r*   r|  Nr2   T)rn   r   r  rP   r   r*   )
r   r   r   r   r$   r   r:   r   r   r   )r   rn   rP   r   rB   rC   r4  r  rI   rI   rJ   test_warm_start_newton_solver  s6   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 ]J\}}dD ]C}|jd }	td	ddD ]4}
td
|	|
  ddd|ddd}td
|	|
  ddd|ddd}|	|| |	|| t
|j|jd qSqEq?d S )Nrd   r2   r3   r   r   r   r(  )r   r  r1   r   r0   rK  Fr   )rN   rn   r   rP   r   r*   r   r,   )r   r   r   r7   r   r   r9   r   r   r:   r   r   )rL   r   rB   rC   X_binr  X_sparsey_sparser   rD   alphar0   r,   rI   rI   rJ   test_saga_vs_liblinear  sL   





r  )r,   r-   r.   r0   c                 C   s  | dkr|dkrt d|  d | dkrt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sjJ t
|}||	| |jj|ks|J t
|}||| |jjtjksJ t
|}||
| |jjtjksJ d	| }tjd
krtrd}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~   )rn   r|   r*   r   rP   gQ@ntr}   r  r0   rT   )rr   r  r7   r   float32r   rB   r   rQ   r   r   r:   r   r   osnamer&   r   )rn   r|   rP   rL   
out32_typeX_32y_32X_64y_64X_sparse_32X_sparse_64ra  lr_templlr_32lr_32_sparselr_64lr_64_sparserc  rI   rI   rJ   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 ]}||| qDt||	|}t||dd d S )Nr   rM   r3   r2   r1   r/   F)rn   r  r*   Tr   r   r  )r7   r   r   r   r   r   r   r   r:   r=   rm  r   )r   rB   rC   lr_no_wslr_wslr_no_ws_lossr   
lr_ws_lossrI   rI   rJ   test_warm_start_converge_LR>  s   &r  c               
   C   s   t dd\} }d}d}t }d|fddfD ]\}}t||dd|d	d
d}|| | ||j q|\}}	}
tj||	dddrAJ tj||
dddrLJ tj|
|	dddrWJ d S )Nr   r)   r  rV   r   )r   Nr  r0   r   rK  )r   rN   rn   r*   l1_ratior   r   rT   )rU  rc  )r   r   r   r:   appendr   r7   allclose)rB   rC   rN   r	  coeffsr   ratiork   elastic_net_coeffs	l1_coeffs	l2_coeffsrI   rI   rJ   test_elastic_net_coeffsO  s(   	
r  rN   )r   rT   r2   rw   rM   r       .Azpenalty, l1_ratio)r   r2   )r  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   rN   r	  rn   r*   r   r   rN   rn   r*   r   )r   r   r:   r   r   )rN   r   r	  rB   rC   lr_enetlr_expectedrI   rI   rJ   "test_elastic_net_l1_l2_equivalencek  s   
r  )r   r2   rM   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 ]}||| qC|	|||
||ksZJ |	|||||kshJ d S )Nr-  r   r)   r	  r2   r   r   r0   r}   r  T)r  r   r  )r   r   r7   linspacer   r   r:   r]   )rN   rB   rC   X_trainX_testy_trainy_test
param_gridenet_clfgsl1_clfl2_clfrA   rI   rI   rJ   test_elastic_net_vs_l1_l2  s"   


 r!  r3   re   r	  )rT   rV   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 sCJ d S )Nr   r3   r   rw   r   rD   rF   r   r  r{  rz  r*   r   r0   F)r   rn   r*   rN   r	  rP   r  )r   rn   r*   rN   rP   c                    sV   | j  } t|  }|tt| 7 }|d d t|| 7 }|S )Nr   rV   )r   r   r   r=   r7   r>   r  r   )rk   rs  objrN   rB   r	  rC   rI   rJ   enet_objective  s
   
zEtest_LogisticRegression_elastic_net_objective.<locals>.enet_objective)r   r    r   r:   )rN   r	  r  lr_l2r&  rI   r%  rJ   -test_LogisticRegression_elastic_net_objective  s2   
	
r(  rF   )r3   rd   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sSJ |	j	d |jd ks_J d S )NrM   rd   r   rD   rF   r  r*   r   r2   re   r   r0   r}   )r   rf   rn   rh   	l1_ratiosr*   r   rN   r	  )r   rn   r*   r   rh   r	  rN   )r   r   r7   r  r   r   r:   r   r   best_params_	l1_ratio_ri   )
rF   rB   rC   rh   r+  rf   lrcvr  rk   r  rI   rI   rJ   2test_LogisticRegressionCV_GridSearchCV_elastic_net  s6   
	
r1  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sdJ |	
||
|k dkstJ d S )NrM   rd   r   r)  r)   r   r2   r*  re   r   r0   r{   r}   )r   rf   rn   rh   r+  r*   r|   r   r,  )r   rn   r*   r|   r   r-  rU   )r   r   r   r7   r  r   r   r:   r   r   r;   r   )rB   rC   r  r  r  r  rh   r+  rf   r0  r  rk   r  rI   rI   rJ   6test_LogisticRegressionCV_GridSearchCV_elastic_net_ovr  s<   	


 $r2  )r  r   )r{   r   autoc           	   
   C   s   d}d}t d|||dd\}}tddd}| dkr"tdd	d
}nd }t| |d|d|ddd}||| |jj|fks?J |jj|fksHJ |j	j||fksRJ d S )Nrd   r   rK  r   rD   rF   r  r   r*   r*  re   r   r2   r3   r0   r}   F)r   rf   rn   r+  r*   r|   r   r  )
r   r7   r   r  r   r:   ri   r9   r/  r   )	r   r|   rF   r   rB   rC   rf   r+  r0  rI   rI   rJ   "test_LogisticRegressionCV_no_refit#  s6   

r5  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sKJ tt|j	 }	|	j
| ||j|jfksbJ |jj
| ||j|jfkspJ d S )Nrd   r   rK  r   r4  r*  re   r2   r3   r   r0   r{   r}   )r   rf   rn   rh   r+  r|   r*   r   )r   r7   r   r  r   r:   r   r   r   r   r9   r\  r   r  )
rF   r   rB   rC   rf   r+  n_foldsr0  r  rX   rI   rI   rJ   5test_LogisticRegressionCV_elasticnet_attribute_shapesL  sD   


 r7  c                  C   sN   d} t jt| d tddddtt W d    d S 1 s w   Y  d S )NzQl1_ratio parameter is only used when penalty is 'elasticnet'\. Got \(penalty=l1\)rp   r   r0   rV   )r   rn   r	  )rr   rs   rt   r   r:   rB   rQ   )r   rI   rI   rJ   test_l1_ratio_non_elasticnetx  s
   "r8  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*   rP   r   r   r	  r  rv  r   r   r0   )r   r*   rP   r   r   r	  rN   rn   r@  )r   r    r   r   r:   r   r   )rN   r	  rD   rB   rC   sgdlogrI   rI   rJ   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 s:w   Y  tt t|d |d dd W d    n1 sZw   Y  tt t|d |d dd W d    d S 1 s{w   Y  d S )NrK  rd   r3   r   r2   )rD   rF   r  r{  n_clusters_per_classr*   r   )r   r2   rL  r   r0   r   )r   rf   rn   r*   r|   r@  )r   r   rr   r   r   r   )rB   rC   rf   r   r   rI   rI   rJ   /test_logistic_regression_path_coefs_multinomial  s8   
	
"r=  estr-  )r*   r   rd   r   )r*   rh   rf   r   r   c                 C   s   | j jS r_   )	__class__r`   r  rI   rI   rJ   r    s    )idsc              	      sV   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ro|||d|d}t|
j|j t|
||| d S |||d
|d}t|
j|j t|
||| t|j|||d
|djrJ t|j|||d
|djrJ d S )Nc                    s   t  jdi || |S )NrI   )r   r~  r:   )rB   rC   kwr>  rI   rJ   r:     s   z6test_logistic_regression_multi_class_auto.<locals>.fitrw   r2   r   r3  )r|   rn   r{   r,   r   )	r    r   r   r   r   r   r=   r7   r  )r>  rn   r:   scaled_datarB   X2y_multir  est_auto_binest_ovr_binest_auto_multiest_ovr_multiest_multi_multirI   rB  rJ   )test_logistic_regression_multi_class_auto  s<   
rK  c           	      C   s   t dddd\}}d}td | dd}tjt|d ||| W d    n1 s*w   Y  td | dd}td	tj| dd
}||||}||||}t	|| d S )Nr   r   )rD   r{  r*   z&Setting penalty=None will ignore the Cre   )r   rn   rN   rp   )r   rn   r*   r  )r   rN   rn   r*   )
r   r   rr   rs   rt   r:   r7   r_  r;   r   )	rn   rB   rC   r   rk   lr_nonelr_l2_C_inf	pred_nonepred_l2_C_infrI   rI   rJ   test_penalty_none  s   
rP  r  r   r   )r   r   r   r   r  c                 C   sZ  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	di |  t
|||}t
|j|||d}dD ]}	t||	|}
t||	|}t|
| qd S )Nr2   rd   r3   re   floatr   )r2   r2   r2   r2   r3   r3   r3   r3   r2   r2   r2   r2   r3   r3   r3   r3   r  r  r   r)   r,   r~   )rn   r*   r  )r;   r=   r   rI   )r7   r   r   vstackhstackr?   r6   r#   r   r~  r   r:   getattrr   )r  rB   rC   rD  y2r\   base_clfclf_no_weightclf_with_weightmethodX_clf_no_weightX_clf_with_weightrI   rI   rJ   /test_logisticregression_liblinear_sample_weight  sJ   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 ]&\}	}
td	d
||
dddd}t|| ||d }|||	f t	
|ksbJ q<q4d S )Nr   r   r   r   )n_splitsrT   r   )rT   r2   rw   r   r0      r   )r   rn   r+  rf   rh   r*   r   r   r2   r4   )r   rn   rN   r	  r*   r   r   r-  )r   r   r   r:   r   r   r   r   r   rr   approx)rB   rC   rh   r+  rf   r0  avg_scores_lrcvr   rN   jr	  rk   avg_score_lrrI   rI   rJ   'test_scores_attribute_layout_elasticnetN  s>   


rc  )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sAJ 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+   )rN   rn   rP   r   r4   rb  r  gdy=)r  N)r   r   r9   r   r   r   r6   r    r:   r   r   r>   r   rr   r_  )rn   rP   rD   r   r   rA   X_scaledrI   rI   rJ   (test_multinomial_identifiability_on_irisz  s   
 re  r   g      $@c                 C   sf   t dd\}}t|}t|}d|d |d < | }td|d| d}|j|||d t|| d S )NT
return_X_yr3   r   rK  )r*   r!  r   r|   r  )r   r6   r7   r?   r0  r   r:   r   )r|   r!  rB   rC   r   WexpectedrA   rI   rI   rJ   test_sample_weight_not_modified  s   
rj  c                 C   s   |t jdd|d}dD ]}t||t||d qtj|}|jd|j	d d}| d	v rTd
}t
jt|d t| d|| W d    d S 1 sMw   Y  d S t| d|| d S )Nr   rw   r)   )indicesindptrint64r3   r   r  )r,   r/   r0   z0Only sparse matrices with 32-bit integer indicesrp   r  )r   randsetattrrT  r   r7   r   r   r  r9   rr   r   r   r   r:   )rn   r   rL   rB   attrr   rC   r   rI   rI   rJ   test_large_sparse_matrix  s   "rq  c                  C   sJ   t g dgj} t g d}| jd dksJ tddd| | d S )N)rV   g?g?g      ?rU   gHzG?r   ffffff?)r2   r2   r   r   r2   r2   r   r2   r2   r-   T)rn   rP   )r7   r   ri  r9   r   r:   )rB   rC   rI   rI   rJ   test_single_feature_newton_cg  s   rs  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    d S 1 sLw   Y  d S )Nr3   r:  )rv  gnt@r   r,   r   rM   r   r   )r   rn   r   r   r   r*   rN   error)r   r   r0  r   r   r  r!   r   r   r   r   r   r:   )rB   rC   X_preprN   rA   rI   rI   rJ   test_liblinear_not_stuck  s&   


"rv  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
 reJ |j||fi |}|
j||fi |}t 
||rJ 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.
    rw   r   r3   Nr\   r  rg   Tr  r2   )r7   r   r   r   r?   r6   r   r   r:   set_score_requestr  r   r]   )r   rB   rC   X_ty_tr\   kwargsscorer1lr_cv1scorer2lr_cv2score_1score_2rI   rI   rJ   8test_lr_cv_scores_differ_when_sample_weight_is_requested  s"   

r  c                  C   sN  t jd} td| d\}}td| d\}}t t|}d|dt|d < d|i}tdd% td}t|d	}|j	||fi | |j
||fi |}	W d   n1 sXw   Y  td
d+ td}
|
jd
d t|
d	}|j	||fi | |j
||fi |}W d   n1 sw   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`
    rw   r   r3   Nr\   Frw  r  ry  Tr  r2   )r7   r   r   r   r?   r6   r
   r   r   r:   r]   rz  r   r   )r   rB   rC   r{  r|  r\   r}  r~  r  r  r  r  r  rI   rI   rJ   3test_lr_cv_scores_without_enabling_metadata_routing	  s*   

r  c                 C   s   t dd\}}|dk}ttd t| dd||}W d    n1 s%w   Y  | dvr5|jdks5J | dkrft|jt	|j t|
|tj|jd |jd	 t||tj|jd dfd
d	 |||dk spJ d S )NTrf  r3   r|  r   rN  )r0   r/   r+   )r9   
fill_valuerV   rr  )r   r$   r   r   r:   r  r   r   r7   
zeros_liker   r  r9   r   r=   r]   )rn   rB   rC   rA   rI   rI   rJ   test_zero_max_iter-	  s$   r  c               	   C   s   t ddd\} }t }d}tddW ddi}tjt|d	 |j| |fi | W d
   n1 s3w   Y  tjt|d	 |j| |fi | W d
   n1 sTw   Y  W d
   d
S W d
   d
S 1 slw   Y  d
S )zTest that the right error message is raised when metadata params
    are passed while not supported when `enable_metadata_routing=False`.rw   r   r   z1is only supported if enable_metadata_routing=TrueFrw  extra_paramr   rp   N)r   r   r
   rr   r   r   r:   r]   )rB   rC   r  r   r  rI   rI   rJ   5test_passing_params_without_enabling_metadata_routingG	  s   "r  c                  C   sB  t dddd\} }tdd}d}tjt|d || | W d	   n1 s(w   Y  tdd}tjt|d || | W d	   n1 sJw   Y  t d
ddd\} }tdd}d}tjt|d || | W d	   n1 sww   Y  tdd}tjt|d || | W d	   d	S 1 sw   Y  d	S )z)Check `multi_class` parameter deprecated.rd   r   r  )rF   rD   r  r{   r  z'multi_class' was deprecatedrp   Nr3   r   z-'multi_class' was deprecated.*binary problems)r   r   rr   rs   FutureWarningr:   r   )rB   rC   rk   r   lrCVrI   rI   rJ   test_multi_class_deprecatedY	  s(   



"r  c           
   	   C   sd  t dd| d\}}d}td|d}t  td ||| |jd }W d    n1 s0w   Y  |d	ks;J td
|d}ttd ||| |jd }W d    n1 s\w   Y  ||ksgJ td
||d	 d}ttd* t	j
tdd ||| |jd }	W d    n1 sw   Y  W d    n1 sw   Y  |	|jd	 ksJ d S )Nrw   r   r(  gꌠ9Y>)Fr+   )rn   rN   rt  r   r2   r.   r|  )rn   rN   r   r  rp   )r   r   r   r   r   r:   r  r$   r   rr   rs   r   r   )
r   rB   rC   rN   lr_lbfgsn_iter_lbfgslr_nc	n_iter_nclr_nc_limitedn_iter_nc_limitedrI   rI   rJ   &test_newton_cholesky_fallback_to_lbfgsq	  s8   



r  	Estimatorc                 C   sN   d}t jt|d | ddtjtj W d   dS 1 s w   Y  dS )z2Check that liblinear warns on multiclass problems.a  Using the 'liblinear' solver for multiclass classification is deprecated. An error will be raised in 1.8. Either use another solver which supports the multinomial loss or wrap the estimator in a OneVsRestClassifier to keep applying a one-versus-rest scheme.rp   r,   r  N)rr   rs   r  r:   r   r   r   )r  r   rI   rI   rJ   !test_liblinear_multiclass_warning	  s
   "r  )rC  r  r   	functoolsr   numpyr7   rr   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
pytestmarkrB  rB   rQ   ry   r   rK   parametrizerS   rm   rv   rz   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r'  r+  r9  rH  rW  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  rV  r  r  r  r  r  r  r  r!  r   r(  r1  r2  r5  r7  r8  r;  r=  rK  rP  r\  rc  re  rj  rq  rs  rv  r  r  r  r  r  r  r  rI   rI   rI   rJ   <module>   s   
!



(

	


	>!



#)


B
#
E.C
;
&;

$
2

1

.H
)

(

.
&
+	(
!
*

-
,
*
+