U
    _»{j|à  ã                   @   s–  d dl Z 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
 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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!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z* dd„ Z+dd„ Z,dd„ Z-ej. /dddddg¡dd„ ƒZ0ej. /ddddg¡dd„ ƒZ1ej. /ddddg¡dd „ ƒZ2ej. /dddddg¡d!d"„ ƒZ3d#d$„ Z4d%d&„ Z5d'd(„ Z6d)d*„ Z7ej. /dddg¡ej. /d+de8e9g¡d,d-„ ƒƒZ:ej. /dddg¡ej. /d.d/d0g¡d1d2„ ƒƒZ;ej. /dddg¡ej. /d+e9e <d3¡e <d4¡g¡d5d6„ ƒƒZ=d7d8„ Z>ej. /d9dej?d:d;d g¡d<d=„ ƒZ@ej. /d+e8d>g¡d?d@„ ƒZAej. /dAdBdCej?fg¡dDdE„ ƒZBdFdG„ ZCej. /dHejDejEg¡dIdJ„ ƒZFej. /d9dej?d:d;d g¡dKdL„ ƒZGej. /d+e8d>g¡dMdN„ ƒZHej. /dOdPgdQggdPgej?ggg¡dRdS„ ƒZIdTdU„ ZJdVdW„ ZKdXdY„ ZLdZd[„ ZMd\d]„ ZNej. /d^d_d`dadbdcg¡ddde„ ƒZOej. /dfdeƒ eƒ eƒ eƒ g¡dgdh„ ƒZPdidj„ ZQdkdl„ ZRdmdn„ ZSej. /ddddg¡dodp„ ƒZTdqdr„ ZUdsdt„ ZVdudv„ ZWej. /dwdxdyg¡dzd{„ ƒZXd|d}„ ZYd~d„ ZZd€d�„ Z[ej.j/d‚d dƒe \d gdx dƒgdx g¡fdde \ej] gdx ej]gdx g¡fej] ej]e \ej] gdx ej]gdx g¡fd„dyd…gdƒd†d‡ge \d„dyd…gdƒd†d‡gg¡fd„ej] d…gdƒd†ej]ge \d„ej] d…gdƒd†ej]gg¡fgdˆd‰dŠd‹dŒgd��dŽd�„ ƒZ^ej. /d�d‘ej]ej] d’fd„dygdƒd†d gd“fg¡d”d•„ ƒZ_ej.j/d–ddgej] ej]gfd—d…gd—gd˜ d…gd˜ gfgd™dšgd��d›dœ„ ƒZ`ej. /d�dždŸg¡d d¡„ ƒZaej. /d¢ddPejbjcdPd£�g¡ej. /d¤ddPejbjcdPd£�g¡d¥d¦„ ƒƒZdej. /d§e \d¨dPgdPdQgg¡e \d¨dPgdPd¨gg¡d©dªd«œd¬fej\d­d®gd¯d­gge9d°�ej\d­d®gd¯d­gge9d°�i d±fg¡d²d³„ ƒZeej. /d´ej?ejfej\fd ejgej\fd¨ejgej\fej?ejfejhfd¨ejgejhfej?ejfejDfd¨ejgejDfej?ejfejifd¨ejgejifej?ejfejjfd¨ejgejjfej?ejfejkfd¨ejgejkfg¡ej. /dµd©dxe \d dPdQg¡fd¶dxe \d dPdQg¡fg¡d·d¸„ ƒƒZlej. /d¹ejhejDejiejjejkg¡dºd»„ ƒZmej. /d¼dždŸdªg¡ej. /d½ej?ej\fd ej\fej?ejhfej?ejDfej?ejifej?ejjfg¡d¾d¿„ ƒƒZndÀdÁ„ Zoej. /dÂej\d­d®gd®d­gge8d°�d­ej\d®d®dždŸgd®d®dŸdžgge8d°�fe \ej?dCgdCej?gg¡ej?e \dCdCdždŸgdCdCdŸdžgg¡fej\ej?d®gd®ej?gge8d°�ej?ej\d®d®dždŸgd®d®dŸdžgge8d°�fej\dd®gd®dgge8d°�dej\d®d®dždŸgd®d®dŸdžgge8d°�fg¡dÃdÄ„ ƒZpej. /dÅeeg¡ej. /dÆdÇej?dÈfdÉg¡dÊdË„ ƒƒZqdÌdÍ„ ZrdÎdÏ„ Zsej. /dÅeeg¡dÐdÑ„ ƒZtej. /d¹ejhejDejiejjejkg¡dÒdÓ„ ƒZuej. /dÔdÕdÖg¡d×dØ„ ƒZvej. /dÙdadxd˜dQd dPgfdbdPd dQd˜dxgfg¡dÚdÛ„ ƒZwej. /dÜd¨ej?g¡dÝdÞ„ ƒZxej. /dÜd¨ej?g¡dßdà„ ƒZyej. /dádâd­d®d¯ge8dâdQfdãdãdãdäge8dâdPfd­dådæge8d­dQfdådådådäge8dçdQfd…dPdQdxgezd…dQfdPdPdPdQgezd…dPfd…dèdèdPgezd…dQfdPdPdPdègezd…dQfg¡dédê„ ƒZ{ej. /dëddddg¡dìdí„ ƒZ|dîdï„ Z}ej. /dðdždŸg¡dñdò„ ƒZ~dódô„ Zdõdö„ Z€d÷dø„ Z�ej. /dùej‚ejfg¡dúdû„ ƒZƒej. /düdýdþg¡ej. /dðdždŸg¡dÿ�d „ ƒƒZ„ej. /düdýdþg¡ej. /ddddg¡ej. /dðdždŸg¡�d�d„ ƒƒƒZ…dS (  é    N©Úsparse)Úkstest)Útree)Úload_diabetes)ÚDummyRegressor)ÚConvergenceWarning)Úenable_iterative_imputer)ÚIterativeImputerÚ
KNNImputerÚMissingIndicatorÚSimpleImputer)Ú_most_frequent)ÚARDRegressionÚBayesianRidgeÚRidgeCV)ÚGridSearchCV)ÚPipelineÚ
make_union)Ú_sparse_random_matrix)Ú_convert_containerÚassert_allcloseÚassert_allclose_dense_sparseÚassert_array_almost_equalÚassert_array_equalc                 C   s   t | |ƒ | j|jkst‚d S ©N)r   ÚdtypeÚAssertionError©ÚxÚy© r!   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/impute/tests/test_impute.pyÚ"_assert_array_equal_and_same_dtype   s    
r#   c                 C   s   t | |ƒ | j|jkst‚d S r   )r   r   r   r   r!   r!   r"   Ú_assert_allclose_and_same_dtype$   s    
r$   c           	      C   sæ   d||f }t }| jjdks(|jjdkr,t}t||d�}| | ¡ |  ¡ ¡}||j|| 	d¡d� |||| 	d¡d� t||d�}| t
 | ¡¡ | t
 |  ¡ ¡¡}t
 |¡r¸| ¡ }||j|| 	d¡d� |||| 	d¡d� dS )zâUtility function for testing imputation for a given strategy.

    Test with dense and sparse arrays

    Check that:
        - the statistics (mean, median, mode) are correct
        - the missing values are imputed correctlyz<Parameters: strategy = %s, missing_values = %s, sparse = {0}Úf©Úmissing_valuesÚstrategyF)Úerr_msgTN)r   r   Úkindr   r   ÚfitÚ	transformÚcopyÚstatistics_Úformatr   Ú
