
    0Ph                        d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZmZ d dlmZ d Zd Zej                            d          ej                            d	 e            d
           d                         Zej                            d          ej                            dej        dd g          ej                            d	 e            d           d                                     Zej                            d          ej                            dej        dg          ej                            d	 e            d           ej                            de          d                                                 Zej                            d          ej                            d	 e            d           ej                            dddg          d                                     Zej                            d	 e            d           ej                            dddg          d                         Zej                            dddg          ej                            d	 e            d           d                         Zej                            d	 e            d           ej                            dej        d g          d!                         ZdS )"    N)enable_iterative_imputerIterativeImputer
KNNImputerSimpleImputer)assert_allcloseassert_allclose_dense_sparseassert_array_equal)CSR_CONTAINERSc                  X    t          d          t                      t                      gS )Ng?)tolr        `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/impute/tests/test_common.pyimputersr      s"    %%%z||]__EEr   c                       t                      gS N)r   r   r   r   sparse_imputersr      s    OOr   z-ignore::sklearn.exceptions.ConvergenceWarningimputerc                     | j         j        S r   	__class____name__xs    r   <lambda>r          ak>R r   )idsc                     dgdgg}dgt           j        gg}|                     d           |                     |                              |           d S )N         Tadd_indicator)npnan
set_paramsfit	transform)r   traintests      r   +test_imputation_missing_value_in_test_arrayr,      s]    
 S1#JEC"&?DT***KK  &&&&&r   markerc                     | j         j        S r   r   r   s    r   r   r   %   r   r   c           
         t          j        | dd| dgd| d| dgdd| | dgddd| dgg          }t          j        g dg d	g d
g dg          }|                    | d           |                    |          }t	          |d d dd f         |           t          |j        j        t          j        g d                     |                    d           |                    |          }t	          |d d d df         |           d S Nr       r!      r"   	      )      ?        r7   r6   )r7   r6   r7   r6   )r7   r7   r6   r6   )r7   r7   r7   r6   T)missing_valuesr$   )r   r    r!   r"   Fr#   )r%   arrayr'   fit_transformr   r
   
indicator_	features_)r-   r   XX_true_indicatorX_transX_trans_no_indicators         r   test_imputers_add_indicatorrB   #   sT    	Q61%61%661%1fa 		
	 	A x            		
  fDAAA##A&&GGAAArssFO%5666w)3RXlll5K5KLLLU+++"0033GAAAssFO%9:::::r   c                     | j         j        S r   r   r   s    r   r   r   F   s    0D r   csr_containerc           
          ||dd|dgd|d|dgdd||dgddd|dgg          } |g dg d	g d
g dg          }|                      |d           |                     |          }t          |d d dd f         |           t          | j        j        t          j        g d                     |                      d           |                     |          }t          |d d d df         |           d S r1   )r'   r;   r	   r
   r<   r=   r%   r:   )r   r-   rD   r>   r?   r@   rA   s          r   "test_imputers_add_indicator_sparserF   C   sT    	Q61%61%661%1fa 		
	 	A %}            		
  fDAAA##A&&G BCC2BCCCw)3RXlll5K5KLLLU+++"0033 CRC2FGGGGGr   c                     | j         j        S r   r   r   s    r   r   r   g   r   r   r$   TFc           
      t   t          j        d          }t          j        }|                     ||          } t          j        |dd|dgd|d|dgdd||dgddd|d	gg          }|                     |          }|                    |d
g d          }|                     |          }t          ||           d S )Npandasr$   r8   r    r2   r!   r3   r"   r4   r5   Int16)abcde)dtypecolumns)	pytestimportorskipr%   r&   r'   r:   r;   	DataFramer   )r   r$   pdr-   r>   X_trans_expectedX_dfr@   s           r   -test_imputers_pandas_na_integer_array_supportrY   f   s    
 
	X	&	&BVF  }V TTG
Q61%61%661%1fa 		
	 	A ,,Q// <<2K2K2K<LLD ##D))G$g.....r   c                     | j         j        S r   r   r   s    r   r   r      r   r   c                    t          j        d          }t          j        }|                     ||          } t          j        |ddd|dgd|dd|dgddd	||dgddd
d|dgg          }|                    |g d          }|                     |           |                                 }|rg d}t          ||           dS g d}t          ||           dS )z%Check feature names out for imputers.rI   rJ   r    r2   r"   r!   r5   r3      r4      )rL   rM   rN   rO   rP   f)rR   )	rL   rM   rN   rO   r^   missingindicator_amissingindicator_bmissingindicator_dmissingindicator_e)rL   rM   rN   rO   r^   N)
rS   rT   r%   r&   r'   r:   rU   r(   get_feature_names_outr
   )r   r$   rV   r-   r>   rX   namesexpected_namess           r   &test_imputers_feature_names_out_pandasrf      s    
	X	&	&BVF  }V TTG
Q1fa(1fa(1ffa(1a#		
	 	A <<#A#A#A<BBDKK))++E 2

 

 

 	>511111222>511111r   keep_empty_featuresc                     | j         j        S r   r   r   s    r   r   r      r   r   c                 `   t          j        t           j        dgt           j        dgt           j        dgg          }|                     d|          } dD ]X} t	          | |          |          }|r|j        |j        k    sJ 0|j        |j        d         |j        d         dz
  fk    sJ YdS )	z?Check that the imputer keeps features with only missing values.r    r!   r"   F)r$   rg   )r;   r)   r   N)r%   r:   r&   r'   getattrshape)r   rg   r>   method	X_imputeds        r   test_keep_empty_featuresrn      s     	261+{RVQK899A  1D !  G 1 C C,GGV,,Q//	 	C?ag-----?qwqz171:>&BBBBBBC Cr   c                     | j         j        S r   r   r   s    r   r   r      r   r   missing_value_testr    c                 \   t          j        dt           j        gddgg          }t          j        d|gddgg          }|                     d           |                     |           |                     |          }|j        dk    sJ |                     d           |                     |           |                     |          }|j        dk    sJ t          |d	d	d	d
