Ë
    ÜÍ:j  ã                   ó˜  — d dl Z d dlZd dlZd dlm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l.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d„ Z5d„ Z6d„ Z7ejp                  js                  dg d¢«      ejp                  js                  de2«      d„ «       «       Z:ejp                  js                  dg d¢«      d„ «       Z;ejp                  js                  dg d¢«      d„ «       Z<ejp                  js                  dg d¢«      ejp                  js                  de1«      d„ «       «       Z=d„ Z>d„ Z?ejp                  js                  de1«      d „ «       Z@ejp                  js                  de1«      d!„ «       ZAejp                  js                  dd"d#g«      ejp                  js                  d$deBeCg«      d%„ «       «       ZDejp                  js                  dd"d#g«      ejp                  js                  d&d'd(g«      d)„ «       «       ZEejp                  js                  dd*d+g«      ejp                  js                  d$eC ejŒ                  d,«       ejŒ                  d-«      g«      d.„ «       «       ZGejp                  js                  de1«      d/„ «       ZHejp                  js                  d0dej’                  d1d2d g«      d3„ «       ZJejp                  js                  d$eBd4g«      d5„ «       ZKejp                  js                  d6d7d8ej’                  fg«      d9„ «       ZLejp                  js                  d:d;d<g«      d=„ «       ZMejp                  js                  d>e2ejœ                  gz   «      ejp                  js                  d:d;d<g«      d?„ «       «       ZOejp                  js                  d0dej’                  d1d2d g«      ejp                  js                  d:d;d<g«      d@„ «       «       ZPejp                  js                  d$eBd4g«      ejp                  js                  d:d;d<g«      dA„ «       «       ZQejp                  js                  dBdCgdDggdCgej’                  ggg«      dE„ «       ZRdF„ ZSdG„ ZTdH„ ZUdI„ ZVdJ„ ZWejp                  js                  dKg dL¢«      dM„ «       ZXejp                  js                  dNd e«        e«        e«        e «       g«      dO„ «       ZYdP„ ZZdQ„ Z[dR„ Z\ejp                  js                  dg d¢«      dS„ «       Z]dT„ Z^dU„ Z_dV„ Z`ejp                  js                  dWdXdYg«      dZ„ «       Zad[„ Zbd\„ Zcd]„ Zdejp                  js                  d^d d_ ejÊ                  d gdXz  d_gdXz  g«      fdd ejÊ                  ejÌ                   gdXz  ejÌ                  gdXz  g«      fejÌ                   ejÌ                   ejÊ                  ejÌ                   gdXz  ejÌ                  gdXz  g«      fg d`¢g da¢ ejÊ                  g d`¢g da¢g«      fdbejÌ                   dcgd_ddejÌ                  g ejÊ                  dbejÌ                   dcgd_ddejÌ                  gg«      fgg de¢¬f«      dg„ «       Zgejp                  js                  dhdiejÌ                  ejÌ                   djfdbdYgg dk¢dlfg dm¢d_ddgdlfg«      dn„ «       Zhejp                  js                  doddgejÌ                   ejÌ                  gfdpdcgdpgdqz  dcgdqz  gfgdrdsg¬f«      dt„ «       Ziejp                  js                  dud;d<g«      dv„ «       Zjejp                  js                  dwddCejÖ                  jÙ                  dC¬x«      g«      ejp                  js                  dyddCejÖ                  jÙ                  dC¬x«      g«      dz„ «       «       Zmejp                  js                  d{ ejÊ                  d|dCgdCdDgg«       ejÊ                  d|dCgdCd|gg«      d}d~dœd€f ejÊ                  d�d‚gdƒd�ggeC¬„«       ejÊ                  d�d‚gdƒd�ggeC¬„«      i d…fg«      d†„ «       Znd‡„ Zoejp                  js                  dˆ eo«       «      ejp                  js                  d‰d}dX ejÊ                  g dŠ¢«      fd‹dX ejÊ                  g dŠ¢«      fg«      dŒ„ «       «       Zpejp                  js                  d�e1e2z   e0z   e3z   e/z   «      dŽ„ «       Zqejp                  js                  d�g d�¢«      ejp                  js                  d‘ejÊ                  d fg er ee1e2z   e0z   e3z   e/z   ej’                  g«      «      z   «      d’„ «       «       Zsd“„ Ztejp                  js                  d” ejÊ                  d�d‚gd‚d�ggeB¬„«      d� ejÊ                  g d•¢g d–¢geB¬„«      f ejÊ                  ej’                  d8gd8ej’                  gg«      ej’                   ejÊ                  g d—¢g d˜¢g«      f ejÊ                  ej’                  d‚gd‚ej’                  ggeB¬„«      ej’                   ejÊ                  g d•¢g d–¢geB¬„«      f ejÊ                  dd‚gd‚dggeB¬„«      d ejÊ                  g d•¢g d–¢geB¬„«      fg«      d™„ «       Zuejp                  js                  dšeeg«      ejp                  js                  d›dœej’                  d�fdžg«      dŸ„ «       «       Zvd „ Zwejp                  js                  de2«      d¡„ «       Zxejp                  js                  dšeeg«      d¢„ «       Zyejp                  js                  d�e1e2z   e0z   e3z   e/z   «      d£„ «       Zzejp                  js                  d¤d¥d¦g«      d§„ «       Z{ejp                  js                  d¨d©g dª¢fd«g d¬¢fg«      d­„ «       Z|ejp                  js                  d®d|ej’                  g«      d¯„ «       Z}ejp                  js                  d®d|ej’                  g«      d°„ «       Z~ejp                  js                  d±d²g d³¢eBd²dDfd´g dµ¢eBd²dCfd�d¶d·geBd�dDfd¶g d¸¢eBd¹dDfdcg dº¢edcdDfdCg d»¢edcdCfdcg d¼¢edcdDfdCg d½¢edcdDfg«      d¾„ «       Z€ejp                  js                  d¿d�d�d‚gfdCdCdDgfddd�gfdddCgfdg dÀ¢fdCdCdÁgfdCdÁdCgfg«      dÂ„ «       Z�ejp                  js                  dÃg d¢«      dÄ„ «       Z‚ejp                  js                  d:d;d<g«      dÅ„ «       ZƒdÆ„ Z„ejp                  js                  d:d;d<g«      dÇ„ «       Z…dÈ„ Z†dÉ„ Z‡dÊ„ Zˆejp                  js                  dËe�j                  e�j                  g«      dÌ„ «       Z‹ejp                  js                  dÍdÎdÏg«      ejp                  js                  dg d¢«      ejp                  js                  d:d;d<g«      dÐ„ «       «       «       ZŒejp                  js                  de1«      dÑ„ «       Z�dÒ„ ZŽejp                  js                  dg d¢«      dÓ„ «       Z�ejp                  js                  dg d¢«      ejp                  js                  dÔ ejÊ                  g dÕ¢g dÖ¢g«       ejÊ                  ej’                  dDdXdqgej’                  d×dØdÙgg«       ejÊ                  dCdDdXej’                  gdYd×dØej’                  gg«      g«      dÚ„ «       «       Z�y)Ûé    N)Úproduct©Ú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_equal)ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚLIL_CONTAINERSÚSCIPY_VERSION_BELOW_1_12c                 óR   — t        | |«       | j                  |j                  k(  sJ ‚y ©N)r   Údtype©ÚxÚys     úu/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/impute/tests/test_impute.pyÚ"_assert_array_equal_and_same_dtyper*   )   s"   € Ü�q˜!ÔØ�7‰7�a—g‘gÒÐÑó    c                 óR   — t        | |«       | j                  |j                  k(  sJ ‚y r$   )r   r%   r&   s     r)   Ú_assert_allclose_and_same_dtyper-   .   s"   € Ü�A�qÔØ�7‰7�a—g‘gÒÐÑr+   c                 óÜ  — d|›d|›d�}t         }| j                  j                  dk(  s|j                  j                  dk(  rt        }t	        ||¬«      }|j                  | «      j                  | j                  «       «      }	 ||j                  ||j                  d«      ¬«        ||	||j                  d«      ¬«       t	        ||¬«      }|j                   || «      «       |j                   || j                  «       «      «      }	t        j                  |	«      r|	j                  «       }	 ||j                  ||j                  d«      ¬«        ||	||j                  d«      ¬«       y	)
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 = z, missing_values = z, sparse = {0}Úf©Úmissing_valuesÚstrategyF)Úerr_msgTN)r   r%   Úkindr   r   ÚfitÚ	transformÚcopyÚstatistics_Úformatr   ÚissparseÚtoarray)
ÚXÚX_truer2   Ú
statisticsr1   Úsparse_containerr3   Ú	assert_aeÚimputerÚX_transs
             r)   Ú_check_statisticsrC   3   s  � ò 	Úð€Gô
 #€Ià‡w�w‡|�|�sÒ˜fŸl™l×/Ñ/°3Ò6Ü-ˆ	ô ¨>ÀHÔM€GØ�k‰k˜!‹n×&Ñ& q§v¡v£xÓ0€GÙˆg×!Ñ! :°w·~±~ÀeÓ7LÕMÙˆg�v w§~¡~°eÓ'<Õ=ô ¨>ÀHÔM€GØ‡K�KÑ  Ó#Ô$Ø×ÑÑ 0°·±³Ó :Ó;€Gä‡��wÔØ—/‘/Ó#ˆáˆg×!Ñ! :°w·~±~ÀdÓ7KÕLÙˆg�v w§~¡~°dÓ';Ö<r+   r2   )ÚmeanÚmedianÚmost_frequentÚconstantÚcsr_containerc                 óx  — t         j                  j                  dd«      }t         j                  |d d d…<   t	        | ¬«      }|j                   ||«      «      }|j                  dk(  sJ ‚|j                  |«      }|j                  dk(  sJ ‚t        | ¬«      }|j                  |«      }|j                  dk(  sJ ‚y )Né
   é   ©r2   )rJ   rK   )Úinitial_strategy)ÚnpÚrandomÚrandnÚnanr   Úfit_transformÚshaper   )r2   rH   r<   rA   Ú	X_imputedÚiterative_imputers         r)   Útest_imputation_shaperV   Z   s©   € ô 	�	‰	�‰˜˜AÓ€AÜ�V‰V€A�cˆ€c�Fä XÔ.€GØ×%Ñ%¡m°AÓ&6Ó7€IØ�?‰?˜gÒ%Ð%Ð%Ø×%Ñ% aÓ(€IØ�?‰?˜gÒ%Ð%Ð%ä(¸(ÔCÐØ!×/Ñ/°Ó2€IØ�?‰?˜gÒ%Ð%Ñ%r+   ©rD   rE   rF   c                 ó  — t        j                  d«      }t         j                  |d d …df<   t        | ¬«      j	                  |«      }t        j                  t        d¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)N©é   é   r   rL   ÚSkipping©Úmatch)	rN   ÚonesrQ   r   r5   ÚpytestÚwarnsÚUserWarningr6   )r2   r<   rA   s      r)   Ú test_imputation_deletion_warningrc   l   sf   € ä
�‰�‹€AÜ�f‰f€A‚aˆ€d�GÜ XÔ.×2Ñ2°1Ó5€Gä	�‰”k¨Ô	4ñ Ø×Ñ˜!Ô÷÷ ñ ús   Á#A>Á>Bc                 ó¦  — t        j                  d«      }t        j                  }t        j                  g d¢t
        ¬«      }|j                  ||d|gd|ddgg|¬«      }t        | ¬	«      j                  |«      }t        |j                  |«       t        j                  t        d
¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)NÚpandas©ÚaÚbÚcÚd©r%   é   é   rK   rJ   ©ÚcolumnsrL   z6Skipping features without any observed values: \['b'\]r]   )r`   ÚimportorskiprN   rQ   ÚarrayÚobjectÚ	DataFramer   r5   r   Úfeature_names_in_ra   rb   r6   )r2   Úpdr1   Úfeature_namesr<   rA   s         r)   Ú.test_imputation_deletion_warning_feature_namesrw   v   sÃ   € ä	×	Ñ	˜XÓ	&€Bä—V‘V€NÜ—H‘HÒ1¼Ô@€MØ
�‰à˜^¨Q°Ð?Ø�  2Ð&ð	
ð ð 	ó 	€Aô  XÔ.×2Ñ2°1Ó5€Gô �w×0Ñ0°-Ô@ô 
�‰ÜÐTô
ñ ð 	×Ñ˜!Ô÷÷ ñ ús   Â,CÃCÚcsc_containerc                 ó¤  — t        j                  d«      }d|d<    ||«      }t        | d¬«      }t        j                  t
        d¬«      5  |j                  |«       d d d «       |j                  |j                  «       «       t        j                  t
        d¬«      5  |j                  |«       d d d «       y # 1 sw Y   Œ^xY w# 1 sw Y   y xY w)NrY   r   )r2   r1   zProvide a dense arrayr]   )	rN   r_   r   r`   ÚraisesÚ
ValueErrorr5   r;   r6   )r2   rx   r<   rA   s       r)   Útest_imputation_error_sparse_0r|   �   sª   € ô 	�‰�‹€AØ€A€a�DÙ�aÓ€Aä X¸aÔ@€GÜ	�‰”zÐ)@Ô	Añ Ø�‰�AŒ÷ð ‡K�K�—	‘	“ÔÜ	�‰”zÐ)@Ô	Añ Ø×Ñ˜!Ô÷ð ÷	ð ú÷ð ús   ÁB:ÂCÂ:CÃCc                 ó¤   — t        | d«      r| j                  n
t        | «      }|dk(  rt        j                  S t        j
                  | g|¢­i |¤ŽS ©NÚsizer   )Úhasattrr   ÚlenrN   rQ   rE   ©ÚarrÚargsÚkwargsÚlengths       r)   Úsafe_medianr‡   ¡   sB   € ä   fÔ-ˆS�XŠX´3°s³8€FØ˜q’[Œ2�6‰6ÐE¤b§i¡i°Ð&E°dÒ&E¸fÑ&EÐEr+   c                 ó¤   — t        | d«      r| j                  n
t        | «      }|dk(  rt        j                  S t        j
                  | g|¢­i |¤ŽS r~   )r€   r   r�   rN   rQ   rD   r‚   s       r)   Ú	safe_meanr‰   §   sB   € ä   fÔ-ˆS�XŠX´3°s³8€FØ˜q’[Œ2�6‰6ÐC¤b§g¡g¨cÐ&C°DÒ&C¸FÑ&CÐCr+   c           
      óî  — t         j                  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 �]W  \  }}	}
