
     h0                     &   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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 d dl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  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 Z+d Z,d Z-e j.        /                    dg d          d             Z0e j.        /                    dg d          d             Z1e j.        /                    dg d          d             Z2e j.        /                    dg d          d             Z3d  Z4d! Z5d" Z6d# Z7e j.        /                    dd$d%g          e j.        /                    d&de8e9g          d'                         Z:e j.        /                    dd$d%g          e j.        /                    d(d)d*g          d+                         Z;e j.        /                    dd,d-g          e j.        /                    d&e9 ej<        d.           ej<        d/          g          d0                         Z=d1 Z>e j.        /                    d2dej?        d3d4d g          d5             Z@e j.        /                    d&e8d6g          d7             ZAe j.        /                    d8d9d:ej?        fg          d;             ZBd< ZCe j.        /                    d=ejD        ejE        g          d>             ZFe j.        /                    d2dej?        d3d4d g          d?             ZGe j.        /                    d&e8d6g          d@             ZHe j.        /                    dAdBgdCggdBgej?        ggg          dD             ZIdE ZJdF ZKdG ZLdH ZMdI ZNe j.        /                    dJg dK          dL             ZOe j.        /                    dMd e             e             e             e            g          dN             ZPdO ZQdP ZRdQ ZSe j.        /                    dg d          dR             ZTdS ZUdT ZVdU ZWe j.        /                    dVdWdXg          dY             ZXdZ ZYd[ ZZd\ Z[e j.        /                    d]d d^ ej\        d gdWz  d^gdWz  g          fdd ej\        ej]         gdWz  ej]        gdWz  g          fej]         ej]         ej\        ej]         gdWz  ej]        gdWz  g          fg d_g d` ej\        g d_g d`g          fdaej]         dbgd^dcej]        g ej\        daej]         dbgd^dcej]        gg          fgg dde          df             Z^e j.        /                    dgdhej]        ej]         difdadXgg djdkfg          dl             Z_e j.        /                    dmddgej]         ej]        gfdndbgdngdoz  dbgdoz  gfgdpdqge          dr             Z`e j.        /                    dsdtdug          dv             Zae j.        /                    dwddBejb        c                    dBx          g          e j.        /                    dyddBejb        c                    dBx          g          dz                         Zde j.        /                    d{ ej\        d|dBgdBdCgg           ej\        d|dBgdBd|gg          d}d~ddf ej\        ddgddgge9           ej\        ddgddgge9          i dfg          d             Zee j.        /                    dej?        ejf        ej\        fd ejg        ej\        fd|ejg        ej\        fej?        ejf        ejh        fd|ejg        ejh        fej?        ejf        ejD        fd|ejg        ejD        fej?        ejf        eji        fd|ejg        eji        fej?        ejf        ejj        fd|ejg        ejj        fej?        ejf        ejk        fd|ejg        ejk        fg          e j.        /                    dd}dW ej\        g d          fddW ej\        g d          fg          d                         Zle j.        /                    dejh        ejD        eji        ejj        ejk        g          d             Zme j.        /                    dg d          e j.        /                    dej?        ej\        fd ej\        fej?        ejh        fej?        ejD        fej?        eji        fej?        ejj        fg          d                         Znd Zoe j.        /                    d ej\        ddgddgge8          d ej\        g dg dge8          f ej\        ej?        d:gd:ej?        gg          ej?         ej\        g dg dg          f ej\        ej?        dgdej?        gge8          ej?         ej\        g dg dge8          f ej\        ddgddgge8          d ej\        g dg dge8          fg          d             Zpe j.        /                    deeg          e j.        /                    ddej?        dfdg          d                         Zqd Zrd Zse j.        /                    deeg          d             Zte j.        /                    dejh        ejD        eji        ejj        ejk        g          d             Zue j.        /                    dddg          d             Zve j.        /                    ddg dfdg dfg          d             Zwe j.        /                    dd|ej?        g          d             Zxe j.        /                    dd|ej?        g          d             Zye j.        /                    ddg de8ddCfdg de8ddBfdddge8ddCfdg de8ddCfdbg dezdbdCfdBg dezdbdBfdbg dezdbdCfdBg dezdbdCfg          d             Z{e j.        /                    dg d          d             Z|e j.        /                    ddtdug          d             Z}d Z~dÄ ZdĄ Ze j.        /                    dej        ejf        g          dƄ             Ze j.        /                    dddg          e j.        /                    ddtdug          dʄ                         Ze j.        /                    dddg          e j.        /                    dg d          e j.        /                    ddtdug          d˄                                     ZdS )    Nsparse)kstest)_convert_container)assert_allclose)assert_allclose_dense_sparse)assert_array_equal)assert_array_almost_equal)enable_iterative_imputer)load_diabetes)MissingIndicator)SimpleImputerIterativeImputer
KNNImputer)DummyRegressor)BayesianRidgeARDRegressionRidgeCV)Pipeline)
make_union)GridSearchCV)tree)_sparse_random_matrix)ConvergenceWarning)_most_frequentc                 J    t          | |           | j        |j        k    sJ d S N)r	   dtypexys     \/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/impute/tests/test_impute.py"_assert_array_equal_and_same_dtyper#   !   s-    q!7ag    c                 J    t          | |           | j        |j        k    sJ d S r   )r   r   r   s     r"   _assert_allclose_and_same_dtyper&   &   s-    Aq7agr$   c                 X   d|d|d}t           }| j        j        dk    s|j        j        dk    rt          }t	          ||          }|                    |                               |                                           } ||j        ||	                    d                      ||||	                    d                     t	          ||          }|                    t          j        |                      |                    t          j        |                                                     }t          j        |          r|                                } ||j        ||	                    d                      ||||	                    d                     d	S )
zUtility 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 = z, missing_values = z, sparse = {0}fmissing_valuesstrategyF)err_msgTN)r	   r   kindr
   r   fit	transformcopystatistics_formatr   
csc_matrixissparsetoarray)	XX_truer+   
statisticsr*   r,   	assert_aeimputerX_transs	            r"   _check_statisticsr<   +   s     	G
 #Iw|sfl/366-	 >HMMMGkk!nn&&qvvxx00GIg!:w~~e7L7LMMMMIgvw~~e'<'<==== >HMMMGKK!!$$%%% 1!&&(( ; ;<<Gw $//##Ig!:w~~d7K7KLLLLIgvw~~d';';<<<<<<r$   r+   )meanmedianmost_frequentconstantc                    t           j                            dd          }t           j        |d d d<   t	          |           }|                    t          j        |                    }|j        dk    sJ |                    |          }|j        dk    sJ t          |           }|                    |          }|j        dk    sJ d S )N
      r+   )rB   rC   )initial_strategy)
nprandomrandnnanr   fit_transformr   
csr_matrixshaper   )r+   r6   r:   	X_imputediterative_imputers        r"   test_imputation_shaperO   P   s     		AAVAcccFX...G%%f&7&:&:;;I?g%%%%%%a((I?g%%%%((CCC!//22I?g%%%%%%r$   r=   r>   r?   c                    t          j        d          }t           j        |d d df<   t          | d          }t	          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   t	          j        t          d          5  |	                    |           d d d            d S # 1 swxY w Y   d S )N      r      r+   verboseThe 'verbose' parametermatchSkipping)
rF   onesrI   r   pytestwarnsFutureWarningr.   UserWarningr/   r+   r6   r:   s      r"    test_imputation_deletion_warningrb   a   s?   
AfAaaadGXq999G 
m+D	E	E	E  A               
k	4	4	4  !                 s$   A66A:=A:B??CCc                 0   t          j        d          }t          j        }t          j        g dt
                    }|                    ||d|gd|ddgg|          }t          | d	          }t          j        t          d
          5  |
                    |           d d d            n# 1 swxY w Y   t          |j        |           t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )Npandasabcdr   rU      rC   rB   columnsrV   rX   rY   z6Skipping features without any observed values: \['b'\])r]   importorskiprF   rI   arrayobject	DataFramer   r^   r_   r.   r	   feature_names_in_r`   r/   )r+   pdr*   feature_namesr6   r:   s         r"   .test_imputation_deletion_warning_feature_namesru   o   s    
	X	&	&BVNH111@@@M
