U
    ¿9%eøQ  ã                   @   sr  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mZ d dlmZ ed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dd„ Zdd„ Zdd„ Zej  !dd d!d!d!gd d d!d!g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$d%d&d'd(d)g¡d*d+„ ƒZ$d,d-„ Z%d.d/„ Z&d0d1„ Z'd2d3„ Z(d4d5„ Z)d6d7„ Z*d8d9„ Z+d:d;„ Z,d<d=„ Z-d>d?„ Z.d@dA„ Z/dBdC„ Z0dDdE„ Z1dFdG„ Z2dHdI„ Z3dJdK„ Z4ej j!dLd d!d d gdMd idNfd d!d d gd)d d gidOfe 5d d!d d gd d!d d gg¡d)d idOfd d!d d gd)dPidQfe 5d d!d d gd d!d d gg¡d)d dRgidSfgdTdUdVdWdXgdYdZd[„ ƒZ6d\d]„ Z7d^d_„ Z8d`da„ Z9dbdc„ Z:ddde„ Z;dzdgdh„Z<didj„ Z=dkdl„ Z>dmdn„ Z?ej  !dd!d!d!d gdogdp fe "d d gd!d!gd!d!gd!d!gg¡dodoggdp fg¡dqdr„ ƒZ@ej  !d$dsdtdud)g¡dvdw„ ƒZAej  !d$d%d&d'd(d)g¡dxdy„ ƒZBdS ){é    N)Úclone)ÚDummyClassifierÚDummyRegressor)ÚNotFittedError)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)Ú_weighted_percentilec                 C   sæ   |   |¡}|  |¡}t |¡}|jdkr4t |d¡}|jd }t|ƒ}|dkrZ|g}|g}t|ƒD ]~}|| jd |ks|t	‚|| jd tt 
|d d …|f ¡ƒks¨t	‚t|| jddt t|ƒ¡ƒ tt || ¡|| ƒ qbd S )Né   )éÿÿÿÿr   r   ©Úaxis)Úpredict_probaZpredict_log_probaÚnpZ
atleast_1dÚndimÚreshapeÚshapeÚlenÚrangeÚAssertionErrorÚuniquer   ÚsumÚonesÚlog)ÚclfÚXÚyZprobaZ	log_probaZ	n_outputsÚ	n_samplesÚk© r    úW/var/www/html/Darija-Ai-API/env/lib/python3.8/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  ddddg¡}t| ƒ}| ||¡ | |¡}|j|jksZt‚t  ddgddgddgddgg¡}t| ƒ}| ||¡ | |¡}|j|jksªt‚d S )Nr   r   é   é   ©r   Úarrayr   ÚfitÚpredictr   r   ©r   r   r   ÚestÚy_predr    r    r!   Ú_check_behavior_2d*   s    
"
r,   c              
   C   s†   t  dgdgdgdgg¡}t  dddddgdddddgdddddgdddddgg¡}t| ƒ}| ||¡ | |¡}|j|jks‚t‚d S )Nr   r   é   é   r$   r#   r%   r)   r    r    r!   Ú_check_behavior_2d_for_constant;   s    :
r/   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_regressorE   s    r4   c                  C   s¶   dgdgdgdgg} ddddg}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   r#   ©Úmost_frequentÚprior©ÚstrategyÚrandom_stater7   ©r   r   ç      à?)r   r'   r   r(   r   r   r   r"   r   r   Úclass_prior_r   )r   r   r9   r   r    r    r!   Ú%test_most_frequent_and_prior_strategyJ   s      
ÿ ÿr>   c                  C   sˆ   dgdgdgdgg} ddddg}dgdgdgdgg}dD ]J}t |dd}t |dd}| | |¡ | | |¡ t| | ¡| | ¡ƒ q8d S )Nr   r   r#   r5   r8   ©r   r'   r   r(   )r   Zy_1dZy_2dr9   Zclf_1dZclf_2dr    r    r!   Ú6test_most_frequent_and_prior_strategy_with_2d_column_y^   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| ƒ}dD ]^}t|dd}| | |¡ t| | ¡t  t  |df¡t  	|df¡g¡ƒ t
|| |ƒ t|ƒ qBd S )Nr   r   r#   r$   )r7   r6   r8   )r   r&   r   r   r'   r   r(   Úhstackr   Úzerosr"   r,   )r   r   r   r9   r   r    r    r!   Ú1test_most_frequent_and_prior_strategy_multioutputn   s    " þrC   c                 C   s’   dggd }dddddg}t d| d}| ||¡ dggd }| |¡}t |¡tt|ƒƒ }t|d ddd	 t|d d
dd	 t|||ƒ d S )Nr   r-   r   r#   Ú
stratifiedr8   éô  ç333333ã?©Údecimalçš™™™™™Ù?©	r   r'   r(   r   ÚbincountÚfloatr   r   r"   ©Úglobal_random_seedr   r   r   r+   Úpr    r    r!   Útest_stratified_strategy   s    
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 ]V}t  |d d …|f ¡tt	|ƒƒ }t
|d ddd	 t
|d d
dd	 t|||ƒ qpt|ƒ d S )Nr   r-   r#   r   rD   r8   rE   rF   rG   rI   ©r   r&   r   r'   r(   r   r   rK   rL   r   r   r"   r,   ©rN   r   r   r   r+   r   rO   r    r    r!   Ú$test_stratified_strategy_multioutput   s    (
"rS   c                 C   s   dggd }ddddg}t d| d}| ||¡ dggd }| |¡}t |¡tt|ƒƒ }t|d ddd	 t|d ddd	 t|||ƒ d S )
Nr   r.   r   r#   Úuniformr8   rE   r<   rG   rJ   rM   r    r    r!   Útest_uniform_strategy    s    
rU   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   r.   r#   r   rT   r8   rE   r<   rG   rQ   rR   r    r    r!   Ú!test_uniform_strategy_multioutput®   s    "
"rV   c                  C   sJ   dggd } dddddg}t dd}| | |¡ t| | ¡dgd ƒ d S )	Nr   r-   ZparisZtokyoZ	amsterdamZberlinr6   ©r9   r?   ©r   r   r   r    r    r!   Útest_string_labelsÀ   s
    
rY   zy,y_testr#   r   c                 C   s.   t dd}| d | ¡ | d |¡dks*t‚d S )Nr6   rW   r<   )r   r'   Úscorer   )r   r2   r   r    r    r!   Útest_classifier_score_with_NoneÈ   s    
r[   r9   rD   r6   r7   rT   Úconstantc           	      C   sz   ddddg}dggd }t | |dd}| ||¡ | |¡}dggd }t | |dd}| ||¡ | |¡}t||ƒ d S ©Nr   r#   r   r.   ©r9   r:   r\   )r   r'   r(   r   )	r9   rN   r   ÚX1Zclf1Úpredictions1ÚX2Zclf2Úpredictions2r    r    r!   Ú+test_classifier_prediction_independent_of_XØ   s$      ÿ
  ÿ
rc   c                 C   sZ   t jj| d}dggd }| d¡}tƒ }| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )N©Úseedr   r.   )
r   ÚrandomÚRandomStateÚrandnr   r'   r   r(   Úmeanr   ©rN   r:   r   r   Úregr    r    r!   Útest_mean_strategy_regressorî   s    
rl   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 )Nrd   é
   r-   r   r   r;   é   )r   rf   rg   rh   ri   r   r   r'   r(   r4   r,   )
rN   r:   ÚX_learnr0   ri   ÚX_testr2   r*   r1   r3   r    r    r!   Ú(test_mean_strategy_multioutput_regressorù   s    

rq   c               	   C   s*   t ƒ } t t¡ |  g ¡ W 5 Q R X d S )N)r   ÚpytestÚraisesr   r(   )rk   r    r    r!   Útest_regressor_exceptions  s    rt   c                 C   s^   t jj| d}dggd }| d¡}tdd}| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )Nrd   r   r-   ÚmedianrW   )
r   rf   rg   rh   r   r'   r   r(   ru   r   rj   r    r    r!   Útest_median_strategy_regressor  s    

rv   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 )
Nrd   rm   r-   r   r   r;   rn   ru   rW   )r   rf   rg   rh   ru   r   r   r'   r(   r4   r,   )
rN   r:   ro   r0   ru   rp   r2   r*   r1   r3   r    r    r!   Ú*test_median_strategy_multioutput_regressor  s    


rw   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 )Nrd   r   r-   Úquantiler<   ©r9   rx   r   g333333Ó?é   )Úq)r   rf   rg   rh   r   r'   r   r(   ru   r   ÚminÚmaxÚ
percentilerj   r    r    r!   Ú test_quantile_strategy_regressor4  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 )Nrd   rm   r-   r   r   r;   éP   )r   r{   rn   rx   r<   ry   gš™™™™™é?)r   rf   rg   rh   ru   r   r~   r   r'   r(   r4   r,   )rN   r:   ro   r0   ru   Zquantile_valuesrp   r2   r*   r1   r3   r    r    r!   Ú,test_quantile_strategy_multioutput_regressorK  s2    



    ÿr   c               	   C   sP   dggd } dgd }t dd d}d}tjt|d | | |¡ W 5 Q R X d S )Nr   r-   rx   ry   zIWhen using `strategy='quantile', you have to specify the desired quantile©Úmatch©r   rr   rs   Ú
