o
    }ThEV  ã                   @   s‚  d dl Z d dlZd dlZd dlmZ d dlmZ d dl	m
Z
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	„ Zd
d„ Zdd„ Zdd„ Zdydd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd „ Z!d!d"„ Z"ej# $d#g d$¢g d%¢fe %d&d&gd'd'gd'd'gd'd'gg¡e %d&d&gd&d&gd'd'gd'd'gg¡fg¡d(d)„ ƒZ&ej# $d*g d+¢¡d,d-„ ƒZ'd.d/„ Z(d0d1„ Z)d2d3„ Z*d4d5„ Z+d6d7„ Z,d8d9„ Z-d:d;„ Z.d<d=„ Z/d>d?„ Z0d@dA„ Z1dBdC„ Z2dDdE„ Z3dFdG„ Z4dHdI„ Z5dJdK„ Z6dLdM„ Z7ej#j$dNg dO¢dPd idQfg dO¢dRd&d gidSfe 8g dO¢g dO¢g¡dRd&idSfg dO¢dRdTidUfe 8g dO¢g dO¢g¡dRd&dVgidWfgg dX¢dYdZd[„ ƒZ9d\d]„ Z:ej# $d^e¡d_d`„ ƒZ;ej# $d^e¡dadb„ ƒZ<ej# $d^e¡dcdd„ ƒZ=ej# $d^e¡dedf„ ƒZ>dydgdh„Z?didj„ Z@dkdl„ ZAdmdn„ ZBej# $d#g do¢dpgdq fe %d&d&gd'd'gd'd'gd'd'gg¡dpdpggdq fg¡drds„ ƒZCej# $d*g dt¢¡dudv„ ƒZDej# $d*g d+¢¡dwdx„ ƒZEdS )zé    N)Úclone)ÚDummyClassifierÚDummyRegressor)ÚNotFittedError)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)ÚCSC_CONTAINERS)Ú_weighted_percentilec              	   C   sN  |   |¡}t ¡  t dd¡ |  |¡}W d   ƒ n1 sw   Y  t |¡}|jdkr4t |d¡}|j	d }t
|ƒ}|dkrG|g}|g}t|ƒD ]Y}|| j	d |ksXJ ‚|| j	d t
t |d d …|f ¡ƒksnJ ‚t|| jddt t
|ƒ¡ƒ t ¡  t dd¡ tt || ¡|| ƒ W d   ƒ n1 sŸw   Y  qKd S )NÚignorez!divide by zero encountered in logé   )éÿÿÿÿr   r   ©Úaxis)Úpredict_probaÚwarningsÚcatch_warningsÚfilterwarningsÚpredict_log_probaÚnpÚ
atleast_1dÚndimÚreshapeÚshapeÚlenÚrangeÚuniquer   ÚsumÚonesÚlog)ÚclfÚXÚyÚprobaÚ	log_probaÚ	n_outputsÚ	n_samplesÚk© r(   úY/home/air/segue/gemini/back/venv/lib/python3.10/site-packages/sklearn/tests/test_dummy.pyÚ_check_predict_proba   s.   

þ


, 
þ€ûr*   c                 C   sª   t  dgdgdgdgg¡}t  g d¢¡}t| ƒ}| ||¡ | |¡}|j|jks+J ‚t  ddgddgddgddgg¡}t| ƒ}| ||¡ | |¡}|j|jksSJ ‚d S )Nr   ©r   é   r   r   r   r,   é   ©r   Úarrayr   ÚfitÚpredictr   ©r    r!   r"   ÚestÚy_predr(   r(   r)   Ú_check_behavior_2d0   s   
"
r5   c                 C   sn   t  dgdgdgdgg¡}t  g d¢g d¢g d¢g d¢g¡}t| ƒ}| ||¡ | |¡}|j|jks5J ‚d S )Nr   )r   r   é   é   r-   )r,   r   r   r,   r6   )r   r   r7   r6   r,   )r   r-   r-   r,   r   r.   r2   r(   r(   r)   Ú_check_behavior_2d_for_constantA   s   "
r8   c                 C   s<   t t | |jd df¡|ƒ t t | |jd df¡|ƒ d S )Nr   r   )r   r   Útiler   )Ú	statisticÚy_learnÚy_pred_learnÚy_testÚy_pred_testr(   r(   r)   Ú_check_equality_regressorK   s    r?   é
   c                 C   s’   t  d¡}tjj| d}|jdgg| dgd}| |¡}tƒ  ||¡}t	|dƒs+J ‚t	|dƒs2J ‚t