csc_matrixÚissparseÚtoarray)	ÚXÚX_truer(   Z
statisticsr'   r)   Z	assert_aeÚimputerÚX_transr!   r!   r"   Ú_check_statistics)   s$    	þ
r7   r(   ÚmeanÚmedianÚmost_frequentÚconstantc                 C   s„   t j dd¡}t j|d d d…< t| d�}| t |¡¡}|jdksFt	‚| |¡}|jdks^t	‚t
| d�}| |¡}|jdks€t	‚d S )Né
   é   ©r(   )r<   r=   )Úinitial_strategy)ÚnpÚrandomÚrandnÚnanr   Úfit_transformr   Ú
csr_matrixÚshaper   r
   )r(   r3   r5   Ú	X_imputedZiterative_imputerr!   r!   r"   Útest_imputation_shapeN   s    



rH   c              	   C   sT   t  d¡}t j|d d …df< t| d� |¡}tjtdd�� | |¡ W 5 Q R X d S )N©é   é   r   r>   ZSkipping©Úmatch)	r@   ÚonesrC   r   r+   ÚpytestÚwarnsÚUserWarningr,   ©r(   r3   r5   r!   r!   r"   Ú test_imputation_deletion_warning_   s
    
rS   c              	   C   sŒ   t  d¡}tj}tjddddgtd�}|j||d|gd|d	d
gg|d�}t| d� |¡}t	|j
|ƒ t jtdd�� | |¡ W 5 Q R X d S )NÚpandasÚaÚbÚcÚd©r   é   é   r=   r<   ©Úcolumnsr>   z6Skipping features without any observed values: \['b'\]rL   )rO   Úimportorskipr@   rC   ÚarrayÚobjectÚ	DataFramer   r+   r   Zfeature_names_in_rP   rQ   r,   )r(   Úpdr'   Úfeature_namesr3   r5   r!   r!   r"   Ú.test_imputation_deletion_warning_feature_namesi   s     


þû ÿrd   c              	   C   s‚   t  d¡}d|d< t |¡}t| dd�}tjtdd�� | |¡ W 5 Q R X | | 	¡ ¡ tjtdd�� | 
|¡ W 5 Q R X d S )NrI   r   )r(   r'   zProvide a dense arrayrL   )r@   rN   r   r0   r   rO   ÚraisesÚ
ValueErrorr+   r2   r,   rR   r!   r!   r"   Útest_imputation_error_sparse_0ƒ   s    

rg   c                 O   s8   t | dƒr| jnt| ƒ}|dkr&tjS tj| f|ž|ŽS ©NÚsizer   )Úhasattrri   Úlenr@   rC   r9   ©ZarrÚargsÚkwargsÚlengthr!   r!   r"   Úsafe_median“   s    rp   c                 O   s8   t | dƒr| jnt| ƒ}|dkr&tjS tj| f|ž|ŽS rh   )rj   ri   rk   r@   rC   r8   rl   r!   r!   r"   Ú	safe_mean™   s    rq   c               
   C   sv  t j d¡} d}d}|| || f}t  |d ¡}t  d|d d ¡}|dd d…  |dd d…< dt jdd„ fd	t jd
d„ fg}|D �]ê\}}}	t  |¡}
t  |¡}t  |d ¡}t|d ƒD �]Z}|| d dk|| d  || d  }t|d ||  || ||   dƒ}|d | | }|d |… }t  	||¡}||  
t|ƒ¡d |…  }|	|||ƒ||< t  |||f¡|
d d …|f< d|k�r¶t  |t  	|| || ¡f¡|d d …|f< n(t  ||t  	|| |¡f¡|d d …|f< t j |¡ |
d d …|f ¡ t j |¡ |d d …|f ¡ q¾|d	k�r<t  |¡jdd� }nt  |¡jdd� }|d d …|f }t|
||||ƒ q„d S )Nr   r<   rZ   r[   r=   r8   c                 S   s   t t | |f¡ƒS r   )rq   r@   Úhstack©ÚzÚvÚpr!   r!   r"   Ú<lambda>­   ó    z-test_imputation_mean_median.<locals>.<lambda>r9   c                 S   s   t t | |f¡ƒS r   )rp   r@   rr   rs   r!   r!   r"   rw   ®   rx   )Zaxis)r@   rA   ÚRandomStateÚzerosÚarangerC   ÚemptyÚrangeÚmaxÚrepeatZpermutationrk   rr   ÚshuffleÚisnanÚanyÚallr7   )ÚrngÚdimÚdecrF   rz   ÚvaluesZtestsr(   Ztest_missing_valuesZtrue_value_funr3   r4   Ztrue_statisticsÚjZnb_zerosZnb_missing_valuesZ	nb_valuesrt   rv   ru   Zcols_to_keepr!   r!   r"   Útest_imputation_mean_medianŸ   sJ    þ

(&
ÿÿ 
r‰   c                  C   sÚ   t  dt jt jgdt jt jgddt jgddt jgddt jgddt jgddt jgddt jgg¡ ¡ } t  dddgdddgdddgdddgddd	gddd
gdddgdddgg¡ ¡ }ddddd	d
ddg}t| |d|t jƒ d S )Nr   rK   éûÿÿÿr[   éüÿÿÿéÿÿÿÿr=   g      Àg      @g      @g      Àç      à?r9   )r@   r_   rC   Z	transposer7   )r3   ZX_imputed_medianZstatistics_medianr!   r!   r"   Ú$test_imputation_median_special_casesâ   s0    





