Ë
    ÷Q(h( ã                   ó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/m0Z0m1Z1m2Z2m3Z3 d„ Z4d„ Z5d„ Z6ejn                  jq                  dg d¢«      ejn                  jq                  de2«      d„ «       «       Z9ejn                  jq                  dg d¢«      d„ «       Z:ejn                  jq                  dg d¢«      d„ «       Z;ejn                  jq                  dg d¢«      ejn                  jq                  de1«      d„ «       «       Z<d„ Z=d„ Z>ejn                  jq                  de1«      d „ «       Z?ejn                  jq                  de1«      d!„ «       Z@ejn                  jq                  dd"d#g«      ejn                  jq                  d$deAeBg«      d%„ «       «       ZCejn                  jq                  dd"d#g«      ejn                  jq                  d&d'd(g«      d)„ «       «       ZDejn                  jq                  dd*d+g«      ejn                  jq                  d$eB ejŠ                  d,«       ejŠ                  d-«      g«      d.„ «       «       ZFejn                  jq                  de1«      d/„ «       ZGejn                  jq                  d0dej�                  d1d2d g«      d3„ «       ZIejn                  jq                  d$eAd4g«      d5„ «       ZJejn                  jq                  d6d7d8ej�                  fg«      d9„ «       ZKd:„ ZLejn                  jq                  d;e2ejš                  gz   «      d<„ «       ZNejn                  jq                  d0dej�                  d1d2d g«      d=„ «       ZOejn                  jq                  d$eAd4g«      d>„ «       ZPejn                  jq                  d?d@gdAggd@gej�                  ggg«      dB„ «       ZQdC„ ZRdD„ ZSdE„ ZTdF„ ZUdG„ ZVejn                  jq                  dHg dI¢«      dJ„ «       ZWejn                  jq                  dKd e«        e«        e«        e «       g«      dL„ «       ZXdM„ ZYdN„ ZZdO„ Z[ejn                  jq                  dg d¢«      dP„ «       Z\dQ„ Z]dR„ Z^dS„ Z_ejn                  jq                  dTdUdVg«      dW„ «       Z`dX„ ZadY„ ZbdZ„ Zcejn                  jq                  d[d d\ ejÈ                  d gdUz  d\gdUz  g«      fdd ejÈ                  ejÊ                   gdUz  ejÊ                  gdUz  g«      fejÊ                   ejÊ                   ejÈ                  ejÊ                   gdUz  ejÊ                  gdUz  g«      fg d]¢g d^¢ ejÈ                  g d]¢g d^¢g«      fd_ejÊ                   d`gd\daejÊ                  g ejÈ                  d_ejÊ                   d`gd\daejÊ                  gg«      fgg db¢¬c«      dd„ «       Zfejn                  jq                  dedfejÊ                  ejÊ                   dgfd_dVgg dh¢difg dj¢d\dagdifg«      dk„ «       Zgejn                  jq                  dlddgejÊ                   ejÊ                  gfdmd`gdmgdnz  d`gdnz  gfgdodpg¬c«      dq„ «       Zhejn                  jq                  drdsdtg«      du„ «       Ziejn                  jq                  dvdd@ejÔ                  j×                  d@¬w«      g«      ejn                  jq                  dxdd@ejÔ                  j×                  d@¬w«      g«      dy„ «       «       Zlejn                  jq                  dz ejÈ                  d{d@gd@dAgg«       ejÈ                  d{d@gd@d{gg«      d|d}d~œdf ejÈ                  d€d�gd‚d€ggeB¬ƒ«       ejÈ                  d€d�gd‚d€ggeB¬ƒ«      i d„fg«      d…„ «       Zmd†„ Znejn                  jq                  d‡ en«       «      ejn                  jq                  dˆd|dU ejÈ                  g d‰¢«      fdŠdU ejÈ                  g d‰¢«      fg«      d‹„ «       «       Zoejn                  jq                  dŒe1e2z   e0z   e3z   e/z   «      d�„ «       Zpejn                  jq                  dŽg d�¢«      ejn                  jq                  d�ejÈ                  d fg eq ee1e2z   e0z   e3z   e/z   ej�                  g«      «      z   «      d‘„ «       «       Zrd’„ Zsejn                  jq                  d“ ejÈ                  d€d�gd�d€ggeA¬ƒ«      d€ ejÈ                  g d”¢g d•¢geA¬ƒ«      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eA¬ƒ«      ej�                   ejÈ                  g d”¢g d•¢geA¬ƒ«      f ejÈ                  dd�gd�dggeA¬ƒ«      d ejÈ                  g d”¢g d•¢geA¬ƒ«      fg«      d˜„ «       Ztejn                  jq                  d™eeg«      ejn                  jq                  dšd›ej�                  dœfd�g«      dž„ «       «       ZudŸ„ Zvejn                  jq                  de2«      d „ «       Zwejn                  jq                  d™eeg«      d¡„ «       Zxejn                  jq                  dŒe1e2z   e0z   e3z   e/z   «      d¢„ «       Zyejn                  jq                  d£d¤d¥g«      d¦„ «       Zzejn                  jq                  d§d¨g d©¢fdªg d«¢fg«      d¬„ «       Z{ejn                  jq                  d­d{ej�                  g«      d®„ «       Z|ejn                  jq                  d­d{ej�                  g«      d¯„ «       Z}ejn                  jq                  d°d±g d²¢eAd±dAfd³g d´¢eAd±d@fd€dµd¶geAd€dAfdµg d·¢eAd¸dAfd`g d¹¢e~d`dAfd@g dº¢e~d`d@fd`g d»¢e~d`dAfd@g d¼¢e~d`dAfg«      d½„ «       Zejn                  jq                  d¾g d¢«      d¿„ «       Z€dÀ„ Z�dÁ„ Z‚ejn                  jq                  dÂdsdtg«      dÃ„ «       ZƒdÄ„ Z„dÅ„ Z…dÆ„ Z†ejn                  jq                  dÇe�j                  e�j                  g«      dÈ„ «       Z‰ejn                  jq                  dÉdÊdËg«      ejn                  jq                  dÂdsdtg«      dÌ„ «       «       ZŠejn                  jq                  dÉdÊdËg«      ejn                  jq                  dg d¢«      ejn                  jq                  dÂdsdtg«      dÍ„ «       «       «       Z‹ejn                  jq                  de1«      dÎ„ «       ZŒdÏ„ Z�ejn                  jq                  dg d¢«      dÐ„ «       ZŽejn                  jq                  dg d¢«      ejn                  jq                  dÑ ejÈ                  g dÒ¢g dÓ¢g«       ejÈ                  ej�                  dAdUdngej�                  dÔdÕdÖgg«       ejÈ                  d@dAdUej�                  gdVdÔ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_CONTAINERSc                 óR   — t        | |«       | j                  |j                  k(  sJ ‚y ©N)r   Údtype©ÚxÚys     ú^/var/www/skyplay_api_hub/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_truer1   Ú
statisticsr0   Úsparse_containerr2   Ú	assert_aeÚimputerÚX_transs
             r(   Ú_check_statisticsrB   2   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*   r1   )Ú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é
   é   ©r1   )rI   rJ   )Úinitial_strategy)ÚnpÚrandomÚrandnÚnanr   Úfit_transformÚshaper   )r1   rG   r;   r@   Ú	X_imputedÚiterative_imputers         r(   Útest_imputation_shaperU   Y   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*   ©rC   rD   rE   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   rK   ÚSkipping©Úmatch)	rM   ÚonesrP   r   r4   ÚpytestÚwarnsÚUserWarningr5   )r1   r;   r@   s      r(   Ú test_imputation_deletion_warningrb   k   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$   é   é   rJ   rI   ©ÚcolumnsrK   z6Skipping features without any observed values: \['b'\]r\   )r_   ÚimportorskiprM   rP   ÚarrayÚobjectÚ	DataFramer   r4   r   Úfeature_names_in_r`   ra   r5   )r1   Úpdr0   Úfeature_namesr;   r@   s         r(   Ú.test_imputation_deletion_warning_feature_namesrv   u   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)NrX   r   )r1   r0   zProvide a dense arrayr\   )	rM   r^   r   r_   ÚraisesÚ
ValueErrorr4   r:   r5   )r1   rw   r;   r@   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~   ÚlenrM   rP   rD   ©Ú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€   rM   rP   rC   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   rI   rk   rl   rJ   rC   c                 óB   — t        t        j                  | |f«      «      S r#   )rˆ   rM   Úhstack©ÚzÚvÚps      r(   ú<lambda>z-test_imputation_mean_median.<locals>.<lambda>»   s   € ¬´2·9±9¸aÀ¸VÓ3DÓ)E€ r*   rD   c                 óB   — t        t        j                  | |f«      «      S r#   )r†   rM   r‹   rŒ   s      r(   r�   z-test_imputation_mean_median.<locals>.<lambda>¼   s   € ¬;´r·y±yÀ!ÀQÀÓ7HÓ+I€ r*   ©Úaxis)rM   rN   ÚRandomStateÚzerosÚarangerP   ÚemptyÚrangeÚmaxÚrepeatÚpermutationr€   r‹   ÚshuffleÚisnanÚanyÚallrB   )rw   ÚrngÚdimÚdecrR   r•   ÚvaluesÚtestsr1   Ú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   rZ   éûÿÿÿrl   éüÿÿÿéÿÿÿÿrJ   ©r   r   r   )rZ   rZ   rZ   )r¯   r   ç      À)r   rZ   ç      @)rl   rZ   ç      @)r°   r¯   ç      À)r±   rJ   ç      à?)r   rZ   r   r³   r´   rµ   r¶   r·   rD   )rM   rp   rP   Ú	transposerB   )rw   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*   rC   rD   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©rf   rg   rY   ©rl   Úeé   ©ÚgÚhé	   rj   ú4non-numeric data:
could not convert string to float:r\   rK   )rM   rp   r_   ry   rz   r   rQ   )r1   r$   r;   Úmsgr@   s        r(   Ú.test_imputation_mean_median_error_invalid_typerÇ     s[   € ô 	�‰’-¢ªmÐ<ÀEÔJ€AØ
A€CÜ	�‰”z¨Ô	-ñ !Ü¨Ô2ˆØ×Ñ˜aÔ ÷!÷ !ñ !ús   ¾A%Á%A.ÚtypeÚlistÚ	dataframec                 ó  — g d¢g d¢g d¢g}|dk(  r&t        j                  d«      }|j                  |«      }d}t        j                  t        |¬«      5  t        | ¬«      }|j                  |«       d d d «       y # 1 sw Y   y xY w)	Nr½   r¾   rÁ   rÊ   rd   rÅ   r\   rK   )r_   ro   rr   ry   rz   r   rQ   )r1   rÈ   r;   rt   rÆ   r@   s         r(   Ú:test_imputation_mean_median_error_invalid_type_list_pandasrÌ     su   € ò 
š¢]Ð3€AØˆ{ÒÜ× Ñ  Ó*ˆØ�L‰L˜‹OˆØ
A€CÜ	�‰”z¨Ô	-ñ !Ü¨Ô2ˆØ×Ñ˜aÔ ÷!÷ !ñ !ús   ÁA;Á;BrF   rE   Ú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)Nrf   r.   rh   ri   rg   rÃ   rj   z#SimpleImputer does not support datar\   rK   )	rM   rp   rP   r_   ry   rz   r   r4   r5   )r1   r$   r;   r2   r@   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   rZ   )r±   rJ   r±   rY   )r±   rk   rY   r±   )r±   rJ   rY   é   )rJ   r   rZ   )rJ   rY   rY   )rk   rY   rY   )rJ   rY   rÒ   rE   rJ   rY   r±   )rM   rp   rB   rP   )rw   r;   r<   s      r(   Útest_imputation_most_frequentrÓ   A  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 )Nrf   r.   rh   ri   rg   rÃ   rj   )rh   rf   r.   )rh   ri   ri   )rg   ri   ri   )rh   ri   rÃ   rE   r/   )rM   rp   rq   r   r4   r5   r   ©rÔ   r;   r<   r@   rA   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 )
Nrd   ú,Cat1,Cat2,Cat3,Cat4
,i,x,
a,,y,
a,j,,
b,j,x,rj   )rf   Úir&   )rf   r¨   r'   )rf   r¨   r&   )rg   r¨   r&   rE   rK   ©r_   ro   ÚioÚStringIOÚread_csvrM   rp   rq   r   rQ   r   ©r$   rt   r.   Údfr<   r@   rA   s          r(   Ú$test_imputation_most_frequent_pandasrä   z  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)rk   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)NrX   rj   ©r   r   r&   úfill_value=ú
 (of type ú) cannot be castr\   rF   ©r0   r1   Ú
fill_value)rM   ÚfullÚfloatrÈ   r_   ry   rz   ÚreÚescaper   rQ   )ÚX_dataÚmissing_valuer;   rì   r2   r@   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c                  óà   — t        j                  g d¢g d¢g d¢g d¢g«      } t        j                  g d¢g d¢g d¢g d¢g«      }t        d	d
dd¬«      }|j                  | «      }t	        ||«       y )N©r±   rJ   rY   r±   ©rl   r±   rZ   r±   ©rÀ   rÒ   r±   r±   ©é   rÄ   r   r±   )r   rJ   rY   r   )rl   r   rZ   r   )rÀ   rÒ   r   r   )rù   rÄ   r   r   r±   rF   r   T©r0   r1   rì   Úkeep_empty_features)rM   rp   r   rQ   r   )r;   r<   r@   rA   s       r(   Ú test_imputation_constant_integerrü   Ÿ  s`   € ä
�‰’.¢.².Â-ÐPÓQ€Aä�X‰X’|¢\²<ÂÐNÓO€FäØ J¸1ÐRVô€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«      } | |«      } | |«      }t        d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±   rF   r±   T©r1   rì   rû   )rM   rp   rP   r   rQ   r   )rý   r;   r<   r@   rA   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ñ 	˜!Ó€Aá˜vÓ&€FäØ¨Àô€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        ¬
«      }t        | ddd¬«      }|j	                  |«      }t        ||«       y )Nrf   rg   rh   ri   r¿   r.   rÂ   rÃ   rÝ   rj   )Úmissingrf   rg   r  )rh   r  ri   r  )r¿   r.   r  r  )rÂ   rÃ   rÝ   r  rF   r  Trú   )rM   rp   rq   r   rQ   r   rØ   s        r(   Útest_imputation_constant_objectr  Í  s¦   € ô 	�‰à�S˜#˜vÐ&Ø�&˜#˜vÐ&Ø�#�v˜vÐ&Ø�#�s˜FÐ#ð		
ô ô	€Aô �X‰Xâ,Ú,Ú,Ú&ð		
ô ô€Fô ØØØØ ô	€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        ¬«      }t        dd	¬
«      }|j                  |«      }t        ||«       y )Nrd   rÜ   rj   )rò   rÝ   r&   rò   )rf   rò   r'   rò   )rf   r¨   rò   rò   )rg   r¨   r&   rò   rF   T©r1   rû   rÞ   râ   s          r(   Útest_imputation_constant_pandasr  ñ  s�   € ô 
×	Ñ	˜XÓ	&€Bä
�‰ÐFÓG€Aà	�‰�Q˜eˆÓ	$€Bä�X‰Xâ8Ú8Ú8Ú,ð		
ô ô€Fô  ZÀTÔJ€GØ×#Ñ# BÓ'€Gä�w Õ'r*   r;   rk   rJ   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   rk   rJ   )r   r4   Ún_iter_rM   rP   )r;   r@   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   r@   ©r0   r   ©Úrandom_stateÚimputer__strategyrV   rk   )	r   Údatar   r   r   ÚDecisionTreeRegressorr:   r   r4   )r;   r0   Ú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 )NrZ   g      è?r   ©r  r  rC   T)r0   r1   r6   r±   rç   F)r   r6   r:   r   r4   r5   rM   rŸ   r  r   Útocsc)ÚX_origr;   r@   ÚXts       r(   Útest_imputation_copyr#  )  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  rI   r  r  )Úmax_iterrZ   )rM   rN   r”   r   r:   rP   r   rQ   r   Úinitial_imputer_r5   r4   rŸ   r  )r    Únri   r;   Úmissing_flagr@   rS   s          r(   Ú!test_iterative_imputer_zero_itersr)  T  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  rY   r  r  rk   )r0   r%  ÚverboserJ   )rM   rN   r”   r   r:   r   r4   r5   )r    r'  ri   r;   r@   s        r(   Útest_iterative_imputer_verboser,  l  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  rY   r   rk   )r0   r%  )rM   r•   r   rQ   r   r&  r5   )r'  ri   r;   r@   rS   s        r(   Ú"test_iterative_imputer_all_missingr.  z  sU   € Ø€AØ	€AÜ
�‰�!�Q�Ó€AÜ¨a¸!Ô<€GØ×%Ñ% aÓ(€IÜ�I˜w×7Ñ7×AÑAÀ!ÓDÕEr*   Úimputation_order)rN   Ú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  rI   rJ   r  r  rk   rZ   FT)
r0   r%  Ún_nearest_featuresÚsample_posteriorÚskip_completeÚ	min_valueÚ	max_valuer+  r/  r  r0  r3  r±   rN   Úending)rM   rN   r”   r   r:   r   rQ   Úimputation_sequence_Úfeat_idxr€   r  Ún_features_with_missing_rŸ   r–   )r/  r    r'  ri   r%  r;   r@   rÝ   Úordered_idxÚordered_idx_round_1Úordered_idx_round_2s              r(   Ú'test_iterative_imputer_imputation_orderrA  ƒ  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  rI   r  r  rk   )r0   r%  rB  r  )rM   rN   r”   r   r:   r   rQ   r;  rÈ   r   Ú
isinstancerB  ÚappendÚidr€   Úset)	rB  r    r'  ri   r;   r@   ÚhashesÚtripletÚexpected_types	            r(   Ú!test_iterative_imputer_estimatorsrK  «  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  rI   r  r  rk   çš™™™™™É?)r0   r%  r8  r9  r  ©
rM   rN   r”   r   r:   r   rQ   r   Úminr™   ©r    r'  ri   r;   r@   r"  s         r(   Útest_iterative_imputer_cliprQ  Ç  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  rI   r  r  rk   rJ   rZ   TrM  rN   )	r0   r%  r5  r6  r8  r9  r+  r/  r  rN  rP  s         r(   Ú%test_iterative_imputer_clip_truncnormrS  ×  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é*   )rZ   rZ   )r~   r   r·   T)r8  r9  r6  r  r  Únormgê-�™—q=rM  r  z&The posterior does appear to be normal)rM   rN   r”   ÚnormalrP   r   rQ   rp   r˜   r5   rŸ   rC   Ústdr   )	r    r;   r@   Ú_Ú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  rI   rY   )ÚlowÚhighr~   rk   rç   )r0   r%  rL   r  r/   )	rM   rN   r”   Úrandintr   r4   r   r   r5   )r1   r    r'  ri   ÚX_trainÚX_testr@   Úinitial_imputers           r(   Ú+test_iterative_imputer_missing_at_transformrg    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   rk   r  rI   r  r  T)r0   r%  r6  r  Fr1  )r0   r%  r6  r5  r/  r  )rM   rN   r”   r   r:   r   r4   r5   rC   r_   Úapproxr   )Úrng1Úrng2r'  ri   r;   r@   Ú
X_fitted_1Ú
X_fitted_2Úimputer1Úimputer2ÚX_fitted_1aÚX_fitted_1bs               r(   Ú.test_iterative_imputer_transform_stochasticityrr  '  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  rI   )r%  r  rk   )
rM   rN   r”   ÚrandrP   r   r4   r5   rQ   r   )r    r;   Úm1Úm2Úpred1Úpred2s         r(   Ú!test_iterative_imputer_no_missingry  Y  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   rk   r·   rZ   ©r%  r+  r  g{®Gáz”?©Úatol)
rM   rN   r”   rt  Údotr6   rP   r   rQ   r   )	r    ri   ÚAÚBr;   Únan_maskÚ	X_missingr@   ÚX_filleds	            r(   Útest_iterative_imputer_rank_oner…  g  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*   ÚrankrY   rZ   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·   rJ   rZ   r2  rk   )r%  r/  r+  r  r  r}  )rM   rN   r”   rt  r  r6   rP   r   r4   r5   r   )r†  r    r'  ri   r€  r�  r„  r‚  rƒ  rd  ÚX_test_filledre  r@   Ú
X_test_ests                 r(   Ú)test_iterative_imputer_transform_recoveryr‹  v  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  rI   rJ   g      Ð?rk   r|  gü©ñÒMbP?ç{®Gáz„?)Úrtolr~  )rM   rN   r”   rO   r•   rR   r˜   rt  r6   rP   r   r4   r5   r   )r    r'  ri   r€  r�  r„  rÝ   r¨   r‚  rƒ  rd  r‰  re  r@   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   r{  rZ   rk   r·   r  r�  F)r%  Útolr6  r+  r  )r%  r6  r+  r  gH¯¼šò×z>r}  )rM   rN   r”   rt  r  r6   rP   r   rQ   r€   r;  r  r   r4   r%  )r    r'  ri   r€  r�  r;   r‚  rƒ  r@   Ú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_yrk   rY   r   g333333Ã?F)r~   ÚreplacerZ   )r5  r6  Úerror)r   rR   rM   rN   r”   r˜   Úchoicer–   ÚintrP   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningrQ   rž   r�   )
r;   r'   Ú	n_samplesÚ
n_featuresr    Úmissing_rateÚfeatÚ
sample_idxr@   Ú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¯   rZ   rI   )r  éÈ   i,  r¯   rI   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   rI   rY   ©r8  r9  rk   )rM   rN   r”   rO   r   r4   rD  Ú
_min_valueÚndarrayÚ
_max_valuerR   r   )r8  r9  Úcorrect_outputr;   r@   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¯   rZ   rZ   c                 óÞ   — t         j                  j                  d«      }t        | |¬«      }t        j                  t
        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)N©rI   rY   r¬  r\   )rM   rN   r   r_   ry   rz   r4   )r8  r9  r2   r;   r@   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öÿÿÿrl   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 )