ƒ  ||¡}t	|dƒs@J ‚t	|dƒsGJ ‚d S )NÚpandas©Úseedr   Ú	feature_1)ÚcolumnsÚfeature_names_in_Ún_features_in_)ÚpytestÚimportorskipr   ÚrandomÚRandomStateÚ	DataFrameÚrandr   r0   Úhasattrr   )Úglobal_random_seedr&   ÚpdÚrandom_stater!   r"   r3   r(   r(   r)   Ú(test_feature_names_in_and_n_features_in_P   s   

rR   c                  C   s²   dgdgdgdgg} g d¢}dD ]F}t |dd}| | |¡ t| | ¡t t| ƒ¡ƒ t|| |ƒ |dkrEt| 	| d g¡|j
 d¡ƒ qt| 	| d g¡|j
 d¡dkƒ qd S )Nr   r+   ©Úmost_frequentÚprior©ÚstrategyrQ   rU   ©r   r   ç      à?)r   r0   r   r1   r   r   r   r*   r   r   Úclass_prior_r   )r!   r"   rW   r    r(   r(   r)   Ú%test_most_frequent_and_prior_strategya   s   ÿÿõr[   c                  C   s„   dgdgdgdgg} g d¢}dgdgdgdgg}dD ]%}t |dd}t |dd}| | |¡ | | |¡ t| | ¡| | ¡ƒ qd S )Nr   r+   r   r,   rS   rV   ©r   r0   r   r1   )r!   Úy_1dÚy_2drW   Úclf_1dÚclf_2dr(   r(   r)   Ú6test_most_frequent_and_prior_strategy_with_2d_column_yu   s   úra   c               
   C   s¦   dgdgdgdgg} t  ddgddgddgddgg¡}t| ƒ}dD ]/}t|dd}| | |¡ t| | ¡t  t  |df¡t  	|df¡g¡ƒ t
|| |ƒ t|ƒ q!d S )Nr   r   r,   r-   )rU   rT   rV   )r   r/   r   r   r0   r   r1   Úhstackr   Úzerosr*   r5   )r!   r"   r&   rW   r    r(   r(   r)   Ú1test_most_frequent_and_prior_strategy_multioutput…   s   " þ
ørd   c                 C   sŒ   dggd }g d¢}t d| d}| ||¡ dggd }| |¡}t |¡tt|ƒƒ }t|d ddd	 t|d
 ddd	 t|||ƒ d S )Nr   r6   )r   r,   r   r   r,   Ú
stratifiedrV   éô  r   ç333333ã?©Údecimalr,   çš™™™™™Ù?©	r   r0   r1   r   ÚbincountÚfloatr   r   r*   ©rO   r!   r"   r    r4   Úpr(   r(   r)   Útest_stratified_strategy–   ó   
rp   c                 C   sÔ   dggd }t  ddgddgddgddgddgg¡}td| d}| ||¡ dggd }| |¡}t|jd ƒD ]+}t  |d d …|f ¡tt	|ƒƒ }t
|d ddd	 t
|d d
dd	 t|||ƒ q8t|ƒ d S )Nr   r6   r,   r   re   rV   rf   rg   rh   rj   ©r   r/   r   r0   r1   r   r   rl   rm   r   r   r*   r5   ©rO   r!   r"   r    r4   r'   ro   r(   r(   r)   Ú$test_stratified_strategy_multioutput¤   s   (
"rt   c                 C   sŒ   dggd }g d¢}t d| d}| ||¡ dggd }| |¡}t |¡tt|ƒƒ }t|d ddd	 t|d
 ddd	 t|||ƒ d S )Nr   r7   r+   ÚuniformrV   rf   r   rY   rh   r,   rk   rn   r(   r(   r)   Útest_uniform_strategy·   rq   rv   c                 C   sÎ   dggd }t  ddgddgddgddgg¡}td| d}| ||¡ dggd }| |¡}t|jd ƒD ]+}t  |d d …|f ¡tt	|ƒƒ }t