t        j                  |«      }t        j                  |«      }t        j                  |d   «      }t        |d   «      D �]‘  }||z
  dz   dkD  ||z
  dz   z  ||z
  dz   z  }t        |d   ||z  z   ||z   ||z   z  z
  d«      }|d   |z
  |z
  }|d | }t        j                  |	|«      }||j                  t        |«      «      d |    } |
|||«      ||<   t        j                  |||f«      |d d …|f<   d|	k(  r9t        j                  |t        j                  ||   ||z   «      f«      |d d …|f<   n6t        j                  ||t        j                  ||   |«      f«      |d d …|f<   t         j                  j                  |«      j                  |d d …|f   «       t         j                  j                  |«      j                  |d d …|f   «       �Œ” |dk(  r't        j                  |«      j                  d¬
«       }n&t        j                  |«      j!                  d¬
«       }|d d …|f   }t#        |||||	| «       �ŒZ y )Nr   rJ   rl   rm   rK   rD   c                 óB   — t        t        j                  | |f«      «      S r$   )r‰   rN   Úhstack©ÚzÚvÚps      r)   ú<lambda>z-test_imputation_mean_median.<locals>.<lambda>¼   s   € ¬´2·9±9¸aÀ¸VÓ3DÓ)E€ r+   rE   c                 óB   — t        t        j                  | |f«      «      S r$   )r‡   rN   rŒ   r�   s      r)   r‘   z-test_imputation_mean_median.<locals>.<lambda>½   s   € ¬;´r·y±yÀ!ÀQÀÓ7HÓ+I€ r+   ©Úaxis)rN   rO   ÚRandomStateÚzerosÚarangerQ   ÚemptyÚrangeÚmaxÚrepeatÚpermutationr�   rŒ   ÚshuffleÚisnanÚanyÚallrC   )rx   ÚrngÚdimÚdecrS   r–   ÚvaluesÚtestsr2   Útest_missing_valuesÚtrue_value_funr<   r=   Útrue_statisticsÚjÚnb_zerosÚnb_missing_valuesÚ	nb_valuesrŽ   r�   r�   Úcols_to_keeps                         r)   Útest_imputation_mean_medianr®   ­   s   € ô �)‰)×
Ñ
 Ó
"€Cà
€CØ
€CØ�3‰Y˜˜c™	Ð"€Eä�H‰H�U˜1‘XÓ€EÜ�Y‰Y�q˜% ™( Q™,Ó'€FØ˜1˜4˜a˜4‘L�=€Fˆ1ˆ4ˆaˆ4�Lð 
”—‘ÑEÐFØ	”2—6‘6ÑIÐJð€Eð
 :?ó 0
Ñ5ˆÐ% ~Ü�H‰H�U‹OˆÜ—‘˜%“ˆÜŸ(™( 5¨¡8Ó,ˆô �u˜Q‘x“ó 	;ˆAØ˜C™ !™ a™¨A°©G°a©KÑ8¸AÀ¹GÀa¹KÑHˆHÜ # E¨!¡H¨s°S©yÑ$8¸AÀ¹GÈÈCÉÑ;PÑ$PÐRSÓ TÐØ˜a™ 8Ñ+Ð.?Ñ?ˆIà�i�xÐ ˆAÜ—	‘	Ð-Ð/@ÓAˆAØ�s—‘¤s¨6£{Ó3°J°YÐ?Ñ@ˆAá!/°°1°aÓ!8ˆO˜AÑô —i‘i  A q 	Ó*ˆAŠa�ˆd‰GàÐ'Ò'ä!Ÿy™yØœŸ	™	 /°!Ñ"4Ð6GÈ(Ñ6RÓSÐTó �’q˜!�t’ô  "Ÿy™yØ˜œ2Ÿ9™9 _°QÑ%7Ð9JÓKÐLó �’q˜!�t‘ô
 �I‰I×!Ñ! !Ó$×,Ñ,¨Qªq°!¨t©WÔ5Ü�I‰I×!Ñ! !Ó$×,Ñ,¨V²A°q°D©\Ö:ð5	;ð: �xÒÜŸH™H VÓ,×0Ñ0°aÐ0Ó8Ð8‰LäŸH™H VÓ,×0Ñ0°aÐ0Ó8Ð8ˆLàš˜<˜Ñ(ˆäØˆv�x Ð2EÀ}ö	
ñ]0
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«      j                  «       }t        j                  g d¢g d	¢g d¢g d
¢g d¢g d¢g d¢g d¢g«      j                  «       }g d¢}t	        ||d|t         j                  | «       y )Nr   r[   éûÿÿÿrm   éüÿÿÿéÿÿÿÿrK   ©r   r   r   )r[   r[   r[   )r°   r   ç      À)r   r[   ç      @)rm   r[   ç      @)r±   r°   ç      À)r²   rK   ç      à?)r   r[   r   r´   rµ   r¶   r·   r¸   rE   )rN   rq   rQ   Ú	transposerC   )rx   r<   ÚX_imputed_medianÚstatistics_medians       r)   Ú$test_imputation_median_special_casesr¼   ó   sò   € ô 	�‰à”—‘œŸ™ÐØ”—‘œŸ™ÐØ�”2—6‘6ˆNØ�”B—F‘FˆOØ�”2—6‘6ˆNØ�”2—6‘6ˆNØ�”R—V‘VÐØ�”B—F‘FˆOð		
ó	÷ �iƒkð ô —x‘xâÚÚÚÚÚÚÚð		
ó÷ �iƒkð ò =ÐäØ	Ð˜XÐ'8¼"¿&¹&À-õr+   rD   rE   r%   c                 óâ   — t        j                  g d¢g d¢g d¢g|¬«      }d}t        j                  t        |¬«      5  t        | ¬«      }|j                  |«       d d d «       y # 1 sw Y   y xY w)N©rg   rh   rZ   ©rm   Úeé   ©ÚgÚhé	   rk   ú4non-numeric data:
could not convert string to float:r]   rL   )rN   rq   r`   rz   r{   r   rR   )r2   r%   r<   ÚmsgrA   s        r)   Ú.test_imputation_mean_median_error_invalid_typerÈ     s[   € ô 	�‰’-¢ªmÐ<ÀEÔJ€AØ
A€CÜ	�‰”z¨Ô	-ñ !Ü¨Ô2ˆØ×Ñ˜aÔ ÷!÷ !ñ !ús   ¾A%Á%A.Úconstructor_nameÚlistre   c                 óÐ   — g d¢g d¢g d¢g}t        ||«      }d}t        j                  t        |¬«      5  t	        | ¬«      }|j                  |«       d d d «       y # 1 sw Y   y xY w)Nr¾   r¿   rÂ   rÆ   r]   rL   )r   r`   rz   r{   r   rR   )r2   rÉ   r<   rÇ   rA   s        r)   Ú:test_imputation_mean_median_error_invalid_type_list_pandasrÌ      s]   € ò
 
š¢]Ð3€AÜ˜1Ð.Ó/€AØ
A€CÜ	�‰”z¨Ô	-ñ !Ü¨Ô2ˆØ×Ñ˜aÔ ÷!÷ !ñ !ús   µAÁA%rG   rF   Ú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        | ¬
«      }|j                  |«      j                  |«       d d d «       y # 1 sw Y   y xY w)Nrg   r/   ri   rj   rh   rÄ   rk   z#SimpleImputer does not support datar]   rL   )	rN   rq   rQ   r`   rz   r{   r   r5   r6   )r2   r%   r<   r3   rA   s        r)   Ú/test_imputation_const_mostf_error_invalid_typesrÐ   -  s²   € ô
 	�‰ä�V‰V”R—V‘V˜S #Ð&Ü�V‰V�Sœ"Ÿ&™& #Ð&Ü�V‰V�S˜#œrŸv™vÐ&Ü�V‰V�S˜#˜sÐ#ð		
ð ô	€Að 4€GÜ	�‰”z¨Ô	1ñ $Ü¨Ô2ˆØ�‰�A‹× Ñ  Ô#÷$÷ $ñ $ús   Â+-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| «       y )N)r²   r²   r   r[   )r²   rK   r²   rZ   )r²   rl   rZ   r²   )r²   rK   rZ   é   )rK   r   r[   )rK   rZ   rZ   )rl   rZ   rZ   )rK   rZ   rÒ   rF   rK   rZ   r²   )rN   rq   rC   rQ   )rx   r<   r=   s      r)   Útest_imputation_most_frequentrÓ   B  se   € ô 	�‰âÚÚÚð		
ó	€Aô �X‰XâÚÚÚð		
ó€Fô �a˜ ´2·6±6¸1¸aÀÐ2CÀRÈÕWr+   ÚmarkerÚNANÚ 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¬«      }|j	                  |«      j                  |«      }t        ||«       y )Nrg   r/   ri   rj   rh   rÄ   rk   )ri   rg   r/   )ri   rj   rj   )rh   rj   rj   )ri   rj   rÄ   rF   r0   )rN   rq   rr   r   r5   r6   r   )rÔ   r<   r=   rA   rB   s        r)   Ú%test_imputation_most_frequent_objectsrØ   ^  s¢   € ô 	�‰à�V˜S #Ð&Ø�S˜& #Ð&Ø�S˜#˜vÐ&Ø�S˜#˜sÐ#ð		
ô ô	€Aô �X‰XâÚÚÚð		
ô ô€Fô ¨6¸OÔL€GØ�k‰k˜!‹n×&Ñ& qÓ)€Gä�w Õ'r+   Úcategoryc                 ó  — t        j                  d«      }t        j                  d«      }|j	                  || ¬«      }t        j                  g d¢g d¢g d¢g d¢gt        ¬«      }t        d¬	«      }|j                  |«      }t        ||«       y )
Nre   ú,Cat1,Cat2,Cat3,Cat4
,i,x,
a,,y,
a,j,,
b,j,x,rk   )rg   Úir'   )rg   r©   r(   )rg   r©   r'   )rh   r©   r'   rF   rL   ©r`   rp   ÚioÚStringIOÚread_csvrN   rq   rr   r   rR   r   )r%   ru   r/   Údfr=   rA   rB   s          r)   Ú$test_imputation_most_frequent_pandasrâ   {  sx   € ô 
×	Ñ	˜XÓ	&€Bä
�‰ÐFÓG€Aà	�‰�Q˜eˆÓ	$€Bä�X‰XÚ	š/ª?ºOÐLÜô€Fô
  _Ô5€GØ×#Ñ# BÓ'€Gä�w Õ'r+   zX_data, missing_value)rl   r   ç      ð?c                 ó2  — t        j                  d| t        ¬«      }||d<   d}d|›dt        |«      ›d�}t	        j
                  t        t        j                  |«      ¬«      5  t        |d	|¬
«      }|j                  |«       d d d «       y # 1 sw Y   y xY w)NrY   rk   ©r   r   r'   úfill_value=ú
 (of type ú) cannot be castr]   rG   ©r1   r2   Ú
