o
    ЋiEV                     @   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    n1 sw   Y  qKd S )Nignorez!divide by zero encountered in log   )r   r   axis)predict_probawarningscatch_warningsfilterwarningspredict_log_probanp
atleast_1dndimreshapeshapelenrangeuniquer   sumoneslog)clfXyproba	log_proba	n_outputs	n_samplesk r(   \/home/air/goalskill_sales/back/venv/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   
"
r5   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,   r6   )r   r   r7   r6   r,   )r   r-   r-   r,   r   r.   r2   r(   r(   r)   _check_behavior_2d_for_constantA   s   "
r8   c                 C   s<   t t| |jd df| t t| |jd df| d S )Nr   r   )r   r   tiler   )	statisticy_learny_pred_learny_testy_pred_testr(   r(   r)   _check_equality_regressorK   s    r?   
   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 )Npandasseedr   	feature_1)columnsfeature_names_in_n_features_in_)pytestimportorskipr   randomRandomState	DataFramerandr   r0   hasattrr   )global_random_seedr&   pdrandom_stater!   r"   r3   r(   r(   r)   (test_feature_names_in_and_n_features_in_P   s   

rR   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strategyrQ   rU   r   r         ?)r   r0   r   r1   r   r   r   r*   r   r   class_prior_r   )r!   r"   rW   r    r(   r(   r)   %test_most_frequent_and_prior_strategya   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 ]%}t |dd}t |dd}|| | || | t|| ||  qd S )Nr   r+   r   r,   rS   rV   r   r0   r   r1   )r!   y_1dy_2drW   clf_1dclf_2dr(   r(   r)   6test_most_frequent_and_prior_strategy_with_2d_column_yu   s   ra   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-   )rU   rT   rV   )r   r/   r   r   r0   r   r1   hstackr   zerosr*   r5   )r!   r"   r&   rW   r    r(   r(   r)   1test_most_frequent_and_prior_strategy_multioutput   s   " 
rd   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   r6   )r   r,   r   r   r,   
stratifiedrV     r   333333?decimalr,   皙?	r   r0   r1   r   bincountfloatr   r   r*   rO   r!   r"   r    r4   pr(   r(   r)   test_stratified_strategy      
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 ]+}t |d d |f tt	| }t
|d ddd	 t
|d d
dd	 t||| q8t| d S )Nr   r6   r,   r   re   rV   rf   rg   rh   rj   r   r/   r   r0   r1   r   r   rl   rm   r   r   r*   r5   rO   r!   r"   r    r4   r'   ro   r(   r(   r)   $test_stratified_strategy_multioutput   s   (
"rt   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   r7   r+   uniformrV   rf   r   rY   rh   r,   rk   rn   r(   r(   r)   test_uniform_strategy   rq   rv   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   r7   r,   r   ru   rV   rf   rY   rh   rr   rs   r(   r(   r)   !test_uniform_strategy_multioutput   s   "
"rw   c                  C   sD   dggd } g d}t dd}|| | t|| dgd  d S )Nr   r6   )parisrx   tokyo	amsterdamberlinrT   rW   rx   r\   r!   r"   r    r(   r(   r)   test_string_labels   s
   
r~   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 )NrT   r|   rY   )r   r0   score)r"   r=   r    r(   r(   r)   test_classifier_score_with_None   s   
r   rW   )re   rT   rU   ru   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   r7   rW   rQ   r   r   )r   r0   r1   r   )	rW   rO   r"   X1clf1predictions1X2clf2predictions2r(   r(   r)   +test_classifier_prediction_independent_of_X   s   