^Q?2&	
  	 	 	A Xq999G 
m+D	E	E	E  A               w0-@@@ 
T
 
 
   	!                 s$   B--B14B1(DDDc                    t          j        d          }d|d<   t          j        |          }t	          | d          }t          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   |                    |	                                           t          j        t          d          5  |
                    |           d d d            d S # 1 swxY w Y   d S )NrR   r   )r+   r*   zProvide a dense arrayrY   )rF   r\   r   r3   r   r]   raises
ValueErrorr.   r5   r/   ra   s      r"   test_imputation_error_sparse_0ry      s`    	AAaD!AXa@@@G	z)@	A	A	A  A               KK			z)@	A	A	A  !                 s$   A<<B B 	C,,C03C0c                     t          | d          r| j        nt          |           }|dk    rt          j        nt          j        | g|R i |S Nsizer   )hasattrr|   lenrF   rI   r>   arrargskwargslengths       r"   safe_medianr      sP     f--;SXX3s88Fq[[266bi&Ed&E&E&Ef&E&EEr$   c                     t          | d          r| j        nt          |           }|dk    rt          j        nt          j        | g|R i |S r{   )r}   r|   r~   rF   rI   r=   r   s       r"   	safe_meanr      sP     f--;SXX3s88Fq[[266bgc&CD&C&C&CF&C&CCr$   c            
      r   t           j                            d          } d}d}||z  ||z   f}t          j        |d                   }t          j        d|d         dz             }|dd d          |dd d<   dt           j        d fdt           j        d	 fg}|D ]\  }}}	t          j        |          }
t          j        |          }t          j        |d                   }t          |d                   D ]}||z
  dz   dk    ||z
  dz   z  ||z
  dz   z  }t          |d         ||z  z   ||z   ||z   z  z
  d          }|d         |z
  |z
  }|d |         }t          j	        ||          }|| 
                    t          |                    d |                  } |	|||          ||<   t          j        |||f          |
d d |f<   d|k    r:t          j        |t          j	        ||         ||z             f          |d d |f<   n7t          j        ||t          j	        ||         |          f          |d d |f<   t           j                            |                              |
d d |f                    t           j                            |                              |d d |f                    |dk    r*t          j        |                              d
           }n)t          j        |                              d
           }|d d |f         }t#          |
||||           d S )Nr   rB   rU   rk   rC   r=   c                 H    t          t          j        | |f                    S r   )r   rF   hstackzvps      r"   <lambda>z-test_imputation_mean_median.<locals>.<lambda>   s    29aV3D3D)E)E r$   r>   c                 H    t          t          j        | |f                    S r   )r   rF   r   r   s      r"   r   z-test_imputation_mean_median.<locals>.<lambda>   s    ;ry!Q7H7H+I+I r$   )axis)rF   rG   RandomStatezerosarangerI   emptyrangemaxrepeatpermutationr~   r   shuffleisnananyallr<   )rngdimdecrL   r   valuestestsr+   test_missing_valuestrue_value_funr6   r7   true_statisticsjnb_zerosnb_missing_values	nb_valuesr   r   r   cols_to_keeps                        r"   test_imputation_mean_medianr      sp    )


"
"C
C
C3Yc	"EHU1XEYq%(Q,''F14a4L=F14a4L 
EEF	26IIJE
 :? .U .U5%~HUOO%(58,, uQx 	; 	;AC!aAGaK8AGaKHH #E!HsSy$8AGC;P$PRS T Ta8+.??Iixi A	-/@AAAss6{{33JYJ?@A!/1a!8!8OA iAq	**AaaadG'''!y	/!"46G(6RSST   qqq!t  "y29_Q%79JKKL   qqq!t
 I!!!$$,,Qqqq!tW555I!!!$$,,VAAAqD\:::: xHV,,00a0888LLHV,,00a0888L<(!VX@STTTT].U .Ur$   c                     t          j        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          j        g dg d	g dg d
g dg dg dg dg                                          }g d}t	          | |d|t           j                   d S )Nr   rT   rk   rC   r   r   r   )rT   rT   rT   )r   r         )r   rT         @)rk   rT         @)r   r         )r   rC         ?)r   rT   r   r   r   r   r   r   r>   )rF   ro   rI   	transposer<   )r6   X_imputed_medianstatistics_medians      r"   $test_imputation_median_special_casesr      s   
26NBFO26N26NRVBFO		
	 	 ikk  xIIIIIIMMKKKKNNLL		
  ikk  =<<a)85FOOOOOr$   r=   r>   r   c                     t          j        g dg dg dg|          }d}t          j        t          |          5  t          |           }|                    |           d d d            d S # 1 swxY w Y   d S )Nrf   rg   rS   rk   e   gh	   rj   6non-numeric data:
could not convert string to float: 'rY   rD   )rF   ro   r]   rw   rx   r   rJ   )r+   r   r6   msgr:   s        r"   .test_imputation_mean_median_error_invalid_typer     s     	---mmm<EJJJA
CC	z	-	-	- ! !222a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   &A00A47A4typelist	dataframec                 0   g dg dg dg}|dk    r)t          j        d          }|                    |          }d}t          j        t          |          5  t          |           }|                    |           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   rd   r   rY   rD   )r]   rn   rq   rw   rx   r   rJ   )r+   r   r6   rs   r   r:   s         r"   :test_imputation_mean_median_error_invalid_type_list_pandasr     s     
]]]3A{ **LLOO
CC	z	-	-	- ! !222a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   &BBBr@   r?   USc           	         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}t          j        t
          |	          5  t          | 
          }|                    |                              |           d d d            d S # 1 swxY w Y   d S )Nrf   r(   rh   ri   rg   r   rj   z#SimpleImputer does not support datarY   rD   )	rF   ro   rI   r]   rw   rx   r   r.   r/   )r+   r   r6   r,   r:   s        r"   /test_imputation_const_mostf_error_invalid_typesr   $  s   
 	VRVS#&VS"&#&VS#rv&VS#s#		
 	 	 	A 4G	z	1	1	1 $ $222A  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   9CCCc            	          t          j        g dg dg dg dg          } t          j        g dg dg dg dg          }t          | |d	t           j        d
ddgd           d S )N)r   r   r   rT   )r   rC   r   rS   )r   rU   rS   r   )r   rC   rS      )rC   r   rT   )rC   rS   rS   )rU   rS   rS   )rC   rS   r   r?   rC   rS   r   )rF   ro   r<   rI   )r6   r7   s     r"   test_imputation_most_frequentr   9  s    
NNNNNNMM		
	 	A XIIIIIIII		
 F a261a2CRHHHHHr$   markerNAN c           	      D   t          j        | | ddg| d| dg| dd| g| dddggt                    }t          j        g dg d	g d
