o
    &ѹgEV                     @   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    qK1 sw   Y  qKd 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#   \/Users/admin/.pyenv/versions/3.10.0/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   
"
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s5J 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s+J t	|ds2J t
 ||}t	|ds@J t	|dsGJ 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 ]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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 ]%}t |dd}t |dd}|| | || | t|| ||  qd 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| q!d 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      
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 ]+}t |d d |f tt	| }t
|d ddd	 t
|d d
dd	 t||| q8t| 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   (
"rc   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   r`   re   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   r2   r'   r   rd   rI   rU   rL   rW   ra   rb   r#   r#   r$   !test_uniform_strategy_multioutput   s   "
"rf   c                  C   sD   dggd } g d}t dd}|| | t|| dgd  d S )Nr   r1   )parisrg   ZtokyoZ	amsterdamZberlinrG   rJ   rg   rO   r   r    r   r#   r#   r$   test_string_labels   s
   
rj   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   rh   rL   )r   r+   score)r    r6   r   r#   r#   r$   test_classifier_score_with_None   s   
rl   rJ   )rT   rG   rH   rd   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   rm   r   )r   r+   r,   r   )	rJ   rB   r    X1Zclf1predictions1X2Zclf2predictions2r#   r#   r$   +test_classifier_prediction_independent_of_X   s   

rt   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   
$ry   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?   ru   rv   r   r   r+   r,   r8   r0   )
rB   rD   X_learnr4   rv   X_testr6   r.   r5   r7   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   r=   raisesr   r,   )rx   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   medianrh   )
r   r>   r?   ru   r   r+   r   r,   r   r   rw   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   rz   r   rh   )r   r>   r?   ru   r   r   r   r+   r,   r8   r0   )
rB   rD   r{   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?   ru   r   r+   r   r,   r   r   minmax
percentilerw   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   rz   r   rL   r   g?)r   r>   r?   ru   r   r   r   r   r+   r,   r8   r0   )rB   rD   r{   r4   r   Zquantile_valuesr|   r6   r.   r5   r7   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   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   sH   t ddd} tt | g g  W d    d S 1 sw   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rNJ d S )Nr:   r   r1   rm   +   rJ   rm   )r   r>   r?   ru   r   r+   r   r,   r   
isinstancerm   Zndarrayrw   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   rz   rm   r   )	r   r>   r?   ru   r   r+   r,   r8   r3   )
rB   rD   r{   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         rv   rh   )r   r+   	constant_r   rv   )r   r    r.   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   r1   r   rm   rh   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   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 )	Nr:   r9   r1   rm   )r   r'   r(   r2   r   z1Constant target value should have shape \(5, 1\).r   )	r   r>   r?   ru   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'   rm   r   ro   )twooner   r   r   r2   )	r   r+   r   r,   r   r   r   r%   r*   ri   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   rm   ro   )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 specifiedrm   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   rJ   rm   r   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   rh   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|s;J t|	 t 
t |dft |dfg d S )Nr   r1   r   r2   rm   ro   )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 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   r1   r'   r   r2   rd   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|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   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 ]!}t|dd}||| ||}t	
|sMJ t| | q3d 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s-J tdd|||}|jt||dksBJ tdd	d
|||}|jt||dksXJ d S )Nr:   r   rv   rh   )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   rh   )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s,J 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+   rk   )r    r6   rx   r#   r#   r$   test_regressor_score_with_None  s   r   )rv   r   r   rm   c                 C   sv   g d}dggd }t | ddd}||| ||}dggd }t | ddd}||| ||}t|| d S )Nrn   r   r2   gffffff?)rJ   rm   r   r   )r   r+   r,   r   )rJ   r    rp   Zreg1rq   rr   Zreg2rs   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 )Nrn   r2   r   ro   )r   rR   r   r+   r   ZdtypeZfloat64)rJ   r    r   modelZprobasr#   r#   r$   test_dtype_of_classifier_probas  s
   
r   )r9   )Fr   Z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_   rc   re   rf   rj   markZparametrizer*   rl   rt   ry   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    

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


!



	





.

