a
    ;Zèa<T  ã                   @   s‚  d dl Z d dl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 d dlmZ d dlmZ d dl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"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%d/d0„ Z&d1d2„ Z'd3d4„ Z(d5d6„ Z)d7d8„ Z*d9d:„ Z+d;d<„ Z,d=d>„ Z-d?d@„ Z.dAdB„ Z/dCdD„ Z0dEdF„ Z1dGdH„ Z2dIdJ„ Z3dKdL„ Z4dMdN„ Z5dOdP„ Z6e j j!dQg dR¢dSd idTfg dR¢dUd%d gidVfe 7g dR¢g dR¢g¡dUd%idVfg dR¢dUdWidXfe 7g dR¢g dR¢g¡dUd%dYgidZfgg d[¢d\d]d^„ ƒZ8d_d`„ Z9dadb„ Z:dcdd„ Z;dedf„ Z<dgdh„ Z=d€djdk„Z>dldm„ Z?dndo„ Z@dpdq„ ZAe j  !d"g dr¢dsgdt fe "d%d%gd&d&gd&d&gd&d&gg¡dsdsggdt fg¡dudv„ ƒZBe j  !d)g dw¢¡dxdy„ ƒZCe j  !d)g d*¢¡dzd{„ ƒZDe j  Ed|¡e j  !d}eef¡d~d„ ƒƒZFdS )é    N)Úclone)Úassert_array_equal)Úassert_array_almost_equal)Úassert_almost_equal)Úignore_warnings)Ú_weighted_percentile)ÚDummyClassifierÚDummyRegressor)ÚNotFittedErrorc                 C   sæ   |   |¡}|  |¡}t |¡}|jdkr4t |d¡}|jd }t|ƒ}|dkrZ|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
t || ¡|| ƒ qbd S )Né   )éÿÿÿÿr   r   ©Úaxis)Úpredict_probaZ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   ú7lib/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_2d*   s    
"
r,   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#   r-   )r   r   r.   r-   r#   )r   r$   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} 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©Ú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} 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#   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 } g d¢}t d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#   r   r   r#   Ú
stratifiedr8   éô  r   ç333333ã?©Zdecimalr#   çš™™™™™Ù?©	r   r'   r(   r   ÚbincountÚfloatr   r   r!   ©r   r   r   r+   Úpr   r   r    Útest_stratified_strategy   s    
rN   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}| | |¡ 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   rH   ©r   r&   r   r'   r(   r   r   rJ   rK   r   r   r!   r,   ©r   r   r   r+   r   rM   r   r   r    Ú$test_stratified_strategy_multioutput   s    (
"rQ   c                  C   sŒ   dggd } g d¢}t d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"   Úuniformr8   rE   r   r<   rG   r#   rI   rL   r   r   r    Útest_uniform_strategy    s    
rS   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}| | |¡ 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   rR   r8   rE   r<   rG   rO   rP   r   r   r    Ú!test_uniform_strategy_multioutput®   s    "
"rT   c                  C   sD   dggd } g d¢}t dd}| | |¡ t| | ¡dgd ƒ d S )Nr   r-   )ÚparisrU   ZtokyoZ	amsterdamZberlinr6   ©r9   rU   r?   ©r   r   r   r   r   r    Útest_string_labelsÀ   s
    
rX   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 )Nr6   rV   r<   )r   r'   Úscore)r   r2   r   r   r   r    Útest_classifier_score_with_NoneÈ   s    
rZ   r9   )rD   r6   r7   rR   Úconstantc                 C   sv   g d¢}dggd }t | ddd}| ||¡ | |¡}dggd }t | ddd}| ||¡ | |¡}t||ƒ d S )N©r   r#   r   r   r   r.   ©r9   r:   r[   r   )r   r'   r(   r   )r9   r   ÚX1Zclf1Úpredictions1ÚX2Zclf2Úpredictions2r   r   r    Ú+test_classifier_prediction_independent_of_XØ   s    

rb   c                  C   s¬   t dd} t t¡ |  g g ¡ W d   ƒ n1 s60    Y  t t¡ |  g ¡ W d   ƒ n1 sj0    Y  t t¡ |  g ¡ W d   ƒ n1 sž0    Y  d S )NÚunknownrV   )r   ÚpytestÚraisesÚ
ValueErrorr'   r
   r(   r   )r   r   r   r    Útest_classifier_exceptionsê   s    