g dgt                    }t          | d          }|                    |                              |          }t          ||           d S )Nrf   r(   rh   ri   rg   r   rj   )rh   rf   r(   )rh   ri   ri   )rg   ri   ri   )rh   ri   r   r?   r)   )rF   ro   rp   r   r.   r/   r	   r   r6   r7   r:   r;   s        r"   %test_imputation_most_frequent_objectsr   T  s     	VS#&S&#&S#v&S#s#		
 	 	 	A XOOOOOOOO		
   F 6OLLLGkk!nn&&q))Gw'''''r$   categoryc                 <   t          j        d          }t          j        d          }|                    ||           }t          j        g dg dg dg dgt                    }t          d	          }|	                    |          }t          ||           d S )
Nrd   ,Cat1,Cat2,Cat3,Cat4
,i,x,
a,,y,
a,j,,
b,j,x,rj   )rf   ir    )rf   r   r!   )rf   r   r    )rg   r   r    r?   rD   r]   rn   ioStringIOread_csvrF   ro   rp   r   rJ   r	   r   rs   r(   dfr7   r:   r;   s          r"   $test_imputation_most_frequent_pandasr   q  s     
	X	&	&B
FGGA	Qe	$	$BX	///???OOOL  F
 _555G##B''Gw'''''r$   zX_data, missing_value)rU   r         ?c                     t          j        d| t                    }||d<   t          j        t
          d          5  t          |dd          }|                    |           d d d            d S # 1 swxY w Y   d S )	NrR   rj   r   r   zimputing numericalrY   r@   r    r*   r+   
fill_value)rF   fullfloatr]   rw   rx   r   rJ   )X_datamissing_valuer6   r:   s       r"   +test_imputation_constant_error_invalid_typer     s     	e,,,AAdG	z)=	>	>	> ! !(:#
 
 
 	a   	! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   (A22A69A6c                      t          j        g dg dg dg dg          } t          j        g dg dg dg dg          }t          d	d
d          }|                    |           }t	          ||           d S )N)r   rC   rS   r   )rk   r   rT   r   )r   r   r   r   )   r   r   r   )r   rC   rS   r   )rk   r   rT   r   )r   r   r   r   )r   r   r   r   r   r@   r   r   )rF   ro   r   rJ   r	   )r6   r7   r:   r;   s       r"    test_imputation_constant_integerr     s    
.........---PQQAX|||\\\<<<NOOF2
qQQQG##A&&Gw'''''r$   array_constructorc           	         t          j        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          j        g dg dg d	g d
g          } | |          } | |          }t          dd          }|                    |          }t          ||           d S )N皙?r   333333??ffffff?      ?)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r@   r   )r+   r   )rF   ro   rI   r   rJ   r   )r   r6   r7   r:   r;   s        r"   test_imputation_constant_floatr     s     	VS!RV$"&#rv&2626"#q"&!		
	 	A X			---~~~?P?P?PQ F 	!Av&&FZB???G##A&&G &11111r$   c           	          t          j        | dd| gd| d| gdd| | gddd	| ggt          
          }t          j        g dg dg dg dgt          
          }t          | dd          }|                    |          }t          ||           d S )Nrf   rg   rh   ri   r   r(   r   r   r   rj   )missingrf   rg   r   )rh   r   ri   r   )r   r(   r   r   )r   r   r   r   r@   r   r   )rF   ro   rp   r   rJ   r	   r   s        r"   test_imputation_constant_objectr     s     	S#v&&#v&#vv&#sF#		
 	 	 	A X,,,,,,,,,&&&		
   F 
y  G ##A&&Gw'''''r$   c                 <   t          j        d          }t          j        d          }|                    ||           }t          j        g dg dg dg dgt                    }t          d	          }|	                    |          }t          ||           d S )
Nrd   r   rj   )r   r   r    r   )rf   r   r!   r   )rf   r   r   r   )rg   r   r    r   r@   rD   r   r   s          r"   test_imputation_constant_pandasr     s     
	X	&	&B
FGGA	Qe	$	$BX888888888,,,		
   F Z000G##B''Gw'''''r$   r6   rU   rC   c                 *   t                                          |           }|j        dk    sJ t                      }|                    dgdgg           |j        dk    sJ |                    dgt          j        gg           |j        dk    sJ d S )Nr   rU   rC   )r   r.   n_iter_rF   rI   )r6   r:   s     r"   "test_iterative_imputer_one_featurer     s       $$Q''G?a  GKK!qc
?aKK!rvh   ?ar$   c                  P   t          ddd          } | j        d         }t          dt          |          fdt	          j        d          fg          }d	g d
i}t          ddd                                          }t          ||          }|                    | |           d S )Nd   皙?)densityr   r:   r*   r   random_stateimputer__strategyrP   rU   )	r   datar   r   r   DecisionTreeRegressorr5   r   r.   )r6   r*   pipeline
parametersYgss         r"   $test_imputation_pipeline_grid_searchr    s    c3555AVAYN^DDDET/Q???@	
 H &'J'J'JKJc1d333;;==A	h
	+	+BFF1aLLLLLr$   c                  N   t          dddd          } |                                                                 }t          ddd          }|                    |                              |          }d|d	<   t          j        ||k              rJ |                                 }t          |j        d         dd          }|                    |                              |          }d|j        d<   t          j        |j        |j        k              rJ |                                                                 }t          ddd
          }|                    |                              |          }d|d	<   t          ||           |                                 
                                }t          |j        d         dd
          }|                    |                              |          }d|j        d<   t          |j        |j                   |                                 }t          |j        d         dd
          }|                    |                              |          }d|j        d<   t          j        |j        |j        k              rJ d S )NrT   g      ?r   r  r  r=   T)r*   r+   r0   r   r   F)r   r0   r5   r   r.   r/   rF   r   r  r
   tocsc)X_origr6   r:   Xts       r"   test_imputation_copyr    sA   "1aAFFFF 	A1vDIIIG	Q	!	!!	$	$BBtHva2g 	A16!9vDQQQG	Q	!	!!	$	$BBGAJvaf'((((( 	A1vEJJJG	Q	!	!!	$	$BBtHa$$$ 	A16!9vERRRG	Q	!	!!	$	$BBGAJafbg... 	A16!9vERRRG	Q	!	!!	$	$BBGAJvaf'(((((((r$   c                     t           j                            d          } d}d}t          ||d|                                           }|dk    }t           j        ||<   t          d          }|                    |          }t          ||j	        
                    |                     t          d                              |          }t          j        |
                    |          |j	        
                    |          k              rJ d|_        t          |
                    |          |j	        
                    |                     d S )Nr   r   rB   r  r  )max_iterrT   )rF   rG   r   r   r5   rI   r   rJ   r   initial_imputer_r/   r.   r   r   )r   nri   r6   missing_flagr:   rM   s          r"   !test_iterative_imputer_zero_itersr  :  s2   
)


"
"CA
AaDsCCCKKMMA6LfAlO***G%%a((IIw7AA!DDEEE ***..q11Gvg''**g.F.P.PQR.S.SSTTTTTGOG%%a(('*B*L*LQ*O*OPPPPPr$   c                     t           j                            d          } d}d}t          ||d|                                           }t          ddd          }|                    |           |                    |           t          ddd          }|                    |           |                    |           d S )	Nr   r   rS   r  r  rU   )r*   r  rW   rC   )rF   rG   r   r   r5   r   r.   r/   )r   r  ri   r6   r:   s        r"   test_iterative_imputer_verboser  R  s    
)


"
"CA	AaDsCCCKKMMAa!QGGGGKKNNNaa!QGGGGKKNNNar$   c                      d} d}t          j        | |f          }t          dd          }|                    |          }t	          ||j                            |                     d S )Nr   rS   r   rU   )r*   r  )rF   r   r   rJ   r   r  r/   )r  ri   r6   r:   rM   s        r"   "test_iterative_imputer_all_missingr  `  sk    A	A
!QAa!<<<G%%a((IIw7AA!DDEEEEEr$   imputation_order)rG   roman	ascending
descendingarabicc                    t           j                            d          }d}d}d}t          ||d|                                          }d|d d df<   t          d|dd	d
ddd| |
  
        }|                    |           d |j        D             }t          |          |j	        z  |j
        k    sJ | dk    r:t          j        |d |dz
           t          j        d|          k              sJ d S | dk    r>t          j        |d |dz
           t          j        |dz
  dd          k              sJ d S | dk    r$|d |dz
           }||dz
  d          }	||	k    sJ d S d| v rt          |          ||dz
  z  k    sJ d S d S )Nr   r   rB   rC   r  r  rU   rT   FT)