øÿøÿrŽ   r   c              	   C   s\   t jdddgdddgddd	gg|d
�}d}tjt|d�� t| d�}| |¡ W 5 Q R X d S )NrU   rV   rJ   r[   Úeé   ÚgÚhé	   rY   ú4non-numeric data:
could not convert string to float:rL   r>   )r@   r_   rO   re   rf   r   rD   )r(   r   r3   Úmsgr5   r!   r!   r"   Ú.test_imputation_mean_median_error_invalid_type  s
    &
r–   ÚtypeÚlistÚ	dataframec              	   C   sn   dddgdddgddd	gg}|d
kr8t  d¡}| |¡}d}t jt|d�� t| d�}| |¡ W 5 Q R X d S )NrU   rV   rJ   r[   r�   r�   r‘   r’   r“   r™   rT   r”   rL   r>   )rO   r^   ra   re   rf   r   rD   )r(   r—   r3   rb   r•   r5   r!   r!   r"   Ú:test_imputation_mean_median_error_invalid_type_list_pandas  s    


rš   ÚUÚSc              	   C   s€   t jt jt jddgt jdt jdgt jddt jgt jdddgg|d�}d}tjt|d	��  t| d
�}| |¡ |¡ W 5 Q R X d S )NrU   r%   rW   rX   rV   r’   rY   z#SimpleImputer does not support datarL   r>   )	r@   r_   rC   rO   re   rf   r   r+   r,   )r(   r   r3   r)   r5   r!   r!   r"   Ú/test_imputation_const_mostf_error_invalid_types  s    üù

r�   c               	   C   sz   t  ddddgddddgddddgddddgg¡} t  dddgdddgdddgdddgg¡}t| |dt jdddgdƒ d S )	NrŒ   r   rK   r=   rJ   rZ   é   r:   )r@   r_   r7   rC   )r3   r4   r!   r!   r"   Útest_imputation_most_frequent.  s    



üÿ	üÿrŸ   ÚmarkerZNANÚ c                 C   sŽ   t j| | ddg| d| dg| dd| g| dddggtd�}t jdddgdddgdddgdddggtd�}t| dd	�}| |¡ |¡}t||ƒ d S )
NrU   r%   rW   rX   rV   r’   rY   r:   r&   )r@   r_   r`   r   r+   r,   r   ©r    r3   r4   r5   r6   r!   r!   r"   Ú%test_imputation_most_frequent_objectsI  s&    



üù
üù
r£   Úcategoryc                 C   sr   t  d¡}t d¡}|j|| d�}tjdddgdddgdddgd	ddggtd�}td
d�}| 	|¡}t
||ƒ d S )NrT   ú,Cat1,Cat2,Cat3,Cat4
,i,x,
a,,y,
a,j,,
b,j,x,rY   rU   Úir   rˆ   r    rV   r:   r>   ©rO   r^   ÚioÚStringIOZread_csvr@   r_   r`   r   rD   r   ©r   rb   r%   Údfr4   r5   r6   r!   r!   r"   Ú$test_imputation_most_frequent_pandasf  s    

"þ

r¬   zX_data, missing_value)rZ   r   ç      ð?c              	   C   sN   t jd| td�}||d< tjtdd�� t|ddd�}| |¡ W 5 Q R X d S )	NrI   rY   ©r   r   zimputing numericalrL   r;   r   ©r'   r(   Ú
fill_value)r@   ÚfullÚfloatrO   re   rf   r   rD   )ZX_dataÚmissing_valuer3   r5   r!   r!   r"   Ú+test_imputation_constant_error_invalid_typez  s      ÿr´   c               	   C   sŠ   t  ddddgddddgddddgdd	d
dgg¡} t  d
ddd
gdd
dd
gddd
d
gdd	d
d
gg¡}tddd
d�}| | ¡}t||ƒ d S )NrŒ   r=   rJ   r[   rK   r�   rž   é   r“   r   r;   r¯   )r@   r_   r   rD   r   )r3   r4   r5   r6   r!   r!   r"   Ú test_imputation_constant_integer‡  s
    22