fill_value)rN   ÚfullÚfloatÚtyper`   rz   r{   ÚreÚescaper   rR   )ÚX_dataÚmissing_valuer<   rê   r3   rA   s         r)   Ú+test_imputation_constant_error_invalid_typerò   �  sŒ   € ô 	�‰�˜¤eÔ,€AØ€A€d�Gà€JØ˜J˜>¨´D¸Ó4DÐ3GÐGWÐX€GÜ	�‰”z¬¯©°7Ó);Ô	<ñ !ÜØ(°:È*ô
ˆð 	×Ñ˜aÔ ÷	!÷ !ñ !ús   Á$ BÂBÚkeep_empty_featuresTFc                 óú   — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  g d¢g d¢g d¢g d¢g«      }| s|d d …d d	…f   }t        d	d
d| ¬«      }|j                  |«      }t	        ||«       y )N©r²   rK   rZ   r²   ©rm   r²   r[   r²   ©rÁ   rÒ   r²   r²   ©é   rÅ   r   r²   )r   rK   rZ   r   )rm   r   r[   r   )rÁ   rÒ   r   r   )rù   rÅ   r   r   r²   rG   r   ©r1   r2   rê   ró   )rN   rq   r   rR   r   )ró   r<   r=   rA   rB   s        r)   Ú test_imputation_constant_integerrû   ž  sx   € ô 	�‰’.¢.².Â-ÐPÓQ€Aä�X‰X’|¢\²<ÂÐNÓO€FÙØš˜3˜B˜3˜‘ˆäØØØØ/ô	€Gð ×#Ñ# 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«      }|s|d d …d d…f   } | |«      } | |«      }t        dd|¬«      }|j	                  |«      }t        ||«       y )Nçš™™™™™ñ?r   ç333333ó?çÍÌÌÌÌÌô?çffffffö?ç      ø?)r²   rþ   r   r²   )rÿ   r²   r   r²   )r   r   r²   r²   )r  r  r   r²   r²   rG   )r2   rê   ró   )rN   rq   rQ   r   rR   r   )rü   ró   r<   r=   rA   rB   s         r)   Útest_imputation_constant_floatr  ²  sÙ   € ô 	�‰ä�V‰V�S˜!œRŸV™VÐ$Ø”"—&‘&˜#œrŸv™vÐ&Ø�”2—6‘6œ2Ÿ6™6Ð"Ø�#�qœ"Ÿ&™&Ð!ð		
ó	€Aô �X‰XÚ	Ò-ª~Ò?PÐQó€Fñ Øš˜3˜B˜3˜‘ˆá˜!Ó€Aá˜vÓ&€FäØ¨Ð@Sô€Gð ×#Ñ# AÓ&€Gä  ¨&Õ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        ¬
«      }|s|d d …d d…f   }t        | dd|¬«      }|j	                  |«      }t        ||«       y )Nrg   rh   ri   rj   rÀ   r/   rÃ   rÄ   rÜ   rk   )Úmissingrg   rh   r  )ri   r  rj   r  )rÀ   r/   r  r  )rÃ   rÄ   rÜ   r  r²   rG   r  rú   )rN   rq   rr   r   rR   r   )rÔ   ró   r<   r=   rA   rB   s         r)   Útest_imputation_constant_objectr  Ñ  sº   € ô 	�‰à�S˜#˜vÐ&Ø�&˜#˜vÐ&Ø�#�v˜vÐ&Ø�#�s˜FÐ#ð		
ô ô	€Aô �X‰Xâ,Ú,Ú,Ú&ð		
ô ô€Fñ Øš˜3˜B˜3˜‘ˆäØØØØ/ô	€Gð ×#Ñ# AÓ&€Gä�w Õ'r+   c                 ó:  — t        j                  d«      }t        j                  d«      }|j	                  || ¬«      }t        j                  g d¢g d¢g d¢g d¢gt        ¬«      }|s|d d …d d…f   }t        d	|¬
«      }|j                  |«      }t        ||«       y )Nre   rÛ   rk   )rñ   rÜ   r'   rñ   )rg   rñ   r(   rñ   )rg   r©   rñ   rñ   )rh   r©   r'   rñ   r²   rG   ©r2   ró   rÝ   )r%   ró   ru   r/   rá   r=   rA   rB   s           r)   Útest_imputation_constant_pandasr	  ö  s›   € ô 
×	Ñ	˜XÓ	&€Bä
�‰ÐFÓG€Aà	�‰�Q˜eˆÓ	$€Bä�X‰Xâ8Ú8Ú8Ú,ð		
ô ô€Fñ Øš˜3˜B˜3˜‘ˆäØÐ1Dô€Gð ×#Ñ# BÓ'€Gä�w Õ'r+   r<   rl   rK   c                 ó   — t        «       j                  | «      }|j                  dk(  sJ ‚t        «       }|j                  dgdgg«       |j                  dk(  sJ ‚|j                  dgt        j                  gg«       |j                  dk(  sJ ‚y )Nr   rl   rK   )r   r5   Ún_iter_rN   rQ   )r<   rA   s     r)   Ú"test_iterative_imputer_one_featurer    s�   € ô Ó ×$Ñ$ QÓ'€GØ�?‰?˜aÒÐÐÜÓ €GØ‡K�K�!��q�c�
ÔØ�?‰?˜aÒÐÐØ‡K�K�!�”r—v‘v�h�Ô Ø�?‰?˜aÒÐÑr+   c                  ó  — t        ddd¬«      } | j                  d   }t        dt        |¬«      fdt	        j
                  d¬«      fg«      }d	g d
¢i}t        ddd¬«      j                  «       }t        ||«      }|j                  | |«       y )Néd   çš™™™™™¹?)Údensityr   rA   ©r1   r   ©Úrandom_stateÚimputer__strategyrW   rl   )	r   Údatar   r   r   ÚDecisionTreeRegressorr;   r   r5   )r<   r1   ÚpipelineÚ
parametersÚYÚgss         r)   Ú$test_imputation_pipeline_grid_searchr     s‰   € ä˜c 3°Ô5€AØ—V‘V˜A‘Y€Näàœ°^ÔDÐEØ”T×/Ñ/¸QÔ?Ð@ð	
ó€Hð &Ò'JÐK€Jä˜c 1¨dÔ3×;Ñ;Ó=€AÜ	�h 
Ó	+€BØ‡F�Fˆ1ˆa…Lr+   c                  óâ  — t        dddd¬«      } | j                  «       j                  «       }t        ddd¬«      }|j	                  |«      j                  |«      }d|d	<   t        j                  ||k(  «      rJ ‚| j                  «       }t        |j                  d   dd¬«      }|j	                  |«      j                  |«      }d|j                  d<   t        j                  |j                  |j                  k(  «      rJ ‚| j                  «       j                  «       }t        ddd
¬«      }|j	                  |«      j                  |«      }d|d	<   t        ||«       | j                  «       j                  «       }t        |j                  d   dd
¬«      }|j	                  |«      j                  |«      }d|j                  d<   t        |j                  |j                  «       | j                  «       }t        |j                  d   dd
¬«      }|j	                  |«      j                  |«      }d|j                  d<   t        j                  |j                  |j                  k(  «      rJ ‚y )Nr[   g      è?r   ©r  r  rD   T)r1   r2   r7   r²   rå   F)r   r7   r;   r   r5   r6   rN   r    r  r   Útocsc)ÚX_origr<   rA   ÚXts       r)   Útest_imputation_copyr!  3  sï  € ä" 1 a°ÀAÔF€Fð 	�‰‹×ÑÓ€AÜ¨1°vÀDÔI€GØ	�‰�Q‹×	!Ñ	! !Ó	$€BØ€B€t�HÜ�v‰v�a˜2‘gŒÐÐð 	�‰‹€AÜ¨1¯6©6°!©9¸vÈDÔQ€GØ	�‰�Q‹×	!Ñ	! !Ó	$€BØ€B‡G�GˆA�JÜ�v‰v�a—f‘f §¡Ñ'Ô(Ð(Ð(ð 	�‰‹×ÑÓ€AÜ¨1°vÀEÔJ€GØ	�‰�Q‹×	!Ñ	! !Ó	$€BØ€B€t�HÜ˜a Ô$ð 	�‰‹×ÑÓ€AÜ¨1¯6©6°!©9¸vÈEÔR€GØ	�‰�Q‹×	!Ñ	! !Ó	$€BØ€B‡G�GˆA�JÜ˜aŸf™f b§g¡gÔ.ð 	�‰‹€AÜ¨1¯6©6°!©9¸vÈEÔR€GØ	�‰�Q‹×	!Ñ	! !Ó	$€BØ€B‡G�GˆA�JÜ�v‰v�a—f‘f §¡Ñ'Ô(Ð(Ð(Ð(r+   c                  óh  — t         j                  j                  d«      } d}d}t        ||d| ¬«      j	                  «       }|dk(  }t         j
                  ||<   t        d¬«      }|j                  |«      }t        ||j                  j                  |«      «       t        d¬«      j                  |«      }t        j                  |j                  |«      |j                  j                  |«      k(  «      rJ ‚d|_        t        |j                  |«      |j                  j                  |«      «       y )Nr   r  rJ   r  r  )Úmax_iterr[   )rN   rO   r•   r   r;   rQ   r   rR   r   Úinitial_imputer_r6   r5   r    r  )r¡   Únrj   r<   Úmissing_flagrA   rT   s          r)   Ú!test_iterative_imputer_zero_itersr'  ^  sü   € Ü
�)‰)×
Ñ
 Ó
"€Cà€AØ
€AÜ˜a ¨D¸sÔC×KÑKÓM€AØ˜‘6€LÜ—f‘f€A€l�Oä¨Ô*€GØ×%Ñ% aÓ(€Iä�I˜w×7Ñ7×AÑAÀ!ÓDÔEô ¨Ô*×.Ñ.¨qÓ1€Gä�v‰v�g×'Ñ'¨Ó*¨g×.FÑ.F×.PÑ.PÐQRÓ.SÑSÔTÐTÐTà€G„Oä�G×%Ñ% aÓ(¨'×*BÑ*B×*LÑ*LÈQÓ*OÕPr+   c                  óD  — t         j                  j                  d«      } d}d}t        ||d| ¬«      j	                  «       }t        ddd¬«      }|j                  |«       |j                  |«       t        ddd¬«      }|j                  |«       |j                  |«       y )	Nr   r  rZ   r  r  rl   )r1   r#  ÚverboserK   )rN   rO   r•   r   r;   r   r5   r6   )r¡   r%  rj   r<   rA   s        r)   Útest_iterative_imputer_verboser*  v  s‡   € Ü
�)‰)×
Ñ
 Ó
"€Cà€AØ	€AÜ˜a ¨D¸sÔC×KÑKÓM€AÜ¨a¸!ÀQÔG€GØ‡K�K�„NØ×Ñ�aÔÜ¨a¸!ÀQÔG€GØ‡K�K�„NØ×Ñ�aÕr+   c                  óÀ   — d} d}t        j                  | |f«      }t        dd¬«      }|j                  |«      }t	        ||j
                  j                  |«      «       y )Nr  rZ   r   rl   )r1   r#  )rN   r–   r   rR   r   r$  r6   )r%  rj   r<   rA   rT   s        r)   Ú"test_iterative_imputer_all_missingr,  „  sU   € Ø€AØ	€AÜ
�‰�!�Q�Ó€AÜ¨a¸!Ô<€GØ×%Ñ% aÓ(€IÜ�I˜w×7Ñ7×AÑAÀ!ÓDÕEr+   Úimputation_order)rO   ÚromanÚ	ascendingÚ
descendingÚarabicc                 óä  — t         j                  j                  d«      }d}d}d}t        ||d|¬«      j	                  «       }d|d d …df<   t        d|dd	d
ddd| |¬«
      }|j                  |«       |j                  D �cg c]  }|j                  ‘Œ }}t        |«      |j                  z  |j                  k(  sJ ‚| dk(  r5t        j                  |d |dz
   t        j                  d|«      k(  «      sJ ‚y | dk(  r9t        j                  |d |dz
   t        j                  |dz
  dd«      k(  «      sJ ‚y | dk(  r|d |dz
   }	||dz
  d  }
|	|
k7  sJ ‚y d| v rt        |«      ||dz
  z  k(  sJ ‚y y c c}w )Nr   r  rJ   rK   r  r  rl   r[   FT)
r1   r#  Ún_nearest_featuresÚsample_posteriorÚskip_completeÚ	min_valueÚ	max_valuer)  r-  r  r.  r1  r²   rO   Úending)rN   rO   r•   r   r;   r   rR   Úimputation_sequence_Úfeat_idxr�   r  Ún_features_with_missing_r    r—   )r-  r¡   r%  rj   r#  r<   rA   rÜ   Úordered_idxÚordered_idx_round_1Úordered_idx_round_2s              r)   Ú'test_iterative_imputer_imputation_orderr?  �  sœ  € ô �)‰)×
Ñ
 Ó
"€CØ€AØ
€AØ€HÜ˜a ¨D¸sÔC×KÑKÓM€AØ€A‚aˆ€d�GäØØØØØØØØØ)Øô€Gð ×Ñ˜!ÔØ'.×'CÑ'CÖD !�1—:“:ÐD€KÐDäˆ{Ó˜wŸ™Ñ.°'×2RÑ2RÒRÐRÐRà˜7Ò"Ü�v‰v�k ' A¨¡EÐ*¬b¯i©i¸¸1«oÑ=Ô>Ð>Ñ>Ø	˜XÒ	%Ü�v‰v�k ' A¨¡EÐ*¬b¯i©i¸¸A¹¸qÀ"Ó.EÑEÔFÐFÑFØ	˜XÒ	%Ø)¨'¨A°©EÐ2ÐØ)¨!¨a©%¨'Ð2ÐØ"Ð&9Ò9Ð9Ñ9Ø	Ð%Ñ	%Ü�;Ó 8¨q°1©uÑ#5Ò5Ð5Ñ5ð 
&ùò Es   Â E-Ú	estimatorc                 óæ  — t         j                  j                  d«      }d}d}t        ||d|¬«      j	                  «       }t        dd| |¬«      }|j                  |«       g }|j                  D ]^  }| �t        | «      nt        t        «       «      }t        |j                  |«      sJ ‚|j                  t        |j                  «      «       Œ` t        t        |«      «      t        |«      k(  sJ ‚y )Nr   r  rJ   r  r  rl   )r1   r#  r@  r  )rN   rO   r•   r   r;   r   rR   r9  rí   r   Ú
isinstancer@  ÚappendÚidr�   Úset)	r@  r¡   r%  rj   r<   rA   ÚhashesÚtripletÚexpected_types	            r)   Ú!test_iterative_imputer_estimatorsrI  µ  sà   € ô �)‰)×
Ñ
 Ó
"€Cà€AØ
€AÜ˜a ¨D¸sÔC×KÑKÓM€AäØ 1°	Èô€Gð ×Ñ˜!Ôð €FØ×/Ñ/ò -ˆà(Ð4ŒD�ŒO¼$¼}»Ó:Oð 	ô ˜'×+Ñ+¨]Ô;Ð;Ð;Ø�‰”b˜×*Ñ*Ó+Õ,ð-ô Œs�6‹{Óœs 6›{Ò*Ð*Ñ*r+   c                  óŠ  — t         j                  j                  d«      } d}d}t        ||d| ¬«      j	                  «       }t        dddd| ¬«      }|j                  |«      }t        t        j                  ||dk(     «      d«       t        t        j                  ||dk(     «      d«       t        ||dk7     ||dk7     «       y )	Nr   r  rJ   r  r  rl   çš™™™™™É?)r1   r#  r6  r7  r  ©
rN   rO   r•   r   r;   r   rR   r   Úminrš   ©r¡   r%  rj   r<   rA   r   s         r)   Útest_iterative_imputer_cliprO  Ñ  s±   € Ü
�)‰)×
Ñ
 Ó
"€CØ€AØ
€AÜ˜a ¨D¸sÔC×KÑKÓM€AäØ 1°¸sÐQTô€Gð 
×	Ñ	˜qÓ	!€BÜ”B—F‘F˜2˜a 1™f™:Ó&¨Ô,Ü”B—F‘F˜2˜a 1™f™:Ó&¨Ô,Ü�B�q˜A‘v‘J  ! q¡&¡	Õ*r+   c                  ó¤  — t         j                  j                  d«      } d}d}t        ||d| ¬«      j	                  «       }d|d d …df<   t        dddd	dd
dd| ¬«	      }|j                  |«      }t        t        j                  ||dk(     «      d«       t        t        j                  ||dk(     «      d
«       t        ||dk7     ||dk7     «       y )Nr   r  rJ   r  r  rl   rK   r[   TrK  rO   )	r1   r#  r3  r4  r6  r7  r)  r-  r  rL  rN  s         r)   Ú%test_iterative_imputer_clip_truncnormrQ  á  sÍ   € Ü
�)‰)×
Ñ
 Ó
