a
    ¶ÀhEV  ã                   @   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>dzdgdh„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 ){é    N)Úclone)ÚDummyClassifierÚDummyRegressor)ÚNotFittedError)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)ÚCSC_CONTAINERS)Ú_weighted_percentilec              	   C   sP  |   |¡}t ¡ & t dd¡ |  |¡}W d   ƒ n1 s>0    Y  t |¡}|jdkrht |d¡}|j	d }t
|ƒ}|dkrŽ|g}|g}t|ƒD ]´}|| j	d |ks°J ‚|| j	d t
t |d d …|f ¡ƒksÜJ ‚t|| jddt t
|ƒ¡ƒ t ¡ 4 t dd¡ tt || ¡|| ƒ W d   ƒ q–1 s@0    Y  q–d S )NÚignorez!divide by zero encountered in logé   )éÿÿÿÿr   r   ©Úaxis)Úpredict_probaÚwarningsÚcatch_warningsÚfilterwarningsZpredict_log_probaÚnpZ
atleast_1dÚndimÚreshapeÚshapeÚlenÚrangeÚuniquer   ÚsumÚonesÚlog)ÚclfÚXÚyZprobaZ	log_probaZ	n_outputsÚ	n_samplesÚk© r#   úT/var/www/html/assistant/venv/lib/python3.9/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sVJ ‚t  ddgddgddgddgg¡}t| ƒ}| ||¡ | |¡}|j|jks¦J ‚d S )Nr   ©r   é   r   r   r   r'   é   ©r   Úarrayr   ÚfitÚpredictr   ©r   r   r    ÚestÚy_predr#   r#   r$   Ú_check_behavior_2d0   s    
"
r0   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sjJ ‚d S )Nr   )r   r   é   é   r(   )r'   r   r   r'   r1   )r   r   r2   r1   r'   )r   r(   r(   r'   r   r)   r-   r#   r#   r$   Ú_check_behavior_2d_for_constantA   s    "
r3   c                 C   s<   t t | |jd df¡|ƒ t t | |jd df¡|ƒ d S )Nr   r   )r   r   Ztiler   )Z	statisticÚy_learnÚy_pred_learnÚy_testÚy_pred_testr#   r#   r$   Ú_check_equality_regressorK   s    r8   é
   c                 C   s’   t  d¡}tjj| d}|jdgg| dgd}| |¡}tƒ  ||¡}t	|dƒsVJ ‚t	|dƒsdJ ‚t
ƒ  ||¡}t	|dƒs€J ‚t	|dƒsŽJ ‚d S )NZpandas©Úseedr   Z	feature_1)ÚcolumnsZfeature_names_in_Zn_features_in_)ÚpytestZimportorskipr   ÚrandomÚRandomStateZ	DataFrameÚrandr   r+   Úhasattrr   )Úglobal_random_seedr!   ÚpdÚrandom_stater   r    r.   r#   r#   r$   Ú(test_feature_names_in_and_n_features_in_P   s    

rE   c                  C   s²   dgdgdgdgg} g d¢}dD ]Œ}t |dd}| | |¡ t| | ¡t t| ƒ¡ƒ t|| |ƒ |dkrŠt| 	| d g¡|j
 d¡ƒ q t| 	| d g¡|j
 d¡dkƒ q d S )Nr   r&   ©Úmost_frequentÚprior©ÚstrategyrD   rH   ©r   r   ç      à?)r   r+   r   r,   r   r   r   r%   r   r   Úclass_prior_r   )r   r    rJ   r   r#   r#   r$   Ú%test_most_frequent_and_prior_strategya   s    ÿÿrN   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 ]J}t |dd}t |dd}| | |¡ | | |¡ t| | ¡| | ¡ƒ q4d S )Nr   r&   r   r'   rF   rI   ©r   r+   r   r,   )r   Zy_1dZy_2drJ   Zclf_1dZclf_2dr#   r#   r$   Ú6test_most_frequent_and_prior_strategy_with_2d_column_yu   s    rP   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|ƒ qBd S )Nr   r   r'   r(   )rH   rG   rI   )r   r*   r   r   r+   r   r,   Úhstackr   Úzerosr%   r0   )r   r    r!   rJ   r   r#   r#   r$   Ú1test_most_frequent_and_prior_strategy_multioutput…   s    " þrS   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   r1   )r   r'   r   r   r'   Ú