r¶   Úarray_constructorc              	   C   s¦   t  t jddt jgdt jdt jgddt jt jgdddt jgg¡}t  ddddgddddgddddgddddgg¡}| |ƒ}| |ƒ}tddd	�}| |¡}t||ƒ d S )
Ngš™™™™™ñ?r   ç333333ó?çÍÌÌÌÌÌô?gffffffö?ç      ø?rŒ   r;   )r(   r°   )r@   r_   rC   r   rD   r   )r·   r3   r4   r5   r6   r!   r!   r"   Útest_imputation_constant_float“  s    üÿ	*ÿ
r»   c                 C   s’   t j| dd| gd| d| gdd| | gddd	| ggtd
�}t jddddgddddgddddgddd	dggtd
�}t| ddd�}| |¡}t||ƒ d S )NrU   rV   rW   rX   r�   r%   r‘   r’   r¦   rY   Úmissingr;   r¯   )r@   r_   r`   r   rD   r   r¢   r!   r!   r"   Útest_imputation_constant_object­  s.    



üù




üù
  ÿ
r½   c                 C   sz   t  d¡}t d¡}|j|| d�}tjddddgddddgdd	ddgd
d	ddggtd�}tdd�}| 	|¡}t
||ƒ d S )NrT   r¥   rY   r³   r¦   r   rU   r    rˆ   rV   r;   r>   r§   rª   r!   r!   r"   Útest_imputation_constant_pandasÌ  s    





üù


r¾   r3   rZ   r=   c                 C   sf   t ƒ  | ¡}|jdkst‚t ƒ }| dgdgg¡ |jdks@t‚| dgtjgg¡ |jdksbt‚d S )Nr   rZ   r=   )r
   r+   Ún_iter_r   r@   rC   ©r3   r5   r!   r!   r"   Ú"test_iterative_imputer_one_featureå  s    rÁ   c                  C   st   t dddd�} | jd }tdt|d�fdtjdd�fgƒ}d	d
ddgi}t dddd� ¡ }t||ƒ}| | |¡ d S )Néd   çš™™™™™¹?)Údensityr   r5   ©r'   r   ©Úrandom_stateZimputer__strategyr8   r9   r:   rZ   )	r   Údatar   r   r   ZDecisionTreeRegressorr2   r   r+   )r3   r'   ZpipelineÚ
parametersÚYÚgsr!   r!   r"   Ú$test_imputation_pipeline_grid_searchñ  s    
þÿ
rÌ   c                  C   sv  t ddddd�} |  ¡  ¡ }tdddd�}| |¡ |¡}d|d	< t ||k¡rTt‚|  ¡ }t|j	d ddd�}| |¡ |¡}d|j	d< t |j	|j	k¡r t‚|  ¡  ¡ }tddd
d�}| |¡ |¡}d|d	< t
||ƒ |  ¡  ¡ }t|j	d dd
d�}| |¡ |¡}d|j	d< t
|j	|j	ƒ |  ¡ }t|j	d dd
d�}| |¡ |¡}d|j	d< t |j	|j	k¡�rrt‚d S )NrK   g      è?r   ©rÄ   rÇ   r8   T)r'   r(   r-   rŒ   r®   F)r   r-   r2   r   r+   r,   r@   rƒ   r   rÈ   r   Ztocsc)ZX_origr3   r5   ÚXtr!   r!   r"   Útest_imputation_copy  s4    



rÏ   c                  C   s²   t j d¡} d}d}t||d| d� ¡ }|dk}t j||< tdd�}| |¡}t||j	 
|¡ƒ tdd� |¡}t  | 
|¡|j	 
|¡k¡r�t‚d|_t| 
|¡|j	 
|¡ƒ d S )Nr   rÂ   r<   rÃ   rÍ   )Úmax_iterrK   )r@   rA   ry   r   r2   rC   r
   rD   r   Úinitial_imputer_r,   r+   rƒ   r   r¿   )r„   ÚnrX   r3   Zmissing_flagr5   rG   r!   r!   r"   Ú!test_iterative_imputer_zero_iters/  s    


 rÓ   c                  C   sp   t j d¡} d}d}t||d| d� ¡ }tdddd�}| |¡ | |¡ tdddd�}| |¡ | |¡ d S )	Nr   rÂ   rJ   rÃ   rÍ   rZ   )r'   rÐ   Úverboser=   )r@   rA   ry   r   r2   r
   r+   r,   )r„   rÒ   rX   r3   r5   r!   r!   r"   Útest_iterative_imputer_verboseG  s    


rÕ   c                  C   sB   d} d}t  | |f¡}tddd�}| |¡}t||j |¡ƒ d S )NrÂ   rJ   r   rZ   )r'   rÐ   )r@   rz   r
   rD   r   rÑ   r,   )rÒ   rX   r3   r5   rG   r!   r!   r"   Ú"test_iterative_imputer_all_missingU  s    
rÖ   Úimputation_orderrA   ÚromanÚ	ascendingÚ
descendingÚarabicc           
      C   sR  t j d¡}d}d}d}t||d|d� ¡ }d|d d …df< td|dd	d
ddd| |d�
}| |¡ dd„ |jD ƒ}t|ƒ|j	 |j
ksŠt‚| dkrºt  |d |d … t  d|¡k¡s¸t‚n”| dkrðt  |d |d … t  |d dd¡k¡sît‚n^| dk�r*|d |d … }||d d … }	||	k�sNt‚n$d| k�rNt|ƒ||d  k�sNt‚d S )Nr   rÂ   r<   r=   rÃ   rÍ   rZ   rK   FT)
r'   rÐ   Ún_nearest_featuresÚsample_posteriorÚskip_completeÚ	min_valueÚ	max_valuerÔ   r×   rÇ   c                 S   s   g | ]
}|j ‘qS r!   ©Zfeat_idx)Ú.0r¦   r!   r!   r"   Ú
<listcomp>v  s     z;test_iterative_imputer_imputation_order.<locals>.<listcomp>rØ   rÛ   rŒ   rA   Úending)r@   rA   ry   r   r2   r
   rD   Úimputation_sequence_rk   r¿   Zn_features_with_missing_r   rƒ   r{   )
r×   r„   rÒ   rX   rÐ   r3   r5   Zordered_idxZordered_idx_round_1Zordered_idx_round_2r!   r!   r"   Ú'test_iterative_imputer_imputation_order^  s>    ö
(.

ræ   Ú	estimatorc           	      C   s¨   t j d¡}d}d}t||d|d� ¡ }tdd| |d�}| |¡ g }|jD ]>}| d k	r`t| ƒntt	ƒ ƒ}t
|j|ƒszt‚| t|jƒ¡ qLtt|ƒƒt|ƒks¤t‚d S )Nr   rÂ   r<   rÃ   rÍ   rZ   )r'   rÐ   rç   rÇ   )r@   rA   ry   r   r2   r
   rD   rå   r—   r   Ú
isinstancerç   r   ÚappendÚidrk   Úset)	rç   r„   rÒ   rX   r3   r5   ÚhashesÚtripletÚexpected_typer!   r!   r"   Ú!test_iterative_imputer_estimators†  s$       ÿ

ÿrï   c                  C   s’   t j d¡} d}d}t||d| d� ¡ }tdddd| d�}| |¡}tt  ||dk ¡dƒ tt  	||dk ¡dƒ t||dk ||dk ƒ d S )	Nr   rÂ   r<   rÃ   rÍ   rZ   çš™™™™™É?)r'   rÐ   rß   rà   rÇ   ©
r@   rA   ry   r   r2   r
   rD   r   Úminr~   ©r„   rÒ   rX   r3   r5   rÎ   r!   r!   r"   Útest_iterative_imputer_clip¢  s        ÿ
rô   c                  C   sª   t j d¡} d}d}t||d| d� ¡ }d|d d …df< tdddd	dd
dd| d�	}| |¡}tt  ||dk ¡dƒ tt  	||dk ¡d
ƒ t||dk ||dk ƒ d S )Nr   rÂ   r<   rÃ   rÍ   rZ   r=   rK   Trð   rA   )	r'   rÐ   rÜ   rÝ   rß   rà   rÔ   r×   rÇ   rñ   ró   r!   r!   r"   Ú%test_iterative_imputer_clip_truncnorm²  s(    ÷
rõ   c                     sè   t j d¡} | jdd�‰ t jˆ d d< tddd| d�‰ˆ ˆ ¡ t  ‡ ‡fdd	„td
ƒD ƒ¡}t	|dkƒsnt
‚t	|dkƒs~t
‚| ¡ | ¡  }}t|| | dƒ\}}|dkr¶|d7 }t|| | dƒ\}}|dk sä|dksät
dƒ‚d S )Né*   )rK   rK   )ri   r   r�   T)rß   rà   rÝ   rÇ   c                    s   g | ]}ˆ  ˆ ¡d  d  ‘qS )r   )r,   )râ   Ú_rÀ   r!   r"   rã   Ü  s     zEtest_iterative_imputer_truncated_normal_posterior.<locals>.<listcomp>rÂ   Znormgê-�™—q=rð   rÃ   z&The posterior does appear to be normal)r@   rA   ry   ÚnormalrC   r
   rD   r_   r}   rƒ   r   r8   Zstdr   )r„   ZimputationsÚmuÚsigmaZks_statisticZp_valuer!   rÀ   r"   Ú1test_iterative_imputer_truncated_normal_posteriorÊ  s&       ÿ