"€CØ€AØ
€AÜ˜a ¨D¸sÔC×KÑKÓM€AØ€A‚aˆ€d�GäØØØØØØØØ!Øô
€Gð 
×	Ñ	˜qÓ	!€BÜ”B—F‘F˜2˜a 1™f™:Ó&¨Ô,Ü”B—F‘F˜2˜a 1™f™:Ó&¨Ô,Ü�B�q˜A‘v‘J  ! q¡&¡	Õ*r+   c                  ój  — t         j                  j                  d«      } | j                  d¬«      }t         j                  |d   d<   t        ddd| ¬«      }|j                  |«       t        j                  t        d«      D �cg c]  }|j                  |«      d   d   ‘Œ c}«      }t        |dk\  «      sJ ‚t        |dk  «      sJ ‚|j                  «       |j                  «       }}t        ||z
  |z  d	«      \  }}|dk(  r|d
z  }t        ||z
  |z  d	«      \  }}|dk  s|dkD  sJ d«       ‚y y c c}w )Né*   )r[   r[   )r   r   r¸   T)r6  r7  r4  r  r  Únormgê-�™—q=rK  r  z&The posterior does appear to be normal)rN   rO   r•   ÚnormalrQ   r   rR   rq   r™   r6   r    rD   Ústdr   )	r¡   r<   rA   Ú_ÚimputationsÚmuÚsigmaÚks_statisticÚp_values	            r)   Ú1test_iterative_imputer_truncated_normal_posteriorr]  ù  s:  € ô �)‰)×
Ñ
 Ó
#€Cà�
‰
˜ˆ
Ó€AÜ�f‰f€A€a�Dˆ�GäØ˜s°TÈô€Gð ×Ñ˜!Ôä—(‘(ÄÀcÃ
ÖK¸1˜G×-Ñ-¨aÓ0°Ñ3°AÓ6ÒKÓL€Käˆ{˜aÑÔ Ð Ð Üˆ{˜cÑ!Ô"Ð"Ð"à× Ñ Ó" K§O¡OÓ$5ˆ€BÜ" K°"Ñ$4¸Ñ#=¸vÓFÑ€L�'Ø�‚zØ�‰ˆÜ" K°"Ñ$4¸Ñ#=¸vÓFÑ€L�'ð ˜#Ò ¨3¢ÐXÐ0XÓXÐ. Ðùò Ls   ÂD0c                 ó¢  — t         j                  j                  d«      }d}d}|j                  dd||f¬«      }|j                  dd||f¬«      }d|d d …df<   d|d<   t	        dd| |¬«      j                  |«      }t        d| ¬	«      j                  |«      }t        |j                  |«      d d …df   |j                  |«      d d …df   «       y )
Nr   r  rJ   rZ   )ÚlowÚhighr   rl   rå   )r1   r#  rM   r  r0   )	rN   rO   r•   Úrandintr   r5   r   r   r6   )r2   r¡   r%  rj   ÚX_trainÚX_testrA   Úinitial_imputers           r)   Ú+test_iterative_imputer_missing_at_transformre    sÕ   € ä
�)‰)×
Ñ
 Ó
"€CØ€AØ
€AØ�k‰k˜a a¨q°!¨fˆkÓ5€GØ�[‰[˜Q Q¨a°¨Vˆ[Ó4€Fà€GŠAˆqˆD�MØ€Fˆ4�LäØ 1°xÈcôç	�cˆ'ƒlð ô $°1¸xÔH×LÑLÈWÓU€Oô Ø×Ñ˜&Ó!¢! Q $Ñ'¨×)BÑ)BÀ6Ó)JÊ1ÈaÈ4Ñ)Põr+   c                  óä  — t         j                  j                  d«      } t         j                  j                  d«      }d}d}t        ||d| ¬«      j	                  «       }t        ddd| ¬«      }|j                  |«       |j                  |«      }|j                  |«      }t        j                  |«      t        j                  t        j                  |«      «      k7  sJ ‚t        ddd	d d
| ¬«      }t        ddd	d d
|¬«      }	|j                  |«       |	j                  |«       |j                  |«      }
|j                  |«      }|	j                  |«      }t        |
|«       t        |
|«       y )Nr   rl   r  rJ   r  r  T)r1   r#  r4  r  Fr/  )r1   r#  r4  r3  r-  r  )rN   rO   r•   r   r;   r   r5   r6   rD   r`   Úapproxr   )Úrng1Úrng2r%  rj   r<   rA   Ú
X_fitted_1Ú
X_fitted_2Úimputer1Úimputer2ÚX_fitted_1aÚX_fitted_1bs               r)   Ú.test_iterative_imputer_transform_stochasticityrp  1  sR  € Ü�9‰9× Ñ  Ó#€DÜ�9‰9× Ñ  Ó#€DØ€AØ
€AÜ˜a ¨D¸tÔD×LÑLÓN€Aô Ø 1°tÈ$ô€Gð ‡K�K�„Nà×"Ñ" 1Ó%€JØ×"Ñ" 1Ó%€Jô �7‰7�:Ó¤&§-¡-´·±¸
Ó0CÓ"DÒDÐDÐDô
  ØØØØØ$Øô€Hô  ØØØØØ$Øô€Hð ‡L�L�„OØ‡L�L�„Oà×$Ñ$ QÓ'€KØ×$Ñ$ QÓ'€KØ×#Ñ# AÓ&€Jä�K Ô-Ü�K Õ,r+   c                  ól  — t         j                  j                  d«      } | j                  dd«      }t         j                  |d d …df<   t        d| ¬«      }t        d| ¬«      }|j                  |«      j                  |«      }|j                  |«      }t        |d d …dd …f   |«       t        ||«       y )Nr   r  rJ   )r#  r  rl   )
rN   rO   r•   ÚrandrQ   r   r5   r6   rR   r   )r¡   r<   Úm1Úm2Úpred1Úpred2s         r)   Ú!test_iterative_imputer_no_missingrw  c  s•   € Ü
�)‰)×
Ñ
 Ó
"€CØ�‰��cÓ€AÜ�f‰f€A‚aˆ€d�GÜ	 2°CÔ	8€BÜ	 2°CÔ	8€BØ�F‰F�1‹I×Ñ Ó"€EØ×Ñ˜QÓ€Eä�A’a˜™�e‘H˜eÔ$ä�E˜5Õ!r+   c                  ó„  — t         j                  j                  d«      } d}| j                  |d«      }| j                  d|«      }t        j                  ||«      }| j                  ||«      dk  }|j                  «       }t         j                  ||<   t        dd| ¬«      }|j                  |«      }t        ||d¬«       y )	Nr   é2   rl   r¸   r[   ©r#  r)  r  g{®Gáz”?©Úatol)
rN   rO   r•   rr  Údotr7   rQ   r   rR   r   )	r¡   rj   ÚAÚBr<   Únan_maskÚ	X_missingrA   ÚX_filleds	            r)   Útest_iterative_imputer_rank_onerƒ  q  sŸ   € Ü
�)‰)×
Ñ
 Ó
"€CØ
€AØ�‰��A‹€AØ�‰��A‹€AÜ
�‰ˆq�!‹€AØ�x‰x˜˜1‹~ Ñ#€HØ—‘“€IÜŸ&™&€IˆhÑä¨°1À3ÔG€GØ×$Ñ$ YÓ/€HÜ�H˜a dÖ+r+   ÚrankrZ   r[   c                 óÐ  — t         j                  j                  d«      }d}d}|j                  || «      }|j                  | |«      }t        j                  ||«      }|j                  ||«      dk  }|j                  «       }t         j                  ||<   |dz  }|d | }	||d  }
||d  }t        ddd|¬«      j                  |	«      }|j                  |«      }t        |
|d	¬
«       y )Nr   éF   r¸   rK   r[   r0  rl   )r#  r-  r)  r  r  r{  )rN   rO   r•   rr  r}  r7   rQ   r   r5   r6   r   )r„  r¡   r%  rj   r~  r  r‚  r€  r�  rb  ÚX_test_filledrc  rA   Ú
X_test_ests                 r)   Ú)test_iterative_imputer_transform_recoveryr‰  €  så   € ä
�)‰)×
Ñ
 Ó
"€CØ
€AØ
€AØ�‰��DÓ€AØ�‰��qÓ€AÜ�v‰v�a˜‹|€HØ�x‰x˜˜1‹~ Ñ#€HØ—‘“€IÜŸ&™&€IˆhÑð 	
ˆQ‰€AØ˜˜ˆm€GØ˜Q˜R�L€MØ�q�rˆ]€FäØ \¸1È3ôç	�cˆ'ƒlð ð ×"Ñ" 6Ó*€JÜ�M :°CÖ8r+   c            	      óx  — t         j                  j                  d«      } d}d}| j                  ||«      }| j                  ||«      }t        j                  |j
                  «      }t        |«      D ]=  }t        |«      D ]-  }|d d …||z   |z  fxx   |d d …|f   |d d …|f   z   dz  z  cc<   Œ/ Œ? | j                  ||«      dk  }|j                  «       }	t         j                  |	|<   |dz  }|	d | }
||d  }|	|d  }t        dd| ¬«      j                  |
«      }|j                  |«      }t        ||dd	¬
«       y )Nr   r  rJ   rK   g      Ð?rl   rz  gü©ñÒMbP?ç{®Gáz„?)Úrtolr|  )rN   rO   r•   rP   r–   rS   r™   rr  r7   rQ   r   r5   r6   r   )r¡   r%  rj   r~  r  r‚  rÜ   r©   r€  r�  rb  r‡  rc  rA   rˆ  s                  r)   Ú&test_iterative_imputer_additive_matrixr�  ™  sB  € Ü
�)‰)×
Ñ
 Ó
"€CØ€AØ
€AØ�	‰	�!�Q‹€AØ�	‰	�!�Q‹€AÜ�x‰x˜Ÿ™Ó €HÜ�1‹Xò @ˆÜ�q“ò 	@ˆAØ’Q˜˜Q™ !™�^Ó$¨ª1¨a¨4©°1²Q¸°T±7Ñ):¸aÑ(?Ñ?Ô$ñ	@ð@ð �x‰x˜˜1‹~ Ñ$€HØ—‘“€IÜŸ&™&€IˆhÑð 	
ˆQ‰€AØ˜˜ˆm€GØ˜Q˜R�L€MØ�q�rˆ]€Fä¨°AÀCÔH×LÑLÈWÓU€GØ×"Ñ" 6Ó*€JÜ�M :°D¸tÖDr+   c                  ó¦  — t         j                  j                  d«      } d}d}| j                  |d«      }| j                  d|«      }t        j                  ||«      }| j                  ||«      dk  }|j                  «       }t         j                  ||<   t        dddd| ¬	«      }|j                  |«      }	t        |j                  «      ||j                  z  k(  sJ ‚t        |j                  dd| ¬
«      }|j                  |«      }
t        |	|
d¬«       t        dddd| ¬	«      }|j                  |«       |j                  |j                  k(  sJ ‚y )Nr   ry  r[   rl   r¸   r  r‹  F)r#  Útolr4  r)  r  )r#  r4  r)  r  gH¯¼šò×z>r{  )rN   rO   r•   rr  r}  r7   rQ   r   rR   r�   r9  r  r   r5   r#  )r¡   r%  rj   r~  r  r<   r€  r�  rA   ÚX_filled_100ÚX_filled_earlys              r)   Ú%test_iterative_imputer_early_stoppingr’  ³  s5  € Ü
�)‰)×
Ñ
 Ó
"€CØ
€AØ	€AØ�‰��A‹€AØ�‰��A‹€AÜ
�‰ˆq�!‹€AØ�x‰x˜˜1‹~ Ñ#€HØ—‘“€IÜŸ&™&€IˆhÑäØ˜$°ÀÐPSô€Gð ×(Ñ(¨Ó3€LÜˆw×+Ñ+Ó,°°G·O±OÑ0CÒCÐCÐCäØ—‘°5À!ÐRUô€Gð ×*Ñ*¨9Ó5€NÜ�L .°tÕ<äØ˜!¨e¸QÈSô€Gð ‡K�K�	ÔØ�?‰?˜g×.Ñ.Ò.Ð.Ñ.r+   c                  ó\  — t        d¬«      \  } }| j                  \  }}d| d d …df<   t        j                  j	                  d«      }d}t        |«      D ]J  }|j                  t        j                  |«      t        ||z  «      d¬«      }t        j                  | ||f<   ŒL t        d	d¬
«      }t        j                  «       5  t        j                  dt        «       |j                  | |«      }	d d d «       t        j                   t        j"                  	«      «      rJ ‚y # 1 sw Y   Œ4xY w)NT)Ú
return_X_yrl   rZ   r   g333333Ã?F)r   Úreplacer[   )r3  r4  Úerror)r   rS   rN   rO   r•   r™   Úchoicer—   ÚintrQ   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningrR   rŸ   rž   )
r<   r(   Ú	n_samplesÚ
n_featuresr¡   Úmissing_rateÚfeatÚ
sample_idxrA   ÚX_fills
             r)   Ú$test_iterative_imputer_catch_warningr£  Ñ  s  € ô  DÔ)�D€A€qØŸG™GÑ€Iˆzð €A‚aˆ€d�Gô �)‰)×
Ñ
 Ó