stratifiedrI   éô  r   ç333333ã?©Údecimalr'   çš™™™™™Ù?©	r   r+   r,   r   ÚbincountÚfloatr   r   r%   ©rB   r   r    r   r/   Úpr#   r#   r$   Útest_stratified_strategy–   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|jd ƒD ]V}t  |d d …|f ¡tt	|ƒƒ }t
|d ddd	 t
|d d
dd	 t|||ƒ qpt|ƒ d S )Nr   r1   r'   r   rT   rI   rU   rV   rW   rY   ©r   r*   r   r+   r,   r   r   r[   r\   r   r   r%   r0   ©rB   r   r    r   r/   r"   r^   r#   r#   r$   Ú$test_stratified_strategy_multioutput¤   s    (
"rb   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   r2   r&   ÚuniformrI   rU   r   rL   rW   r'   rZ   r]   r#   r#   r$   Útest_uniform_strategy·   s    
rd   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 ]V}t  |d d …|f ¡tt	|ƒƒ }t
|d ddd	 t
|d ddd	 t|||ƒ qjt|ƒ d S )
Nr   r2   r'   r   rc   rI   rU   rL   rW   r`   ra   r#   r#   r$   Ú!test_uniform_strategy_multioutputÅ   s    "
"re   c                  C   sD   dggd } g d¢}t dd}| | |¡ t| | ¡dgd ƒ d S )Nr   r1   )Úparisrf   ZtokyoZ	amsterdamZberlinrG   ©rJ   rf   rO   ©r   r    r   r#   r#   r$   Útest_string_labels×   s
    
ri   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 )NrG   rg   rL   )r   r+   Úscore)r    r6   r   r#   r#   r$   Útest_classifier_score_with_Noneß   s    
rk   rJ   )rT   rG   rH   rc   Ú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   r2   ©rJ   rD   rl   r   )r   r+   r,   r   )	rJ   rB   r    ÚX1Zclf1Úpredictions1ÚX2Zclf2Úpredictions2r#   r#   r$   Ú+test_classifier_prediction_independent_of_Xï   s    ÿ
ÿ
rs   c                 C   sZ   t jj| d}dggd }| d¡}tƒ }| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )Nr:   r   r2   )
r   r>   r?   Úrandnr   r+   r   r,   Úmeanr   ©rB   rD   r   r    Úregr#   r#   r$   Útest_mean_strategy_regressor  s    
rx   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 )Nr:   r9   r1   r   r   rK   é   )r   r>   r?   rt   ru   r   r   r+   r,   r8   r0   )
rB   rD   ÚX_learnr4   ru   ÚX_testr6   r.   r5   r7   r#   r#   r$   Ú(test_mean_strategy_multioutput_regressor  s    