r*   r  n_nearest_featuressample_posteriorskip_complete	min_value	max_valuerW   r  r  c                     g | ]	}|j         
S  feat_idx).0r   s     r"   
<listcomp>z;test_iterative_imputer_imputation_order.<locals>.<listcomp>  s    DDD!1:DDDr$   r  r"  r   rG   ending)rF   rG   r   r   r5   r   rJ   imputation_sequence_r~   r   n_features_with_missing_r   r   )
r  r   r  ri   r  r6   r:   ordered_idxordered_idx_round_1ordered_idx_round_2s
             r"   'test_iterative_imputer_imputation_orderr5  i  s    )


"
"CA
AHaDsCCCKKMMAAaaadG)  G !DDw'CDDDK{w.'2RRRRR7""vk'AE'*bi1oo=>>>>>>>	X	%	%vk'AE'*biAq".E.EEFFFFFFF	X	%	%)'AE'2)!a%''2"&9999999	%	%	%;8q1u#55555 
&	%55r$   	estimatorc                 0   t           j                            d          }d}d}t          ||d|                                          }t          dd| |          }|                    |           g }|j        D ]l}| t          |           nt          t                                }t          |j        |          sJ |                    t          |j                             mt          t          |                    t          |          k    sJ d S )Nr   r   rB   r  r  rU   )r*   r  r6  r  )rF   rG   r   r   r5   r   rJ   r0  r   r   
isinstancer6  appendidr~   set)	r6  r   r  ri   r6   r:   hashestripletexpected_types	            r"   !test_iterative_imputer_estimatorsr?    s    )


"
"CA
AaDsCCCKKMMA1	  G ! F/ - -(4DOOO$}:O:O 	 '+];;;;;b*++,,,, s6{{s6{{******r$   c                     t           j                            d          } d}d}t          ||d|                                           }t          dddd|           }|                    |          }t          t          j        ||dk                       d           t          t          j	        ||dk                       d           t          ||dk             ||dk                        d S )	Nr   r   rB   r  r  rU   皙?)r*   r  r'  r(  r  
rF   rG   r   r   r5   r   rJ   r   minr   r   r  ri   r6   r:   r  s         r"   test_iterative_imputer_cliprE    s    
)


"
"CA
AaDsCCCKKMMA1sQT  G 
		q	!	!BBF2a1f:&&,,,BF2a1f:&&,,,BqAvJ!q&	*****r$   c                     t           j                            d          } d}d}t          ||d|                                           }d|d d df<   t          dddd	dd
dd| 	  	        }|                    |          }t          t          j        ||dk                       d           t          t          j	        ||dk                       d
           t          ||dk             ||dk                        d S )Nr   r   rB   r  r  rU   rC   rT   TrA  rG   )	r*   r  r$  r%  r'  r(  rW   r  r  rB  rD  s         r"   %test_iterative_imputer_clip_truncnormrG    s   
)


"
"CA
AaDsCCCKKMMAAaaadG!
 
 
G 
		q	!	!BBF2a1f:&&,,,BF2a1f:&&,,,BqAvJ!q&	*****r$   c                     t           j                            d          } |                     d          t           j        d         d<   t          ddd|                                          t          j        fdt          d	          D                       }t          |dk              sJ t          |dk              sJ |
                                |                                }}t          ||z
  |z  d
          \  }}|dk    r|dz  }t          ||z
  |z  d
          \  }}|dk     s|dk    sJ d            d S d S )N*   )rT   rT   )r|   r   r   T)r'  r(  r%  r  c                 R    g | ]#}                               d          d          $S )r   )r/   )r-  _r6   r:   s     r"   r.  zEtest_iterative_imputer_truncated_normal_posterior.<locals>.<listcomp>  s1    KKK1G--a003A6KKKr$   r   normg-q=rA  r  z&The posterior does appear to be normal)rF   rG   r   normalrI   r   rJ   ro   r   r   r=   stdr   )r   imputationsmusigmaks_statisticp_valuer6   r:   s         @@r"   1test_iterative_imputer_truncated_normal_posteriorrT    sg    )


#
#C