NrJ   rk   rI   rÒ   rY   rl   rZ   r   )r8  r9  r  )rM   rp   rP   r   r4   r5   r   )Ú	min_max_1Ú	min_max_2rd  re  rn  ro  Ú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*   r7  TFc                 ó
  — 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   )rZ   rJ   rJ   rk   )rI   rk   rJ   rÒ   )rY   rk   rk   rk   )rù   rl   rJ   rJ   rJ   rl   rZ   rk   rI   rC   )rL   r7  r  )é   rÒ   é   g-Cëâ6?)rŽ  )
rM   rN   r”   rp   rP   r   r4   r5   r   rC   )r7  r    rd  re  r@   rŠ  s         r(   Ú'test_iterative_imputer_skip_non_missingr¿  0  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__G  s
   € Ø ,ˆDÕr*   c                 ó   — | S r#   © )rÇ  rƒ   Úkgardss      r(   r4   zGtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.fitJ  s   € ØˆKr*   c                 óF   — t        j                  |j                  d   «      S )Nr   )rM   r•   rR   )rÇ  r;   s     r(   ÚpredictzKtest_iterative_imputer_dont_set_random_state.<locals>.ZeroEstimator.predictM  s   € Ü—8‘8˜AŸG™G A™JÓ'Ð'r*   N)Ú__name__Ú
__module__Ú__qualname__rÈ  r4   rÍ  rÊ  r*   r(   ÚZeroEstimatorrÅ  F  s   „ ò	-ò	ó	(r*   rÑ  r  r´  )r   rM   r•   r4   r  )rÀ  rÂ  rÑ  rB  r@   rd  s         r(   Ú,test_iterative_imputer_dont_set_random_staterÒ  C  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 fitrf   rg   rh   rj   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_   ry   rz   r4   r5   )ÚX_fitrA   ÚparamsÚmsg_errÚ	indicators        r(   Útest_missing_indicator_errorrÜ  W  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±   )rM   Úint32rP   Úfloat64rp   r   r    r   r!   r   r   )Úmissing_values_dtypesÚ	arr_typesÚarr_typer0   r$   s        r(   Ú!_generate_missing_indicator_casesrã  o  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   rk   rJ   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 )Nrk   rl   rJ   ©rl   r¾  rI   )rk   rk   r   )r   r   rk   r²   F)r0   rÕ  r   Tr   Úcsc)rM   rp   Úastyper   rQ   r5   rR   r   Ú	features_r   r$   ÚboolrD  r®  r×  r8   r:   )r0   râ  r$   Úparam_featuresr   Úfeatures_indicesrØ  rA   Ú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   rk   rl   rJ   ræ  r  z"Sparse input with missing_values=0r\   )rM   rp   r   r_   ry   rz   rQ   r5   )râ  r0   rØ  rA   Ú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 )Nrk   rl   rJ   ræ  )r0   r   Trç  rÔ  r   F)rM   rp   rè  rß  r   rQ   r5   r8   rD  r®  r   r9   )râ  r0   rø  rØ  rA   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©rf   rg   rh   )rg   rh   rf   rj   rf   rŸ   )r0   rÕ  )TFF)FFT)rM   rp   rq   r   rQ   r   )r;   rÛ  rA   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)rg   rg   TF)rg   rg   FT)rå   rå   TF)rå   rå   FTc                 ó€   — t        t        |d¬«      t        |¬«      «      }|j                  | «      }t	        ||«       y )NrE   r/   r  )r   r   r   rQ   r   )r;   r0   ÚX_trans_expÚtransrA   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)NrU  rI   rç   r  r\   )rM   rN   r”   rO   r_   ry   rz   rQ   )r  Úimputer_missing_valuesrò   r2   r    r;   r@   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 )Nrk   rÓ  r±   ©rÕ  r0   r   )rM   rp   r   rQ   rR   )r;   Úmir"  s      r(   Ú!test_missing_indicator_no_missingr
  :  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ä  )rk   rJ   r   )rJ   r   rk   rŸ   rk   r  )r   rQ   ÚgetnnzÚsum)rG   r;   r	  r"  s       r(   Ú/test_missing_indicator_sparse_no_explicit_zerosr  E  sK   € ñ 	’y¢)ªYÐ7Ó8€Aä	 5¸Ô	;€BØ	×	Ñ	˜!Ó	€Bà�9‰9‹;˜"Ÿ&™&›(Ò"Ð"Ñ"r*   c                 ó†   — t        j                  ddgddgg«      } | «       }|j                  |«       |j                  �J ‚y )Nrk   )rM   rp   r4   Ú
indicator_)r  r;   r@   s      r(   Útest_imputer_without_indicatorr  Q  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 )Nrk   rZ   rJ   rÀ   rY   )rk   rJ   rÄ   )ç      @rå   ç      @rå   ç        r  )ç       @r  rå   r  rå   r  )g      @r  r  r  r  rå   )rå   r  g      "@r  r  r  T)r0   Úadd_indicator)
rM   rP   rp   r   rQ   r   r9   rR   r   r:   )râ  ÚX_sparser<   r@   rA   s        r(   Ú2test_simple_imputation_add_indicator_sparse_matrixr  Z  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)rE   rg   )rF   rò   c                 óÄ   — ddgdt         j                  gg}t        j                  ddgd|ggt        ¬«      }t	        | ¬«      }|j                  |«      }t        ||«       y )Nrf   rg   rh   rj   rK   )rM   rP   rp   rq   r   rQ   r   )r1   Úexpectedr;   r<   r@   rA   s         r(   Ú"test_simple_imputation_string_listr  q  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_orderr1  )rY   rl   rJ   r   rk   r2  )rk   r   rJ   rl   rY   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)NrU  r  rZ   r{  rk   é   r   é   rJ   rI   rl   )r%  r/  r  )rM   rN   r”   rt  rP   r_   r`   r
   r   r4   r;  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Ä   rY   r±   ©rl   r±   rZ   rl   rÀ   rÒ   rù   r   )rZ   rl   rJ   rk   rJ   rk   rl   rZ   )rk   rk   rk   rY   )rJ   rY   rY   rl   rC   T)r0   r1   r  )rM   rp   r   rQ   Úinverse_transformr5   r   )rò   ÚX_1ÚX_2ÚX_3ÚX_4r@   Ú	X_1_transÚX_1_inv_transÚ	X_2_transÚX_2_inv_transr;   rA   ÚX_inv_transs                r(   Ú(test_simple_imputation_inverse_transformr1  ”  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Ä   rY   r±   r&  rÀ   rÒ   rù   r   rC   r/   zGot 'add_indicator=ú'r\   )	rM   rp   r   rQ   r_   ry   rz   r  r'  )rò   r(  r@   r,  s       r(   Ú3test_simple_imputation_inverse_transform_exceptionsr4  Î  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)r6  r6  Úvaluer8  Úmin_valuevalue)r8  r8  r7  r�   ©rk   rJ   rY   )rk   rk   rJ   )r  r  rk   )rk   rk   r  c                 óR   — | t        t        j                  ||¬«      ||«      k(  sJ ‚y )Nrj   )r   rM   rp   )r  rp   r$   r5  Ún_repeats        r(   Útest_most_frequentr<  á  s/   € ð, ”~Ü
�‰�˜eÔ$ k°8óò ð ñ r*   rL   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).
    rk   rJ   rY   T)rL   rû   Nr   )rM   rp   rP   r   rQ   r   r5   )rL   r;   r@   rS   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        j                  g d¢g d¢g d¢g d¢g«      } d}t        dd|dd	¬