"€CØ€LÜ�jÓ!ò %ˆØ—Z‘ZÜ�I‰I�iÓ ¤s¨9°|Ñ+CÓ'DÈeð  ó 
ˆ
ô !Ÿf™fˆˆ*�dÐ
Òð	%ô °!ÀdÔK€GÜ	×	 Ñ	 Ó	"ñ -Ü×Ñ˜g¤~Ô6Ø×&Ñ& q¨!Ó,ˆ÷-ô �v‰v”b—h‘h˜vÓ&Ô'Ð'Ð'Ð'÷-ð -ús   Ã-D"Ä"D+z$min_value, max_value, correct_outputr  )r°   r[   rJ   )r  éÈ   i,  r°   rJ   r¤  )ÚscalarszNone-defaultÚinfÚlistszlists-with-inf)Úidsc                 óN  — t         j                  j                  d«      j                  dd«      }t	        | |¬«      }|j                  |«       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                  «       y )Nr   rJ   rZ   ©r6  r7  rl   )rN   rO   r•   rP   r   r5   rB  Ú
_min_valueÚndarrayÚ
_max_valuerS   r   )r6  r7  Úcorrect_outputr<   rA   s        r)   Ú)test_iterative_imputer_min_max_array_liker¯  ê  sò   € ô$ 	�	‰	×Ñ˜aÓ ×&Ñ& r¨1Ó-€AÜ¨¸iÔH€GØ‡K�K�„Nä�g×(Ñ(¬"¯*©*Ô5¼*Ø×ÑœBŸJ™Jô;ð ð ð ×Ñ×$Ñ$ QÑ'¨1¯7©7°1©:Ò5Ø×Ñ× Ñ  Ñ# q§w¡w¨q¡zÒ1ðð ô �N 1¢a 4Ñ(¨'×*<Ñ*<Ô=Ü�N 1¢a 4Ñ(¨'×*<Ñ*<Õ=r+   zmin_value, max_value, err_msg)r  r   úmin_value >= max_value.r°  )r  r¤  r   z_value' should be of shape)r°   r[   r[   c                 óÞ   — t         j                  j                  d«      }t        | |¬«      }t        j                  t
        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)N©rJ   rZ   rª  r]   )rN   rO   r   r`   rz   r{   r5   )r6  r7  r3   r<   rA   s        r)   Ú*test_iterative_imputer_catch_min_max_errorr³    sR   € ô 	�	‰	×Ñ˜Ó!€AÜ¨¸iÔH€GÜ	�‰”z¨Ô	1ñ Ø�‰�AŒ÷÷ ñ ús   ÁA#Á#A,zmin_max_1, min_max_2iöÿÿÿrm   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¬	«      }|j	                  |«      j                  |«      }|j	                  |«      j                  |«      }t        |d d …df   |d d …df   «       y )
NrK   rl   rJ   rÒ   rZ   rm   r[   r   )r6  r7  r  )rN   rq   rQ   r   r5   r6   r   )Ú	min_max_1Ú	min_max_2rb  rc  rl  rm  ÚX_test_imputed1ÚX_test_imputed2s           r)   Ú4test_iterative_imputer_min_max_array_like_imputationr¹    s.  € ô �h‰hä�V‰V�Q˜˜1ÐØ”—‘œŸ™ Ð#Ø�”2—6‘6˜1ÐÜ�V‰V�Q˜œ2Ÿ6™6Ð"ð		
ó€Gô �X‰XÜ
�&‰&�!”R—V‘V˜QÐ	 ! Q¬¯©´·±Ð!7¼"¿&¹&À!ÀRÈÐ9KÐLó€Fô  Ø˜A‘,¨)°A©,ÀQô€Hô  Ø˜A‘,¨)°A©,ÀQô€Hð —l‘l 7Ó+×5Ñ5°fÓ=€OØ—l‘l 7Ó+×5Ñ5°fÓ=€OÜ�O¢A q DÑ)¨?º1¸a¸4Ñ+@ÕAr+   r5  c                 ó
  — t         j                  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| |¬«      }|j                  |«      j                  |«      }| r.t        |d d …df   t        j                  |d d …df   «      «       y t        |d d …df   g d¢d¬«       y )Nr   )r[   rK   rK   rl   )rJ   rl   rK   rÒ   )rZ   rl   rl   rl   )rù   rm   rK   rK   rK   rm   r[   rl   rJ   rD   )rM   r5  r  )é   rÒ   é   g-Cëâ6?)rŒ  )
rN   rO   r•   rq   rQ   r   r5   r6   r   rD   )r5  r¡   rb  rc  rA   rˆ  s         r)   Ú'test_iterative_imputer_skip_non_missingr½  :  sÓ   € ô
 �)‰)×
Ñ
 Ó
"€CÜ�h‰hš¢m²\Â<ÐPÓQ€GÜ�X‰XœŸ™  1 aÐ(¬2¯6©6°1°a¸Ð*;¼b¿f¹fÀaÈÈQÐ=OÐPÓQ€FÜØ¨}È3ô€Gð —‘˜WÓ%×/Ñ/°Ó7€JÙä˜
¢1 a 4Ñ(¬"¯'©'°'º!¸Q¸$±-Ó*@ÕAä˜
¢1 a 4Ñ(ª+¸DÖAr+   Ú
rs_imputer)ÚseedÚrs_estimatorc                 ó°   —  G d„ d«      } ||¬«      }t        | ¬«      }t        j                  d«      }|j                  |«       |j                  |k(  sJ ‚y )Nc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)úCtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimatorc                 ó   — || _         y r$   r  )Úselfr  s     r)   Ú__init__zLtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.__init__Q  s
   € Ø ,ˆDÕr+   c                 ó   — | S r$   © )rÅ  r„   Úkgardss      r)   r5   zGtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.fitT  s   € ØˆKr+   c                 óF   — t        j                  |j                  d   «      S )Nr   )rN   r–   rS   )rÅ  r<   s     r)   ÚpredictzKtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.predictW  s   € Ü—8‘8˜AŸG™G A™JÓ'Ð'r+   N)Ú__name__Ú
__module__Ú__qualname__rÆ  r5   rË  rÈ  r+   r)   ÚZeroEstimatorrÃ  P  s   „ ò	-ò	ó	(r+   rÏ  r  r²  )r   rN   r–   r5   r  )r¾  rÀ  rÏ  r@  rA   rb  s         r)   Ú,test_iterative_imputer_dont_set_random_staterÐ  M  sP   € ÷(ñ (ñ ¨<Ô8€IÜ¨JÔ7€GÜ�h‰h�wÓ€GØ‡K�K�ÔØ×!Ñ! \Ò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 fitrg   rh   ri   rk   z1MissingIndicator does not support data with dtypec                 óà   — t        d¬«      } |j                  di |¤Ž t        j                  t        |¬«      5  |j                  | «      j                  |«       d d d «       y # 1 sw Y   y xY w)Nr²   r  r]   rÈ  )r   Ú
set_paramsr`   rz   r{   r5   r6   )ÚX_fitrB   ÚparamsÚmsg_errÚ	indicators        r)   Útest_missing_indicator_errorrÚ  a  s[   € ô$ !°Ô3€IØ€I×ÑÑ"˜6Ò"Ü	�‰”z¨Ô	1ñ 0Ø�‰�eÓ×&Ñ& wÔ/÷0÷ 0ñ 0ús   º!A$Á$A-c                  óz  — dt         j                  ft         j                  t         j                  fdt         j                  fg} t         j                  gt
        z   t        z   t        z   t        z   t        z   }t        || «      D ���cg c]$  \  }\  }}|dk(  r|t         j                  us|||f‘Œ& c}}}S c c}}}w )Nr   r²   )rN   Úint32rQ   Úfloat64rq   r   r    r   r!   r   r   )Úmissing_values_dtypesÚ	arr_typesÚarr_typer1   r%   s        r)   Ú!_generate_missing_indicator_casesrá  y  s¿   € Ø¤§¡˜]¬R¯V©V´R·Z±ZÐ,@À2ÄrÇxÁxÀ.ÐQÐä	�‰ˆ
Ü
ñ	ä
ñ	ô ñ	ô ñ		ô
 ñ	ð ô 29ØÐ,ó2
÷ð á-ˆHÑ-�~ uð  !Ò#¨¼¿¹Ñ(@ð	 
�> 5Ò)ôð ùô s   Â)B6zarr_type, missing_values, dtypez,param_features, n_features, features_indices©r   rl   rK   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«      }	 ||«      j                  |«      } ||«      j                  |«      }|j                  |«      }|	j                  |«      }	t        | |d¬	«      }
|
j	                  |«      }|
j                  |«      }|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 ‚|
j                  d
¬«       |
j	                  |«      }|
j                  |«      }|j                  t        k(  sJ ‚|j                  t        k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        |j!                  «       |«       t        |j!                  «       |«       y )Nrl   rm   rK   ©rm   r¼  rJ   )rl   rl   r   )r   r   rl   r³   F)r1   rÓ  r   Tr   Úcsc)rN   rq   Úastyper   rR   r6   rS   r   Ú	features_r   r%   ÚboolrB  r¬  rÕ  r9   r;   )r1   rà  r%   Úparam_featuresrž  Úfeatures_indicesrÖ  rB   Ú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ñ  Œ  sN  € ô �H‰H�~ ~°qÐ9¸A¸qÀ.Ð;QÐRÓS€EÜ�h‰h˜¨¸Ð;º[ÐIÓJ€GÜ—X‘Xšyª)Ð4Ó5€NÜ—x‘x¢ªIÐ 6Ó7Ðñ �U‹O×"Ñ" 5Ó)€EÙ�wÓ×&Ñ& uÓ-€GØ#×*Ñ*¨5Ó1€NØ'×.Ñ.¨uÓ5Ðä Ø%°Àuô€Ið ×(Ñ(¨Ó/€JØ×&Ñ& wÓ/€Là×Ñ˜AÑ *Ò,Ð,Ð,Ø×Ñ˜aÑ  JÒ.Ð.Ð.ä�y×*Ñ*Ð,<Ô=Ü�J ªqÐ2BÐ/BÑ CÔDÜ�LÐ"2²1Ð6FÐ3FÑ"GÔHà×ÑœtÒ#Ð#Ð#Ø×Ñ¤Ò%Ð%Ð%Ü�j¤"§*¡*Ô-Ð-Ð-Ü�l¤B§J¡JÔ/Ð/Ð/à×Ñ ÐÔ%Ø!×/Ñ/°Ó6ÐØ#×-Ñ-¨gÓ6Ðà×"Ñ"¤dÒ*Ð*Ð*Ø×$Ñ$¬Ò,Ð,Ð,Ø×#Ñ# uÒ,Ð,Ð,Ø×%Ñ%¨Ò.Ð.Ð.ÜÐ%×-Ñ-Ó/°Ô<ÜÐ'×/Ñ/Ó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  |j                  |«       d d d «       |j                  |«       t        j                  t
        d¬«      5  |j                  |«       d d d «       y # 1 sw Y   ŒPxY w# 1 sw Y   y xY w)	Nr   rl   rm   rK   rä  r  z"Sparse input with missing_values=0r]   )rN   rq   r   r`   rz   r{   rR   r6   )rà  r1   rÖ  rB   ÚX_fit_sparseÚX_trans_sparserÙ  s          r)   Ú5test_missing_indicator_raise_on_sparse_with_missing_0rõ  ¿  sÜ   € ð €NÜ�H‰H�~ ~°qÐ9¸A¸~ÈqÐ;QÐRÓS€EÜ�h‰h˜¨¸Ð;º[ÐIÓJ€Gñ ˜E“?€LÙ˜gÓ&€Nä °Ô?€Iä	�‰”zÐ)MÔ	Nñ .Ø×Ñ Ô-÷.ð ×Ñ˜EÔ"Ü	�‰”zÐ)MÔ	Nñ ,Ø×Ñ˜NÔ+÷,ð ,÷	.ð .ú÷,ð ,ús   Á3CÂ9C ÃCÃ C)Úparam_sparse)TFrÒ  zarr_type, missing_valuesc                 ó–  — t        j                  ||dgd|dgg«      }t        j                  ||dgg d¢g«      } | |«      j                  t         j                  «      } | |«      j                  t         j                  «      }t	        ||¬«      }|j                  |«      }|j                  |«      }|du r#|j                  dk(  sJ ‚|j                  dk(  sJ ‚y |dk(  r>|d	k(  r9t        |t         j                  «      sJ ‚t        |t         j                  «      sJ ‚y |d