r|   c                  C   s>   t ƒ } t t¡ |  g ¡ W d   ƒ n1 s00    Y  d S )N)r   r=   Úraisesr   r,   )rw   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 )Nr:   r   r1   Úmedianrg   )
r   r>   r?   rt   r   r+   r   r,   r   r   rv   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 )
Nr:   r9   r1   r   r   rK   ry   r   rg   )r   r>   r?   rt   r   r   r   r+   r,   r8   r0   )
rB   rD   rz   r4   r   r{   r6   r.   r5   r7   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 )Nr:   r   r1   ÚquantilerL   ©rJ   r‚   r   g333333Ó?é   )Úq)r   r>   r?   rt   r   r+   r   r,   r   r   ÚminÚmaxÚ
percentilerv   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 )Nr:   r9   r1   r   r   rK   éP   )r   r…   ry   r‚   rL   rƒ   gš™™™™™é?)r   r>   r?   rt   r   r   rˆ   r   r+   r,   r8   r0   )rB   rD   rz   r4   r   Zquantile_valuesr{   r6   r.   r5   r7   r#   r#   r$   Ú,test_quantile_strategy_multioutput_regressorb  s*    




ÿr‹   c                  C   sd   dggd } dgd }t dd d}d}tjt|d | | |¡ W d   ƒ n1 sV0    Y  d S )Nr   r1   r‚   rƒ   zIWhen using `strategy='quantile', you have to specify the desired quantile©Úmatch)r   r=   r}   Ú
ValueErrorr+   ©r   r    r.   Úerr_msgr#   r#   r$   Útest_quantile_invalidƒ  s    
ÿr‘   c                  C   sF   t ddd} t t¡ |  g g ¡ W d   ƒ n1 s80    Y  d S )Nr‚   rY   rƒ   )r   r=   r}   Ú
IndexErrorr+   )r.   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ƒrœJ ‚d S )Nr:   r   r1   rl   é+   ©rJ   rl   )r   r>   r?   rt   r   r+   r   r,   r   Ú
isinstancerl   Zndarrayrv   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 )Nr:   r9   r1   ry   rl   r•   )	r   r>   r?   rt   r   r+   r,   r8   r3   )
rB   rD   rz   r4   Ú	constantsr{   r6   r.   r5   r7   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   r1   ©r   r'   r2   é   é   ru   rg   )r   r+   Ú	constant_r   ru   )r   r    r.   r#   r#   r$   Útest_y_mean_attribute_regressor½  s
    
rž   c                  C   s`   dggd } g d¢}t dd}d}tjt|d | | |¡ W d   ƒ n1 sR0    Y  d S )Nr   r1   rš   rl   rg   z)Constant target value has to be specifiedrŒ   )r   r=   r}   Ú	TypeErrorr+   r   r#   r#   r$   Ú&test_constants_not_specified_regressorÇ  s    
r    c                 C   sx   t jj| d}| dd¡}| dd¡}tdg d¢d}d}tjt|d | ||¡ W d   ƒ n1 sj0    Y  d S )	Nr:   r9   r1   rl   )r   r'   r(   r2   r•   z1Constant target value should have shape \(5, 1\).rŒ   )	r   r>   r?   rt   r   r=   r}   rŽ   r+   )rB   rD   r   r    r.   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'   rl   r   rn   )ÚtwoÚoner£   r£   r¤   r2   )	r   r+   r   r,   r   r   r   r%   r*   rh   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   rl   rn   )r   r*   r   r   r+   r   r,   rQ   r   rR   r%   )r   r    r!   r   r#   r#   r$   Ú"test_constant_strategy_multioutputí  s    "(ÿr¦   zy, params, err_msgr¢   rD   zConstant.*has to be specifiedrl   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)Zidsc                 C   sd   dgdgdgdgg}t f ddi|¤Ž}tjt|d | || ¡ W d   ƒ n1 sV0    Y  d S )Nr   rJ   rl   rŒ   )r   r=   r}   rŽ   r+   )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ª   rT   rg   gVUUUUUÅ?g«ªªªªªê?)r   r+   r   rM   )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 |¡svJ ‚t| 	¡ t  
t  |df¡t  |df¡g¡ƒ d S )Nr   r1   r   r2   rl   rn   )r   r*   r   r   r+   r,   ÚspÚissparser   ÚtoarrayrQ   r   rR   )r®   r   r    r!   r   r/   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 st0    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 q¢d S )Nr   r1   r'   r   r2   rc   rI   z*the uniform strategy would not save memoryrŒ   rU   gUUUUUUÕ?rW   )r   r*   r   r=   ZwarnsÚUserWarningr+   r,   r   r   r[   r\   r   r   ©rB   r®   r   r    r   r/   r"   r^   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 |¡stJ ‚| ¡ }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	 qŠd S )Nr   r1   r2   r   rT   rI   rU   rV   rW   gš™™™™™É?)r   r*   r   r+   r,   r¯   r°   r±   r   r   r[   r\   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 ]B}t|dd}| ||¡ | |¡}t	 
|¡sšJ ‚t| ¡ |ƒ qfd S )Nr   r1   r   r(   r2   rF   rI   )r   r*   r   rQ   r   rR   r   r+   r,   r¯   r°   r   r±   )r®   r   r    r!   Ú
y_expectedrJ   r   r/   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sZJ ‚tdd |||¡}|jt||dƒks„J ‚tdd	d
 |||¡}|jt||dƒks°J ‚d S )Nr:   r   ru   rg   )Úweightsr   g      I@r‚   gffffffî?rƒ   g     ÀW@)	r   r>   r?   r@   r   r+   r   Zaverager
   )rB   r!   rD   r   r    r¬   r.   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   r+   r,   r   )r   r    r·   Úclsr/   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   rT   rg   )r   r*   r   r+   r,   r   r   )r   r    r·   Zy_proba_expectedr¿   r/   Z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sXJ ‚t|d |ƒ d S )	Nr   r(   r¾   )r   r   r   T)Z
return_stdr'   r   )r   r*   r   r+   r,   r   r   )r   r    Zy_std_expectedr¿   Zy_pred_listr#   r#   r$   Útest_dummy_regressor_return_std˜  s    rÂ   )r   r   r   r'   g      ô?r2   c                 C   s*   t ƒ }| d | ¡ | d |¡dks&J ‚d S )Nr«   )r   r+   rj   )r    r6   rw   r#   r#   r$   Útest_regressor_score_with_None¥  s    rÃ   )ru   r   r‚   rl   c                 C   sv   g d¢}dggd }t | ddd}| ||¡ | |¡}dggd }t | ddd}| ||¡ | |¡}t||ƒ d S )Nrm   r   r2   gffffffæ?)rJ   rl   r‚   r   )r   r+   r,   r   )rJ   r    ro   Zreg1rp   rq   Zreg2rr   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sBJ ‚d S )Nrm   r2   r   rn   )r   rR   r   r+   r   ZdtypeZfloat64)rJ   r    r   ÚmodelZprobasr#   r#   r$   Útest_dtype_of_classifier_probasÂ  s
    
rÆ   )r9   )r9   )Fr   Únumpyr   r=   Zscipy.sparseÚsparser¯   Zsklearn.baser   Zsklearn.dummyr   r   Zsklearn.exceptionsr   Zsklearn.utils._testingr   r   r   Zsklearn.utils.fixesr	   Zsklearn.utils.statsr
   r%   r0   r3   r8   rE   rN   rP   rS   r_   rb   rd   re   ri   ÚmarkZparametrizer*   rk   rs   rx   r|   r~   r€   r   r‰   r‹   r‘   r“   r—   r™   rž   r    r¡   r¥   r¦   Z	transposer©   r­   r²   rµ   r¶   r¸   rº   rÀ   rÁ   rÂ   rÃ   rÄ   rÆ   r#   r#   r#   r$   Ú<module>   sÂ   

  þþþ

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