U
    3‰dÐO  ã                   @   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"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/d0„ Z%d1d2„ Z&d3d4„ Z'd5d6„ Z(d7d8„ Z)d9d:„ Z*d;d<„ Z+d=d>„ Z,d?d@„ Z-dAdB„ Z.dCdD„ Z/dEdF„ Z0dGdH„ Z1dIdJ„ Z2dKdL„ Z3dMdN„ Z4e j j!dOd#d$d#d#gdPd idQfd#d$d#d#gd,d#d gidRfe 5d#d$d#d#gd#d$d#d#gg¡d,d#idRfd#d$d#d#gd,dSidTfe 5d#d$d#d#gd#d$d#d#gg¡d,d#dUgidVfgdWdXdYdZd[gd\d]d^„ ƒZ6d_d`„ Z7dadb„ Z8dcdd„ Z9dedf„ Z:dgdh„ Z;d}djdk„Z<dldm„ Z=dndo„ Z>dpdq„ Z?e j  !d"d$d$d$d#gdrgds fe "d#d#gd$d$gd$d$gd$d$gg¡drdrggds fg¡dtdu„ ƒZ@e j  !d'dvdwdxd,g¡dydz„ ƒZAe j  !d'd(d)d*d+d,g¡d{d|„ ƒZBd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|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    ú</tmp/pip-unpacked-wheel-zrfo1fqw/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}| | |¡ 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"   ©r   r   r   r+   Úpr    r    r!   Útest_stratified_strategy   s    
rO   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   rI   ©r   r&   r   r'   r(   r   r   rK   rL   r   r   r"   r,   ©r   r   r   r+   r   rN   r    r    r!   Ú$test_stratified_strategy_multioutput   s    (
"rR   c                  C   s   dggd } ddddg}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#   Úuniformr8   rE   r<   rG   rJ   rM   r    r    r!   Útest_uniform_strategy    s    
rT   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   rS   r8   rE   r<   rG   rP   rQ   r    r    r!   Ú!test_uniform_strategy_multioutput®   s    "
"rU   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
    
rX   zy,y_testr#   r   c                 C   s.   t dd}| d | ¡ | d |¡dks*t‚d S )Nr6   rV   r<   )r   r'   Úscorer   )r   r2   r   r    r    r!   Útest_classifier_score_with_NoneÈ   s    
rZ   r9   rD   r6   r7   rS   Úconstantc                 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.   ©r9   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   sZ   t jjdd} dggd }|  d¡}tƒ }| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )Nr   ©Úseedr   r.   )
r   ÚrandomÚRandomStateÚrandnr	   r'   r   r(   Úmeanr   ©r:   r   r   Úregr    r    r!   Útest_mean_strategy_regressorê   s    
rk   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   rc   é
   r-   r   r   r;   é   )r   re   rf   rg   rh   r   r	   r'   r(   r4   r,   )	r:   ÚX_learnr0   rh   ÚX_testr2   r*   r1   r3   r    r    r!   Ú(test_mean_strategy_multioutput_regressorö   s    

rp   c               	   C   s*   t ƒ } t t¡ |  g ¡ W 5 Q R X d S )N)r	   ÚpytestÚraisesr
   r(   )rj   r    r    r!   Útest_regressor_exceptions  s    rs   c                  C   s^   t jjdd} dggd }|  d¡}tdd}| ||¡ t| |¡t  |¡gt	|ƒ ƒ d S )Nr   rc   r   r-   ÚmedianrV   )
r   re   rf   rg   r	   r'   r   r(   rt   r   ri   r    r    r!   Útest_median_strategy_regressor  s    

ru   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   rc   rl   r-   r   r   r;   rm   rt   rV   )r   re   rf   rg   rt   r   r	   r'   r(   r4   r,   )	r:   rn   r0   rt   ro   r2   r*   r1   r3   r    r    r!   Ú*test_median_strategy_multioutput_regressor  s    


rv   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   rc   r   r-   Úquantiler<   ©r9   rw   g333333Ó?é   )Úq)r   re   rf   rg   r	   r'   r   r(   rt   r   ÚminÚmaxÚ
percentileri   r    r    r!   Ú test_quantile_strategy_regressor4  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   rc   rl   r-   r   r   r;   éP   )r   rz   rm   rw   r<   rx   gš™™™™™é?)r   re   rf   rg   rt   r   r}   r	   r'   r(   r4   r,   )
r:   rn   r0   rt   Zquantile_valuesro   r2   r*   r1   r3   r    r    r!   Ú,test_quantile_strategy_multioutput_regressorL  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-   rw   rx   zIWhen using `strategy='quantile', you have to specify the desired quantile©Úmatch©r	   rq   rr   Ú
ValueErrorr'   ©r   r   r*   Úerr_msgr    r    r!   Útest_quantile_invalidn  s    
ÿr‡   c               	   C   s2   t ddd} t t¡ |  g g ¡ W 5 Q R X d S )Nrw   rI   rx   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|ƒ ƒ t	|j
t jƒrœt‚d S )Nr   rc   r   r-   r[   é+   ©r9   r[   )r   re   rf   rg   r	   r'   r   r(   r   Ú
isinstancer[   Zndarrayr   ri   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   rc   rl   r-   rm   r[   rŠ   )	r   re   rf   rg   r	   r'   r(   r4   r/   )	r:   rn   r0   Ú	constantsro   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.   é   é   rh   rV   )r	   r'   Ú	constant_r   rh   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[   rV   z)Constant target value has to be specifiedr   )r	   rq   rr   Ú	TypeErrorr'   r…   r    r    r!   Ú&test_constants_not_specified_regressorµ  s    
r”   c               	   C   sh   t jjd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 )Nr   rc   rl   r-   r[   r#   r$   r.   rŠ   z1Constant target value should have shape \(5, 1\).r   )	r   re   rf   rg   r	   rq   rr   r„   r'   )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]   ZtwoZoner.   )	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:   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)Ú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   rq   rr   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   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  |¡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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.   rS   r8   z*the uniform strategy would not save memoryr   rE   gUUUUUUÕ?rG   )rŸ   r    r   r&   r   rq   ZwarnsÚUserWarningr'   r(   r   r   rK   rL   r   r   rQ   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}| | |¡ 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   rQ   r    r    r!   Ú&test_stratified_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| ƒ}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_targetK  s    ."
r¨   rl   c                 C   s´   t jjd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 )Nr   rc   r   rh   rV   )Úweightsrt   g      I@rw   gffffffî?rx   g     ÀW@)
r   re   rf   Zrandr	   r'   r‘   Zaverager   r   )r   r:   r   r   r   r*   r    r    r!   Ú"test_dummy_regressor_sample_weightZ  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_arrayk  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   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_arrayu  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'   rY   r   )r   r2   rj   r    r    r!   Útest_regressor_score_with_None  s    r²   rh   rt   rw   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[   rw   )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   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µ   )rl   )Crq   Znumpyr   Zscipy.sparseÚ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   rO   rR   rT   rU   rX   ÚmarkZparametrizer&   rZ   rb   rk   rp   rs   ru   rv   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Ê   

  þþþ

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