u r9t        |t         j                  «      sJ ‚t        |t         j                  «      sJ ‚y t        j                  |«      r#|j                  dk(  sJ ‚|j                  dk(  sJ ‚y t        |t         j                  «      sJ ‚t        |t         j                  «      sJ ‚y )Nrl   rm   rK   rä  )r1   r   Trå  rÒ  r   F)rN   rq   ræ  rÝ  r   rR   r6   r9   rB  r¬  r   r:   )rà  r1   rö  rÖ  rB   rÙ  rí  rî  s           r)   Ú#test_missing_indicator_sparse_paramrø  Ø  s�  € ô" �H‰H�~ ~°qÐ9¸A¸~ÈqÐ;QÐRÓS€EÜ�h‰h˜¨¸Ð;º[ÐIÓJ€GÙ�U‹O×"Ñ"¤2§:¡:Ó.€EÙ�wÓ×&Ñ&¤r§z¡zÓ2€Gä °À|ÔT€IØ×(Ñ(¨Ó/€JØ×&Ñ& wÓ/€Là�tÑØ× Ñ  EÒ)Ð)Ð)Ø×"Ñ" eÒ+Ð+Ñ+Ø	˜Ò	 N°aÒ$7Ü˜*¤b§j¡jÔ1Ð1Ð1Ü˜,¬¯
©
Ô3Ð3Ñ3Ø	˜Ñ	Ü˜*¤b§j¡jÔ1Ð1Ð1Ü˜,¬¯
©
Ô3Ð3Ñ3ä�?‰?˜5Ô!Ø×$Ñ$¨Ò-Ð-Ð-Ø×&Ñ&¨%Ò/Ð/Ñ/ä˜j¬"¯*©*Ô5Ð5Ð5Ü˜l¬B¯J©JÔ7Ð7Ñ7r+   c                  óÌ   — t        j                  g d¢g d¢gt        ¬«      } t        dd¬«      }|j	                  | «      }t        |t        j                  g d¢g d¢g«      «       y )	N©rg   rh   ri   )rh   ri   rg   rk   rg   r    )r1   rÓ  )TFF)FFT)rN   rq   rr   r   rR   r   )r<   rÙ  rB   s      r)   Útest_missing_indicator_stringrû    sM   € Ü
�‰’/¢?Ð3¼6ÔB€AÜ °¸eÔD€IØ×%Ñ% aÓ(€GÜ�w¤§¡Ò*>Ò@TÐ)UÓ VÕWr+   zX, missing_values, X_trans_exp)rh   rh   TF)rh   rh   FT)rã   rã   TF)rã   rã   FTc                 ó€   — t        t        |d¬«      t        |¬«      «      }|j                  | «      }t	        ||«       y )NrF   r0   r  )r   r   r   rR   r   )r<   r1   ÚX_trans_expÚtransrB   s        r)   Ú#test_missing_indicator_with_imputerrÿ    s<   € ô4 Ü ^¸oÔNÜ¨Ô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                  j                  d«      }|j                  dd«      }||d<    | |¬«      }t	        j
                  t        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)NrS  rJ   rå   r  r]   )rN   rO   r•   rP   r`   rz   r{   rR   )r   Úimputer_missing_valuesrñ   r3   r¡   r<   rA   s          r)   Ú(test_inconsistent_dtype_X_missing_valuesr  -  sm   € ô �)‰)×
Ñ
 Ó
#€CØ�	‰	�"�bÓ€AØ€A€d�Gá!Ð1GÔH€Gä	�‰”z¨Ô	1ñ !Ø×Ñ˜aÔ ÷!÷ !ñ !ús   ÁA6Á6A?c                  óž   — t        j                  ddgddgg«      } t        dd¬«      }|j                  | «      }|j                  d   dk(  sJ ‚y )Nrl   rÑ  r²   ©rÓ  r1   r   )rN   rq   r   rR   rS   )r<   Úmir   s      r)   Ú!test_missing_indicator_no_missingr  D  sQ   € ô 	�‰�1�a�&˜1˜a˜&Ð!Ó"€Aä	 >À"Ô	E€BØ	×	Ñ	˜!Ó	€Bà�8‰8�A‰;˜!ÒÐÑr+   c                 ó    —  | g d¢g d¢g d¢g«      }t        dd¬«      }|j                  |«      }|j                  |j                  «       k(  sJ ‚y )Nrâ  )rl   rK   r   )rK   r   rl   r    rl   r  )r   rR   ÚnnzÚsum)rH   r<   r  r   s       r)   Ú/test_missing_indicator_sparse_no_explicit_zerosr  O  sI   € ñ 	’y¢)ªYÐ7Ó8€Aä	 5¸Ô	;€BØ	×	Ñ	˜!Ó	€Bà�6‰6�R—V‘V“XÒÐÑr+   c                 ó†   — t        j                  ddgddgg«      } | «       }|j                  |«       |j                  �J ‚y )Nrl   )rN   rq   r5   Ú
indicator_)r   r<   rA   s      r)   Útest_imputer_without_indicatorr  [  sB   € ä
�‰�1�a�&˜1˜a˜&Ð!Ó"€AÙ!Ó#€GØ‡K�K�„Nà×ÑÐ%Ð%Ñ%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¬«      }|j	                  |«      }t        j                  |«      sJ ‚|j                  |j                  k(  sJ ‚t        |j                  «       |«       y )Nrl   r[   rK   rÁ   rZ   )rl   rK   rÅ   )ç      @rã   ç      @rã   ç        r  )ç       @r  rã   r  rã   r  )g      @r  r  r  r  rã   )rã   r  g      "@r  r  r  T)r1   Úadd_indicator)
rN   rQ   rq   r   rR   r   r:   rS   r   r;   )rà  ÚX_sparser=   rA   rB   s        r)   Ú2test_simple_imputation_add_indicator_sparse_matrixr  d  s¯   € ñ
 œ"Ÿ&™& ! Q˜¨!¬R¯V©V°Q¨¸!¸QÄÇÁ¸ÊÐSÓT€HÜ�X‰Xâ*Ú*Ú*Ú*ð		
ó€Fô ¬2¯6©6ÀÔF€GØ×#Ñ# HÓ-€Gä�?‰?˜7Ô#Ð#Ð#Ø�=‰=˜FŸL™LÒ(Ð(Ð(Ü�G—O‘OÓ% vÕ.r+   zstrategy, expected)rF   rh   )rG   rñ   c                 óÄ   — ddgdt         j                  gg}t        j                  ddgd|ggt        ¬«      }t	        | ¬«      }|j                  |«      }t        ||«       y )Nrg   rh   ri   rk   rL   )rN   rQ   rq   rr   r   rR   r   )r2   Úexpectedr<   r=   rA   rB   s         r)   Ú"test_simple_imputation_string_listr  {  s[   € ð ˆsˆ�cœ2Ÿ6™6�]Ð#€Aä�X‰X˜˜S�z C¨ ?Ð3¼6ÔB€Fä XÔ.€GØ×#Ñ# AÓ&€Gä�w Õ'r+   zorder, idx_orderr/  )rZ   rm   rK   r   rl   r0  )rl   r   rK   rm   rZ   c                 ó  — t         j                  j                  d«      }|j                  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¬«      j                  |«      }|j                  D �cg c]  }|j                  ‘Œ }}||k(  sJ ‚	 d d d «       y c c}w # 1 sw Y   y xY w)NrS  r  r[   ry  rl   é   r   é   rK   rJ   rm   )r#  r-  r  )rN   rO   r•   rr  rQ   r`   ra   r
   r   r5   r9  r:  )ÚorderÚ	idx_orderr¡   r<   Útrsr'   Úidxs          r)   Útest_imputation_orderr"  ‰  sò   € ô �)‰)×
Ñ
 Ó
#€CØ�‰��aÓ€AÜ—‘€A€c€r€cˆ1€f�IÜ—‘€A€c€r€cˆ1€f�IÜ—‘€A€c€r€cˆ1€f�IÜ—‘€A€c€r€cˆ1€f�Iä	�‰Ô(Ó	)ñ  Ü¨¸EÐPQÔR×VÑVØó
ˆð $'×#;Ñ#;Ö<˜aˆq�z‹zÐ<ˆÐ<Ø�iÒÐÑ÷ ð  ùò =÷	 ð  ús   Â',C>ÃC9Ã&	C>Ã9C>Ã>D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¬«      }|j                  |«      }|j	                  |«      }|j                  |«      }|j	                  |«      }	t        ||«       t        |	|«       ||fD ]0  }
|j                  |
«      }|j	                  |«      }t        ||
«       Œ2 y )NrÅ   rZ   r²   ©rm   r²   r[   rm   rÁ   rÒ   rù   r   )r[   rm   rK   rl   rK   rl   rm   r[   )rl   rl   rl   rZ   )rK   rZ   rZ   rm   rD   T)r1   r2   r  )rN   rq   r   rR   Úinverse_transformr6   r   )rñ   ÚX_1ÚX_2ÚX_3ÚX_4rA   Ú	X_1_transÚX_1_inv_transÚ	X_2_transÚX_2_inv_transr<   rB   ÚX_inv_transs                r)   Ú(test_simple_imputation_inverse_transformr/  ž  s˜  € ô �(‰(à�˜q "Ð%ÚØ��= "Ð%Ø��1�mÐ$ð		
ó€Cô �(‰(âØ��= !Ð$Ø�˜q !Ð$Ø��1�mÐ$ð		
ó€Cô �(‰(à�˜q !Ð$Ø˜A˜}¨mÐ<Ø�˜q -Ð0Ø˜A˜}¨aÐ0ð		
ó€Cô �(‰(âØ˜A˜}¨aÐ0ÚØ˜A˜}¨aÐ0ð		
ó€Cô Ø$¨vÀTô€Gð ×%Ñ% cÓ*€IØ×-Ñ-¨iÓ8€Mà×!Ñ! #Ó&€IØ×-Ñ-¨iÓ8€Mä�} cÔ*Ü�} cÔ*à�3ˆZò +ˆØ×'Ñ'¨Ó*ˆØ×/Ñ/°Ó8ˆÜ˜;¨Õ*ñ+r+   c           	      ó,  — t        j                  d| ddgg d¢dd| dgddd| gg«      }t        | d	¬
«      }|j                  |«      }t	        j
                  t        d|j                  › d�¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)NrÅ   rZ   r²   r$  rÁ   rÒ   rù   r   rD   r0   zGot 'add_indicator=ú'r]   )	rN   rq   r   rR   r`   rz   r{   r  r%  )rñ   r&  rA   r*  s       r)   Ú3test_simple_imputation_inverse_transform_exceptionsr2  Ø  s¡   € ä
�(‰(à�˜q "Ð%ÚØ��= "Ð%Ø��1�mÐ$ð		
ó€Cô ¨=À6ÔJ€GØ×%Ñ% cÓ*€IÜ	�‰ÜÐ/°×0EÑ0EÐ/FÀaÐHô
ñ -ð 	×!Ñ! )Ô,÷-÷ -ñ -ús   Á/B
Â
Bz)expected,array,dtype,extra_value,n_repeatÚextra_valuerú  Úmost_frequent_value)r4  r4  Úvaluer6  Úmin_valuevalue)r6  r6  r5  rŽ   ©rl   rK   rZ   )rl   rl   rK   )r  r  rl   )rl   rl   r  c                 óR   — | t        t        j                  ||¬«      ||«      k(  sJ ‚y )Nrk   )r   rN   rq   )r  rq   r%   r3  Ún_repeats        r)   Útest_most_frequentr:  ë  s/   € ð, ”~Ü
�‰�˜eÔ$ k°8óò ð ñ r+   zexpected,array)Nrg   rl   Ú1c                 óZ   — | t        t        j                  |t        ¬«      dd«      k(  sJ ‚y)znCheck the tie breaking behavior of the most frequent strategy.

    Non-regression test for issue #31717.
    rk   Nr   )r   rN   rq   rr   )r  rq   s     r)   Útest_most_frequent_tie_objectr=    s&   € ð" ”~¤b§h¡h¨u¼FÔ&CÀTÈ1ÓMÒMÐMÑMr+   rM   c                 ó<  — t        j                  dt         j                  dgdt         j                  t         j                  gg«      }t        | d¬«      }|j	                  |«      }t        |dd…df   d«       |j                  |«      }t        |dd…df   d«       y)z Check the behaviour of the iterative imputer with different initial strategy
    and keeping empty features (i.e. features containing only missing values).
    rl   rK   rZ   T)rM   ró   Nr   )rN   rq   rQ   r   rR   r   r6   )rM   r<   rA   rT   s       r)   Ú*test_iterative_imputer_keep_empty_featuresr?    s…   € ô 	�‰�1”b—f‘f˜a�. 1¤b§f¡f¬b¯f©fÐ"5Ð6Ó7€AäØ)¸tô€Gð ×%Ñ% aÓ(€IÜ�Iša ˜d‘O QÔ'Ø×!Ñ! !Ó$€IÜ�Iša ˜d‘O QÕ'r+   c                 ót  — t        j                  g d¢g d¢g d¢g d¢g«      }d}t        dd|d| ¬	«      }|j                  |«       | r!t	        |j
                  j                  |«       y
t	        |j
                  j                  d
d |«       t        j                  |j
                  j                  d   «      sJ ‚y
)z<Check that we propagate properly the parameter `fill_value`.rõ   rö   r÷   rø   r  r²   rG   r   )r1   rM   rê   r#  ró   N)rN   rq   r   rR   r   r$  r8   rž   )ró   r<   rê   rA   s       r)   Ú*test_iterative_imputer_constant_fill_valuerA  ,  s¢   € ô 	�‰’.¢.².Â-ÐPÓQ€Aà€JÜØØ#ØØØ/ô€Gð ×Ñ˜!ÔáÜ˜7×3Ñ3×?Ñ?ÀÕLä˜7×3Ñ3×?Ñ?ÀÀÐDÀjÔQÜ�x‰x˜×0Ñ0×<Ñ<¸RÑ@ÔAÐAÑAr+   c            	      óÂ  — t        j                  ddt         j                  t         j                  gddt         j                  dgddt         j                  t         j                  gdd	t         j                  d
gg«      } t         j                   t         j                   t         j                   dg}t         j                  t         j                  t         j                  dg}t	        ||d¬«      j                  | «      }t        j                  | dd¬«      }|j                  |j                  k(  sJ ‚t        j                  |t        j                  |«         «      t        j                  d«      k(  sJ ‚t        j                  |t        j                  |«         «      t        j                  d«      k(  sJ ‚t        j                  ddt         j                  t         j                  gdddt         j                  gddt         j                  t         j                  gdd	d
t         j                  gg«      } t         j                   t         j                   dt         j                   g}t         j                  t         j                  dt         j                  g}t	        ||d¬«      j                  | «      }| dd…dd…f   }|j                  |j                  k(  sJ ‚t        j                  |t        j                  |«         «      t        j                  d«      k(  sJ ‚t        j                  |t        j                  |«         «      t        j                  d«      k(  sJ ‚y)z³Check that we properly apply the empty feature mask to `min_value` and
    `max_value`.

    Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/29355
    rl   rK   rm   r[   rÁ   rÒ   rù   rJ   r»  r¼  F)r6  r7  ró   r“   g      @NrZ   )rN   rq   rQ   r¦  r   rR   ÚdeleterS   rM  rž   r`   rg  rš   )r<   r6  r7  rT   ÚX_without_missing_columns        r)   Ú1test_iterative_imputer_min_max_value_remove_emptyrE  B  s“  € ô 	�‰à�”2—6‘6œ2Ÿ6™6Ð"Ø�”2—6‘6˜1ÐØ�”2—6‘6œ2Ÿ6™6Ð"Ø�”R—V‘V˜RÐ ð		