«      }|j                  | «       t	        |j
                  j                  |«       y)z<Check that we propagate properly the parameter `fill_value`.rõ   rö   r÷   rø   r  r±   rF   r   T)r0   rL   rì   r%  rû   N)rM   rp   r   rQ   r   r&  r7   )r;   rì   r@   s      r(   Ú*test_iterative_imputer_constant_fill_valuer@    s]   € ä
�‰’.¢.².Â-ÐPÓQ€Aà€JÜØØ#ØØØ ô€Gð ×Ñ˜!ÔÜ�w×/Ñ/×;Ñ;¸ZÕHr*   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
    rk   rJ   rl   rZ   rÀ   rÒ   rù   rI   r½  r¾  F)r8  r9  rû   r’   g      @NrY   )rM   rp   rP   r¨  r   rQ   ÚdeleterR   rO  r�   r_   ri  r™   )r;   r8  r9  rS   ÚX_without_missing_columns        r(   Ú1test_iterative_imputer_min_max_value_remove_emptyrD     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*   rû   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`.rk   rJ   rY   )rû   ©rQ   r5   Nr   )rM   rp   rP   r   ÚgetattrrR   r   )rû   r;   r@   ÚmethodrS   s        r(   Ú$test_knn_imputer_keep_empty_featuresrI  W  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 )"Nrd   Úfeature)ÚabcNÚdeÚstringrj   rF   Únarë   rL  rM  )rL  rM  ÚfghÚok)rì   r1   rP  )rk   NrY   ÚInt64r±   rk   rY   rß  )rk   NrJ   rY   rD   r/   rJ   )rk   NrJ   rC   r  )rå   Nr  g       Àrå   r  )rå   Nr  r  r  )r_   ro   rr   ÚSeriesr   ÚNAr)   rQ   rM   rp   rq   r,   rP   )rt   rã   r@   s      r(   Útest_simple_impute_pd_narU  g  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.rd   rk   rl   rJ   rI   re   rm   r  )Úmissingindicator_aÚmissingindicator_bÚmissingindicator_dN)	r_   ro   rM   rP   rr   r   r4   Úget_feature_names_outr   )rt   r0   r;   rÛ  ru   Ú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.
    rf   rg   rh   rE   rK   N)r   r4   r5   rM   rP   r$   rq   r   )r;   Úimp_frequentrA   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ÍÌÌÌÌÌ@rJ   rk   rj   N)rM   ÚasarrayrP   rß  r   r4   r5   r$   )r`  r;   Úimpre  rA   s        r(   Ú.test_imputer_transform_preserves_numeric_dtyperd  Ã  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_typerp   r   c                 óF  — t        j                  t         j                  dgt         j                  dgt         j                  dgg«      }t        || «      }d}t	        d||¬«      }dD ]¬  }|j                  d«      r;|s9d	}t        j                  t        |¬