*(rg   c                  C   sZ   t jjdd} dggd }|  d¡}tƒ }| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )Nr   ©Zseedr   r.   )
r   ÚrandomÚRandomStateÚrandnr	   r'   r   r(   Úmeanr   ©r:   r   r   Úregr   r   r    Útest_mean_strategy_regressorõ   s    
ro   c            	      C   s”   t jjdd} |  dd¡}|  dd¡}t j|dd d¡}|  dd¡}|  dd¡}tƒ }| ||¡ | |¡}| |¡}t	|||||ƒ t
|ƒ d S )	Nr   rh   é
   r-   r   r   r;   é   )r   ri   rj   rk   rl   r   r	   r'   r(   r4   r,   )	r:   ÚX_learnr0   rl   ÚX_testr2   r*   r1   r3   r   r   r    Ú(test_mean_strategy_multioutput_regressor  s    

rt   c                  C   s>   t ƒ } t t¡ |  g ¡ W d   ƒ n1 s00    Y  d S )N)r	   rd   re   r
   r(   )rn   r   r   r    Útest_regressor_exceptions  s    ru   c                  C   s^   t jjdd} dggd }|  d¡}tdd}| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )Nr   rh   r   r-   ÚmedianrV   )
r   ri   rj   rk   r	   r'   r   r(   rv   r   rm   r   r   r    Útest_median_strategy_regressor  s    

rw   c            	      C   s˜   t jjdd} |  dd¡}|  dd¡}t j|dd d¡}|  dd¡}|  dd¡}td	d
}| ||¡ | |¡}| |¡}t	|||||ƒ t
|ƒ d S )Nr   rh   rp   r-   r   r   r;   rq   rv   rV   )r   ri   rj   rk   rv   r   r	   r'   r(   r4   r,   )	r:   rr   r0   rv   rs   r2   r*   r1   r3   r   r   r    Ú*test_median_strategy_multioutput_regressor)  s    


rx   c                  C   s  t jjd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   rh   r   r-   Úquantiler<   ©r9   ry   g333333Ó?é   )Úq)r   ri   rj   rk   r	   r'   r   r(   rv   r   ÚminÚmaxÚ
percentilerm   r   r   r    Ú test_quantile_strategy_regressor?  s    
   r€   c            
      C   sô   t jjd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   rh   rp   r-   r   r   r;   éP   )r   r|   rq   ry   r<   rz   gš™™™™™é?)r   ri   rj   rk   rv   r   r   r	   r'   r(   r4   r,   )
r:   rr   r0   rv   Zquantile_valuesrs   r2   r*   r1   r3   r   r   r    Ú,test_quantile_strategy_multioutput_regressorW  s*    




ÿr‚   c                  C   s¬  dggd } dgd }t dd}t t¡ | | |¡ W d   ƒ n1 sL0    Y  t dd d}t t¡ | | |¡ W d   ƒ n1 sŽ0    Y  t ddgd}t t¡ | | |¡ W d   ƒ n1 sÒ0    Y  t ddd}t t¡ | | |¡ W d   ƒ n1 s0    Y  t ddd}t t¡ | | |¡ W d   ƒ n1 sZ0    Y  t ddd}t t¡ | | |¡ W d   ƒ n1 sž0    Y  d S )	Nr   r-   ry   rV   rz   gš™™™™™¹¿gš™™™™™ñ?Úabc)r	   rd   re   rf   r'   Ú	TypeError©r   r   r*   r   r   r    Útest_quantile_invalidy  s(    

***,,r†   c                  C   sF   t ddd} t t¡ |  g g ¡ W d   ƒ n1 s80    Y  d S )Nry   rH   rz   ©r	   rd   re   rf   r'   )r*   r   r   r    Ú"test_quantile_strategy_empty_train—  s    rˆ   c                  C   sŽ   t jjdd} dggd }|  d¡}tddgd}| ||¡ t| |¡dgt|ƒ ƒ tddd}| ||¡ t| |¡dgt|ƒ ƒ d S )Nr   rh   r   r-   r[   é+   ©r9   r[   )	r   ri   rj   rk   r	   r'   r   r(   r   rm   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d¡}td|d}| ||¡ | |¡}| |¡}t|||||ƒ t|ƒ d S )Nr   rh   rp   r-   rq   r[   rŠ   )	r   ri   rj   rk   r	   r'   r(   r4   r/   )	r:   rr   r0   Z	constantsrs   r2   r*   r1   r3   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   r-   ©r   r#   r.   é   é   rl   rV   )r	   r'   Ú	constant_r   rl   r…   r   r   r    Útest_y_mean_attribute_regressorÄ  s
    