ValueErrorr'   ©r   r   r*   Úerr_msgr    r    r!   Útest_quantile_invalidl  s    
ÿrˆ   c               	   C   s2   t ddd} t t¡ |  g g ¡ W 5 Q R X d S )Nrx   rI   ry   r„   )r*   r    r    r!   Ú"test_quantile_strategy_empty_trainx  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œt‚d S )Nrd   r   r-   r\   é+   ©r9   r\   )r   rf   rg   rh   r   r'   r   r(   r   Ú
isinstancer\   Zndarrayr   rj   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 )Nrd   rm   r-   rn   r\   r‹   )	r   rf   rg   rh   r   r'   r(   r4   r/   )
rN   r:   ro   r0   Ú	constantsrp   r2   r*   r1   r3   r    r    r!   Ú,test_constant_strategy_multioutput_regressor  s    


r   c                  C   sH   dggd } dddddg}t dd	}| | |¡ |jt |¡ksDt‚d S )
Nr   r-   r   r#   r.   é   é   ri   rW   )r   r'   Ú	constant_r   ri   r   )r   r   r*   r    r    r!   Útest_y_mean_attribute_regressor¦  s
    
r“   c               	   C   sR   dggd } dddddg}t dd	}d
}tjt|d | | |¡ W 5 Q R X d S )Nr   r-   r   r#   r.   r   r‘   r\   rW   z)Constant target value has to be specifiedr‚   )r   rr   rs   Ú	TypeErrorr'   r†   r    r    r!   Ú&test_constants_not_specified_regressor°  s    
r•   c              	   C   sh   t jj| d}| dd¡}| dd¡}tdddddgd	}d
}tjt|d | ||¡ W 5 Q R X d S )Nrd   rm   r-   r\   r   r#   r$   r.   r‹   z1Constant target value should have shape \(5, 1\).r‚   )	r   rf   rg   rh   r   rr   rs   r…   r'   )rN   r:   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} ddddg}t dddd}| | |¡ t| | ¡t t| ƒ¡ƒ t|| |ƒ dgdgdgdgg} ddddg}t dddd}| | |¡ t| | ¡t dgd ¡ƒ t|| |ƒ d S )	Nr   r#   r   r\   r^   ÚtwoÚoner.   )	r   r'   r   r(   r   r   r   r"   r&   rX   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   r'   r   r(   rA   r   rB   r"   )r   r   r   r   r    r    r!   Ú"test_constant_strategy_multioutputÖ  s    "  ÿrš   zy, params, err_msgr:   zConstant.*has to be specifiedz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   sP   dgdgdgdgg}t f ddi|—Ž}tjt|d | || ¡ W 5 Q R X d S )Nr   r9   r\   r‚   )r   rr   rs   r…   r'   )r   Úparamsr‡   r   r   r    r    r!   Ú!test_constant_strategy_exceptionsä  s    r   c                  C   sL   dgdgdgg} dddg}dddg}t dd | ||¡}t|jddgƒ d S )	Nr   r   gš™™™™™¹?ç      ð?rD   rW   gVUUUUUÅ?g«ªªªªªê?)r   r'   r   r=   )r   r   Úsample_weightr   r    r    r!   Ú!test_classification_sample_weight	  s
    