AfAaDGsT  G !(KKKKKc

KKKLLK{a     {c!"""""  ""KOO$5$5B"K"$4#=vFFL'zz"K"$4#=vFFL' #30X.r$   c                    t           j                            d          }d}d}|                    dd||f          }|                    dd||f          }d|d d df<   d|d<   t	          dd| |                              |          }t          d| 	                              |          }t          |                    |          d d df         |                    |          d d df                    d S )
Nr   r   rB   rS   )lowhighr|   rU   r   )r*   r  rE   r  r)   )	rF   rG   r   randintr   r.   r   r   r/   )r+   r   r  ri   X_trainX_testr:   initial_imputers           r"   +test_iterative_imputer_missing_at_transformr\    s   
)


"
"CA
Akkaaq!fk55G[[QQaV[44FGAAAqDMF4L1xc  	c'll  $1xHHHLLWUUO &!!!!!Q$')B)B6)J)J111a4)P    r$   c                  Z   t           j                            d          } t           j                            d          }d}d}t          ||d|                                           }t          ddd|           }|                    |           |                    |          }|                    |          }t          j        |          t          j
        t          j        |                    k    sJ t          ddd	d d
|           }t          ddd	d d
|          }	|                    |           |	                    |           |                    |          }
|                    |          }|	                    |          }t          |
|           t          |
|           d S )Nr   rU   r   rB   r  r  T)r*   r  r%  r  Fr   )r*   r  r%  r$  r  r  )rF   rG   r   r   r5   r   r.   r/   r=   r]   approxr   )rng1rng2r  ri   r6   r:   
X_fitted_1
X_fitted_2imputer1imputer2X_fitted_1aX_fitted_1bs               r"   .test_iterative_imputer_transform_stochasticityrg    s   9  ##D9  ##DA
AaDtDDDLLNNA 1t$  G KKNNN""1%%J""1%%J 7:&-
0C0C"D"DDDDD
  $  H  $  H LLOOOLLOOO$$Q''K$$Q''K##A&&JK---K,,,,,r$   c                     t           j                            d          } |                     dd          }t           j        |d d df<   t          d|           }t          d|           }|                    |                              |          }|                    |          }t          |d d dd f         |           t          ||           d S )Nr   r   rB   )r  r  rU   )
rF   rG   r   randrI   r   r.   r/   rJ   r   )r   r6   m1m2pred1pred2s         r"   !test_iterative_imputer_no_missingrn  ?  s    
)


"
"CcAfAaaadG	2C	8	8	8B	2C	8	8	8BFF1II""EQEAaaaeHe$$$E5!!!!!r$   c                     t           j                            d          } d}|                     |d          }|                     d|          }t          j        ||          }|                     ||          dk     }|                                }t           j        ||<   t          dd|           }|                    |          }t          ||d           d S )	Nr   2   rU   r   rT   r  rW   r  g{Gz?atol)
rF   rG   r   ri  dotr0   rI   r   rJ   r   )	r   ri   ABr6   nan_mask	X_missingr:   X_filleds	            r"   test_iterative_imputer_rank_onerz  M  s    
)


"
"C
AAAAA
q!Axx1~~#HI&Ih13GGGG$$Y//HHad++++++r$   rankrS   rT   c                 (   t           j                            d          }d}d}|                    ||           }|                    | |          }t          j        ||          }|                    ||          dk     }|                                }t           j        ||<   |dz  }|d |         }	||d          }
||d          }t          ddd|                              |	          }|	                    |          }t          |
|d	
           d S )Nr   F   r   rC   rT   r!  rU   )r  r  rW   r  r  rr  )rF   rG   r   ri  rt  r0   rI   r   r.   r/   r   )r{  r   r  ri   ru  rv  ry  rw  rx  rY  X_test_filledrZ  r:   
X_test_ests                 r"   )test_iterative_imputer_transform_recoveryr  \  s   
)


"
"C
A
ADAqAva||Hxx1~~#HI&Ih 	
QAmGQRRLMqrr]F\13  	c'll  ""6**JM:C888888r$   c            	         t           j                            d          } d}d}|                     ||          }|                     ||          }t          j        |j                  }t          |          D ]H}t          |          D ]6}|d d ||z   |z  fxx         |d d |f         |d d |f         z   dz  z  cc<   7I|                     ||          dk     }|                                }	t           j	        |	|<   |dz  }|	d |         }
||d          }|	|d          }t          dd|                               |
          }|                    |          }t          ||dd	
           d S )Nr   r   rB   rC   g      ?rU   rq  gMbP?{Gz?)rtolrs  )rF   rG   r   rH   r   rL   r   ri  r0   rI   r   r.   r/   r   )r   r  ri   ru  rv  ry  r   r   rw  rx  rY  r~  rZ  r:   r  s                  r"   &test_iterative_imputer_additive_matrixr  u  s   
)


"
"CA
A		!QA		!QAx  H1XX @ @q 	@ 	@AQQQQ!^$$$111a41QQQT7):a(??$$$$	@ xx1~~$HI&Ih 	
QAmGQRRLMqrr]FACHHHLLWUUG""6**JM:DtDDDDDDr$   c                     t           j                            d          } d}d}|                     |d          }|                     d|          }t          j        ||          }|                     ||          dk     }|                                }t           j        ||<   t          dddd| 	          }|                    |          }	t          |j
                  ||j        z  k    sJ t          |j        dd| 
          }|                    |          }
t          |	|
d           t          dddd| 	          }|                    |           |j        |j        k    sJ d S )Nr   rp  rT   rU   r   r   r  F)r  tolr%  rW   r  )r  r%  rW   r  gHz>rr  )rF   rG   r   ri  rt  r0   rI   r   rJ   r~   r0  r   r   r.   r  )r   r  ri   ru  rv  r6   rw  rx  r:   X_filled_100X_filled_earlys              r"   %test_iterative_imputer_early_stoppingr    sr   
)


"
"C
A	AAAAA
q!Axx1~~#HI&Ih$PS  G ((33Lw+,,GO0CCCCC5!RU  G **955NL.t<<<<!eQS  G KK	?g.......r$   c                  v   t          d          \  } }| j        \  }}d| d d df<   t          j                            d          }d}t          |          D ]M}|                    t          j        |          t          ||z            d          }t          j	        | ||f<   Nt          d	d
          }t          j                    5  t          j        dt                     |                    | |          }	d d d            n# 1 swxY w Y   t          j        t          j        |	                    rJ d S )NT)
return_X_yrU   rS   r   g333333?F)r|   replacerT   )r$  r%  error)r   rL   rF   rG   r   r   choicer   intrI   r   warningscatch_warningssimplefilterRuntimeWarningrJ   r   r   )
r6   r!   	n_samples
n_featuresr   missing_ratefeat
sample_idxr:   X_fills
             r"   $test_iterative_imputer_catch_warningr    s|    D)))DAqGIz AaaadG )


"
"CLj!! % %ZZIi  s9|+C'D'De   
 

 !f*d
!dKKKG		 	"	" - -g~666&&q!,,- - - - - - - - - - - - - - - vbhv&&'''''''s   	1DD
D
z$min_value, max_value, correct_outputr   )r   rT   rB   )r      i,  r   rB   r  )scalarszNone-defaultinflistszlists-with-inf)idsc                 <   t           j                            d                              dd          }t	          | |          }|                    |           t          |j        t           j                  rt          |j	        t           j                  sJ |j        j
        d         |j
        d         k    r!|j	        j
        d         |j
        d         k    sJ t          |dd d f         |j                   t          |dd d f         |j	                   d S )Nr   rB   rS   r'  r(  rU   )rF   rG   r   rH   r   r.   r8  
_min_valuendarray
_max_valuerL   r   )r'  r(  correct_outputr6   r:   s        r"   )test_iterative_imputer_min_max_array_liker    s   $ 		a  &&r1--AiHHHGKKNNNg("*55 *BJ; ;    $Q'171:55 #qwqz111 N1aaa4('*<===N1aaa4('*<=====r$   zmin_value, max_value, err_msg)r   r   min_value >= max_value.r  )r   r  r   z_value' should be of shapec                     t           j                            d          }t          | |          }t          j        t
          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )NrB   rS   r  rY   )rF   rG   r   r]   rw   rx   r.   )r'  r(  r,   r6   r:   s        r"   *test_iterative_imputer_catch_min_max_errorr    s     		!!AiHHHG	z	1	1	1  A                 s   A//A36A3zmin_max_1, min_max_2irk   zNone-vs-infzScalar-vs-vectorc           	         t          j        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          j        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	          }t          |d         |d         d	          }|                    |                              |          }|                    |                              |          }t          |d d df         |d d df                    d S )
NrC   rU   rB   r   rS   rk   rT   r   )r'  r(  r  )rF   ro   rI   r   r.   r/   r   )	min_max_1	min_max_2rY  rZ  rc  rd  X_test_imputed1X_test_imputed2s           r"   4test_iterative_imputer_min_max_array_like_imputationr    sR    hVQ1#261VQ26"		
 G X
&!RVQ	!Q!7"&!R9KL F  A,)A,Q  H  A,)A,Q  H ll7++55f==Oll7++55f==OOAAAqD)?111a4+@AAAAAr$   r&  TFc                 *   t           j                            d          }t          j        g dg dg dg dg          }t          j        t           j        dddgt           j        dd	dgt           j        d	d
d	gg          }t          d| |          }|                    |                              |          }| r8t          |d d df         t          j	        |d d df                              d S t          |d d df         g dd           d S )Nr   )rT   rC   rC   rU   )rB   rU   rC   r   )rS   rU   rU   rU   )r   rk   rC   rC   rC   rk   rT   rU   rB   r=   )rE   r&  r  )   r      g-C6?)r  )
rF   rG   r   ro   rI   r   r.   r/   r   r=   )r&  r   rY  rZ  r:   r  s         r"   'test_iterative_imputer_skip_non_missingr    s"   
 )


"
"Chmmm\\\<<<PQQGX1a(261a*;bfaQ=OPQQF}3  G W%%//77J B
111a4("''!!!Q$-*@*@AAAAA
111a4(+++DAAAAAAr$   
rs_imputer)seedrs_estimatorc                      G d d          } ||          }t          |           }t          j        d          }|                    |           |j        |k    sJ d S )Nc                        e Zd Zd Zd Zd ZdS )Ctest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimatorc                     || _         d S r   r  )selfr  s     r"   __init__zLtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.__init__,  s     ,Dr$   c                     | S r   r*  )r  r   kgardss      r"   r.   zGtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.fit/  s    Kr$   c                 @    t          j        |j        d                   S )Nr   )rF   r   rL   )r  r6   s     r"   predictzKtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.predict2  s    8AGAJ'''r$   N)__name__
__module____qualname__r  r.   r  r*  r$   r"   ZeroEstimatorr  +  sA        	- 	- 	-	 	 		( 	( 	( 	( 	(r$   r  r  r  )r   rF   r   r.   r  )r  r  r  r6  r:   rY  s         r"   ,test_iterative_imputer_dont_set_random_stater  (  s    ( ( ( ( ( ( ( ( <888IJ777GhwGKK!\111111r$   zX_fit, X_trans, params, msg_errr   missing-onlyauto)featuresr   zBhave missing values in transform but have no missing values in fitrf   rg   rh   rj   z1MissingIndicator does not support data with dtypec                     t          d          } |j        di | t          j        t          |          5  |                    |                               |           d d d            d S # 1 swxY w Y   d S )Nr   r  rY   r*  )r   
set_paramsr]   rw   rx   r.   r/   )X_fitr;   paramsmsg_err	indicators        r"   test_missing_indicator_errorr  <  s    $ !333II""6"""	z	1	1	1 0 0e&&w///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   )A//A36A3zmissing_values, dtype, arr_typez,param_features, n_features, features_indicesr   rU   rC   r   c                 :   t          j        | | dgdd| gg          }t          j        | | dgg dg          }t          j        g dg dg          }t          j        g dg dg          }	 ||                              |          } ||                              |          }|                    |          }|	                    |          }	t          | |d	          }
|
                    |          }|
                    |          }|j        d         |k    sJ |j        d         |k    sJ t          |
j        |           t          ||d d |f                    t          ||	d d |f                    |j
        t          k    sJ |j
        t          k    sJ t          |t           j                  sJ t          |t           j                  sJ |
                    d
           |
                    |          }|
                    |          }|j
        t          k    sJ |j
        t          k    sJ |j        dk    sJ |j        dk    sJ t          |                                |           t          |                                |           d S )NrU   rk   rC   rk   r  rB   )rU   rU   r   )r   r   rU   r   F)r*   r  r   Tr   csc)rF   ro   astyper   rJ   r/   rL   r	   	features_r   r   boolr8  r  r  r2   r5   )r*   arr_typer   param_featuresr  features_indicesr  r;   X_fit_expectedX_trans_expectedr  