f         |           t          j        |          rddg}nddg}t          |d	d	d
f         |           d	S )zoCheck that missing indicator always exists when add_indicator=True.

    Non-regression test for gh-26590.
    r   r    r!   Tr#   )r!   r"   F)r!   r!   Nr.   )	r%   r:   r&   r'   r(   r)   rk   r   isnan)r   rp   X_trainX_testX_test_imputed_with_indicator X_test_imputed_without_indicatorexpected_missing_indicators          r   ?test_imputation_adds_missing_indicator_if_add_indicator_is_truerx      s^    hBFaV,--G X-.A788FT***KK$+$5$5f$=$=!(.&8888U+++KK'.'8'8'@'@$+1V;;;;%aaa"f-/O   
x"## ,&'V""&'V"1!!!R%8:TUUUUUr   )numpyr%   rS   sklearn.experimentalr   sklearn.imputer   r   r   sklearn.utils._testingr   r	   r
   sklearn.utils.fixesr   r   r   markfilterwarningsparametrizer,   r&   rB   rF   rY   rf   rn   rx   r   r   r   <module>r      s        9 9 9 9 9 9 F F F F F F F F F F         
 / . . . . .F F F  
 KLLHHJJ4R4RSS' ' TS ML' KLLBFB?33HHJJ4R4RSS; ; TS 43 ML;: KLLBFB<00  &D&D    .99H H :9  10 MLH: KLLHHJJ4R4RSS4-88/ / 98 TS ML/4 HHJJ4R4RSS4-88"2 "2 98 TS"2J .u>>HHJJ4R4RSSC C TS ?>C HHJJ4R4RSS-{;;V V <; TSV V Vr   