|d ddd	 t
|d ddd	 t|||ƒ q5t|ƒ d S )
Nr   r7   r,   r   ru   rV   rf   rY   rh   rr   rs   r(   r(   r)   Ú!test_uniform_strategy_multioutputÅ   s   "
"rw   c                  C   sD   dggd } g d¢}t dd}| | |¡ t| | ¡dgd ƒ d S )Nr   r6   )Úparisrx   ÚtokyoÚ	amsterdamÚberlinrT   ©rW   rx   r\   ©r!   r"   r    r(   r(   r)   Útest_string_labels×   s
   
r~   zy,y_test)r,   r   r   r   )r,   r,   r   r   r,   r   c                 C   s.   t dd}| d | ¡ | d |¡dksJ ‚d S )NrT   r|   rY   )r   r0   Úscore)r"   r=   r    r(   r(   r)   Útest_classifier_score_with_Noneß   s   
r€   rW   )re   rT   rU   ru   Úconstantc           	      C   sv   g d¢}dggd }t | |dd}| ||¡ | |¡}dggd }t | |dd}| ||¡ | |¡}t||ƒ d S )N©r   r,   r   r   r   r7   ©rW   rQ   r   r   )r   r0   r1   r   )	rW   rO   r"   ÚX1Úclf1Úpredictions1ÚX2Úclf2Úpredictions2r(   r(   r)   Ú+test_classifier_prediction_independent_of_Xï   s   ÿ
ÿ
rŠ   c                 C   sZ   t jj| d}dggd }| d¡}tƒ }| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )NrB   r   r7   )
r   rJ   rK   Úrandnr   r0   r   r1   Úmeanr   ©rO   rQ   r!   r"   Úregr(   r(   r)   Útest_mean_strategy_regressor  s   
$r   c           
      C   s”   t jj| d}| dd¡}| dd¡}t j|dd d¡}| dd¡}| dd¡}tƒ }| ||¡ | |¡}| |¡}	t	|||||	ƒ t
|ƒ d S )NrB   r@   r6   r   r   rX   é   )r   rJ   rK   r‹   rŒ   r   r   r0   r1   r?   r5   )
rO   rQ   ÚX_learnr;   rŒ   ÚX_testr=   r3   r<   r>   r(   r(   r)   Ú(test_mean_strategy_multioutput_regressor  s   

r“   c                  C   s@   t ƒ } t t¡ |  g ¡ W d   ƒ d S 1 sw   Y  d S )N)r   rH   Úraisesr   r1   )rŽ   r(   r(   r)   Útest_regressor_exceptions%  s   "ÿr•   c                 C   s^   t jj| d}dggd }| d¡}tdd}| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )NrB   r   r6   Úmedianr|   )
r   rJ   rK   r‹   r   r0   r   r1   r–   r   r   r(   r(   r)   Útest_median_strategy_regressor+  s   

$r—   c           
      C   s˜   t jj| d}| dd¡}| dd¡}t j|dd d¡}| dd¡}| dd¡}tdd	}| ||¡ | |¡}| |¡}	t	|||||	ƒ t
|ƒ d S )
NrB   r@   r6   r   r   rX   r   r–   r|   )r   rJ   rK   r‹   r–   r   r   r0   r1   r?   r5   )
rO   rQ   r‘   r;   r–   r’   r=   r3   r<   r>   r(   r(   r)   Ú*test_median_strategy_multioutput_regressor6  s   


r˜   c                 C   s  t jj| d}dggd }| d¡}tddd}| ||¡ t| |¡t  |¡gt	|ƒ ƒ tddd}| ||¡ t| |¡t  
|¡gt	|ƒ ƒ tddd}| ||¡ t| |¡t  |¡gt	|ƒ ƒ tddd}| ||¡ t| |¡t j|d	d
gt	|ƒ ƒ d S )NrB   r   r6   ÚquantilerY   ©rW   r™   r   g333333Ó?é   )Úq)r   rJ   rK   r‹   r   r0   r   r1   r–   r   ÚminÚmaxÚ
percentiler   r(   r(   r)   Ú test_quantile_strategy_regressorK  s   
   (r    c                 C   sô   t jj| d}| dd¡}| dd¡}t j|dd d¡}t j|ddd d¡}| d	d¡}| d	d¡}td