X_fit_maskX_trans_maskX_fit_mask_sparseX_trans_mask_sparses                  r"   test_missing_indicator_newr  T  s   2 H~~q9Aq.;QRSSEh;[[[IJJGXyyy)))455NxIII 677 HUOO""5))Ehw&&u--G#**511N'..u55 %u  I ((//J&&w//LA*,,,,a J....y*,<===Jqqq2B/B CDDDL"21116F3F"GHHHt####%%%%j"*-----lBJ/////%%%!//66#--g66"d****$,,,,#u,,,,%....%--//<<<'//11<@@@@@r$   r  c                    d}t          j        ||dgd|dgg          }t          j        ||dgg dg          } | |          } | |          }t          |          }t          j        t
          d          5  |                    |           d d d            n# 1 swxY w Y   |                    |           t          j        t
          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )	Nr   rU   rk   rC   r  r  z"Sparse input with missing_values=0rY   )rF   ro   r   r]   rw   rx   rJ   r/   )r  r*   r  r;   X_fit_sparseX_trans_sparser  s          r"   5test_missing_indicator_raise_on_sparse_with_missing_0r    s    NH~~q9A~q;QRSSEh;[[[IJJG 8E??LXg&&N ???I	z)M	N	N	N . .---. . . . . . . . . . . . . . . E"""	z)M	N	N	N , ,N+++, , , , , , , , , , , , , , , , , ,s$   ;BB!$B!C;;C?C?param_sparse)TFr  zmissing_values, arr_typec                    t          j        ||dgd|dgg          }t          j        ||dgg dg          } | |                              t           j                  } | |                              t           j                  }t	          ||          }|                    |          }|                    |          }|du r|j        dk    sJ |j        dk    sJ d S |dk    r@|d	k    r:t          |t           j	                  sJ t          |t           j	                  sJ d S |d
u r:t          |t           j	                  sJ t          |t           j	                  sJ d S t          j        |          r|j        dk    sJ |j        dk    sJ d S t          |t           j	                  sJ t          |t           j	                  sJ d S )NrU   rk   rC   r  )r*   r   Tr  r  r   F)rF   ro   r  float64r   rJ   r/   r2   r8  r  r   r4   )r  r*   r  r  r;   r  r  r  s           r"   #test_missing_indicator_sparse_paramr    s    H~~q9A~q;QRSSEh;[[[IJJGHUOO""2:..Ehw&&rz22G |TTTI((//J&&w//Lt E))))"e++++++			Na$7$7*bj11111,
3333333			*bj11111,
3333333?5!! 	8$----&%//////j"*55555lBJ7777777r$   c                      t          j        g dg dgt                    } t          dd          }|                    |           }t          |t          j        g dg dg                     d S )	Nrf   rg   rh   )rg   rh   rf   rj   rf   r   )r*   r  )TFF)FFT)rF   ro   rp   r   rJ   r	   )r6   r  r;   s      r"   test_missing_indicator_stringr    s{    
///???36BBBA eDDDI%%a((Gw*>*>*>@T@T@T)U V VWWWWWr$   zX, missing_values, X_trans_exp)rg   rg   TF)rg   rg   FT)r   r   TF)r   r   FTc                     t          t          |d          t          |                    }|                    |           }t	          ||           d S )Nr?   r)   r  )r   r   r   rJ   r	   )r6   r*   X_trans_exptransr;   s        r"   #test_missing_indicator_with_imputerr    s\    4 ^oNNN777 E !!!$$Gw,,,,,r$   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                 $   t           j                            d          }|                    dd          }||d<    | |          }t	          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )NrI  rB   r   r  rY   )rF   rG   r   rH   r]   rw   rx   rJ   )r  imputer_missing_valuesr   r,   r   r6   r:   s          r"   (test_inconsistent_dtype_X_missing_valuesr    s     )


#
#C		"bAAdG!!1GHHHG	z	1	1	1 ! !a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   "BB	B	c                      t          j        ddgddgg          } t          dd          }|                    |           }|j        d         dk    sJ d S )NrU   r  r   r  r*   r   )rF   ro   r   rJ   rL   r6   mir  s      r"   !test_missing_indicator_no_missingr    sb     	1a&1a&!""A	>"	E	E	EB			!		B8A;!r$   c                      t          j        g dg dg dg          } t          dd          }|                    |           }|                                |                                k    sJ d S )Nr  )rU   rC   r   )rC   r   rU   r   rU   r  )r   rK   r   rJ   getnnzsumr  s      r"   /test_missing_indicator_sparse_no_explicit_zerosr  )  ss     	999iii;<<A	5	;	;	;B			!		B99;;"&&((""""""r$   c                     t          j        ddgddgg          } |             }|                    |           |j        J d S )NrU   )rF   ro   r.   
indicator_)r  r6   r:   s      r"   test_imputer_without_indicatorr  4  sP    
1a&1a&!""A!!##GKKNNN%%%%%r$   c                     | t           j        ddgdt           j        dgddt           j        gg dg          }t          j        g dg dg d	g d
g          }t          t           j        d          }|                    |          }t          j        |          sJ |j        |j        k    sJ t          |	                                |           d S )NrU   rT   rC   r   rS   )rU   rC   r   )      @r         @r           r  )       @r  r   r  r   r  )g      @r  r  r  r  r   )r   r  g      "@r  r  r  T)r*   add_indicator)
rF   rI   ro   r   rJ   r   r4   rL   r   r5   )r  X_sparser7   r:   r;   s        r"   2test_simple_imputation_add_indicator_sparse_matrixr	  =  s     x"&!Q!RVQ!QSTTHX************		
 F 26FFFG##H--G?7#####=FL((((GOO%%v.....r$   zstrategy, expected)r?   rg   )r@   r   c                     ddgdt           j        gg}t          j        ddgd|ggt                    }t	          |           }|                    |          }t          ||           d S )Nrf   rg   rh   rj   rD   )rF   rI   ro   rp   r   rJ   r	   )r+   expectedr6   r7   r:   r;   s         r"   "test_simple_imputation_string_listr  Z  sr     sc26]#AXSzC?36BBBFX...G##A&&Gw'''''r$   zorder, idx_orderr   )rS   rk   rC   r   rU   r!  )rU   r   rC   rk   rS   c                    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          j        t                    5  t          d| d          	                    |          }d |j
        D             }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )NrI  r   rT   rp  rU      r      rC   rB   rk   )r  r  r  c                     g | ]	}|j         
S r*  r+  )r-  r    s     r"   r.  z)test_imputation_order.<locals>.<listcomp>y  s    <<<aqz<<<r$   )rF   rG   r   ri  rI   r]   r^   r   r   r.   r0  )order	idx_orderr   r6   trsidxs         r"   test_imputation_orderr  h  sA    )


#
#CaAAcrc1fIAcrc1fIAcrc1fIAcrc1fI	(	)	)    EPQRRRVV
 
 =<3#;<<<i                                   s   ?C((C,/C,r   c           	         t          j        d| ddgg ddd| dgddd| gg          }t          j        g d	d
d| dgd| ddgddd
| gg          }t          j        d| ddg| d| | gd
| d| g| d| dgg          }t          j        g d| d
| dgg d| d| d
gg          }t          | dd          }|                    |          }|                    |          }|                    |          }|                    |          }	t          ||           t          |	|           ||fD ]<}
|                    |
          }|                    |          }t          ||
           =d S )Nr   rS   r   rk   r   rT   rk   r   r   r   r   )rT   rk   rC   rU   rC   rU   rk   rT   )rU   rU   rU   rS   )rC   rS   rS   rk   r=   T)r*   r+   r  )rF   ro   r   rJ   inverse_transformr/   r	   )r   X_1X_2X_3X_4r:   	X_1_transX_1_inv_trans	X_2_transX_2_inv_transr6   r;   X_inv_transs                r"   (test_simple_imputation_inverse_transformr"  }  s    (q"%MM="%1m$		
 C (LL=!$q!$1m$		
 C (q!$A}m<q-0A}a0		
 C (LLA}a0LLA}a0		
 C $vT  G %%c**I--i88M!!#&&I--i88M}c***}c***3Z + +''**//88;****+ +r$   c           	      B   t          j        d| ddgg ddd| dgddd| gg          }t          | d	
          }|                    |          }t	          j        t          d|j         d          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   rS   r   r  r   r   r   r   r=   r)   zGot 'add_indicator='rY   )	rF   ro   r   rJ   r]   rw   rx   r  r  )r   r  r:   r  s       r"   3test_simple_imputation_inverse_transform_exceptionsr%    s   
(q"%MM="%1m$		
 C =6JJJG%%c**I	H0EHHH
 
 
 - - 	!!),,,- - - - - - - - - - - - - - - - - -s   1BBBz)expected,array,dtype,extra_value,n_repeatextra_valuer  most_frequent_value)r'  r'  valuer'  min_valuevalue)r'  r'  r(  r   )rU   rC   rS   )rU   rU   rC   )r  r  rU   )rU   rU   r  c                 \    | t          t          j        ||          ||          k    sJ d S )Nrj   )r   rF   ro   )r  ro   r   r&  n_repeats        r"   test_most_frequentr,    sG    , ~
e$$$k8       r$   rE   c                 X   t          j        dt           j        dgdt           j        t           j        gg          }t          | d          }|                    |          }t          |dddf         d           |                    |          }t          |dddf         d           dS )zCheck the behaviour of the iterative imputer with different initial strategy
    and keeping empty features (i.e. features containing only missing values).
    rU   rC   rS   T)rE   keep_empty_featuresNr   )rF   ro   rI   r   rJ   r   r/   )rE   r6   r:   rM   s       r"   *test_iterative_imputer_keep_empty_featuresr/    s     	1bfa.1bfbf"5677A)t  G %%a((IIaaadOQ'''!!!$$IIaaadOQ'''''r$   r.  c                    t          j        dt           j        dgdt           j        t           j        gg          }t          |           }dD ]r} t	          ||          |          }| r-|j        |j        k    sJ t          |dddf         d           J|j        |j        d         |j        d         dz
  fk    sJ sdS )z>Check the behaviour of `keep_empty_features` for `KNNImputer`.rU   rC   rS   )r.  rJ   r/   Nr   )rF   ro   rI   r   getattrrL   r	   )r.  r6   r:   methodrM   s        r"   $test_knn_imputer_keep_empty_featuresr4    s     	1bfa.1bfbf"5677A-@AAAG0 C C,GGV,,Q//	 	C?ag----yA2222?qwqz171:>&BBBBBBC Cr$   c            	         t          j        d          } |                     d|                     g dd          i          }t	          | j        dd          }t          |                    |          t          j	        d	gdgd
ggt                               |                     d|                     g dd          i          }t	          dd          }t          |                    |          t          j	        d	gd
gdggt                               |                     d|                     g dd          i          }t	          | j        dd          }t          |                    |          t          j	        dgdgdggd                     t	          t          j        dd          }t          |                    |          t          j	        dgdgdggd                     |                     d|                     g dd          i          }t	          | j        d          }t          |                    |          t          j	        dgdgdgdggd                     |                     d|                     g dd          i          }t	          | j        d          }t          |                    |          t          j	        dgdgdggd                     |                     d|                     g dd          i          }t	          | j        dd          }t          |                    |          t          j	        dgdgdggd                     |                     d|                     g d d          i          }t	          | j        d          }t          |                    |          t          j	        dgd!gd!gdggd                     d S )"Nrd   feature)abcNdestringrj   r@   nar   r7  r8  )r7  r8  fghok)r   r+   r;  )rU   NrS   Int64r   rU   rS   r  )rU   NrC   rS   r>   r)   rC   )rU   NrC   r=   r   )r   Nr  g       r   r  )r   Nr  r  r  )r]   rn   rq   Seriesr   NAr#   rJ   rF   ro   rp   r&   rI   )rs   r   r:   s      r"   test_simple_impute_pd_nar@    s   		X	&	&B 
y")),?,?,?x)"P"PQ	R	RB25:RVWWWG&b!!28eWtftf,EV#T#T#T  
 
y")),@,@,@)"Q"QR	S	SBtjAAAG&b!!28eWtfug,Ff#U#U#U  
 
y"))LLL)"H"HI	J	JB25:RTUUUG#b!!28aS2$,<I#N#N#N  
 26JSUVVVG#b!!28aS2$,<I#N#N#N  
 
y"))OOO7)"K"KL	M	MB258DDDG#b!!28aS1#sQC,@	#R#R#R  
 
y"))LLL)"H"HI	J	JB256BBBG#b!!28aS3%!,=Y#O#O#O  
 
y")),<,<,<I)"N"NO	P	PB25:RVWWWG#b!!28cUTFSE,B)#T#T#T  
 
y")),A,A,A)"S"ST	U	UB258DDDG#b!!
3%#u-Y???    r$   c                  "   t          j        d          } t          j        }|                     ||d|gd|ddggg d          }t          |                              |          }|                                }g d	}t          ||           d
S )zDCheck that missing indicator return the feature names with a prefix.rd   rU   rk   rC   rB   re   rl   r  )missingindicator_amissingindicator_bmissingindicator_dN)	r]   rn   rF   rI   rq   r   r.   get_feature_names_outr	   )rs   r*   r6   r  rt   expected_namess         r"   (test_missing_indicator_feature_names_outrG  C  s    		X	&	&BVN
^Q?2&	
 %$$ 	 	 	A !???CCAFFI3355MWWWN~}55555r$   c                     ddgddgddgg} t          d                              |           }|                    t          j        t          j        gg          }|j        t          k    sJ t          |ddgg           dS )zkCheck transform uses object dtype when fitted on an object dtype.

    Non-regression test for #19572.
    rf   rg   rh   r?   rD   N)r   r.   r/   rF   rI   r   rp   r	   )r6   imp_frequentr;   s      r"    test_imputer_lists_fit_transformrJ  V  s     sc3Z#s,A /:::>>qAAL$$rvrv&6%788G=F""""w#s-----r$   
dtype_testc                 z   t          j        ddt           j        gt           j        ddgg dgt           j                  }t	                                          |          }t          j        t           j        t           j        t           j        gg|           }|                    |          }|j        | k    sJ dS )zACheck transform preserves numeric dtype independent of fit dtype.r   g333333@r   )g@rC   rU   rj   N)rF   asarrayrI   r  r   r.   r/   r   )rK  r6   imprZ  r;   s        r"   .test_imputer_transform_preserves_numeric_dtyperO  c  s     	