rû   c                 C   s®   t j d¡}d}d}|jdd||fd�}|jdd||fd�}d|d d …df< d|d< tdd| |d� |¡}td| d	� |¡}t| |¡d d …df | |¡d d …df ƒ d S )
Nr   rÂ   r<   rJ   )ÚlowÚhighri   rZ   r®   )r'   rÐ   r?   rÇ   r&   )	r@   rA   ry   Úrandintr
   r+   r   r   r,   )r(   r„   rÒ   rX   ÚX_trainÚX_testr5   Zinitial_imputerr!   r!   r"   Ú+test_iterative_imputer_missing_at_transformë  s(       ÿþ ÿr  c                  C   sò   t j d¡} t j d¡}d}d}t||d| d� ¡ }tddd| d�}| |¡ | |¡}| |¡}t  |¡t	 
t  |¡¡ks€t‚tddd	d d
| d�}tddd	d d
|d�}	| |¡ |	 |¡ | |¡}
| |¡}|	 |¡}t|
|ƒ t|
|ƒ d S )Nr   rZ   rÂ   r<   rÃ   rÍ   T)r'   rÐ   rÝ   rÇ   FrÙ   )r'   rÐ   rÝ   rÜ   r×   rÇ   )r@   rA   ry   r   r2   r
   r+   r,   r8   rO   Zapproxr   r   )Zrng1Zrng2rÒ   rX   r3   r5   Z
X_fitted_1Z
X_fitted_2Úimputer1Úimputer2ZX_fitted_1aZX_fitted_1br!   r!   r"   Ú.test_iterative_imputer_transform_stochasticity  sL       ÿ


ú	ú





r  c                  C   s„   t j d¡} |  dd¡}t j|d d …df< td| d�}td| d�}| |¡ |¡}| |¡}t	|d d …dd …f |ƒ t	||ƒ d S )Nr   rÂ   r<   )rÐ   rÇ   rZ   )
r@   rA   ry   ÚrandrC   r
   r+   r,   rD   r   )r„   r3   Úm1Úm2Zpred1Zpred2r!   r!   r"   Ú!test_iterative_imputer_no_missing4  s    
r  c            	      C   s€   t j d¡} d}|  |d¡}|  d|¡}t  ||¡}|  ||¡dk }| ¡ }t j||< tdd| d�}| |¡}t	||dd� d S )	Nr   é2   rZ   r�   rK   ©rÐ   rÔ   rÇ   g{®Gáz”?©Úatol)
r@   rA   ry   r  Údotr-   rC   r
   rD   r   )	r„   rX   ÚAÚBr3   Únan_maskÚ	X_missingr5   ÚX_filledr!   r!   r"   Útest_iterative_imputer_rank_oneB  s    

r  ÚrankrJ   rK   c                 C   s¸   t j d¡}d}d}| || ¡}| | |¡}t  ||¡}| ||¡dk }| ¡ }t j||< |d }|d |… }	||d … }
||d … }tddd|d� |	¡}| 	|¡}t
|
|d	d
� d S )Nr   éF   r�   r=   rK   rÚ   rZ   )rÐ   r×   rÔ   rÇ   rÃ   r  )r@   rA   ry   r  r  r-   rC   r
   r+   r,   r   )r  r„   rÒ   rX   r  r  r  r  r  rÿ   ÚX_test_filledr   r5   Ú
X_test_estr!   r!   r"   Ú)test_iterative_imputer_transform_recoveryQ  s.    
   ÿþ
r  c               	   C   s  t j d¡} d}d}|  ||¡}|  ||¡}t  |j¡}t|ƒD ]R}t|ƒD ]D}|d d …|| | f  |d d …|f |d d …|f  d 7  < qLq@|  ||¡dk }| ¡ }	t j	|	|< |d }|	d |… }
||d … }|	|d … }t
dd| d� |
¡}| |¡}t||dd	d
� d S )Nr   rÂ   r<   r=   g      Ð?rZ   r
  gü©ñÒMbP?ç{®Gáz„?)Úrtolr  )r@   rA   ry   rB   rz   rF   r}   r  r-   rC   r
   r+   r,   r   )r„   rÒ   rX   r  r  r  r¦   rˆ   r  r  rÿ   r  r   r5   r  r!   r!   r"   Ú&test_iterative_imputer_additive_matrixj  s&    D

r  c                  C   sè   t j d¡} d}d}|  |d¡}|  d|¡}t  ||¡}|  ||¡dk }| ¡ }t j||< tdddd| d	�}| |¡}	t	|j
ƒ||j ksŽt‚t|jdd| d
�}| |¡}
t|	|
dd� tdddd| d	�}| |¡ |j|jksät‚d S )Nr   r	  rK   rZ   r�   rÂ   r  F)rÐ   ZtolrÝ   rÔ   rÇ   )rÐ   rÝ   rÔ   rÇ   gH¯¼šò×z>r  )r@   rA   ry   r  r  r-   rC   r
   rD   rk   rå   r¿   r   r   r+   rÐ   )r„   rÒ   rX   r  r  r3   r  r  r5   ZX_filled_100ZX_filled_earlyr!   r!   r"   Ú%test_iterative_imputer_early_stopping„  sF    
    ÿ
   ÿ
    ÿ
r  c            
   	   C   sÂ   t dd�\} }| j\}}d| d d …df< tj d¡}d}t|ƒD ]0}|jt |¡t|| ƒdd�}tj	| ||f< q@t
d	dd
�}t ¡ � t dt¡ | | |¡}	W 5 Q R X t t |	¡¡r¾t‚d S )NT)Z
return_X_yrZ   rJ   r   g333333Ã?F)ri   ÚreplacerK   )rÜ   rÝ   Úerror)r   rF   r@   rA   ry   r}   Úchoicer{   ÚintrC   r
   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningrD   r‚   r�   r   )
r3   r    Z	n_samplesÚ
n_featuresr„   Zmissing_rateZfeatZ
sample_idxr5   ZX_fillr!   r!   r"   Ú$test_iterative_imputer_catch_warning¢  s"    
 
 ÿ
r&  z$min_value, max_value, correct_outputrÂ   rŠ   r<   éÈ   i,  ZscalarszNone-defaultÚinfÚlistszlists-with-inf)Zidsc                 C   s®   t j d¡ dd¡}t| |d�}| |¡ t|jt jƒrFt|j	t jƒsJt
‚|jjd |jd krv|j	jd |jd kszt
‚t|dd d …f |jƒ t|dd d …f |j	ƒ d S )Nr   r<   rJ   ©rß   rà   rZ   )r@   rA   ry   rB   r
   r+   rè   Z
_min_valueÚndarrayZ
_max_valuer   rF   r   )rß   rà   Zcorrect_outputr3   r5   r!   r!   r"   Ú)test_iterative_imputer_min_max_array_like»  s    
 ÿÿr,  zmin_value, max_value, err_msg)rÂ   r   úmin_value >= max_value.r-  z_value' should be of shapec              	   C   s@   t j d¡}t| |d�}tjt|d�� | |¡ W 5 Q R X d S )N©r<   rJ   r*  rL   )r@   rA   r
   rO   re   rf   r+   )rß   rà   r)   r3   r5   r!   r!   r"   Ú*test_iterative_imputer_catch_min_max_errorÜ  s    r/  zmin_max_1, min_max_2iöÿÿÿr[   zNone-vs-infzScalar-vs-vectorc              	   C   sâ   t  t jdddgdt jt jdgddt jdgt jddt jgg¡}t  t jdt jdgddt jt jgt jdddgg¡}t| d | d dd	�}t|d |d dd	�}| |¡ |¡}| |¡ |¡}t|d d …df |d d …df ƒ d S )