ó	€Aô —&‘&�œ2Ÿ6™6˜'¤B§F¡F 7¨AÐ.€IÜ—‘œŸ™¤§¡¨Ð+€Iä ØØØ!ô÷ �m�AÓð	 ô  "Ÿy™y¨¨A°AÔ6ÐØ�?‰?Ð6×<Ñ<Ò<Ð<Ð<Ü�6‰6�)œBŸH™HÐ%=Ó>Ñ?Ó@ÄFÇMÁMÐRSÓDTÒTÐTÐTÜ�6‰6�)œBŸH™HÐ%=Ó>Ñ?Ó@ÄFÇMÁMÐRSÓDTÒTÐTÐTô 	�‰à�”2—6‘6œ2Ÿ6™6Ð"Ø��1”b—f‘fÐØ�”2—6‘6œ2Ÿ6™6Ð"Ø��RœŸ™Ð ð		
ó	€Aô —&‘&�œ2Ÿ6™6˜' 3¬¯©¨Ð0€IÜ—‘œŸ™ ¤B§F¡FÐ+€Iä ØØØ!ô÷ �m�AÓð	 ð  !¢ B Q B ™xÐØ�?‰?Ð6×<Ñ<Ò<Ð<Ð<Ü�6‰6�)œBŸH™HÐ%=Ó>Ñ?Ó@ÄFÇMÁMÐRUÓDVÒVÐVÐVÜ�6‰6�)œBŸH™HÐ%=Ó>Ñ?Ó@ÄFÇMÁMÐRSÓDTÒTÐTÑTr+   c                 óž  — t        j                  dt         j                  dgdt         j                  t         j                  gg«      }t        | ¬«      }dD ]u  } t	        ||«      |«      }| r/|j
                  |j
                  k(  sJ ‚t        |dd…df   d«       ŒF|j
                  |j
                  d   |j
                  d   dz
  fk(  rŒuJ ‚ y)z>Check the behaviour of `keep_empty_features` for `KNNImputer`.rl   rK   rZ   )ró   ©rR   r6   Nr   )rN   rq   rQ   r   ÚgetattrrS   r   )ró   r<   rA   ÚmethodrT   s        r)   Ú$test_knn_imputer_keep_empty_featuresrJ  y  sµ   € ô 	�‰�1”b—f‘f˜a�. 1¤b§f¡f¬b¯f©fÐ"5Ð6Ó7€AäÐ-@ÔA€Gà0ò CˆØ,”G˜G VÓ,¨QÓ/ˆ	ÙØ—?‘? a§g¡gÒ-Ð-Ð-Ü˜yª¨A¨™°Õ2à—?‘? q§w¡w¨q¡z°1·7±7¸1±:À±>Ð&BÓBÐBÐBñCr+   c            	      ó&  — t        j                  d«      } | j                  d| j                  g d¢d¬«      i«      }t	        | j
                  dd¬«      }t        |j                  |«      t        j                  d	gdgd
ggt        ¬«      «       | j                  d| j                  g d¢d¬«      i«      }t	        dd¬«      }t        |j                  |«      t        j                  d	gd
gdggt        ¬«      «       | j                  d| j                  g d¢d¬«      i«      }t	        | j
                  dd¬«      }t        |j                  |«      t        j                  dgdgdggd¬«      «       t	        t        j                  dd¬«      }t        |j                  |«      t        j                  dgdgdggd¬«      «       | j                  d| j                  g d¢d¬«      i«      }t	        | j
                  d¬«      }t        |j                  |«      t        j                  dgdgdgdggd¬«      «       | j                  d| j                  g d¢d¬«      i«      }t	        | j
                  d¬«      }t        |j                  |«      t        j                  dgdgdggd¬«      «       | j                  d| j                  g d¢d¬«      i«      }t	        | j
                  dd¬«      }t        |j                  |«      t        j                  dgdgdggd¬«      «       | j                  d| j                  g d ¢d¬«      i«      }t	        | j
                  d¬«      }t        |j                  |«      t        j                  dgd!gd!gdggd¬«      «       y )"Nre   Úfeature)ÚabcNÚdeÚstringrk   rG   Únaré   rM  rN  )rM  rN  ÚfghÚok)rê   r2   rQ  )rl   NrZ   ÚInt64r²   rl   rZ   rÝ  )rl   NrK   rZ   rE   r0   rK   )rl   NrK   rD   r  )rã   Nr  g       Àrã   r  )rã   Nr  r  r  )r`   rp   rs   ÚSeriesr   ÚNAr*   rR   rN   rq   rr   r-   rQ   )ru   rá   rA   s      r)   Útest_simple_impute_pd_narV  ‰  s  € Ü	×	Ñ	˜XÓ	&€Bð 
�‰�y "§)¡)Ò,?Àx )Ó"PÐQÓ	R€BÜ¨2¯5©5¸:ÐRVÔW€GÜ&Ø×Ñ˜bÓ!¤2§8¡8¨e¨W°t°f¸t¸fÐ,EÌVÔ#Tôð
 
�‰�y "§)¡)Ò,@È )Ó"QÐRÓ	S€BÜ t°jÔA€GÜ&Ø×Ñ˜bÓ!¤2§8¡8¨e¨W°t°f¸u¸gÐ,FÌfÔ#Uôð
 
�‰�y "§)¡)ªLÀ )Ó"HÐIÓ	J€BÜ¨2¯5©5¸:ÐRTÔU€GÜ#Ø×Ñ˜bÓ!¤2§8¡8¨a¨S°2°$¸¸Ð,<ÀIÔ#Nôô
 ¬2¯6©6¸JÐSUÔV€GÜ#Ø×Ñ˜bÓ!¤2§8¡8¨a¨S°2°$¸¸Ð,<ÀIÔ#Nôð
 
�‰�y "§)¡)ªOÀ7 )Ó"KÐLÓ	M€BÜ¨2¯5©5¸8ÔD€GÜ#Ø×Ñ˜bÓ!¤2§8¡8¨a¨S°1°#¸°s¸Q¸CÐ,@È	Ô#Rôð
 
�‰�y "§)¡)ªLÀ )Ó"HÐIÓ	J€BÜ¨2¯5©5¸6ÔB€GÜ#Ø×Ñ˜bÓ!¤2§8¡8¨a¨S°3°%¸!¸Ð,=ÀYÔ#Oôð
 
�‰�y "§)¡)Ò,<ÀI )Ó"NÐOÓ	P€BÜ¨2¯5©5¸:ÐRVÔW€GÜ#Ø×Ñ˜bÓ!¤2§8¡8¨c¨U°T°F¸S¸EÐ,BÈ)Ô#Tôð
 
�‰�y "§)¡)Ò,AÈ )Ó"SÐTÓ	U€BÜ¨2¯5©5¸8ÔD€GÜ#Ø×Ñ˜bÓ!Ü
�‰�3�%˜#˜  ¨ uÐ-°YÔ?õr+   c                  ó  — t        j                  d«      } t        j                  }| j	                  ||d|gd|ddggg d¢¬«      }t        |¬«      j                  |«      }|j                  «       }g d	¢}t        ||«       y
)zDCheck that missing indicator return the feature names with a prefix.re   rl   rm   rK   rJ   rf   rn   r  )Úmissingindicator_aÚmissingindicator_bÚmissingindicator_dN)	r`   rp   rN   rQ   rs   r   r5   Úget_feature_names_outr   )ru   r1   r<   rÙ  rv   Úexpected_namess         r)   Ú(test_missing_indicator_feature_names_outr]  Å  s„   € ä	×	Ñ	˜XÓ	&€Bä—V‘V€NØ
�‰à˜^¨Q°Ð?Ø�  2Ð&ð	
ò %ð 	ó 	€Aô !°Ô?×CÑCÀAÓF€IØ×3Ñ3Ó5€MÚW€NÜ�~ }Õ5r+   c                  óø   — ddgddgddgg} t        d¬«      j                  | «      }|j                  t        j                  t        j                  gg«      }|j
                  t        k(  sJ ‚t        |ddgg«       y)zkCheck transform uses object dtype when fitted on an object dtype.

    Non-regression test for #19572.
    rg   rh   ri   rF   rL   N)r   r5   r6   rN   rQ   r%   rr   r   )r<   Úimp_frequentrB   s      r)   Ú test_imputer_lists_fit_transformr`  Ø  ss   € ð ˆsˆ�c˜3�Z # s Ð,€AÜ ¨/Ô:×>Ñ>¸qÓA€LØ×$Ñ$¤r§v¡v¬r¯v©vÐ&6Ð%7Ó8€GØ�=‰=œFÒ"Ð"Ð"Ü�w # s  Õ-r+   Ú
dtype_testc                 óœ  — t        j                  ddt         j                  gt         j                  ddgg d¢gt         j                  ¬«      }t	        «       j                  |«      }t        j                  t         j                  t         j                  t         j                  gg| ¬«      }|j                  |«      }|j                  | k(  sJ ‚y)zACheck transform preserves numeric dtype independent of fit dtype.rÿ   g333333@r   )gÍÌÌÌÌÌ@rK   rl   rk   N)rN   ÚasarrayrQ   rÝ  r   r5   r6   r%   )ra  r<   Úimprc  rB   s        r)   Ú.test_imputer_transform_preserves_numeric_dtypere  å  s’   € ô 	�
‰
Ø
ˆs”B—F‘FÐ	œbŸf™f c¨3Ð/²Ð=ÄRÇZÁZô	€Aô ‹/×
Ñ
˜aÓ
 €Cä�Z‰Zœ"Ÿ&™&¤"§&¡&¬"¯&©&Ð1Ð2¸*ÔE€FØ�m‰m˜FÓ#€GØ�=‰=˜JÒ&Ð&Ñ&r+   Ú
array_typerq   r   c                 ó4  — t        j                  t         j                  dgt         j                  dgt         j                  dgg«      }t        ||«      }t	        | |¬«      }dD ]²  } t        ||«      |«      }|rl|j                  |j                  k(  sJ ‚t        r|dk(  r|dd…dgf   j                  «       }n |dd…df   }|dk(  r|j                  «       n|}t        |d«       Œƒ|j                  |j                  d   |j                  d	   d	z
  fk(  rŒ²J ‚ y)
zYCheck the behaviour of `keep_empty_features` with all strategies but
    'constant'.
    rK   rZ   rÁ   r  rG  r   Nr   rl   )
rN   rq   rQ   r   r   rH  rS   r"   r;   r   )	r2   rf  ró   r<   rA   rI  rT   Úconstant_featureÚcol0s	            r)   Ú'test_simple_imputer_keep_empty_featuresrj  ò  s  € ô 	�‰”2—6‘6˜1�+¤§¡¨˜{¬R¯V©V°Q¨KÐ8Ó9€AÜ˜1˜jÓ)€AÜ XÐCVÔW€Gà0ò CˆØ,”G˜G VÓ,¨QÓ/ˆ	ÙØ—?‘? a§g¡gÒ-Ð-Ð-Ý'¨J¸(Ò,BØ#,ªQ°°¨VÑ#4×#<Ñ#<Ó#>Ñ à ¢ A ‘�Ø5?À8Ò5K 4§<¡<¤>ÐQUÐ ÜÐ/°Õ3à—?‘? q§w¡w¨q¡z°1·7±7¸1±:À±>Ð&BÓBÐBÐBñCr+   c           
      óV  — t        j                  g d¢ddt         j                  gt         j                  dt         j                  gg d¢g d¢t         j                  ddgg«      }t        j                  g d¢g d¢g d	¢g d¢g d¢g d