dd}| ||¡ | 	|¡}	| 	|¡}
t
|||	||
ƒ t|ƒ td
dd}| ||¡ | 	|¡}	| 	|¡}
t
|||	||
ƒ t|ƒ d S )NrB   r@   r6   r   r   rX   éP   )r   rœ   r   r™   rY   rš   gš™™™™™é?)r   rJ   rK   r‹   r–   r   rŸ   r   r0   r1   r?   r5   )rO   rQ   r‘   r;   r–   Úquantile_valuesr’   r=   r3   r<   r>   r(   r(   r)   Ú,test_quantile_strategy_multioutput_regressorb  s*   




ÿr£   c                  C   sf   dggd } dgd }t dd d}d}tjt|d | | |¡ W d   ƒ d S 1 s,w   Y  d S )Nr   r6   r™   rš   zIWhen using `strategy='quantile', you have to specify the desired quantile©Úmatch)r   rH   r”   Ú
ValueErrorr0   ©r!   r"   r3   Úerr_msgr(   r(   r)   Útest_quantile_invalidƒ  s   
ÿ"ÿr©   c                  C   sH   t ddd} t t¡ |  g g ¡ W d   ƒ d S 1 sw   Y  d S )Nr™   rj   rš   )r   rH   r”   Ú
IndexErrorr0   )r3   r(   r(   r)   Ú"test_quantile_strategy_empty_train  s   "ÿr«   c                 C   s    t jj| d}dggd }| d¡}tddgd}| ||¡ t| |¡dgt|ƒ ƒ tddd}| ||¡ t| |¡dgt|ƒ ƒ t	|j
t jƒrNJ ‚d S )NrB   r   r6   r   é+   ©rW   r   )r   rJ   rK   r‹   r   r0   r   r1   r   Ú
isinstancer   Úndarrayr   r(   r(   r)   Ú test_constant_strategy_regressor•  s   
r°   c           
      C   s   t jj| d}| dd¡}| dd¡}| d¡}| dd¡}| dd¡}td|d}| ||¡ | |¡}| |¡}	t|||||	ƒ t|ƒ d S )NrB   r@   r6   r   r   r­   )	r   rJ   rK   r‹   r   r0   r1   r?   r8   )
rO   rQ   r‘   r;   Ú	constantsr’   r=   r3   r<   r>   r(   r(   r)   Ú,test_constant_strategy_multioutput_regressor§  s   


r²   c                  C   sB   dggd } g d¢}t dd}| | |¡ |jt |¡ksJ ‚d S )Nr   r6   ©r   r,   r7   é   é   rŒ   r|   )r   r0   Ú	constant_r   rŒ   )r!   r"   r3   r(   r(   r)   Útest_y_mean_attribute_regressor½  s
   
r·   c                  C   sb   dggd } g d¢}t dd}d}tjt|d | | |¡ W d   ƒ d S 1 s*w   Y  d S )Nr   r6   r³   r   r|   z)Constant target value has to be specifiedr¤   )r   rH   r”   Ú	TypeErrorr0   r§   r(   r(   r)   Ú&test_constants_not_specified_regressorÇ  s   
"ÿr¹   c                 C   sz   t jj| d}| dd¡}| dd¡}tdg d¢d}d}tjt|d | ||¡ W d   ƒ d S 1 s6w   Y  d S )	NrB   r@   r6   r   )r   r,   r-   r7   r­   z1Constant target value should have shape \(5, 1\).r¤   )	r   rJ   rK   r‹   r   rH   r”   r¦   r0   )rO   rQ   r!   r"   r3   r¨   r(   r(   r)   Ú(test_constant_size_multioutput_regressorÑ  s   "ÿrº   c                  C   s¾   dgdgdgdgg} g d¢}t dddd}| | |¡ t| | ¡t t| ƒ¡ƒ t|| |ƒ dgdgdgdgg} g d¢}t dddd}| | |¡ t| | ¡t dgd ¡ƒ t|| |ƒ d S )	Nr   ©r,   r   r,   r,   r   r   rƒ   )ÚtwoÚoner¼   r¼   r½   r7   )	r   r0   r   r1   r   r   r   r*   r/   r}   r(   r(   r)   Útest_constant_strategyÜ  s   r¾   c               	   C   sš   dgdgdgdgg} t  ddgddgddgddgg¡}t| ƒ}tddddgd}| | |¡ t| | ¡t  t  |df¡t  	|df¡g¡ƒ t
|| |ƒ d S )Nr   r,   r-   r   r   rƒ   )r   r/   r   r   r0   r   r1   rb   r   rc   r*   )r!   r"   r&   r    r(   r(   r)   Ú"test_constant_strategy_multioutputí  s   "(ÿr¿   zy, params, err_msgr»   rQ   zConstant.*has to be specifiedr   zConstant.*should have shapezmy-constantz.constant=my-constant.*Possible values.*\[1, 2]Úunknownz2constant=\[2, 'unknown'].*Possible values.*\[1, 2])zno-constantztoo-many-constantznot-enough-outputzsingle-outputzmulti-output)Úidsc                 C   sf   dgdgdgdgg}t dddi|¤Ž}tjt|d | || ¡ W d   ƒ d S 1 s,w   Y  d S )Nr   rW   r   r¤   r(   )r   rH   r”   r¦   r0   )r"   Úparamsr¨   r!   r    r(   r(   r)   Ú!test_constant_strategy_exceptionsû  s
   "ÿrÃ   c                  C   sH   dgdgdgg} g d¢}g d¢}t dd | ||¡}t|jddgƒ d S )	Nr   r   )r   r   r   )çš™™™™™¹?ç      ð?rÄ   re   r|   gVUUUUUÅ?g«ªªªªªê?)r   r0   r   rZ   )r!   r"   Úsample_weightr    r(   r(   r)   Ú!test_classification_sample_weight   s
   rÇ   Úcsc_containerc              	   C   s¦   dggd }| t  ddgddgddgddgddgg¡ƒ}t|ƒ}tddddgd}| ||¡ | |¡}t |¡s;J ‚t| 	¡ t  
t  |df¡t  |df¡g¡ƒ d S )Nr   r6   r   r7   r   rƒ   )r   r/   r   r   r0   r1   ÚspÚissparser   Útoarrayrb   r   rc   )rÈ   r!   r"   r&   r    r4   r(   r(   r)   Ú$test_constant_strategy_sparse_target)  s   ,
&ÿrÌ   c              	   C   s  dggd }|t  ddgddgddgddgddgg¡ƒ}td| d}tjtdd	 | ||¡ W d   ƒ n1 s:w   Y  dggd
 }| |¡}t|j	d ƒD ].}t  
|d d …|f ¡tt|ƒƒ }t|d ddd t|d ddd t|d ddd qQd S )Nr   r6   r,   r   r7   ru   rV   z*the uniform strategy would not save memoryr¤   rf   gUUUUUUÕ?rh   )r   r/   r   rH   ÚwarnsÚUserWarningr0   r1   r   r   rl   rm   r   r   ©rO   rÈ   r!   r"   r    r4   r'   ro   r(   r(   r)   Ú+test_uniform_strategy_sparse_target_warning9  s   ,ÿ
"ürÐ   c              	   C   sì   dggd }|t  ddgddgddgddgddgg¡ƒ}td| d}| ||¡ dggd }| |¡}t |¡s:J ‚| ¡ }t|j	d ƒD ].}t  
|d d …|f ¡tt|ƒƒ }t|d ddd	 t|d d
dd	 t|d d
dd	 qEd S )Nr   r6   r7   r   re   rV   rf   rg   rh   gš™™™™™É?)r   r/   r   r0   r1   rÉ   rÊ   rË   r   r   rl   rm   r   r   rÏ   r(   r(   r)   Ú&test_stratified_strategy_sparse_targetL  s   ,
"ürÑ   c              	   C   s®   dggd }| t  ddgddgddgddgddgg¡ƒ}t|ƒ}t  t  |df¡t  |df¡g¡}dD ]!}t|dd}| ||¡ | |¡}t	 
|¡sMJ ‚t| ¡ |ƒ q3d S )Nr   r6   r   r-   r7   rS   rV   )r   r/   r   rb   r   rc   r   r0   r1   rÉ   rÊ   r   rË   )rÈ   r!   r"   r&   Ú
y_expectedrW   r    r4   r(   r(   r)   Ú3test_most_frequent_and_prior_strategy_sparse_target`  s   ,"
úrÓ   c                 C   s´   t jj| d}dgg| }| |¡}| |¡}tdd |||¡}|jt j||dks-J ‚tdd |||¡}|jt||dƒksBJ ‚tdd	d
 |||¡}|jt||dƒksXJ ‚d S )NrB   r   rŒ   r|   )Úweightsr–   g      I@r™   gffffffî?rš   g     ÀW@)	r   rJ   rK   rM   r   r0   r¶   Úaverager
   )rO   r&   rQ   r!   r"   rÆ   r3   r(   r(   r)   Ú"test_dummy_regressor_sample_weightp  s   