Nr=   rZ   r<   rž   rJ   r[   rK   r   )rß   rà   rÇ   )r@   r_   rC   r
   r+   r,   r   )Z	min_max_1Z	min_max_2rÿ   r   r  r  ZX_test_imputed1ZX_test_imputed2r!   r!   r"   Ú4test_iterative_imputer_min_max_array_like_imputationí  s.    üÿ*ÿ  ÿ  ÿr0  rÞ   TFc              	   C   sÜ   t j d¡}t  ddddgddddgddddgdd	ddgg¡}t  t jdd	dgt jd	ddgt jdddgg¡}td
| |d�}| |¡ |¡}| r¸t|d d …df t  	|d d …df ¡ƒ n t|d d …df dddgdd� d S )Nr   rK   r=   rZ   r<   rž   rJ   rµ   r[   r8   )r?   rÞ   rÇ   é   é   g-Cëâ6?)r  )
r@   rA   ry   r_   rC   r
   r+   r,   r   r8   )rÞ   r„   rÿ   r   r5   r  r!   r!   r"   Ú'test_iterative_imputer_skip_non_missing
  s    2.  ÿ*r3  Ú
rs_imputer)ÚseedÚrs_estimatorc                 C   sH   G dd„ dƒ}||d�}t | d�}t d¡}| |¡ |j|ksDt‚d S )Nc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )zCtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimatorc                 S   s
   || _ d S r   rÆ   )ÚselfrÇ   r!   r!   r"   Ú__init__!  s    zLtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.__init__c                 _   s   | S r   r!   )r7  rm   Zkgardsr!   r!   r"   r+   $  s    zGtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.fitc                 S   s   t  |jd ¡S )Nr   )r@   rz   rF   )r7  r3   r!   r!   r"   Úpredict'  s    zKtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.predictN)Ú__name__Ú
__module__Ú__qualname__r8  r+   r9  r!   r!   r!   r"   ÚZeroEstimator   s   r=  rÆ   r.  )r
   r@   rz   r+   rÇ   r   )r4  r6  r=  rç   r5   rÿ   r!   r!   r"   Ú,test_iterative_imputer_dont_set_random_state  s    




r>  zX_fit, X_trans, params, msg_errrŒ   úmissing-onlyÚauto)Úfeaturesr   zBhave missing values in transform but have no missing values in fitrU   rV   rW   rY   z1MissingIndicator does not support data with dtypec              	   C   sD   t dd�}|jf |Ž tjt|d�� | | ¡ |¡ W 5 Q R X d S )NrŒ   rÅ   rL   )r   Ú
set_paramsrO   re   rf   r+   r,   )ÚX_fitr6   ÚparamsZmsg_errÚ	indicatorr!   r!   r"   Útest_missing_indicator_error1  s    
rF  zmissing_values, dtype, arr_typez,param_features, n_features, features_indicesrƒ   c                 C   sÚ  t  | | dgdd| gg¡}t  | | dgdddgg¡}t  dddgdddgg¡}t  dddgdddgg¡}	||ƒ |¡}||ƒ |¡}| |¡}|	 |¡}	t| |dd�}
|
 |¡}|
 |¡}|jd |ksÌt‚|jd |ksÞt‚t|
j	|ƒ t
||d d …|f ƒ t
||	d d …|f ƒ |jtk�s&t‚|jtk�s6t‚t|t jƒ�sHt‚t|t jƒ�sZt‚|
jd	d
� |
 |¡}|
 |¡}|jtk�sŠt‚|jtk�sšt‚|jdk�sªt‚|jdk�sºt‚t
| ¡ |ƒ t
| ¡ |ƒ d S )NrZ   r[   r=   r2  r<   r   F)r'   rA  r   Tr   Úcsc)r@   r_   Úastyper   rD   r,   rF   r   r   Z	features_r   r   Úboolrè   r+  rB  r/   r2   )r'   Úarr_typer   Zparam_featuresr%  Zfeatures_indicesrC  r6   ZX_fit_expectedZX_trans_expectedrE  Ú
X_fit_maskÚX_trans_maskZX_fit_mask_sparseZX_trans_mask_sparser!   r!   r"   Útest_missing_indicator_newI  sB    

  ÿ



rM  rJ  c              	   C   s¨   d}t  ||dgd|dgg¡}t  ||dgdddgg¡}| |ƒ}| |ƒ}t|d�}tjtdd	�� | |¡ W 5 Q R X | |¡ tjtdd	�� | |¡ W 5 Q R X d S )
Nr   rZ   r[   r=   r2  r<   rÅ   z"Sparse input with missing_values=0rL   )r@   r_   r   rO   re   rf   rD   r,   )rJ  r'   rC  r6   ZX_fit_sparseZX_trans_sparserE  r!   r!   r"   Ú5test_missing_indicator_raise_on_sparse_with_missing_0‹  s    

rN  Úparam_sparsezmissing_values, arr_typec                 C   sL  t  ||dgd|dgg¡}t  ||dgdddgg¡}| |ƒ t j¡}| |ƒ t j¡}t||d�}| |¡}| |¡}|dkrš|jdksŠt‚|jdks˜t‚n®|d	krÌ|d
krÌt	|t j
ƒsºt‚t	|t j
ƒsÊt‚n||dkröt	|t j
ƒsät‚t	|t j
ƒsôt‚nRt |¡�r$|jdk�st‚|jdk�sHt‚n$t	|t j
ƒ�s6t‚t	|t j
ƒ�sHt‚d S )NrZ   r[   r=   r2  r<   )r'   r   TrG  r@  r   F)r@   r_   rH  Úfloat64r   rD   r,   r/   r   rè   r+  r   r1   )rJ  r'   rO  rC  r6   rE  rK  rL  r!   r!   r"   Ú#test_missing_indicator_sparse_paramª  s*    