r    c               
   C   s¨   dggd } t  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  |¡sxt	‚t
| ¡ t t |df¡t |df¡g¡ƒ d S )Nr   r-   r   r.   r\   r^   )ÚspÚ
csc_matrixr   r&   r   r   r'   r(   Úissparser   r   ÚtoarrayrA   r   rB   )r   r   r   r   r+   r    r    r!   Ú$test_constant_strategy_sparse_target  s    .
  ÿr¥   c              
   C   sò   dggd }t  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 5 Q R X 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 qd S )Nr   r-   r#   r   r.   rT   r8   z*the uniform strategy would not save memoryr‚   rE   gUUUUUUÕ?rG   )r¡   r¢   r   r&   r   rr   ZwarnsÚUserWarningr'   r(   r   r   rK   rL   r   r   rR   r    r    r!   Ú+test_uniform_strategy_sparse_target_warning!  s    .
"r§   c              
   C   sî   dggd }t  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  |¡svt‚| 	¡ }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   r-   r.   r   rD   r8   rE   rF   rG   gš™™™™™É?)r¡   r¢   r   r&   r   r'   r(   r£   r   r¤   r   r   rK   rL   r   r   rR   r    r    r!   Ú&test_stratified_strategy_sparse_target3  s    .
"r¨   c               
   C   s°   dggd } t  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œt‚t| ¡ |ƒ qhd S )Nr   r-   r   r$   r.   r5   r8   )r¡   r¢   r   r&   r   rA   r   rB   r   r'   r(   r£   r   r   r¤   )r   r   r   Ú