r   c                 C   sZ   t jj| d}dggd }|d}t }||| t||t |gt	|  d S )NrB   r   r7   )
r   rJ   rK   randnr   r0   r   r1   meanr   rO   rQ   r!   r"   regr(   r(   r)   test_mean_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 }||| ||}||}	t	|||||	 t
| d S )NrB   r@   r6   r   r   rX      )r   rJ   rK   r   r   r   r   r0   r1   r?   r5   )
rO   rQ   X_learnr;   r   X_testr=   r3   r<   r>   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   rH   raisesr   r1   )r   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 )NrB   r   r6   medianr|   )
r   rJ   rK   r   r   r0   r   r1   r   r   r   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 )
NrB   r@   r6   r   r   rX   r   r   r|   )r   rJ   rK   r   r   r   r   r0   r1   r?   r5   )
rO   rQ   r   r;   r   r   r=   r3   r<   r>   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 )NrB   r   r6   quantilerY   rW   r   r   g333333?   )q)r   rJ   rK   r   r   r0   r   r1   r   r   minmax
percentiler   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 )NrB   r@   r6   r   r   rX   P   )r   r   r   r   rY   r   g?)r   rJ   rK   r   r   r   r   r   r0   r1   r?   r5   )rO   rQ   r   r;   r   quantile_valuesr   r=   r3   r<   r>   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   r6   r   r   zIWhen using `strategy='quantile', you have to specify the desired quantilematch)r   rH   r   
ValueErrorr0   r!   r"   r3   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   rj   r   )r   rH   r   
IndexErrorr0   )r3   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 )NrB   r   r6   r   +   rW   r   )r   rJ   rK   r   r   r0   r   r1   r   
isinstancer   ndarrayr   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 )NrB   r@   r6   r   r   r   )	r   rJ   rK   r   r   r0   r1   r?   r8   )
rO   rQ   r   r;   	constantsr   r=   r3   r<   r>   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   r6   r   r,   r7         r   r|   )r   r0   	constant_r   r   )r!   r"   r3   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   r6   r   r   r|   z)Constant target value has to be specifiedr   )r   rH   r   	TypeErrorr0   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 )	NrB   r@   r6   r   )r   r,   r-   r7   r   z1Constant target value should have shape \(5, 1\).r   )	r   rJ   rK   r   r   rH   r   r   r0   )rO   rQ   r!   r"   r3   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   r7   )	r   r0   r   r1   r   r   r   r*   r/   r}   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   r0   r   r1   rb   r   rc   r*   )r!   r"   r&   r    r(   r(   r)   "test_constant_strategy_multioutput  s   "(r   zy, params, err_msgr   rQ   zConstant.*has to be specifiedr   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   rW   r   r   r(   )r   rH   r   r   r0   )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   re   r|   gVUUUUU?g?)r   r0   r   rZ   )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   r6   r   r7   r   r   )r   r/   r   r   r0   r1   spissparser   toarrayrb   r   rc   )r   r!   r"   r&   r    r4   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   r6   r,   r   r7   ru   rV   z*the uniform strategy would not save memoryr   rf   gUUUUUU?rh   )r   r/   r   rH   warnsUserWarningr0   r1   r   r   rl   rm   r   r   rO   r   r!   r"   r    r4   r'   ro   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   r6   r7   r   re   rV   rf   rg   rh   g?)r   r/   r   r0   r1   r   r   r   r   r   rl   rm   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   r6   r   r-   r7   rS   rV   )r   r/   r   rb   r   rc   r   r0   r1   r   r   r   r   )r   r!   r"   r&   
y_expectedrW   r    r4   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 )NrB   r   r   r|   )weightsr   g      I@r   gffffff?r   g     W@)	r   rJ   rK   rM   r   r0   r   averager
   )rO   r&   rQ   r!   r"   r   r3   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   r0   r1   r   )r!   r"   r   clsr4   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   re   r|   )r   r/   r   r0   r1   r   r   )r!   r"   r   y_proba_expectedr   r4   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)
return_stdr,   r   )r   r/   r   r0   r1   r   r   )r!   r"   y_std_expectedr   y_pred_listr(   r(   r)   test_dummy_regressor_return_std  s   r   )r   r   r   r,   g      ?r7   c                 C   s*   t  }|d |  |d |dksJ d S )Nr   )r   r0   r   )r"   r=   r   r(   r(   r)   test_regressor_score_with_None  s   r   )r   r   r   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   r7   gffffff?)rW   r   r   r   )r   r0   r1   r   )rW   r"   r   reg1r   r   reg2r   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 )Nr   r7   r   r   )r   rc   r   r0   r   dtypefloat64)rW   r"   r!   modelprobasr(   r(   r)   test_dtype_of_classifier_probas  s
   
r   )r@   )Fr   numpyr   rH   scipy.sparsesparser   sklearn.baser   sklearn.dummyr   r   sklearn.exceptionsr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr	   sklearn.utils.statsr
   r*   r5   r8   r?   rR   r[   ra   rd   rp   rt   rv   rw   r~   markparametrizer/   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	transposer   r   r   r   r   r   r   r   r   r   r   r   r   r(   r(   r(   r)   <module>   s    

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

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