rQ  c                  C   sX   t jdddgdddggtd�} tddd�}| | ¡}t|t  dddgdddgg¡ƒ d S )	NrU   rV   rW   rY   rƒ   )r'   rA  TF)r@   r_   r`   r   rD   r   )r3   rE  r6   r!   r!   r"   Útest_missing_indicator_stringÓ  s    
rR  zX, missing_values, X_trans_expc                 C   s0   t t|dd�t|d�ƒ}| | ¡}t||ƒ d S )Nr:   r&   rÅ   )r   r   r   rD   r   )r3   r'   ZX_trans_expZtransr6   r!   r!   r"   Ú#test_missing_indicator_with_imputerÚ  s    
þ
rS  Úimputer_constructorz.imputer_missing_values, missing_value, err_msgÚNaNzInput X contains NaN)z-1rŒ   z(types are expected to be both numerical.c              	   C   sR   t j d¡}| dd¡}||d< | |d�}tjt|d�� | |¡ W 5 Q R X d S )Nrö   r<   r®   rÅ   rL   )r@   rA   ry   rB   rO   re   rf   rD   )rT  Zimputer_missing_valuesr³   r)   r„   r3   r5   r!   r!   r"   Ú(test_inconsistent_dtype_X_missing_valuesü  s    
rV  c                  C   sB   t  ddgddgg¡} tddd�}| | ¡}|jd dks>t‚d S )NrZ   r?  rŒ   ©rA  r'   r   )r@   r_   r   rD   rF   r   ©r3   ÚmirÎ   r!   r!   r"   Ú!test_missing_indicator_no_missing  s    
rZ  c                  C   sP   t  dddgdddgdddgg¡} tddd�}| | ¡}| ¡ | ¡ ksLt‚d S )Nr   rZ   r=   rƒ   rW  )r   rE   r   rD   ZgetnnzÚsumr   rX  r!   r!   r"   Ú/test_missing_indicator_sparse_no_explicit_zeros  s    "
r\  c                 C   s8   t  ddgddgg¡}| ƒ }| |¡ |jd ks4t‚d S )NrZ   )r@   r_   r+   Z
indicator_r   )rT  r3   r5   r!   r!   r"   Útest_imputer_without_indicator)  s    
r]  c                 C   s¸   | t jddgdt jdgddt jgdddggƒ}t  ddd	dd
d
gdddd
dd
gddd	d
d
dgdddd
d
d
gg¡}tt jdd�}| |¡}t |¡s–t‚|j|jks¦t‚t	| 
¡ |ƒ d S )NrZ   rK   r=   r�   rJ   r“   ç      @r­   g      @g        ç       @g      @g      "@T)r'   Úadd_indicator)r@   rC   r_   r   rD   r   r1   r   rF   r   r2   )rJ  ZX_sparser4   r5   r6   r!   r!   r"   Ú2test_simple_imputation_add_indicator_sparse_matrix2  s    .üÿ	
ra  zstrategy, expected)r:   rV   )r;   r³   c                 C   sN   ddgdt jgg}t jddgd|ggtd�}t| d�}| |¡}t||ƒ d S )NrU   rV   rW   rY   r>   )r@   rC   r_   r`   r   rD   r   )r(   Úexpectedr3   r4   r5   r6   r!   r!   r"   Ú"test_simple_imputation_string_listO  s
    

rc  zorder, idx_orderc              	   C   sª   t j d¡}| dd¡}t j|d d…df< t j|d d…df< t j|d d…d	f< t j|d d
…df< t t¡�6 td| dd� 	|¡}dd„ |j
D ƒ}||ksœt‚W 5 Q R X d S )Nrö   rÂ   rK   r	  rZ   é   r   é   r=   r<   r[   )rÐ   r×   rÇ   c                 S   s   g | ]
}|j ‘qS r!   rá   )râ   r   r!   r!   r"   rã   n  s     z)test_imputation_order.<locals>.<listcomp>)r@   rA   ry   r  rC   rO   rP   r   r
   r+   rå   r   )ÚorderZ	idx_orderr„   r3   ZtrsÚidxr!   r!   r"   Útest_imputation_order]  s    ÿrh  r³   c              	   C   sD  t  d| ddgddddgdd| dgddd	| gg¡}t  ddd
dgd
d| dgd| ddgddd
| gg¡}t  d| ddg| d| | gd
| d| g| d| dgg¡}t  ddddg| d
| dgd
dddg| d| d
gg¡}t| ddd�}| |¡}| |¡}| |¡}| |¡}	t||ƒ t|	|ƒ ||fD ]$}
| |
¡}| |¡}t||
ƒ �qd S )Nr“   rJ   rŒ   r[   rK   r�   rž   rµ   r   r=   rZ   r8   T)r'   r(   r`  )r@   r_   r   rD   Úinverse_transformr,   r   )r³   ÚX_1ZX_2ZX_3ZX_4r5   Ú	X_1_transZX_1_inv_transZ	X_2_transZX_2_inv_transr3   r6   ZX_inv_transr!   r!   r"   Ú(test_simple_imputation_inverse_transformr  sV    



üÿ	



üÿ	



üÿ	



üÿ	  ÿ







rl  c              	   C   sz   t  d| ddgddddgdd| dgddd	| gg¡}t| d
d�}| |¡}tjtd|j› d�d�� | |¡ W 5 Q R X d S )Nr“   rJ   rŒ   r[   rK   r�   rž   rµ   r   r8   r&   zGot 'add_indicator=ú'rL   )	r@   r_   r   rD   rO   re   rf   r`  ri  )r³   rj  r5   rk  r!   r!   r"   Ú3test_simple_imputation_inverse_transform_exceptions¬  s    



üÿ	
 ÿrn  z)expected,array,dtype,extra_value,n_repeatÚextra_valueZmost_frequent_valueÚvaluerß   Zmin_valuevaluert   re  c                 C   s"   | t tj||d�||ƒkst‚d S )NrY   )r   r@   r_   r   )rb  r_   r   ro  Zn_repeatr!   r!   r"   Útest_most_frequent¿  s
      ÿrq  r?   c                 C   sp   t  dt jdgdt jt jgg¡}t| dd�}| |¡}t|dd…df dƒ | |¡}t|dd…df dƒ dS )z Check the behaviour of the iterative imputer with different initial strategy
    and keeping empty features (i.e. features containing only missing values).
    rZ   r=   rJ   T)r?   Úkeep_empty_featuresNr   )r@   r_   rC   r
   rD   r   r,   )r?   r3   r5   rG   r!   r!   r"   Ú*test_iterative_imputer_keep_empty_featuresÚ  s      ÿ

rs  c               	   C   sb   t  ddddgddddgddddgdd	d
dgg¡} d}tdd|d
d�}| | ¡ t|jj|ƒ dS )z<Check that we propagate properly the parameter `fill_value`.rŒ   r=   rJ   r[   rK   r�   rž   rµ   r“   r   rÂ   r;   )r'   r?   r°   rÐ   N)r@   r_   r
   rD   r   rÑ   r.   )r3   r°   r5   r!   r!   r"   Ú*test_iterative_imputer_constant_fill_valueì  s    2ü
rt  rr  c                 C   s”   t  dt jdgdt jt jgg¡}t| d�}dD ]`}t||ƒ|ƒ}| rl|j|jksTt‚t|dd…df dƒ q.|j|jd |jd d fks.t‚q.dS )z>Check the behaviour of `keep_empty_features` for `KNNImputer`.rZ   r=   rJ   )rr  ©rD   r,   Nr   )r@   r_   rC   r   ÚgetattrrF   r   r   )rr  r3   r5   ÚmethodrG   r!   r!   r"   Ú$test_knn_imputer_keep_empty_featuresû  s     
rx  c                  C   s’  t  d¡} |  d| jdd dgdd�i¡}t| jddd	�}t| |¡tj	dgdgdggt
d�ƒ |  d| jddd
gdd�i¡}tddd�}t| |¡tj	dgdgd
ggt
d�ƒ |  d| jdd dgdd�i¡}t| jddd	�}t| |¡tj	dgdgdggdd�ƒ ttjddd	�}t| |¡tj	dgdgdggdd�ƒ |  d| jdd ddgdd�i¡}t| jdd�}t| |¡tj	dgdgdgdggdd�ƒ |  d| jdd dgdd�i¡}t| jdd�}t| |¡tj	dgdgdggdd�ƒ |  d| jdd dgdd�i¡}t| jddd	�}t| |¡tj	dgdgdggdd�ƒ |  d| jdd ddgdd�i¡}t| jdd�}t| |¡tj	dgdgdgdggdd�ƒ d S )NrT   ÚfeatureÚabcÚdeÚstringrY   r;   Únar¯   ZfghÚok)r°   r(   rZ   rJ   ZInt64rŒ   rP  r=   r9   r&   r8   rº   r­   r^  g       Àr_  )rO   r^   ra   ZSeriesr   ZNAr#   rD   r@   r_   r`   r$   rC   )rb   r«   r5   r!   r!   r"   Útest_simple_impute_pd_na  s`    
 ÿ ÿ ÿ ÿ  ÿ ÿ ÿ þr  c                  C   sj   t  d¡} tj}| j||d|gd|ddggdddd	gd