y_expectedr9   r   r+   r    r    r!   Ú3test_most_frequent_and_prior_strategy_sparse_targetF  s    ."
rª   rm   c                 C   s´   t jj| d}dgg| }| |¡}| |¡}tdd |||¡}|jt j||dksZt‚tdd |||¡}|jt	||dƒks„t‚tdd	d
 |||¡}|jt	||dƒks°t‚d S )Nrd   r   ri   rW   )Úweightsru   g      I@rx   gffffffî?ry   g     ÀW@)
r   rf   rg   Zrandr   r'   r’   Zaverager   r
   )rN   r   r:   r   r   rŸ   r*   r    r    r!   Ú"test_dummy_regressor_sample_weightU  s    

r¬   c                  C   sf   t  dggdggdggg¡} t  dddg¡}t  dddg¡}tƒ }| | |¡ | | ¡}t||ƒ d S )NÚfooÚbarÚbazr#   )r   r&   r   r'   r(   r   )r   r   r©   Úclsr+   r    r    r!   Ú test_dummy_regressor_on_3D_arrayf  s    
r±   c                  C   s‚   t  dggdggdggg¡} dddg}dddg}dgdgdgg}tdd}| | |¡ | | ¡}| | ¡}t||ƒ t||ƒ d S )Nr­   r®   r¯   r#   r   rD   rW   )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_arrayp  s    





r²   c                  C   sn   dggd } t  dddg¡}t  dddg¡}tƒ }| | |¡ |j| dd}t|ƒdks\t‚t|d |ƒ d S )Nr   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³   g      ô?r.   c                 C   s*   t ƒ }| d | ¡ | d |¡dks&t‚d S )Nrž   )r   r'   rZ   r   )r   r2   rk   r    r    r!   Útest_regressor_score_with_NoneŠ  s    r´   ri   ru   rx   c                 C   sz   ddddg}dggd }t | ddd}| ||¡ | |¡}dggd }t | ddd}| ||¡ | |¡}t||ƒ d S )Nr   r#   r   r.   gffffffæ?)r9   r\   rx   )r   r'   r(   r   )r9   r   r_   Zreg1r`   ra   Zreg2rb   r    r    r!   Ú*test_regressor_prediction_independent_of_X—  s    

rµ   c                 C   sJ   ddddg}t  d¡}t| ddd}| ||¡ |¡}|jt jksFt‚d S r]   )r   rB   r   r'   r   ZdtypeZfloat64r   )r9   r   r   ÚmodelZprobasr    r    r!   Útest_dtype_of_classifier_probas§  s
    
r·   )rm   )CÚnumpyr   rr   Zscipy.sparseÚsparser¡   Zsklearn.baser   Zsklearn.dummyr   r   Zsklearn.exceptionsr   Zsklearn.utils._testingr   r   r   r	   Zsklearn.utils.statsr
   r"   r,   r/   r4   r>   r@   rC   rP   rS   rU   rV   rY   ÚmarkZparametrizer&   r[   rc   rl   rq   rt   rv   rw   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Ä   

  þþþ

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