sBF	bfc3/=RZ	 	 	A //

a
 
 CZ"&"&"&12*EEEFmmF##G=J&&&&&&r$   
array_typero   r   c                    t          j        t           j        dgt           j        dgt           j        dgg          }t          ||           }d}t	          d||          }dD ]`} t          ||          |          }|j        |j        k    sJ | dk    r|d	d	d
f         j        n|d	d	d
f         }t          ||           ad	S )zCheck 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.
    rC   rS   r   rB   r@   )r+   r   r.  r1  r   Nr   	rF   ro   rI   r   r   r2  rL   ru  r	   )rP  r.  r6   r   r:   r3  rM   constant_features           r"   0test_simple_imputer_constant_keep_empty_featuresrT  p  s     	261+{RVQK899A1j))AJ/  G 1 9 9,GGV,,Q//	!'))))!+x!7!7IaaadOYqqq!t_ 	 	+Z88889 9r$   c                    t          j        t           j        dgt           j        dgt           j        dgg          }t          ||          }t	          | |          }dD ]} t          ||          |          }|rF|j        |j        k    sJ |dk    r|dddf         j        n|dddf         }t          |d           c|j        |j        d         |j        d	         d	z
  fk    sJ dS )
zYCheck the behaviour of `keep_empty_features` with all strategies but
    'constant'.
    rC   rS   r   )r+   r.  r1  r   Nr   rU   rR  )r+   rP  r.  r6   r:   r3  rM   rS  s           r"   'test_simple_imputer_keep_empty_featuresrV    s    	261+{RVQK899A1j))AXCVWWWG0 	C 	C,GGV,,Q//	 	C?ag----%/8%;%;	!!!Q$!!111a4  /3333?qwqz171:>&BBBBBB	C 	Cr$   )r]   r  numpyrF   scipyr   scipy.statsr   r   sklearn.utils._testingr   r   r   r	   r
   sklearn.experimentalr   sklearn.datasetsr   sklearn.imputer   r   r   r   sklearn.dummyr   sklearn.linear_modelr   r   r   sklearn.pipeliner   r   sklearn.model_selectionr   sklearnr   sklearn.random_projectionr   sklearn.exceptionsr   sklearn.impute._baser   r#   r&   r<   markparametrizerO   rb   ru   ry   r   r   r   r   rp   strr   r   r   r   r   rI   r   r   r   r   rK   rM  r   r   r   r   r  r  r  r  r  r5  r?  rE  rG  rT  r\  rg  rn  rz  r  r  r  r  ro   r  r  r  r  r  rG   r   r  r  r  int32r3   
coo_matrix
lil_matrix
bsr_matrixr  r  r  r  r  r  r  r  r  r	  r  r  r"  r%  r  r,  r/  r4  r@  rG  rJ  float32rO  rT  rV  r*  r$   r"   <module>rn     s                     				 5 5 5 5 5 5 2 2 2 2 2 2 ? ? ? ? ? ? 5 5 5 5 5 5 < < < < < < : 9 9 9 9 9 * * * * * * + + + + + + F F F F F F F F F F ( ( ( ( ( ( F F F F F F F F F F % % % % % % ' ' ' ' ' ' 0 0 0 0 0 0       ; ; ; ; ; ; 1 1 1 1 1 1 / / / / / /  
  
"= "= "=J %T%T%TUU& & VU&  %H%H%HII
 
 JI
 %H%H%HII  JI< %T%T%TUU  VUF F FD D D@U @U @UFP P P@ fh%7884"566! ! 76 98! fh%788&+!677! ! 87 98! j/%BCC3xrx}}"EFF$ $ GF DC$&I I I6 D"&%Q#?@@( ( A@(8 6:"677( ( 87(& 06C=2IJJ	! 	! KJ	!	( 	( 	( ,v/@"*.MNN2 2 ON22 D"&%Q#?@@( ( A@(< 6:"677( ( 87(0 aSzQC"&?;<<    =<   &%) %) %)VQ Q Q0  F F F PPP "6 "6 "6J $((--//==??GGIIV + + +2+ + + + + +0Y Y YB %H%H%HII  JI,/- /- /-d" " ", , , !Q((9 9 )(90E E E4/ / /<( ( (2 *	
CA37SEAI.//0	tXRXy1}rvhl;<<=
&"&("(bfWIMBF8a<#@AAB	oooxrxooo0N'O'OP"&"#rvBHrBF7B'#sBF);<==	

 	FEE   > > >$ #+	"&34
a---!=>    TlbfWbf%&#rcUQYq4I(JK	*+   
B B 
B0 4-88B B 98B$ a1F1FA1F1N1N'OPP$293H3Ha3H3P3P)QRR2 2 SR QP2$ % BHr1g1v&''BHr1g2w'(('6::P		
 BHsCj3*-S999BHsCj3*-S999?		
 "0 0# "0 %	RX&	
BHbh	RXrx 	V./	RXv()	V./	RXv()	V./	RXv()	V./	RXv()	V./	RXv() $ 2a))),,-q("(999:M:M/NO )A )A	 % ,)AX 	 	, ,	 	,* )>)>)>??		
BH	"#	"#	"#	"#
 
8 8
 
 @?8:X X X $ BHsCj3*-V<<<BH---/F/F/FGvVVV	
 BHrvsmc26]344FBH---/F/F/FGHH	
 BHrvsmc26]36BBBFBH---/F/F/FGvVVV	
 BHtSkC;/v>>>BH---/F/F/FGvVVV	
! 2- -3 2- .@P0QRR4	./> ! !  SR!  # # # .@P0QRR& & SR& 	 	/ /	 	/& 13PQ ( ( ( ???#lOOO%DE    	  " 2rv,776+ 6+ 876+r 2rv,77- - 87-$ / 
B!CCC	
 
{,-vsA>	99963J	YYYR#	
IIIsB"	[[[#r1%	
JJJR#! * + * GGG ( ( ( .u>>C C ?>C9 9 9x6 6 6&
. 
. 
. 
BJ'?@@	' 	' A@	' ':;;.u>>9 9 ?> <;9. ':;;%H%H%HII.u>>C C ?> JI <;C C Cr$   