�}t|d� |¡}| ¡ }dddg}t||ƒ dS )zDCheck that missing indicator return the feature names with a prefix.rT   rZ   r[   r=   r<   rU   rV   rW   rX   r\   rÅ   Zmissingindicator_aZmissingindicator_bZmissingindicator_dN)	rO   r^   r@   rC   ra   r   r+   Zget_feature_names_outr   )rb   r'   r3   rE  rc   Zexpected_namesr!   r!   r"   Ú(test_missing_indicator_feature_names_outG  s    


þ
û
r€  c                  C   s\   ddgddgddgg} t dd� | ¡}| tjtjgg¡}|jtksHt‚t|ddggƒ dS )zkCheck transform uses object dtype when fitted on an object dtype.

    Non-regression test for #19572.
    rU   rV   rW   r:   r>   N)	r   r+   r,   r@   rC   r   r`   r   r   )r3   Zimp_frequentr6   r!   r!   r"   Ú test_imputer_lists_fit_transformZ  s
    r�  Ú
dtype_testc                 C   sp   t jddt jgt jddgdddggt jd�}tƒ  |¡}t jt jt jt jgg| d�}| |¡}|j| kslt‚dS )	zACheck transform preserves numeric dtype independent of fit dtype.r¸   g333333@r¹   gÍÌÌÌÌÌ@r=   rZ   rY   N)	r@   ÚasarrayrC   rP  r   r+   r,   r   r   )r‚  r3   Úimpr   r6   r!   r!   r"   Ú.test_imputer_transform_preserves_numeric_dtypeg  s     ÿ
r…  Ú
array_typer_   r   c                 C   s    t  t jdgt jdgt jdgg¡}t|| ƒ}d}td||d�}dD ]X}t||ƒ|ƒ}|j|jksdt‚| dkr€|d	d	…d
f  ¡ n|d	d	…d
f }t	||ƒ qBd	S )z·Check the behaviour of `keep_empty_features` with `strategy='constant'.
    For backward compatibility, a column full of missing values will always be
    fill and never dropped.
    r=   rJ   r�   r<   r;   )r(   r°   rr  ru  r   Nr   ©
r@   r_   rC   r   r   rv  rF   r   r2   r   )r†  rr  r3   r°   r5   rw  rG   Úconstant_featurer!   r!   r"   Ú0test_simple_imputer_constant_keep_empty_featurest  s    "
ý*ÿr‰  c                 C   sÂ   t  t jdgt jdgt jdgg¡}t||ƒ}t| |d�}dD ]€}t||ƒ|ƒ}|rš|j|jksbt‚|dkr~|dd…df  ¡ n|dd…df }t	|dƒ q<|j|jd |jd	 d	 fks<t‚q<dS )
zYCheck the behaviour of `keep_empty_features` with all strategies but
    'constant'.
    r=   rJ   r�   )r(   rr  ru  r   Nr   rZ   r‡  )r(   r†  rr  r3   r5   rw  rG   rˆ  r!   r!   r"   Ú'test_simple_imputer_keep_empty_features�  s    "
*ÿrŠ  )†r¨   r!  Únumpyr@   rO   Zscipyr   Zscipy.statsr   Zsklearnr   Zsklearn.datasetsr   Zsklearn.dummyr   Zsklearn.exceptionsr   Zsklearn.experimentalr	   Zsklearn.imputer
   r   r   r   Zsklearn.impute._baser   Zsklearn.linear_modelr   r   r   Zsklearn.model_selectionr   Zsklearn.pipeliner   r   Zsklearn.random_projectionr   Zsklearn.utils._testingr   r   r   r   r   r#   r$   r7   ÚmarkZparametrizerH   rS   rd   rg   rp   rq   r‰   rŽ   r`   Ústrr–   rš   r   r�   rŸ   rC   r£   r¬   r´   r¶   rE   rƒ  r»   r½   r¾   rÁ   rÌ   rÏ   rÓ   rÕ   rÖ   ræ   rï   rô   rõ   rû   r  r  r  r  r  r  r  r&  r_   r(  r,  r/  r0  r3  rA   ry   r>  rF  rP  Zint32r0   Z
coo_matrixZ
lil_matrixZ
bsr_matrixrM  rN  rQ  rR  rS  rV  rZ  r\  r]  ra  rc  rh  rl  rn  r   rq  rs  rt  rx  r  r€  r�  Zfloat32r…  r‰  rŠ  r!   r!   r!   r"   Ú<module>   s"  	%

	

C 





"
+	 ÿ
% ÿ
!
2
$**
ýûó
ýþ
	0ý

üüùþ
óþ*þ,ûþ






úþ ýý ý ýðþ
	
þþ
ûþ

 ÿ
"þ

9
ûðþ
 
ÿ

<