rÖ   c                  C   sb   t  dggdggdggg¡} t  g d¢¡}t  g d¢¡}tƒ }| | |¡ | | ¡}t||ƒ d S )NÚfooÚbarÚbaz©r,   r,   r,   )r   r/   r   r0   r1   r   )r!   r"   rÒ   Úclsr4   r(   r(   r)   Ú test_dummy_regressor_on_3D_array  s   
rÜ   c                  C   s~   t  dggdggdggg¡} g d¢}g d¢}dgdgdgg}tdd}| | |¡ | | ¡}| | ¡}t||ƒ t||ƒ d S )Nr×   rØ   rÙ   rÚ   r   re   r|   )r   r/   r   r0   r1   r   r   )r!   r"   rÒ   Úy_proba_expectedrÛ   r4   Úy_pred_probar(   r(   r)   Ú!test_dummy_classifier_on_3D_array‹  s   



rß   c                  C   sj   dggd } t  g d¢¡}t  g d¢¡}tƒ }| | |¡ |j| dd}t|ƒdks,J ‚t|d |ƒ d S )	Nr   r-   rÚ   )r   r   r   T)Ú
return_stdr,   r   )r   r/   r   r0   r1   r   r   )r!   r"   Úy_std_expectedrÛ   Úy_pred_listr(   r(   r)   Útest_dummy_regressor_return_std˜  s   rã   )r   r   r   r,   g      ô?r7   c                 C   s*   t ƒ }| d | ¡ | d |¡dksJ ‚d S )NrÅ   )r   r0   r   )r"   r=   rŽ   r(   r(   r)   Útest_regressor_score_with_None¥  s   rä   )rŒ   r–   r™   r   c                 C   sv   g d¢}dggd }t | ddd}| ||¡ | |¡}dggd }t | ddd}| ||¡ | |¡}t||ƒ d S )Nr‚   r   r7   gffffffæ?)rW   r   r™   r   )r   r0   r1   r   )rW   r"   r„   Úreg1r†   r‡   Úreg2r‰   r(   r(   r)   Ú*test_regressor_prediction_independent_of_X²  s   

rç   c                 C   sF   g d¢}t  d¡}t| ddd}| ||¡ |¡}|jt jks!J ‚d S )Nr‚   r7   r   rƒ   )r   rc   r   r0   r   ÚdtypeÚfloat64)rW   r"   r!   ÚmodelÚprobasr(   r(   r)   Útest_dtype_of_classifier_probasÂ  s
   
rì   )r@   )Fr   Únumpyr   rH   Úscipy.sparseÚsparserÉ   Úsklearn.baser   Úsklearn.dummyr   r   Úsklearn.exceptionsr   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr	   Úsklearn.utils.statsr
   r*   r5   r8   r?   rR   r[   ra   rd   rp   rt   rv   rw   r~   ÚmarkÚparametrizer/   r€   rŠ   r   r“   r•   r—   r˜   r    r£   r©   r«   r°   r²   r·   r¹   rº   r¾   r¿   Ú	transposerÃ   rÇ   rÌ   rÐ   rÑ   rÓ   rÖ   rÜ   rß   rã   rä   rç   rì   r(   r(   r(   r)   Ú<module>   sÄ    

  þþþ

ÿ
!

ýý
ýóë
	





.þþ

ÿ