¢g«      }t        t         j                  t         j                  ¬«      }|j                  |«      }t        ||«       t        t         j                  t         j                  ¬«      }|j                   | |«      «      }t        |j                  «       |«       y )N)rþ   rþ   rþ   ç333333@rÿ   r   )r  r  r  )gš™™™™™@r  r  çš™™™™™ù?)rl  rÿ   rþ   )r  r   rþ   )r  rm  rm  r0   )rN   rq   rQ   r   rM  rR   r   r;   )rx   r<   r=   rA   rB   s        r)   Útest_imputation_customrn    sß   € ä
�‰âØ�#”r—v‘vÐÜ�V‰V�Sœ"Ÿ&™&Ð!ÚÚÜ�V‰V�S˜#Ðð	
ó		€Aô �X‰XâÚÚÚÚÚð	
ó	€Fô ¬2¯6©6¼B¿F¹FÔC€GØ×#Ñ# AÓ&€GÜ�w Ô'ô ¬2¯6©6¼B¿F¹FÔC€GØ×#Ñ#¡M°!Ó$4Ó5€GÜ�w—‘Ó(¨&Õ1r+   c                  óx  — d} t        j                  g d¢g d¢gt         j                  ¬«      }t        d| d¬«      }d| ›d	t	        | «      ›d
�}t        j                  t        t        j                  |«      ¬«      5  |j                  |«       ddd«       t        j                  g d¢g d¢gt         j                  ¬«      }|j                  |«       d|j                  ›d
�}t        j                  t        t        j                  |«      ¬«      5  |j                  |«       ddd«       t        j                  d«      ddg}|j                  t         j                  «      }|D ]<  } t        d| d¬«      }|j!                  |«      }|j"                  |j"                  k(  rŒ<J ‚ y# 1 sw Y   �ŒxY w# 1 sw Y   Œ�xY w)zþCheck that we raise a proper error message when we cannot cast the fill value
    to the input data type. Otherwise, check that the casting is done properly.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28309
    r  r7  )rK   rZ   rm   rk   rG   rK   )r2   rê   r1   ræ   rç   rè   r]   Nz%The dtype of the filling value (i.e. rl   )rN   rq   Úint64r   rí   r`   rz   r{   rî   rï   r5   rÝ  Ú_fill_dtyper6   ræ  Úfloat32rR   r%   )rê   ÚX_int64rA   r3   Ú	X_float64Úfill_value_listÚ	X_float32rB   s           r)   Ú/test_simple_imputer_constant_fill_value_castingrw  -  sv  € ð €JÜ�h‰hš	¢9Ð-´R·X±XÔ>€GÜØ¨
À1ô€Gð ˜J˜>¨´D¸Ó4DÐ3GÐGWÐX€GÜ	�‰”z¬¯©°7Ó);Ô	<ñ Ø�‰�GÔ÷ô —‘š)¢YÐ/´r·z±zÔB€IØ‡K�K�	Ôà
/°×0CÑ0CÐ/FÐFVÐWð ô 
�‰”z¬¯©°7Ó);Ô	<ñ #Ø×Ñ˜'Ô"÷#ô —z‘z #“¨¨QÐ/€OØ× Ñ ¤§¡Ó,€Ià%ò 0ˆ
ÜØ¨JÀqô
ˆð ×'Ñ'¨	Ó2ˆØ�}‰} 	§¡Ó/Ð/Ð/ñ0÷!ñ ú÷#ð #ús   Á<F#ÄF0Æ#F-Æ0F9c                 ó&  — t        j                  t         j                  ddgdt         j                  dgddt         j                  gg«      }t        | dd¬«      }t        | dd	¬«      }t	        |j                  |«      |j                  |«      «       y
)a  Check the behaviour of `keep_empty_features` with no empty features.

    With no-empty features, we should get the same imputation whatever the
    parameter `keep_empty_features`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/29375
    r   rl   rK   rZ   rm   r[   F©rM   rê   ró   TN)rN   rq   rQ   r   r   rR   )r2   r<   Úimputer_drop_empty_featuresÚimputer_keep_empty_featuress       r)   Ú(test_iterative_imputer_no_empty_featuresr|  S  sƒ   € ô 	�‰”2—6‘6˜1˜a�. 1¤b§f¡f¨a .°1°a¼¿¹°.ÐAÓB€Aä"2Ø!¨aÀUô#Ðô #3Ø!¨aÀTô#Ðô Ø#×1Ñ1°!Ó4Ø#×1Ñ1°!Ó4õr+   rc  )rl   rK   rZ   rm   )r[   rÁ   rÒ   rù   rÁ   rÒ   rù   c                 óˆ  — t        j                  t         j                  t         j                  ddgt         j                  dt         j                  dgt         j                  ddt         j                  gg«      }t        | dd¬«      }|j	                  |«      }|j                  |«      }t        | dd	¬«      }|j	                  |«      }|j                  |«      }t        ||d
d
…dd
…f   «       t        |d
d
…df   d«       |j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚y
)a.  Check the behaviour of `keep_empty_features` in the presence of empty features.

    With `keep_empty_features=True`, the empty feature will be imputed with the value
    defined by the initial imputation.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/29375
    r   rl   rK   rZ   rm   r[   Fry  TN)rN   rq   rQ   r   rR   r6   r   rS   )	r2   rc  rb  rz  ÚX_train_drop_empty_featuresÚX_test_drop_empty_featuresr{  ÚX_train_keep_empty_featuresÚX_test_keep_empty_featuress	            r)   Ú*test_iterative_imputer_with_empty_featuresr‚  m  s6  € ô$ �h‰hÜ
�&‰&”"—&‘&˜!˜QÐ	¤"§&¡&¨!¬R¯V©V°QÐ!7¼"¿&¹&À!ÀQÌÏÉÐ9OÐPó€Gô #3Ø!¨aÀUô#Ðð #>×"KÑ"KÈGÓ"TÐØ!<×!FÑ!FÀvÓ!NÐä"2Ø!¨aÀTô#Ðð #>×"KÑ"KÈGÓ"TÐØ!<×!FÑ!FÀvÓ!NÐäÐ/Ð1LÊQÐPQÑPRÈUÑ1SÔTÜÐ/²°1°Ñ5°qÔ9à&×,Ñ,¨QÑ/Ð3M×3SÑ3SÐTUÑ3VÒVÐVÐVØ&×,Ñ,¨QÑ/Ð3M×3SÑ3SÐTUÑ3VÒVÐVÑVr+   )‘rÞ   rî   r™  Ú	itertoolsr   ÚnumpyrN   r`   Úscipyr   Úscipy.statsr   Úsklearnr   Úsklearn.datasetsr   Úsklearn.dummyr	   Úsklearn.exceptionsr
   Úsklearn.experimentalr   Úsklearn.imputer   r   r   r   Úsklearn.impute._baser   Úsklearn.linear_modelr   r   r   Úsklearn.model_selectionr   Úsklearn.pipeliner   r   Úsklearn.random_projectionr   Úsklearn.utils._testingr   r   r   r   r   Úsklearn.utils.fixesr   r   r   r    r!   r"   r*   r-   rC   ÚmarkÚparametrizerV   rc   rw   r|   r‡   r‰   r®   r¼   rr   ÚstrrÈ   rÌ   r%   rÐ   rÓ   rQ   rØ   râ   rò   rû   rc  r  r  r	  r  r  r!  r'  r*  r,  r?  rI  rO  rQ  r]  re  rp  rw  rƒ  r‰  r�  r’  r£  rq   r¦  r¯  r³  r¹  r½  rO   r•   rÐ  rÚ  rá  rñ  rõ  rÊ   rø  rû  rÿ  r  r  r  r  r  r  r"  r/  r2  r˜  r:  r=  r?  rA  rE  rJ  rV  r]  r`  rr  rÝ  re  rj  rn  rw  r|  r‚  rÈ  r+   r)   ú<module>r—     sŠ  ðÛ 	Û 	Û Ý ã Û Ý Ý å Ý *Ý (Ý 1õ :ß XÓ XÝ /ß FÑ FÝ 0ß 1Ý ;÷õ ÷÷ òò
ò
$=ðN ‡�×Ñ˜Ò%TÓUØ‡�×Ñ˜¨.Ó9ñ&ó :ó Vð&ð  ‡�×Ñ˜Ò%HÓIñó Jðð ‡�×Ñ˜Ò%HÓIñó Jðð2 ‡�×Ñ˜Ò%TÓUØ‡�×Ñ˜¨.Ó9ñó :ó VðòFòDð ‡�×Ñ˜¨.Ó9ñB
ó :ðB
ðJ ‡�×Ñ˜¨.Ó9ñó :ððD ‡�×Ñ˜ f¨hÐ%7Ó8Ø‡�×Ñ˜ 4¨°Ð"5Ó6ñ!ó 7ó 9ð!ð ‡�×Ñ˜ f¨hÐ%7Ó8Ø‡�×ÑÐ+¨f°hÐ-?Ó@ñ!ó Aó 9ð!ð ‡�×Ñ˜ j°/Ð%BÓCØ‡�×Ñ˜ 3¨¨¯©°«°x°r·x±xÀ³}Ð"EÓFñ$ó Gó Dð$ð& ‡�×Ñ˜¨.Ó9ñXó :ðXð6 ‡�×Ñ˜ D¨"¯&©&°%¸¸QÐ#?Ó@ñ(ó Að(ð8 ‡�×Ñ˜ 6¨:Ð"6Ó7ñ(ó 8ð(ð& ‡�×ÑÐ0°6¸CÀÇÁ¸=Ð2IÓJñ!ó Kð!ð ‡�×ÑÐ.°°u°Ó>ñ(ó ?ð(ð& ‡�×ÑÐ,¨nÀÇ
Á
¸|Ñ.KÓLØ‡�×ÑÐ.°°u°Ó>ñ2ó ?ó Mð2ð: ‡�×Ñ˜ D¨"¯&©&°%¸¸QÐ#?Ó@Ø‡�×ÑÐ.°°u°Ó>ñ (ó ?ó Að (ðF ‡�×Ñ˜ 6¨:Ð"6Ó7Ø‡�×ÑÐ.°°u°Ó>ñ(ó ?ó 8ð(ð8 ‡�×Ñ˜   a S˜z¨Q¨C°"·&±&°¨?Ð;Ó<ñ ó =ð òò&%)òVQò0òFð ‡�×ÑØÒPóñ"6óð"6ðJ ‡�×ÑØ�$™Ó(©-«/¹=»?ÉGËIÐVóñ+óð+ò2+ò +ò0YðB ‡�×Ñ˜Ò%HÓIñó Jðò,/-òd"ò,ð ‡�×Ñ˜ ! Q Ó(ñ9ó )ð9ò0Eò4/ò<(ð2 ‡�×ÑØ*à	
ˆC��—‘˜A˜3 ™7 S E¨A¡IÐ.Ó/Ð0Ø	ˆt�X�R—X‘X §¡ ˜y¨1™}¨r¯v©v¨h¸©lÐ;Ó<Ð=Ø
�&‰&ˆ�"—&‘&˜(˜"Ÿ(™( b§f¡f W I°¡M°B·F±F°8¸a±<Ð#@ÓAÐBÚ	’o x r§x¡x²ºoÐ0NÓ'OÐPà�"—&‘&�˜"ÐØ�#�r—v‘vÐØˆB�H‰H�r˜BŸF™F˜7 BÐ'¨#¨s°B·F±FÐ);Ð<Ó=ð	
ð
ò 	Fð ó ñ>óð>ð$ ‡�×ÑØ#à+Ø	�‰�"—&‘&�Ð3Ð4Ø
ˆaˆ’-Ð!=Ð>Ú	�c˜3�ZÐ!=Ð>ð	óñóðð ‡�×ÑØØˆT€l�b—f‘f�W˜bŸf™fÐ%Ð&¨#¨r¨°c°U¸Q±YÀÀÀqÁÐ4IÐ(JÐKØ	Ð*Ð+ð ó ñ
Bóð
Bð0 ‡�×Ñ˜¨4°¨-Ó8ñBó 9ðBð$ ‡�×Ñ˜¨¨a°·±×1FÑ1FÈAÐ1FÓ1NÐ'OÓPØ‡�×Ñ˜¨$°°2·9±9×3HÑ3HÈaÐ3HÓ3PÐ)QÓRñ2ó Só Qð2ð$ ‡�×ÑØ%ð ˆB�H‰H�r˜1�g  1˜vÐ&Ó'ØˆB�H‰H�r˜1�g  2˜wÐ'Ó(Ø'°6Ñ:ØPð		
ð ˆB�H‰H�s˜C�j 3¨ *Ð-°SÔ9ØˆB�H‰H�s˜C�j 3¨ *Ð-°SÔ9ØØ?ð		
ðóñ"0ó#ð"0òð& ‡�×ÑØ%Ñ'HÓ'Jóð ‡�×ÑØ2Ø�a˜˜Ÿ™¢)Ó,Ð-°°q¸(¸"¿(¹(Â9Ó:MÐ/NÐOóñ)Aó	óð)AðX ‡�×ÑØØ�^Ñ# nÑ4°~ÑEÈÑVóñ,ó	ð,ð* ‡�×Ñ˜Ò)>Ó?Ø‡�×ÑØØ‡h�h�€]€OÙ
ÙØØñàñð ñð ñ	ð
 �V‰VˆHó	
ó	ñ
óñ8óó @ð8ò:Xð ‡�×ÑØ$ð ˆB�H‰H�s˜C�j 3¨ *Ð-°VÔ<ØØˆB�H‰HÒ-Ò/FÐGÈvÔVð	
ð ˆB�H‰H�r—v‘v˜s�m c¨2¯6©6 ]Ð3Ó4Ø�F‰FØˆB�H‰HÒ-Ò/FÐGÓHð	
ð ˆB�H‰H�r—v‘v˜s�m c¨2¯6©6 ]Ð3¸6ÔBØ�F‰FØˆB�H‰HÒ-Ò/FÐGÈvÔVð	
ð ˆB�H‰H�t˜S�k C¨ ;Ð/°vÔ>ØØˆB�H‰HÒ-Ò/FÐGÈvÔVð	
ð!óñ2-ó3ð2-ð ‡�×ÑÐ.°Ð@PÐ0QÓRØ‡�×ÑØ4à	�—‘Ð.Ð/Ø>ðóñ!óó Sð!òð ‡�×Ñ˜¨.Ó9ñó :ðð ‡�×ÑÐ.°Ð@PÐ0QÓRñ&ó Sð&ð ‡�×ÑØØ�^Ñ# nÑ4°~ÑEÈÑVóñ/ó	ð/ð& ‡�×ÑØÐ1Ð3PÐQóñ(óð(ð ‡�×ÑØØ’?Ð# l²OÐ%DÐEóñ ó	ð ð" ‡�×Ñ˜¨2¨r¯v©v¨,Ó7ñ6+ó 8ð6+ðr ‡�×Ñ˜¨2¨r¯v©v¨,Ó7ñ-ó 8ð-ð$ ‡�×ÑØ/ð 
š¨°ÀÐBà!ÚCØØØð	
ð 
ˆ{Ð,Ð-¨v°s¸AÐ>Ø	Ò9¸6À3ÈÐJà	ŠY˜˜R Ð#Ø	
ŠI�s˜B Ð"Ø	Š[˜#˜r 1Ð%Ø	
ŠJ˜˜R Ð#ð!óñ*ó+ð*ð ‡�×ÑØà	ˆs�CˆjÐØ	
ˆQ�ˆFˆØ	��cˆ{ÐØ	��aˆyÐØ	Š~ÐØ	
ˆQ�ˆHˆØ	
ˆS�!ˆHˆðóñNóðNð ‡�×ÑØÒGóñ(óð(ð ‡�×ÑÐ.°°u°Ó>ñBó ?ðBò*4Uðn ‡�×ÑÐ.°°u°Ó>ñCó ?ðCò9òx6ò&
.ð ‡�×Ñ˜¨¯
ª
°B·J²JÐ'?Ó@ñ	'ó Að	'ð ‡�×Ñ˜¨°Ð':Ó;Ø‡�×Ñ˜Ò%HÓIØ‡�×ÑÐ.°°u°Ó>ñCó ?ó Jó <ðCð, ‡�×Ñ˜¨.Ó9ñ2ó :ð2òB#0ðL ‡�×Ñ˜Ò%TÓUñó Vðð2 ‡�×Ñ˜Ò%TÓUØ‡�×ÑØàˆ�‰’,¢Ð-Ó.Øˆ�‰�2—6‘6˜1˜a Ð# b§f¡f¨a°°AÐ%6Ð7Ó8Øˆ�‰�1�a˜˜BŸF™FÐ# a¨¨A¨r¯v©vÐ%6Ð7Ó8ðóñWóó VñWr+   