r‘   c                  C   sX   dggd } g d¢}t dd}t t¡ | | |¡ W d   ƒ n1 sJ0    Y  d S )Nr   r-   r   ZgonarV   r‡   r…   r   r   r    Ú test_unknown_strategey_regressorÎ  s
    
r’   c                  C   sX   dggd } g d¢}t dd}t t¡ | | |¡ W d   ƒ n1 sJ0    Y  d S )Nr   r-   r   r[   rV   )r	   rd   re   r„   r'   r…   r   r   r    Ú&test_constants_not_specified_regressor×  s
    
r“   c                  C   sp   t jjdd} |  dd¡}|  dd¡}tdg d¢d}t t¡ | ||¡ W d   ƒ n1 sb0    Y  d S )Nr   rh   rp   r-   r[   )r   r#   r$   r.   rŠ   )	r   ri   rj   rk   r	   rd   re   rf   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} 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—   r.   )	r   r'   r   r(   r   r   r   r!   r&   rW   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•   r:   zConstant.*has to be specifiedr[   zConstant.*should have shapezmy-constantz.constant=my-constant.*Possible values.*\[1, 2]rc   z2constant=\[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   r9   r[   ©Úmatch)r   rd   re   rf   r'   )r   ÚparamsÚerr_msgr   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Ÿ   rD   rV   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  |¡sxJ ‚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   ÚtoarrayrA   r   rB   )r   r   r   r   r+   r   r   r    Ú$test_constant_strategy_sparse_target8  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}tjtdd	 | | |¡ W d   ƒ n1 sv0    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   r-   r#   r   r.   rR   r8   z*the uniform strategy would not save memoryrš   rE   gUUUUUUÕ?rG   )r£   r¤   r   r&   r   rd   ÚwarnsÚUserWarningr'   r(   r   r   rJ   rK   r   r   rP   r   r   r    Ú+test_uniform_strategy_sparse_target_warningG  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}| | |¡ dggd } | | ¡}t  |¡svJ ‚| ¡ }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   rJ   rK   r   r   rP   r   r   r    Ú&test_stratified_strategy_sparse_targetY  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œJ ‚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   Ú
y_expectedr9   r   r+   r   r   r    Ú3test_most_frequent_and_prior_strategy_sparse_targetl  s    ."
r­   rp   c                 C   s´   t jjd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   rh   r   rl   rV   )Zweightsrv   g      I@ry   gffffffî?rz   g     ÀW@)	r   ri   rj   Zrandr	   r'   r   Zaverager   )r   r:   r   r   r¡   r*   r   r   r    Ú"test_dummy_regressor_sample_weight{  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   rD   rV   )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      ô?r.   c                 C   s*   t ƒ }| d | ¡ | d |¡dks&J ‚d S )Nr    )r	   r'   rY   )r   r2   rn   r   r   r    Útest_regressor_score_with_None°  s    r·   )rl   rv   ry   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   r.   gffffffæ?)r9   r[   ry   r   )r	   r'   r(   r   )r9   r   r^   Zreg1r_   r`   Zreg2ra   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 )Nr\   r.   r   r]   )r   rB   r   r'   r   ZdtypeZfloat64)r9   r   r   ZmodelZprobasr   r   r    Útest_dtype_of_classifier_probasÍ  s
    
r¹   z%ignore:`n_features_in_` is deprecatedÚDummyc                 C   st   ddgg}dg}| ƒ }t |dƒr$J ‚| ||¡ tjtdd |j}W d   ƒ n1 sZ0    Y  |d u spJ ‚d S )Nr   r#   r   Ún_features_in_z`n_features_in_` is deprecatedrš   )Úhasattrr'   rd   r¨   ÚFutureWarningr»   )rº   r   r   ÚdZn_features_inr   r   r    Útest_n_features_in_Ú  s    
$r¿   )rp   )Grd   Znumpyr   Zscipy.sparseZsparser£   Zsklearn.baser   Zsklearn.utils._testingr   r   r   r   Zsklearn.utils.statsr   Zsklearn.dummyr   r	   Zsklearn.exceptionsr
   r!   r,   r/   r4   r>   r@   rC   rN   rQ   rS   rT   rX   ZmarkZparametrizer&   rZ   rb   rg   ro   rt   ru   rw   rx   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¹   Úfilterwarningsr¿   r   r   r   r    Ú<module>   sÆ   

  þþþ

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