«      5   t        ||«      |«      }ddd«       n t        ||«      |«      }j                  |j                  k(  sJ ‚| dk(  r|dd…df   j                  «       n|dd…df   }t        ||«       Œ® y# 1 sw Y   ŒXxY w)z·Check the behaviour of `keep_empty_features` with `strategy='constant'.
    For backward compatibility, a column full of missing values will always be
    fill and never dropped.
    rJ   rY   rÀ   rI   rF   r  rF  r4   z7`strategy="constant"`, empty features are not dropped. r\   Nr   r   )rM   rp   rP   r   r   Ú
startswithr_   r`   ÚFutureWarningrG  rR   r:   r   )	re  rû   r;   rì   r@   rH  Úwarn_msgrS   Úconstant_features	            r(   Ú0test_simple_imputer_constant_keep_empty_featuresrk  Ð  s  € ô 	�‰”2—6‘6˜1�+¤§¡¨˜{¬R¯V©V°Q¨KÐ8Ó9€AÜ˜1˜jÓ)€AØ€JÜØØØ/ô€Gð 1ò 9ˆà×Ñ˜UÔ#Ñ,?ØPˆHÜ—‘œm°8Ô<ñ 8Ø4œG G¨VÓ4°QÓ7�	÷8ð 8ð 1œ ¨Ó0°Ó3ˆIØ�‰ !§'¡'Ò)Ð)Ð)à)3°xÒ)?ˆI’a˜�d‰O×#Ñ#Ô%ÀYÊqÐRSÈtÁ_ð 	ô 	Ð+¨ZÕ8ñ9÷8ð 8ús   ÂDÄD 	c                 óö  — t        j                  t         j                  dgt         j                  dgt         j                  dgg«      }t        ||«      }t	        | |¬«      }dD ]“  } t        ||«      |«      }|rM|j                  |j                  k(  sJ ‚|dk(  r|dd…df   j                  «       n|dd…df   }t        |d«       Œ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'.
    rJ   rY   rÀ   r
  rF  r   Nr   rk   )	rM   rp   rP   r   r   rG  rR   r:   r   )r1   re  rû   r;   r@   rH  rS   rj  s           r(   Ú'test_simple_imputer_keep_empty_featuresrm  ï  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Ò-Ð-Ð-à-7¸8Ò-C�	š!˜Q˜$‘×'Ñ'Ô)ÈÒSTÐVWÐSWÉð ô Ð/°Õ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  çš™™™™™ù?)ro  r   rÿ   )r  r  rÿ   )r  rp  rp  r/   )rM   rp   rP   r   rO  rQ   r   r:   )rw   r;   r<   r@   rA   s        r(   Útest_imputation_customrq    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                  óŒ  — 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                  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  r9  )rJ   rY   rl   rj   rF   rJ   )r1   rì   r0   rè   ré   rê   r\   Nz%The dtype of the filling value (i.e. rk   )rM   rp   Úint64r   rÈ   r_   ry   rz   rï   rð   r4   rß  r7   r$   r5   rè  Úfloat32rQ   )rì   ÚX_int64r@   r2   Ú	X_float64Úfill_value_listÚ	X_float32rA   s           r(   Ú/test_simple_imputer_constant_fill_value_castingry  (  s�  € ð €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×0IÑ0IÐ/Lð Mð 	ð ô 
�‰”z¬¯©°7Ó);Ô	<ñ #Ø×Ñ˜'Ô"÷#ô —z‘z #“¨¨QÐ/€OØ× Ñ ¤§¡Ó,€Ià%ò 0ˆ
ÜØ¨JÀqô
ˆð ×'Ñ'¨	Ó2ˆØ�}‰} 	§¡Ó/Ð/Ð/ñ0÷#ñ ú÷#ð #ús   Á<F-ÄF:Æ-F7Æ:G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   rk   rJ   rY   rl   rZ   F©rL   rì   rû   TN)rM   rp   rP   r   r   rQ   )r1   r;   Úimputer_drop_empty_featuresÚimputer_keep_empty_featuress       r(   Ú(test_iterative_imputer_no_empty_featuresr~  O  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*   re  )rk   rJ   rY   rl   )rZ   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   rk   rJ   rY   rl   rZ   Fr{  TN)rM   rp   rP   r   rQ   r5   r   rR   )	r1   re  rd  r|  Ú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„  i  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   ÚnumpyrM   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,   rB   ÚmarkÚparametrizerU   rb   rv   r{   r†   rˆ   r­   r»   rq   ÚstrrÇ   rÌ   r$   rÐ   rÓ   rP   rÙ   rä   ró   rü   rb  r  r  r  r  r  r#  r)  r,  r.  rA  rK  rQ  rS  r_  rg  rr  ry  r…  r‹  r�  r”  r¥  rp   r¨  r±  rµ  r»  r¿  rN   r”   rÒ  rÜ  rã  ró  r÷  rÉ   rú  rý  r  r  r
  r  r  r  r  r$  r1  r4  rš  r<  r>  r@  rD  rI  rU  r\  r_  rt  rß  rd  rk  rm  rq  ry  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Ø‡�×Ñ˜ &¨+Ð!6Ó7ñ!ó 8ó 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ð!ò (ð  ‡�×ÑÐ,¨nÀÇ
Á
¸|Ñ.KÓLñ2ó Mð2ð: ‡�×Ñ˜ D¨"¯&©&°%¸¸QÐ#?Ó@ñ(ó Að(ðF ‡�×Ñ˜ 6¨:Ð"6Ó7ñ(ó 8ð(ð0 ‡�×Ñ˜   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 Ð#ð!óñ*ó+ð*ð ‡�×ÑØÒGóñ(óð(ò"Iò 4Uðn ‡�×ÑÐ.°°u°Ó>ñCó ?ðCò9òx6ò&
.ð ‡�×Ñ˜¨¯
ª
°B·J²JÐ'?Ó@ñ	'ó Að	'ð ‡�×Ñ˜¨°Ð':Ó;Ø‡�×ÑÐ.°°u°Ó>ñ9ó ?ó <ð9ð: ‡�×Ñ˜¨°Ð':Ó;Ø‡�×Ñ˜Ò%HÓIØ‡�×ÑÐ.°°u°Ó>ñCó ?ó Jó <ðCð( ‡�×Ñ˜¨.Ó9ñ2ó :ð2òB$0ðN ‡�×Ñ˜Ò%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*   