a
    �ù»jò? ã                   @   s”  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZmZ d dlmZ dd	„ Zej d
g d¢¡dd„ ƒZej d
g d¢¡dd„ ƒZej dejejejg¡ej dejejejg¡dd„ ƒƒZej dejejejg¡dd„ ƒZdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"ejjd g d!¢g d"¢ge #g d#¢g d$¢g¡ej#g d%¢g d&¢ge$d'�ej#g d(¢d)ej%d*gge$d'�ej#g d(¢d)e&d+ƒd*gge$d'�ej#g d,¢g d-¢ge$d'�ej#g d.¢d)ej%dgge$d'�ej#g d.¢d)e&d+ƒdgge$d'�gg d/¢d0�d1d2„ ƒZ'ej d
g d¢¡ej d3d4d5g¡ej d6dd7g¡d8d9„ ƒƒƒZ(ej d3d4d5g¡ej d:d;d<gd=d<gd;d<ggg d>¢g d?¢g d>¢gfd@d)gdAd)gdBdCgdAd)ggg dD¢g dE¢g dF¢gfg¡dGdH„ ƒƒZ)dIdJ„ Z*ej d6g dK¢¡ej dLg dK¢¡dMdN„ ƒƒZ+ej dOdPdQg¡ej d d=d;ge #dRdSg¡g¡dTdU„ ƒƒZ,ej dOdPdQg¡dVdW„ ƒZ-ejjdXdYd<gdZd<ggdYdZgd<ggej.fe #d=d;gd[d;gg¡d=d[gd;ggej/fej#d\d*gd]d*gge$d'�d\d]gd*ggej.fe #d\d*gd]d*gg¡d\d]gd*ggej0fe #d=d;gej%d;gg¡d=ej%gd;ggejfej#d\ej%gdej%gge$d'�d\dgej%ggej.fej#d\e&d+ƒgde&d+ƒgge$d'�d\dge&d+ƒggej.fgg d^¢d0�d_d`„ ƒZ1ej d
g d¢¡ejjdaej#d)dCgge$d'�j2ej#d)dbgge$d'�j2g dc¢gej.fej#d=d;ggddd'�j2ej#d=deggddd'�j2g df¢gej3fej#d)dCgge$d'�j2ej#d)dbgge$d'�j2e #g dc¢¡gej.fej#dd)gge$d'�j2ej#ddCgge$d'�j2g dg¢ge$fej#d)dCgge$d'�j2ej#d)ej%gge$d'�j2g dh¢ge$fej#d)dgge$d'�j2ej#d)ej%gge$d'�j2g di¢ge$fgg dj¢d0�dkdl„ ƒƒZ4dmdn„ Z5ej doe
eg¡dpdq„ ƒZ6drds„ Z7dtdu„ Z8ejjdvd7dwdxgfdyg dz¢fg d{¢d|d}gfgg d~¢d0�dd€„ ƒZ9d�d‚„ Z:ejjd g d"¢g d!¢ge #g dƒ¢g d„¢g¡ej#g d&¢g d%¢ge$d'�gg d…¢d0�d†d‡„ ƒZ;ejjdaej#d)dCgge$d'�j2ej#d)dbgge$d'�j2g dc¢gej.fej#d=d;ggddd'�j2ej#d=deggddd'�j2g df¢gej3fej#d)dCgge$d'�j2ej#d)dbgge$d'�j2e #g dc¢¡gej.fgg dˆ¢d0�d‰dŠ„ ƒZ<d‹dŒ„ Z=d�dŽ„ Z>ej d�e&e?g¡d�d‘„ ƒZ@d’d“„ ZAd”d•„ ZBd–d—„ ZCd˜d™„ ZDdšd›„ ZEdœd�„ ZFej d6dyd7g¡dždŸ„ ƒZGej d ej%de&d+ƒg¡d¡d¢„ ƒZHej d6dYd[gg d£¢g¡d¤d¥„ ƒZIejjd¦d5d4gd§d¨gd0�ejjd6d7g d©¢gd7dªgd0�d«d¬„ ƒƒZJej doe
eg¡d­d®„ ƒZKej d¯d°d;id±d²id±d³id;d´dµœded¶dµœg¡ej d·d¸g d¹¢gg¡dºd»„ ƒƒZLej d6dyd7dCgg¡d¼d½„ ƒZMej d6d)gdbgg¡d¾d¿„ ƒZNej d¯d°d[id±d´id±dÀid±dÁid±dÂid[dÃdµœded´dµœg¡dÄdÅ„ ƒZOej d6d7dCgg¡dÆdÇ„ ƒZPej d6d)gdbgg¡dÈdÉ„ ƒZQdÊdË„ ZRej d¯d[d=dµœd±deig¡dÌdÍ„ ƒZSdÎdÏ„ ZTdÐdÑ„ ZUdÒdÓ„ ZVdÔdÕ„ ZWdÖd×„ ZXej d¯dØd=dÙœg¡dÚdÛ„ ƒZYej d¯d;d[dÙœg¡dÜdÝ„ ƒZZej dÞg dß¢¡ej dàg dá¢¡dâdã„ ƒƒZ[dädå„ Z\ej d ej%dg¡dædç„ ƒZ]dèdé„ Z^ej d
g d¢¡ej dêdëdìg¡dídî„ ƒƒZ_ej d
g d¢¡dïdð„ ƒZ`ej d
g d¢¡dñdò„ ƒZaej d
g d¢¡dódô„ ƒZbdõdö„ Zcd÷dø„ Zdej dùej%dúg¡dûdü„ ƒZeej dêdëdìg¡ej dùej%dúg¡dýdþ„ ƒƒZfejjdaej#d)ej%gge$d'�j2ej#d)dCgge$d'�j2ej#d)dbej%ge$d'�gej.fej#d)ej%gge$d'�j2ej#d)dCgge$d'�j2ej#d)dbej%ge$d'�gej.fej#dÿej%ggejd'�j2ej#dRggejd'�j2e #dÿdSej%g¡gejfgg �d ¢d0��d�d„ ƒZgej doe
eg¡�d�d„ ƒZhej �de #�dej%dRgg¡j2e #�dej%�dgg¡j2e #dSgg¡fe #g �d¢g¡j2e #g �d	¢g¡j2e #ej%gg¡fej#�d
ej%dCgge$d'�j2e #�dej%�dgg¡j2ej#dbgge$d'�fej#g �d¢ge$d'�j2e #g �d¢g¡j2ej#ej%gge$d'�fg¡�d�d„ ƒZiej �de¡�d�d„ ƒZj�d�d„ Zkej �d�dd]ggej#�dd]gg�dd'�ej#�dd]gg�dd'�g¡ej �dd\d]ggej#d\d]gg�dd'�ej#d\d]gg�dd'�g¡�d�d„ ƒƒZl�d�d„ Zm�d�d„ Zn�d�d „ Zoej �d!d5d4g¡�d"�d#„ ƒZpej �d$ej#d)g�d%gge$d'�d gej%gej%ggejq�d%gdgdgge$d'�fej#ej%g�d%gd)gge$d'�d gej%gej%ggejq�d%gej%gej%gge$d'�fg¡�d&�d'„ ƒZr�d(�d)„ Zs�d*�d+„ Zt�d,�d-„ Zu�d.�d/„ Zv�d0�d1„ Zwej d¯d°d[id±d´id±dÀid±dÁid±dÂid[dÃdµœded´dµœg¡�d2�d3„ ƒZx�d4�d5„ Zy�d6�d7„ Zz�d8�d9„ Z{�d:�d;„ Z|ej d¯d°d´id±d;ig¡�d<�d=„ ƒZ}ej d¯d°d=id±�d>ig¡�d?�d@„ ƒZ~�dA�dB„ Z�dC�dD„ Z€ej doe
eg¡�dE�dF„ ƒZ�dS (G  é    N)Úsparse)ÚNotFittedError)ÚOneHotEncoderÚOrdinalEncoder)Úis_scalar_nan)Ú_convert_containerÚassert_allcloseÚassert_array_equal)ÚCSR_CONTAINERSc                  C   sž   t  g d¢g d¢g¡} tƒ }tdd�}| | ¡}| | ¡}|jdksHJ ‚|jdksVJ ‚t |¡sdJ ‚t |¡rrJ ‚t| ¡ g d¢g d¢gƒ t| ¡ |ƒ d S )N©é   é   é   ©r   r   r   F©Úsparse_output©r   é   )ç        ç      ð?r   r   r   )r   r   r   r   r   )	ÚnpÚarrayr   Úfit_transformÚshaper   Úissparser	   Útoarray)ÚXZ
enc_sparseZ	enc_denseÚX_trans_sparseZX_trans_dense© r   úOE:\soccer\ml_env\Lib\site-packages\sklearn/preprocessing/tests/test_encoders.pyÚ!test_one_hot_encoder_sparse_dense   s    


ÿr    Úhandle_unknown)ÚignoreÚinfrequent_if_existÚwarnc                 C   sÂ   t  g d¢g d¢g d¢g¡}t  g d¢g¡}tdd�}| |¡ tjtdd�� | |¡ W d   ƒ n1 sn0    Y  t| d�}| |¡ | ¡ }t	| |¡ 
¡ t  g d	¢g¡ƒ t||ƒ d S )
N)r   r   r   )r   r   r   )r   r   r   )é   r   r   Úerror©r!   úFound unknown categories©Úmatch)r   r   r   r   r   r   r   )r   r   r   ÚfitÚpytestÚraisesÚ
ValueErrorÚ	transformÚcopyr	   r   r   ©r!   r   ÚX2ÚohZ	X2_passedr   r   r   Ú#test_one_hot_encoder_handle_unknown*   s    

(

þr4   c                 C   sx   t  g d¢¡ d¡}t  ddg¡ d¡}t| d�}| |¡ | ¡ }t| |¡ ¡ t  g d¢g d¢g¡ƒ t||ƒ d S )N)Z11111111Ú22Z333Z4444)éÿÿÿÿr   Z55555r5   r'   )r   r   r   r   ©r   r   r   r   )	r   r   Úreshaper   r+   r0   r	   r/   r   r1   r   r   r   Ú+test_one_hot_encoder_handle_unknown_stringsB   s    

þr9   Úoutput_dtypeÚinput_dtypec                 C   s¢   t jddgg| d�j}t jddgddgg|d�}td|d�}t| |¡ ¡ |ƒ t| |¡ |¡ ¡ |ƒ td|dd�}t| |¡|ƒ t| |¡ |¡|ƒ d S )Nr   r   ©ÚdtypeÚauto)Ú
categoriesr=   F)r?   r=   r   )	r   ÚasarrayÚTr   r	   r   r   r+   r/   )r;   r:   r   Ú
X_expectedr3   r   r   r   Útest_one_hot_encoder_dtypeU   s    rC   c                 C   sª   t  d¡}| ddgddgdœ¡}tjg d¢g d¢g| d	�}t| d	�}t| |¡ ¡ |ƒ t| 	|¡ 
|¡ ¡ |ƒ t| d
d�}t| |¡|ƒ t| 	|¡ 
|¡|ƒ d S )NÚpandasÚaÚbr   r   ©ÚAÚB©r   r   r   r   ©r   r   r   r   r<   F)r=   r   )r,   ÚimportorskipÚ	DataFramer   r   r   r	   r   r   r+   r/   )r:   ÚpdÚX_dfrB   r3   r   r   r   Ú!test_one_hot_encoder_dtype_pandasd   s    

rP   c                  C   sž   t ƒ } g d¢g d¢g d¢g d¢g}|  |¡ |  ¡ }tg d¢|ƒ |  g d¢¡}tg d¢|ƒ tjtdd	�� |  d
dg¡ W d   ƒ n1 s�0    Y  d S )N)ÚMaler   Úgirlr   r   )ÚFemaleé)   rR   r   é
   )rQ   é3   Úboyé   r   )rQ   é[   rR   é   é   )Z	x0_FemaleZx0_MaleZx1_1Zx1_41Zx1_51Zx1_91Zx2_boyZx2_girlZx3_1Zx3_2Zx3_12Zx3_21Zx4_3Zx4_10Zx4_30)ÚoneÚtwoÚthreeÚfourÚfive)Z
one_FemaleZone_MaleZtwo_1Ztwo_41Ztwo_51Ztwo_91Z	three_boyZ
three_girlZfour_1Zfour_2Zfour_12Zfour_21Zfive_3Zfive_10Zfive_30z!input_features should have lengthr)   r\   r]   )r   r+   Úget_feature_names_outr	   r,   r-   r.   )Úencr   Úfeature_namesZfeature_names2r   r   r   Ú"test_one_hot_encoder_feature_namest   s&    ü
îîrd   c                  C   s\   t ƒ } tjddggtd�j}|  |¡ |  ¡ }tddg|ƒ | jdgd�}tdd	g|ƒ d S )
Nu   câ�¤t1Zdat2r<   u	   x0_câ�¤t1Zx0_dat2u   nðŸ‘�me©Zinput_featuresu   nðŸ‘�me_câ�¤t1u   nðŸ‘�me_dat2)r   r   r   ÚobjectrA   r+   ra   r	   )rb   r   rc   r   r   r   Ú*test_one_hot_encoder_feature_names_unicode°   s    
rg   c                  C   sº   dd„ } t | d�}tjddggtd�j}| |¡ | ¡ }tddg|ƒ |jd	gd
�}tddg|ƒ dd„ }t |d� |¡}d}tj	t
|d�� | ¡  W d  ƒ n1 s¬0    Y  dS )z=Check the behaviour of `feature_name_combiner` as a callable.c                 S   s   | d t |ƒ S )NÚ_)Úrepr©ÚfeatureÚcategoryr   r   r   Úname_combiner½   s    zHtest_one_hot_encoder_custom_feature_name_combiner.<locals>.name_combiner)Zfeature_name_combinerÚNoneNr<   z	x0_'None'Zx0_NonerE   re   za_'None'Za_Nonec                 S   s   dS )Nr   r   rj   r   r   r   Úwrong_combinerÈ   s    zItest_one_hot_encoder_custom_feature_name_combiner.<locals>.wrong_combinerzMWhen `feature_name_combiner` is a callable, it should return a Python string.r)   )r   r   r   rf   rA   r+   ra   r	   r,   r-   Ú	TypeError)rm   rb   r   rc   ro   Úerr_msgr   r   r   Ú1test_one_hot_encoder_custom_feature_name_combinerº   s    

ÿrr   c                  C   sŠ   t  ddgg¡j} tƒ }|jg d¢gd� | ¡ d g d¢gksDJ ‚| | ¡ ¡ jdks\J ‚|jg d¢gd� | | ¡ ¡ jdks†J ‚d S )	Nr   r   )r   r   r   r   ©r?   r?   )r   r%   )r   r   r   r   r%   r   )	r   r   rA   r   Ú
set_paramsÚ
get_paramsr   r   r   )r   r3   r   r   r   Útest_one_hot_encoder_set_paramsÔ   s    rv   c                 C   sX   t dd�}| | ¡}t ddd�}| | ¡}t| ¡ |ƒ t |¡rL|jdksPJ ‚| ¡ S )Nr>   rs   F©r?   r   Zcsr)r   r   r   r   r   r   Úformat)r   rb   ZXtr1ZXtr2r   r   r   Úcheck_categorical_onehotà   s    


ry   r   ©Údefr   é7   ©Úabcr   r|   )rU   r   r|   )r   r   r|   )rF   rH   Úcat)rE   rI   r   r<   )rF   r   r   rE   r   Únan)Nr   r   )rE   r   r   )Nr   N)ÚmixedÚnumericrf   z	mixed-nanzmixed-float-nanz
mixed-Nonezmixed-None-nanzmixed-None-float-nan)Zidsc                 C   s”   t t | ¡d d …dgf ƒ}t|ddgddggƒ t t | ¡d d …ddgf ƒ}t|g d¢g d¢gƒ tdd� | ¡}t| ¡ g d¢g d¢gƒ d S )	Nr   r   )r   r   r   r   ©r   r   r   r   r>   rs   )r   r   r   r   r   )r   r   r   r   r   )ry   r   r   r   r   r   r   )r   ÚXtrr   r   r   Útest_one_hot_encoderí   s    r…   Úsparse_FTÚdropÚfirstc                 C   sÐ  g d¢g d¢g d¢g}t ||d�}| |¡}tj|td�}t| |¡|ƒ ddgddgd	dgg}t |d
|d�}| |¡}t |¡}t| |¡|ƒ |d u �rrg d¢g d¢g d¢g}t || ddgddgg d¢gd�}| |¡}tj|td�}d |d< t| |¡|ƒ ddgddgd	dgg}t |ddgddgg| d�}| |¡}tj|td�}d |d< d |d d …df< t| |¡|ƒ t g d¢g d¢g¡}t d¡}t	j
t|d�� | |¡ W d   ƒ n1 �sÂ0    Y  d S )Nr}   rz   )r~   r   r|   ©r   r‡   r<   r   r|   r   r   r>   )r   r?   r‡   r~   r{   )é6   r|   é8   )r   r!   r?   )r   r   rŠ   r‹   )r   r?   r!   ©r   r   r   ©r   r   r   ú)Shape of the passed X data is not correctr)   )r   r   r   r   rf   r	   Úinverse_transformÚreÚescaper,   r-   r.   )r!   r†   r‡   r   rb   ÚX_trÚexpÚmsgr   r   r   Útest_one_hot_encoder_inverse  sH    



ý
ý

r•   z
X, X_transr   r|   r   r   ©r   r   r   r\   r]   r^   rF   ©r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   c                 C   s^   t |d� | ¡}d}|r"t|dƒ}tjt|d�� | |¡ W d  ƒ n1 sP0    Y  dS )z×Check that `inverse_transform` raise an error with unknown samples, no
    dropped feature, and `handle_unknow="error`.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/14934
    r   zqSamples \[(\d )*\d\] can not be inverted when drop=None and handle_unknown='error' because they contain all zerosr   r)   N)r   r+   r   r,   r-   r.   r�   )r   ÚX_transr†   rb   r”   r   r   r   Ú?test_one_hot_encoder_inverse_transform_raise_error_with_unknownA  s    ÿ
r™   c                  C   sJ   t jddgddgddggtd�} tddd	�}| | ¡}t| |¡| ƒ d S )
NrQ   r   rS   r   r   r<   Ú	if_binaryF©r‡   r   )r   r   rf   r   r   r	   r�   )r   Úoher’   r   r   r   Ú&test_one_hot_encoder_inverse_if_binarya  s     
r�   )rš   rˆ   NÚ
reset_dropc                 C   s†   t jddgddgddggtd�}t| dd�}| |¡ | |¡}| ¡ }|j|d	� t| 	|¡|ƒ t
| |¡|ƒ t| ¡ |ƒ d S )
NrQ   r   rS   r   r   r<   Fr›   ©r‡   )r   r   rf   r   r+   r/   ra   rt   r	   r�   r   )r‡   rž   r   rœ   r’   rc   r   r   r   Útest_one_hot_encoder_drop_reseth  s     

r    Úmethodr+   r   ç      @ç      @c                 C   sJ   t ƒ }d}tjt|d�� t||ƒ| ƒ W d   ƒ n1 s<0    Y  d S )Nz'Expected 2D array, got 1D array insteadr)   )r   r,   r-   r.   Úgetattr)r   r¡   r3   r”   r   r   r   Útest_X_is_not_1Dw  s    r¥   c                 C   sn   t  d¡}| g d¢¡}tƒ }dt|ƒ› d�}t jt|d�� t|| ƒ|ƒ W d   ƒ n1 s`0    Y  d S )NrD   )é   r   r%   r¦   z+Expected a 2-dimensional container but got z	 instead.r)   )r,   rL   ÚSeriesr   Útyper-   r.   r¤   )r¡   rN   r   r3   r”   r   r   r   Útest_X_is_not_1D_pandas�  s    
r©   zX, cat_exp, cat_dtyper~   r{   r   rH   rI   )r�   r‚   rf   Ústringzmissing-floatzmissing-np.nan-objectzmissing-float-nan-objectc                 C   sº   | | d d d… fD ]¢}t dd�}| |¡ t|jtƒs:J ‚t|j|ƒD ]l\}}| ¡ }t|d ƒr�t|d ƒsrJ ‚|d d… |d d… ks J ‚n| ¡ |ks J ‚t 	|j
|¡sFJ ‚qFqd S )Nr6   r>   rs   )r   r+   Ú
isinstanceÚcategories_ÚlistÚzipÚtolistr   r   Ú
issubdtyper=   )r   Zcat_expÚ	cat_dtypeÚXirb   Úresr“   Zres_listr   r   r   Útest_one_hot_encoder_categoriesŒ  s    #

r´   zX, X2, cats, cat_dtypeÚd©rE   rF   ÚcÚint64r%   ©r   r   r   )NrE   Úz)rE   rF   rº   )rE   Nrº   )rf   r‚   zobject-stringzobject-string-nonezobject-string-nanzobject-None-and-nanc                 C   s  t |d�}t g d¢g d¢g¡}t| | ¡ ¡ |ƒ t|jd ƒt|d ƒksRJ ‚|jd  	¡ t|d ƒkspJ ‚|jd j
|ks„J ‚t |d�}tjtdd�� | |¡ W d   ƒ n1 s¼0    Y  t ||d�}t g d¢g d¢g¡}t| |¡ |¡ ¡ |ƒ d S )	Nrs   ©r   r   r   ©r   r   r   r   r(   r)   ©r?   r!   )r   r   r   )r   r   r   r	   r   r   r­   r?   r¬   r¯   r=   r,   r-   r.   r+   r/   )r   r2   Úcatsr±   r!   rb   r“   r   r   r   Ú)test_one_hot_encoder_specified_categories¾  s    3

(r¿   c                  C   s   t jddggtd�j} tg d¢gd�}t  g d¢g d¢g¡}t| | ¡ | ¡ ¡ |ƒ t| 	| ¡ ¡ |ƒ |j
d  ¡ g d¢ks„J ‚t  |j
d jt j¡sžJ ‚t  d	d
gg¡j} tg d¢gd�}d}tjt|d�� | 	| ¡ W d   ƒ n1 sò0    Y  d S )NrE   rF   r<   )rF   rE   r·   rs   r¼   r»   r   r   r   )r   r   r   z%Unsorted categories are not supportedr)   )r   r   rf   rA   r   r	   r+   r/   r   r   r¬   r¯   r°   r=   Úobject_r,   r-   r.   )r   rb   r“   r”   r   r   r   Ú(test_one_hot_encoder_unsorted_categories  s    rÁ   ÚEncoderc                 C   sp   t  dt jdg¡g}| |d�}t jddggtd�j}tjtdd�� | |¡ W d  ƒ n1 sb0    Y  dS )zžTest encoder for specified categories that nan is at the end.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27088
    r   r   rs   r<   zNan should be the last elementr)   N)	r   r   r€   rf   rA   r,   r-   r.   r+   ©rÂ   r¾   rb   r   r   r   r   Ú,test_encoder_nan_ending_specified_categories  s
    
rÄ   c                  C   sÈ   t jddgddggtd�j} tg d¢g d¢gd�}t  g d	¢g d
¢g¡}t| | ¡ ¡ |ƒ |jd  	¡ g d¢ksvJ ‚t  
|jd jt j¡s�J ‚|jd  	¡ g d¢ksªJ ‚t  
|jd jt j¡sÄJ ‚d S )NrE   rF   r   r   r<   r¶   )r   r   r   rs   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   rf   rA   r   r	   r   r   r¬   r¯   r°   r=   rÀ   ©r   rb   r“   r   r   r   Ú7test_one_hot_encoder_specified_categories_mixed_columns$  s    rÆ   c                  C   sD   t  d¡} |  ddgddgdœ¡}t|ƒ}t|g d¢g d¢gƒ d S )	NrD   rE   rF   r   r   rG   rJ   rK   )r,   rL   rM   ry   r   )rN   rO   r„   r   r   r   Útest_one_hot_encoder_pandas1  s    
rÇ   zdrop, expected_namesÚx0_cÚx2_brš   )rÈ   Zx1_2rÉ   )r·   r   rF   Úx0_bZx2_a)rˆ   ÚbinaryÚmanualc                 C   s:   g d¢g d¢g}t | d�}| |¡ | ¡ }t||ƒ d S )N)r·   r   rE   )rF   r   rF   rŸ   )r   r+   ra   r	   )r‡   Zexpected_namesr   rœ   rc   r   r   r   Ú'test_one_hot_encoder_feature_names_drop:  s
    


rÍ   c                  C   sÜ   ddgddgddgg} t  g d¢g d¢g d¢g¡}t  d d	g¡}td
dd�}| | ¡}t|j|ƒ t||ƒ ddgddgddgg} t  ddgddgddgg¡}t  d	d g¡}td
dd�}| | ¡}t|j|ƒ t||ƒ d S )NrU   Úyesé   Únor[   )r   r   r   r   r7   )r   r   r   r   r   rš   Fr›   ÚtruerE   Úfalser   r   )r   r   r   r   r	   Ú	drop_idx_r   )r   ÚexpectedZexpected_drop_idxrœ   Úresultr   r   r   Ú*test_one_hot_encoder_drop_equals_if_binaryL  s     ÿ


rÖ   )rU   r   r|   )rÏ   r   r|   )r�   r‚   rf   c                 C   sT   t ƒ }tjg d¢g d¢gdd�}t| | ¡| d¡ƒ t dd�}t| | ¡|ƒ d S )N©r   r   r   ©r   r   r   r¸   r<   Úfloat64)r   r   r   r	   r   ZastyperÅ   r   r   r   Útest_ordinal_encoderd  s
    

rÚ   )rf   r‚   zobject-string-catc                 C   sÂ   t |d�}t dgdgg¡}t| | ¡|ƒ t|jd ƒt|d ƒksJJ ‚|jd  ¡ t|d ƒkshJ ‚|jd j	|ks|J ‚t |d�}t
jtdd�� | |¡ W d   ƒ n1 s´0    Y  d S )Nrs   r   r   r   r(   r)   )r   r   r   r	   r   r­   r?   r¬   r¯   r=   r,   r-   r.   r+   )r   r2   r¾   r±   rb   r“   r   r   r   Ú)test_ordinal_encoder_specified_categoriesu  s    

rÛ   c                  C   sš   g d¢g d¢g} t ƒ }| | ¡}tj| td�}t| |¡|ƒ t g d¢g d¢g¡}t d¡}t	j
t|d�� | |¡ W d   ƒ n1 sŒ0    Y  d S )Nr}   rz   r<   )r   r   r   r   rJ   rŽ   r)   )r   r   r   r   rf   r	   r�   r�   r‘   r,   r-   r.   )r   rb   r’   r“   r”   r   r   r   Útest_ordinal_encoder_inversež  s    

rÜ   c                  C   sÂ   t ddd�} tjddgddgdd	ggtd
�}tjddgddgddggtd
�}|  |¡ |  |¡}tjddgddgddggdd
�}t||ƒ |  |¡}tjdd gd dgddggtd
�}t||ƒ d S )NÚuse_encoded_valueéþÿÿÿ©r!   Úunknown_valuerE   ÚxrF   Úyr·   rº   r<   ZxyZblar   r   r   r¸   )r   r   r   rf   r+   r/   r	   r�   )rb   ÚX_fitr˜   ÚX_trans_encr“   ÚX_trans_invÚinv_expr   r   r   Ú+test_ordinal_encoder_handle_unknowns_string¬  s      

 

 rç   r=   c                 C   sÂ   t ddd�}tjddgddgdd	gg| d
�}tjddgddgddgg| d
�}| |¡ | |¡}tjddgddgddggdd
�}t||ƒ | |¡}tjdd gd dgddggtd
�}t||ƒ d S )NrÝ   éüÿÿrß   r   é   r   é   r   é	   r<   rX   é   r   r¸   )r   r   r   r+   r/   r	   r�   rf   )r=   rb   rã   r˜   rä   r“   rå   ræ   r   r   r   Ú,test_ordinal_encoder_handle_unknowns_numeric»  s      

 

 rí   c                  C   s`   t dtjd�} t dgdgdgg¡}|  |¡ |  dgdgdgg¡}t|dgdgtjggƒ d S )NrÝ   rß   r   r   r   r%   r   )r   r   r€   r   r+   r/   r	   )rb   rã   r˜   r   r   r   Ú(test_ordinal_encoder_handle_unknowns_nanË  s
    
rî   c                  C   sb   t dtjtd�} t dgdgdgg¡}tjtdd�� |  |¡ W d   ƒ n1 sT0    Y  d S )NrÝ   )r!   rà   r=   r   r   r   z'dtype parameter should be a float dtyper)   )	r   r   r€   Úintr   r,   r-   r.   r+   )rb   rã   r   r   r   Ú8test_ordinal_encoder_handle_unknowns_nan_non_float_dtypeÖ  s    ÿrð   c                  C   sh   t jg d¢gtd�j} g d¢}t|d�}d}tjt|d�� | | ¡ W d   ƒ n1 sZ0    Y  d S )N)ÚLowÚMediumÚHighrò   rñ   r<   )rñ   rò   ró   rs   z*Shape mismatch: if categories is an array,r)   )	r   r   rf   rA   r   r,   r-   r.   r+   )r   r¾   rb   r”   r   r   r   Ú+test_ordinal_encoder_raise_categories_shapeâ  s    
rô   c                     s|  t dd�‰tjg d¢g d¢gdd�} tjddgd	d
ggdd�tjddgd	d
ggdd�t ddgddgg¡t ddgddgg¡tjddgd	dggdd�fD ]B‰ ˆ ˆ ¡ t‡ ‡fdd„tdƒD ƒƒsÆJ ‚tˆ ˆ ¡ ¡ | ƒ q˜ddgd	d
gg‰ ˆ ˆ ¡ t‡fdd„tdƒD ƒƒ�sJ ‚tˆ ˆ ¡ ¡ | ƒ ddgd	dgg‰ ˆ ˆ ¡ t‡fdd„tdƒD ƒƒ�sdJ ‚tˆ ˆ ¡ ¡ | ƒ d S )Nr>   rs   )r   r   r   r   )r   r   r   r   rÙ   r<   r   r   r   r%   r¸   rE   rF   r·   rµ   ó   aó   bó   có   drf   c                    s   g | ]}ˆj | jˆ jk‘qS r   ©r¬   r=   ©Ú.0Úi©r   rb   r   r   Ú
<listcomp>ù  ó    z'test_encoder_dtypes.<locals>.<listcomp>c                    s"   g | ]}t  ˆ j| jt j¡‘qS r   )r   r°   r¬   r=   Úintegerrú   ©rb   r   r   rþ   þ  rÿ   c                    s   g | ]}ˆ j | jd k‘qS )rf   rù   rú   r  r   r   rþ     rÿ   )	r   r   r   r+   ÚallÚranger	   r/   r   )r“   r   rý   r   Útest_encoder_dtypesì  s&    
û
 
 
 r  c                     s  t  d¡} tdd�‰tjg d¢g d¢gdd�}| jdd	gd
dgddgdœdd�}ˆ |¡ t‡fdd„td	ƒD ƒƒsxJ ‚t	ˆ 
|¡ ¡ |ƒ |  dd	gddgddgdœ¡}|d j|d j|d jg‰ ˆ |¡ t‡ ‡fdd„td
ƒD ƒƒsðJ ‚t	ˆ 
|¡ ¡ |ƒ d S )NrD   r>   rs   )r   r   r   r   r   r   )r   r   r   r   r   r   rÙ   r<   r   r   r   r%   r   r¦   ©rH   rI   ÚCr¸   c                    s   g | ]}ˆ j | jd k‘qS )r¸   rù   rú   r  r   r   rþ     rÿ   z.test_encoder_dtypes_pandas.<locals>.<listcomp>rE   rF   r¢   r£   rH   rI   r  c                    s    g | ]}ˆj | jˆ | k‘qS r   rù   rú   ©ZX_typerb   r   r   rþ     rÿ   )r,   rL   r   r   r   rM   r+   r  r  r	   r/   r   r=   )rN   r“   r   r   r  r   Útest_encoder_dtypes_pandas  s    

þ"

 r  c                  C   sV   t ƒ } ddgddgg}t ¡ �$ t d¡ |  |¡ W d   ƒ n1 sH0    Y  d S )NrQ   r   rS   r   r&   )r   ÚwarningsÚcatch_warningsÚsimplefilterr   )rb   r   r   r   r   Útest_one_hot_encoder_warning  s
    

r  c                 C   s    ddgddgddgg}t | ddddgddggd�}| |¡ d	dgg}t ddgg¡}d
}tjt|d�� | |¡}W d  ƒ n1 sˆ0    Y  t||ƒ dS )z,Check handle_unknown='warn' works correctly.rE   r   rF   r   r   Fr$   ©r‡   r   r!   r?   r·   úqFound unknown categories in columns \[0\] during transform. These unknown categories will be encoded as all zerosr)   N©	r   r+   r   r   r,   ÚwarnsÚUserWarningr/   r   )r‡   r   rœ   ÚX_testrB   Úwarn_msgr˜   r   r   r   Útest_ohe_handle_unknown_warn%  s    ü

ÿ(r  Úmissing_valuec           	      C   sr  dddd| g}t |d�}g d¢g d¢dddd| gg}| |¡ ¡ }g d¢g d	¢g d
¢g}t||ƒ |j|u spJ ‚dd„ t|j|jƒD ƒ}| |¡}t	j
|td�}t|d ƒ�rZt|d d… |d d… ƒ t|d ƒsØJ ‚t|d ƒsèJ ‚t|d d …d d…f |d d …d d…f ƒ t|dd d…f |dd d…f ƒ t|d ƒ�sFJ ‚t|d ƒ�snJ ‚nt||ƒ t||ƒ d S )Nr{   rX   r   r‹   rŸ   )r~   rX   r   r|   rE   )r{   rX   r   r|   rE   )r   r   r   r   r   )r   r   r   r   r   r—   c                 S   s   g | ]\}}|| ‘qS r   r   )rû   r   rk   r   r   r   rþ   M  s   z4test_one_hot_encoder_drop_manual.<locals>.<listcomp>r<   r6   )r6   r6   )r   r   r   r	   r‡   r®   r¬   rÓ   r�   r   r   rf   r   )	r  Zcats_to_droprb   r   Ztransr“   Zdropped_catsZX_inv_transZX_arrayr   r   r   Ú test_one_hot_encoder_drop_manual?  s2    
ý
ÿ
*"
r  )r~   r   rT   rE   c                 C   s\   t | d�}d}tjt|d��, | g d¢g d¢g d¢g¡ W d   ƒ n1 sN0    Y  d S )NrŸ   z-`drop` should have length equal to the numberr)   r}   rz   )r{   r   é;   )r   r,   r-   r.   r+   )r‡   rb   rq   r   r   r   Útest_invalid_drop_lengthd  s    
r  Údensityr   Zdense©rE   r   rF   rÌ   c                 C   s´   t | d�}t | |d�}g d¢g d¢g}| |¡ | |¡ t|j|jƒ |dkr^t|jdƒ n0t||j|jƒD ]\}}}|t|ƒ |ksnJ ‚qnt|jtj	ƒs J ‚|jj
tks°J ‚d S )Nr   r‰   )r·   r   rE   r  rˆ   r   )r   r+   r	   r¬   rÓ   r®   rï   r«   r   Zndarrayr=   rf   )r  r‡   Zohe_baseZohe_testr   Zdrop_catZdrop_idxZcat_listr   r   r   Útest_categoriesl  s    



ÿr  c                 C   s   | ƒ   ¡ jjsJ ‚d S )N)Z__sklearn_tags__Z
input_tagsÚcategorical)rÂ   r   r   r   Ú"test_encoders_has_categorical_tags€  s    r  ÚkwargsÚmax_categoriesÚmin_frequencyé   g�Âõ(\�Ò?r¦   )r  r   rX   r?   r>   ©rE   rF   r·   rµ   c           
      C   sü   t  dgd dgd  dgd  dgd  g¡j}tf |d	d
dœ| ¤Ž |¡}t|jg d¢gƒ dgdgdgdgdgg}t  ddgddgddgddgddgg¡}| |¡}t||ƒ dd„ dgdgd  D ƒ}| 	|¡}t||ƒ | 
¡ }	tddg|	ƒ dS )zpTest that different parameters for combine 'a', 'c', and 'd' into
    the infrequent category works as expected.rE   r   rF   rÏ   r·   rU   rµ   r   r#   F)r?   r!   r   ©rE   r·   rµ   Úer   r   c                 S   s   g | ]
}|g‘qS r   r   ©rû   Úcolr   r   r   rþ   £  rÿ   z2test_ohe_infrequent_two_levels.<locals>.<listcomp>Úinfrequent_sklearnr%   rÊ   Úx0_infrequent_sklearnN©r   r   rA   r   r+   r	   Úinfrequent_categories_r/   r   r�   ra   )
r  r?   ÚX_trainrœ   r  rÔ   r˜   Úexpected_invÚX_invrc   r   r   r   Útest_ohe_infrequent_two_levels…  s(    2ýüû(



r.  c                 C   sÆ   t  dgd dgd  dgd  dgd  g¡j}td	d
d| d� |¡}|jd |jd  dksdJ ‚t  dgdgg¡}| |¡}tdgdgg|ƒ | 	¡ }t
dg|ƒ | |¡}t
dgdgg|ƒ dS )z3Test two levels and dropping the frequent category.rE   r   rF   rÏ   r·   rU   rµ   r   r#   Fr   ©r!   r   r  r‡   r   r   r(  r'  N)r   r   rA   r   r+   r¬   rÓ   r/   r   ra   r	   r�   )r‡   r+  rœ   r  r˜   rc   Ú	X_inverser   r   r   Ú,test_ohe_infrequent_two_levels_drop_frequent«  s"    2üû

r1  c                 C   sŽ   t  dgd dgd  dgd  dgd  g¡j}td	d
d| d�}d| d ›d�}tjt|d�� | |¡ W d  ƒ n1 s€0    Y  dS )z_Test two levels and dropping any infrequent category removes the
    whole infrequent category.rE   r   rF   rÏ   r·   rU   rµ   r   r#   Fr   r/  úUnable to drop category r   ú( from feature 0 because it is infrequentr)   N©r   r   rA   r   r,   r-   r.   r+   ©r‡   r+  rœ   r”   r   r   r   Ú5test_ohe_infrequent_two_levels_drop_infrequent_errorsÃ  s    2ür6  rë   g¸…ëQ¸Î?g{®GázÄ?rê   c           	      C   sø   t  dgd dgd  dgd  dgd  g¡j}tf d	d
dœ| ¤Ž |¡}t|jddggƒ dgdgdgdgdgg}t  g d¢g d¢g d¢g d¢g d¢g¡}| |¡}t||ƒ dgdgdgdgdgg}| 	|¡}t||ƒ | 
¡ }tg d¢|ƒ dS )zkTest that different parameters for combing 'a', and 'd' into
    the infrequent category works as expected.rE   r   rF   rÏ   r·   rU   rµ   r   r#   F©r!   r   r$  rØ   ©r   r   r   r×   r'  )rÊ   rÈ   r(  Nr)  )	r  r+  rœ   r  rÔ   r˜   r,  r-  rc   r   r   r   Ú test_ohe_infrequent_three_levelsÕ  s.    2ÿÿþ(

û

r9  c                 C   sð   t  dgd dgd  dgd  dgd  g¡j}td	d
d| d� |¡}t  dgdgdgg¡}tddgddgddgg| |¡ƒ |jdd� |¡ d}tj	t
|d��" | dgdgg¡}W d  ƒ n1 sÌ0    Y  tddgddgg|ƒ dS )z5Test three levels and dropping the frequent category.rE   r   rF   rÏ   r·   rU   rµ   r   r#   Fr/  r   r   r"   r'   r(   r)   r$  N)r   r   rA   r   r+   r   r/   rt   r,   r  r  )r‡   r+  rœ   r  r”   r˜   r   r   r   Ú.test_ohe_infrequent_three_levels_drop_frequentÿ  s     2üû"0r:  c                 C   sŽ   t  dgd dgd  dgd  dgd  g¡j}td	d
d| d�}d| d ›d�}tjt|d�� | |¡ W d  ƒ n1 s€0    Y  dS )z7Test three levels and dropping the infrequent category.rE   r   rF   rÏ   r·   rU   rµ   r   r#   Fr/  r2  r   r3  r)   Nr4  r5  r   r   r   Ú7test_ohe_infrequent_three_levels_drop_infrequent_errors  s    2ür;  c                  C   sê   t  dgd dgd  dgd  dgd  g¡j} td	d
dd� | ¡}t|jddggƒ dgdgdgdgg}t  g d¢g d¢g d¢g d¢g¡}| |¡}t||ƒ dgg}d}t	j
t|d�� | |¡ W d  ƒ n1 sÜ0    Y  dS )zmTest that different parameters for combining 'a', and 'd' into
    the infrequent category works as expected.rE   r   rF   rÏ   r·   rU   rµ   r   r&   F)r!   r   r  rØ   r8  r×   Úbadz.Found unknown categories \['bad'\] in column 0r)   N)r   r   rA   r   r+   r	   r*  r/   r   r,   r-   r.   )r+  rœ   r  rÔ   r˜   r”   r   r   r   Ú(test_ohe_infrequent_handle_unknown_error'  s    2ÿþ"

r=  c                 C   sè   t jdgd dgd  gtd�j}tf g d¢gddd	œ| ¤Ž |¡}dgd
gdgdgdgg}t  ddgddgddgddgddgg¡}| |¡}t||ƒ dddgg}dgdgg}|D ].}|j|d� |¡ tdgdgg| |¡ƒ q´dS )zG'a' is the only frequent category, all other categories are infrequent.rE   r   r$  r[   r<   ©r·   rµ   rE   rF   Fr#   ©r?   r   r!   rF   r·   rµ   r   r   rˆ   rš   rŸ   N)	r   r   rf   rA   r   r+   r/   r   rt   )r  r+  rœ   r  rÔ   r˜   Zdropsr‡   r   r   r   Ú5test_ohe_infrequent_two_levels_user_cats_one_frequent?  s&    "ýüû(

r@  c                  C   sê   t jdgd dgd  dgd  dgd  gtd	�j} tg d
¢gdddd� | ¡}t|jg d¢gƒ dgdgdgdgdgg}t  ddgddgddgddgddgg¡}| |¡}t	||ƒ dd„ dgdgd  D ƒ}| 
|¡}t||ƒ dS )zFTest that the order of the categories provided by a user is respected.rE   r   rF   rÏ   r·   rU   rµ   r   r<   r>  Fr#   r   ©r?   r   r!   r  )r·   rµ   rE   r$  r   r   c                 S   s   g | ]
}|g‘qS r   r   r%  r   r   r   rþ   q  rÿ   z<test_ohe_infrequent_two_levels_user_cats.<locals>.<listcomp>r'  r%   N©r   r   rf   rA   r   r+   r	   r*  r/   r   r�   ©r+  rœ   r  rÔ   r˜   r,  r-  r   r   r   Ú(test_ohe_infrequent_two_levels_user_cats[  s&    *ÿüû(


rD  c                  C   sè   t jdgd dgd  dgd  dgd  gtd	�j} tg d
¢gdddd� | ¡}t|jddggƒ dgdgdgdgdgg}t  g d¢g d¢g d¢g d¢g d¢g¡}| |¡}t	||ƒ dgdgdgdgdgg}| 
|¡}t||ƒ dS )z¦Test that the order of the categories provided by a user is respected.
    In this case 'c' is encoded as the first category and 'b' is encoded
    as the second one.rE   r   rF   rÏ   r·   rU   rµ   r   r<   ©r·   rµ   rF   rE   Fr#   rA  r$  r×   r8  rØ   r'  NrB  rC  r   r   r   Ú*test_ohe_infrequent_three_levels_user_catsv  s0    *ÿüû(

û
rF  c                  C   sb   t jg d¢g d¢f } tdddd�}| | ¡ ddgddgg}| |¡}t|g d	¢g d
¢gƒ dS )zaTest infrequent categories where feature 0 has infrequent categories,
    and feature 1 does not.©	r   r   r   r   r   r   r   r   r   ©	r   r   r   r   r   r   r   r   r   r   rš   F)r  r‡   r   r   r   ©r   r   r   r   )r   r   r   r   N)r   Úc_r   r+   r/   r   )r   rœ   r  r˜   r   r   r   Útest_ohe_infrequent_mixedš  s    

rK  c            	   
   C   sè  t jg d¢g d¢g d¢f } tdddd�}| | ¡ ¡ }t|jd d	d
gƒ t|jd	 d	dgƒ t|jd
 dƒ | ¡ }tg d¢|ƒ g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g	}t||ƒ g d¢g d¢g}| 	|¡}g d¢g d¢g}t|| ¡ ƒ | 
|¡}t jg d¢g d¢gtd�}t||ƒ tdddd� | ¡}tjtdd�� | 	|¡ W d  ƒ n1 �st0    Y  g d ¢g d!¢g}| 	|¡}g d"¢g d¢g}t|| ¡ ƒ | 
|¡}t jg d#¢g d$¢gtd�}t||ƒ dS )%z?Test infrequent categories with feature matrix with 3 features.rG  )	r   r   r   r   r   rU   r   r   r   )	r   r   r   r   r   r   r   r   r   r>   r   r#   ©r?   r  r!   r   r   r   rU   N)Zx0_0Zx0_3r(  Zx1_0Zx1_5Zx1_infrequent_sklearnZx2_0Zx2_1)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   )r%   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r'  N)r'  r   Nr<   r&   r(   r)   )r   r   r   )r   rU   r   )r   r   r   r   r   r   r   r   )r'  r'  r   )r   r'  r   )r   rJ  r   r   r   r	   r*  ra   r   r/   r�   r   rf   r+   r,   r-   r.   )	r   rœ   r˜   rc   rÔ   r  ÚX_test_transr-  r,  r   r   r   Ú'test_ohe_infrequent_multiple_categories¬  sn    þÿÿ
õ÷


ÿ
ÿþ*

þrN  c            	   
   C   s¢  t  d¡} | jg d¢g d¢dœddgd�}tdd	d
d�}| |¡ ¡ }t|jd ddgƒ t|jd g d¢ƒ g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g	}t||ƒ | jddgddgdœddgd�}g d¢g d¢g}| 	|¡}t|| ¡ ƒ | 
|¡}tjddgddggtd�}t||ƒ | jddgddgdœddgd�}| 	|¡ ¡ }g d¢g d¢g}t||ƒ | 
|¡}tjddgddggtd�}t||ƒ dS )zHTest infrequent categories with a pandas dataframe with multiple dtypes.rD   ©	rE   Úfr·   rP  rP  rE   r·   rF   rF   ©	r   r   r   rU   rU   rX   r   r   r   )Ústrrï   rR  rï   ©Úcolumnsr>   r   r#   rL  r   rE   rF   r   ©r   r   rX   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   rP  é   rX   r'  r<   r·   r   N)r,   rL   rM   r   r   r   r	   r*  r   r/   r�   r   r   rf   )	rN   r   rœ   r˜   rÔ   r  rM  r-  r,  r   r   r   Ú.test_ohe_infrequent_multiple_categories_dtypes  sV    
þûÿ	÷
 

þ
 

ÿrW  rZ   )r   r  c                 C   sp   t  dgd dgd  dgd  dgd  g¡j}tf d	d
dœ| ¤Ž}| |¡ | dgg¡}t|dggƒ dS )ú,All user provided categories are infrequent.rE   r   rF   rÏ   r·   rU   rµ   r   r#   Fr7  r   N)r   r   rA   r   r+   r/   r   ©r  r+  rœ   r˜   r   r   r   Ú$test_ohe_infrequent_one_level_errorsH  s    2ÿÿ
rZ  c                 C   sb   t jdgd gtd�j}tf g d¢gdddœ| ¤Ž |¡}| dgdgg¡}t|d	gd	ggƒ d
S )rX  r$  r   r<   r>  Fr#   r?  rE   r   N)r   r   rf   rA   r   r+   r/   r   rY  r   r   r   Ú5test_ohe_infrequent_user_cats_unknown_training_errorsV  s    ýüûr[  zinput_dtype, category_dtype)ZOOZOUZUOZUUÚSOZSUZSSÚ
array_type)r­   r   Z	dataframec           
      C   sÒ   t jdgdgg| d�}t jddg|d�g}t|dd� |¡}tdgdgdgdgg|| d�}| |¡}t  ddgddgddgddgg¡}t||ƒ t|d� |¡}	|	 |¡}t  dgdgdgdgg¡}t||ƒ d	S )
a"  Check that encoding work with object, unicode, and byte string dtypes.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/15616
    https://github.com/scikit-learn/scikit-learn/issues/15726
    https://github.com/scikit-learn/scikit-learn/issues/19677
    rF   rE   r<   Frw   r   r   rs   N)	r   r   r   r+   r   r/   r   r   r	   )
r;   Zcategory_dtyper]  r   r?   rœ   r  r˜   rÔ   Úoer   r   r   Útest_encoders_string_categoriesg  s    ÿ
"

r_  c                  C   s|   t jdgdggdd�} t jddgdd�g}t|dd�}t d¡}tjt|d	�� | | ¡ W d
  ƒ n1 sn0    Y  d
S )z¦Check that this mixture of predefined categories and X raises an error.

    Categories defined as bytes can not easily be compared to data that is
    a string.
    rF   rE   ÚUr<   ÚSFrw   zjIn column 0, the predefined categories have type 'bytes' which is incompatible with values of type 'str_'.r)   N)	r   r   r   r�   r‘   r,   r-   r.   r+   )r   r?   rœ   r”   r   r   r   Ú$test_mixed_string_bytes_categoricals†  s    ÿrb  c                 C   sP   t jdd| d| ggtd�j}tddd� |¡}| ¡ }t|ddd	| › �gƒ d S )
NrE   rF   r<   Fr"   ©r   r!   Zx0_arÊ   Zx0_)r   r   rf   rA   r   r+   ra   r	   )r  r   rœ   Únamesr   r   r   Ú)test_ohe_missing_values_get_feature_names›  s    re  c                  C   sr   t  d¡} | jg d¢tjdddtjgtd�dœdd	gd
�}t g d¢g d¢g d¢g d¢g¡}t|ƒ}t||ƒ d S )NrD   )Údogr   Nr   r   r   r%   r<   )Úcol1Úcol2rg  rh  rS  )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )	r,   rL   rM   r   r   r€   Úfloatry   r   )rN   ÚdfÚexpected_df_transr„   r   r   r   Ú%test_ohe_missing_value_support_pandas¤  s     
þûüÿ	rl  Úpd_nan_typeúpd.NAznp.nanc              	   C   sÒ   t  d¡}| dkr|jntj}| d|jdd|ddgdd�i¡}t g d	¢g d
¢g d¢g d¢g d
¢g¡}td|d�}| 	|¡}t
||ƒ t|jƒdksšJ ‚t|jd d d… g d¢ƒ t |jd d ¡sÎJ ‚d S )NrD   rn  rg  r·   rE   rF   rl   r<   )r   r   r   r   )r   r   r   r   )r   r   r   r   rI  Frc  r   r   r6   r¶   )r,   rL   ÚNAr   r€   rM   r§   r   r   r   r   Úlenr¬   r	   Úisnan)rm  r!   rN   Úpd_missing_valuerj  rk  rœ   Údf_transr   r   r   Ú1test_ohe_missing_value_support_pandas_categorical»  s(    
ÿÿûÿ


rt  c                 C   sÜ   ddgddgddgg}t dd| d�}| |¡}t g d	¢g d
¢g d¢g¡}t||ƒ ddgg}t g d	¢g¡}d}tjt|d�� | |¡}W d  ƒ n1 s 0    Y  t||ƒ | 	|¡}t
|tjddggtd�ƒ dS )zZCheck drop='first' and handle_unknown='ignore'/'infrequent_if_exist'
    during transform.rE   r   rF   r   r   rˆ   F©r‡   r   r!   r–   r�   )r   r   r   r·   r   útFound unknown categories in columns \[0, 1\] during transform. These unknown categories will be encoded as all zerosr)   Nr<   ©r   r   r   r   r   r,   r  r  r/   r�   r	   rf   ©r!   r   rœ   r˜   rB   r  r  r-  r   r   r   Ú/test_ohe_drop_first_handle_unknown_ignore_warnsÛ  s*    ÿ
ýÿ

ÿ(

ry  c                 C   sÜ   ddgddgddgg}t dd| d�}| |¡}t g d	¢g d
¢g d¢g¡}t||ƒ ddgg}t g d¢g¡}d}tjt|d�� | |¡}W d  ƒ n1 s 0    Y  t||ƒ | 	|¡}t
|tjddggtd�ƒ dS )zDCheck drop='if_binary' and handle_unknown='ignore' during transform.rE   r   rF   r   r   rš   Fru  rI  rƒ   rJ   r·   r   )r   r   r   r   rv  r)   Nr<   rw  rx  r   r   r   Ú3test_ohe_drop_if_binary_handle_unknown_ignore_warns  s*    ÿ
ýÿ

ÿ(

rz  c                 C   s    ddgddgddgg}t dd| ddgddggd�}| |¡ d	dgg}t ddgg¡}d
}tjt|d�� | |¡}W d  ƒ n1 sˆ0    Y  t||ƒ dS )znCheck drop='first' and handle_unknown='ignore'/'infrequent_if_exist'
    during fit with categories passed in.rE   r   rF   r   r   rˆ   Fr  r·   r  r)   Nr  )r!   r   rœ   r  rB   r  r˜   r   r   r   Ú'test_ohe_drop_first_explicit_categories&  s    ü

ÿ(r{  c                  C   sÂ   t  d¡} | jg d¢g d¢dœddgd�}tdd	�}|jdd
� d}t jt|d�� | |¡ W d  ƒ n1 sr0    Y  | |¡ t jt|d�� | 	|¡ W d  ƒ n1 s´0    Y  dS )zJRaise informative error message when pandas output and sparse_output=True.rD   r¹   )rº   rF   rF   )rE   rF   rE   rF   rS  Tr   ©r/   zxPandas output does not support sparse data. Set sparse_output=False to output pandas dataframes or disable Pandas outputr)   N)
r,   rL   rM   r   Ú
set_outputr-   r.   r   r+   r/   )rN   rj  rœ   r”   r   r   r   Ú'test_ohe_more_informative_error_messageA  s    
 
ÿ(
r~  c                  C   sl   t  t jdddgg¡j} tt jd�}dt j› �}tjt|d�� | 	| ¡ W d  ƒ n1 s^0    Y  dS )zDTest ordinal encoder with nan passthrough fails when dtype=np.int32.r¢   r   r<   zdThere are missing values in features \[0\]. For OrdinalEncoder to encode missing values with dtype: r)   N)
r   r   r€   rA   r   Úint32r,   r-   r.   r+   )r   r^  r”   r   r   r   ÚBtest_ordinal_encoder_passthrough_missing_values_float_errors_dtypeU  s    ÿÿr€  Úencoded_missing_valuerÞ   c                 C   s”   t jt jdddggt jd�j}t| d� |¡}t|jƒdks@J ‚t	|jd ddt jgƒ | 
|¡}t	|| gdgdgdggƒ | |¡}t	||ƒ dS )	z.Test ordinal encoder with nan on float dtypes.r¢   r   r<   ©r�  r   r   r   N)r   r   r€   rÙ   rA   r   r+   rp  r¬   r   r/   r�   )r�  r   r^  r˜   r0  r   r   r   Ú5test_ordinal_encoder_passthrough_missing_values_floatc  s    

rƒ  c              	   C   s"  t  d¡}| dkr|jntj}| d|jdd|ddgdd�i¡}t|d	� |¡}t	|j
ƒd
ksbJ ‚t|j
d dd… g d¢ƒ t |j
d d ¡s–J ‚| |¡}t|dgdg|gdgdggƒ | |¡}|jdksÖJ ‚t|dd…df ddgƒ t|dd…df ddgƒ t |d ¡�sJ ‚dS )z0Check ordinal encoder is compatible with pandas.rD   rn  rg  r·   rE   rF   rl   r<   r‚  r   r   Nr   r¶   r6   ç       @r   r   )r   r   r   rŒ   )r,   rL   ro  r   r€   rM   r§   r   r+   rp  r¬   r	   rq  r/   r   r�   r   )rm  r�  rN   rr  rj  r^  rs  r0  r   r   r   Ú=test_ordinal_encoder_missing_value_support_pandas_categoricalu  s"    
ÿÿ

r…  r„  )zobject-None-missing-valuezobject-nan-missing_valueznumeric-missing-valuec                 C   sˆ   t |d�}t dgtjgg¡}t| | ¡|ƒ |jd j|ksBJ ‚t |d�}tj	t
dd�� | |¡ W d  ƒ n1 sz0    Y  dS )z.Test ordinal encoder for specified categories.rs   r   r   r(   r)   N)r   r   r   r€   r	   r   r¬   r=   r,   r-   r.   r+   )r   r2   r¾   r±   r^  r“   r   r   r   Ú=test_ordinal_encoder_specified_categories_missing_passthrough–  s    &

r†  c                 C   sp   t jg d¢td�g}| |d�}t jddggtd�j}tjtdd�� | |¡ W d  ƒ n1 sb0    Y  dS )	z�Test encoder for specified categories have duplicate values.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27088
    )rE   rF   rE   r<   rs   rE   rF   z5the predefined categories contain duplicate elements.r)   N)r   r   rf   rA   r,   r-   r.   r+   rÃ   r   r   r   Ú+test_encoder_duplicate_specified_categoriesÊ  s    
ÿr‡  zX, expected_X_trans, X_testr   r   )r   r£   r¢   )r   r„  r   r·   )r·   rE   rF   )r„  r   r   c                 C   s8   t ddd�}| | ¡}t||ƒ t| |¡dggƒ dS )z>Test the interaction between missing values and handle_unknownrÝ   r6   rß   g      ð¿N)r   r   r   r/   )r   Zexpected_X_transr  r^  r˜   r   r   r   Ú/test_ordinal_encoder_handle_missing_and_unknownÚ  s    

rˆ  Úcsr_containerc                 C   sæ   t  g d¢g d¢g¡}| |ƒ}tƒ }d}tjt|d�� | |¡ W d  ƒ n1 sV0    Y  tjt|d�� | |¡ W d  ƒ n1 sŽ0    Y  | |¡}| |ƒ}tjt|d�� | |¡ W d  ƒ n1 sØ0    Y  dS )z¥Check that we raise proper error with sparse input in OrdinalEncoder.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/19878
    r   r   z2Sparse data was passed, but dense data is requiredr)   N)	r   r   r   r,   r-   rp   r+   r   r�   )r‰  r   ZX_sparseÚencoderrq   r˜   r   r   r   r   Útest_ordinal_encoder_sparseþ  s    ((
r‹  c                  C   sˆ   t  g d¢¡dd…t jf } tg d¢gddd�}| | ¡ tg d¢gdd�}tjtd	d
�� | | ¡ W d  ƒ n1 sz0    Y  dS )zÂCheck OrdinalEncoder.fit works with unseen category when
    `handle_unknown="use_encoded_value"`.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/19872
    )r   r   r   r   r   r   N)r6   r   r   rÝ   rè   )r?   r!   rà   r&   r½   r(   r)   )r   r   Znewaxisr   r+   r,   r-   r.   )r   r^  r   r   r   Ú-test_ordinal_encoder_fit_with_unseen_category  s    ÿ
rŒ  r+  ZAAÚOr`  r  c                 C   s4   t ddd�}| | ¡ | |¡}t|ddggƒ dS )z–Checks that `OrdinalEncoder` transforms string dtypes.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/19872
    rÝ   i÷ÿÿÿrß   r   N)r   r+   r/   r   )r+  r  rb   r˜   r   r   r   Ú1test_ordinal_encoder_handle_unknown_string_dtypes&  s    

rŽ  c                  C   sb   t  g d¢¡ dd¡} tƒ  | ¡}t|jt j| dd�jƒ | 	| ¡}t|dgdgdgdggƒ dS )	zÁCheck that `OrdinalEncoder` accepts Python integers that are potentially
    larger than 64 bits.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20721
    )l   	HéP
1& l   	H]v—i—eøl   	 :?i}Gaï l   IRÕK2e6kr6   r   r   )Zaxisr   r   N)
r   r   r8   r   r+   r	   r¬   ÚsortrA   r/   )r   rŠ  r˜   r   r   r   Ú#test_ordinal_encoder_python_integerB  s    ÿù
r�  c                  C   sH   t  d¡} g d¢}| jg d¢g|d�}tƒ  |¡}| ¡ }t||ƒ dS )z-Check feature names out is same as the input.rD   )rF   r·   rE   r¹   rS  N)r,   rL   rM   r   r+   ra   r	   )rN   rd  r   rb   Zfeature_names_outr   r   r   Ú.test_ordinal_encoder_features_names_out_pandasV  s    
r‘  c                  C   sÀ   t jdgdgt jggtd�} tdt jdd� | ¡}| | ¡}t|dgdgdggƒ t jd	gt jggtd�}| |¡}t|t jgdggƒ | |¡}|d d d
u s¦J ‚t  	|d d ¡s¼J ‚d
S )zECheck interactions between encode_unknown and missing value encoding.rE   rF   r<   rÝ   éýÿÿÿ©r!   rà   r�  r   r   r·   N)
r   r   r€   rf   r   r+   r/   r   r�   rq  )r   r^  r˜   r  rM  ÚX_roundtripr   r   r   Ú0test_ordinal_encoder_unknown_missing_interactionb  s     ýü


r•  Úwith_pandasc                 C   sž   t jddgddgdt jggtd�}d}| rPt d¡}|j|d	d
gd�}|d }n|d }tdd�}tjt	|d�� | 
|¡ W d  ƒ n1 s�0    Y  dS )zXCheck OrdinalEncoder errors when encoded_missing_value is used by
    an known category.rE   rf  rF   r   r·   r<   zTencoded_missing_value \(1\) is already used to encode a known category in features: rD   ÚletterZpetrS  z	\['pet'\]z\[1\]r   r‚  r)   N)r   r   r€   rf   r,   rL   rM   r   r-   r.   r+   )r–  r   Ú	error_msgrN   r^  r   r   r   Ú0test_ordinal_encoder_encoded_missing_value_error€  s    "ÿ


r™  z4X_train, X_test_trans_expected, X_roundtrip_expectedÚ1c                 C   s¼   t dtjtjd� | ¡}t dgtjgdgg¡}| |¡}t||ƒ | |¡}|jd }t	|ƒD ]V}||df }	||df }
|	du r’|
du s¶J ‚q`t
|	ƒrªt |
¡s¶J ‚q`|
|	ks`J ‚q`dS )znCheck transform when unknown_value and encoded_missing_value is nan.

    Non-regression test for #24082.
    rÝ   r“  rš  rF   r   N)r   r   r€   r+   r   r/   r   r�   r   r  r   rq  )r+  ZX_test_trans_expectedZX_roundtrip_expectedr^  r  rM  r”  Z	n_samplesrü   Zexpected_valÚvalr   r   r   Ú9test_ordinal_encoder_unknown_missing_interaction_both_nanš  s(    ýü



rœ  c                  C   sÊ   t  d¡} |  ddgddgdœ¡}tƒ }|jdd� d}t jt|d	�� | |¡ W d
  ƒ n1 sf0    Y  tdd�jdd�}tdd�jdd�}| |¡}| |¡}t| 	¡ |ƒ t
| ¡ |jƒ d
S )z*Check OneHotEncoder works with set_output.rD   rE   rF   r   r   rG   r|  zCPandas output does not support sparse data. Set sparse_output=Falser)   NFr   Údefault)r,   rL   rM   r   r}  r-   r.   r   r   Úto_numpyr	   ra   rT  )rN   rO   rœ   r*   Zohe_defaultZ
ohe_pandasÚ	X_defaultÚX_pandasr   r   r   Útest_one_hot_encoder_set_outputÎ  s    
(

r¡  c                  C   st   t  d¡} |  ddgddgdœ¡}tƒ jdd�}tƒ jdd�}| |¡}| |¡}t| ¡ |ƒ t| 	¡ |j
ƒ d	S )
z+Check OrdinalEncoder works with set_output.rD   rE   rF   r   r   rG   r�  r|  N)r,   rL   rM   r   r}  r   r   rž  r	   ra   rT  )rN   rO   Zord_defaultZ
ord_pandasrŸ  r   r   r   r   Útest_ordinal_set_outputå  s    


r¢  c                  C   st   g d¢ddgg} t | d�}| ddgg¡ t| ƒt|jƒks@J ‚t|jƒD ]$\}}|jtks`J ‚t| | |ƒ qJdS )zjCheck that the categories_ dtype is `object` for string categories

    Regression test for gh-25171.
    )ÚasZmmasZeasZrasZacsrš  Ú2rs   r£  N)r   r+   rp  r¬   Ú	enumerater=   rf   r	   )r?   rb   Únr   r   r   r   Ú test_predefined_categories_dtypeõ  s    
r§  c                  C   s~   t jdgdgt jggtd�} tdd� | ¡}t|dgdgdggƒ tddd	� | ¡}t  d
gg¡}| |¡}t|dggƒ dS )zBCheck missing value or unknown encoding can equal the cardinality.rf  r   r<   r   r‚  r   r   rÝ   rß   ÚsnakeN)	r   r   r€   rf   r   r   r   r+   r/   )r   r˜   rb   r  r   r   r   Ú1test_ordinal_encoder_missing_unknown_encoding_max  s    
r©  c                  C   s®  t jdgd dgd  dgd  dgd  dgd  gtd�j} tdd	d
d� | ¡}t| ¡ g d¢ƒ |jd |j	d  dks‚J ‚t jdgd dgd  dgd  gtd�j} tdd	dd� | ¡}t| ¡ dgƒ |jd |j	d  dksîJ ‚t jdgd dgd  dgd  dgd  dgd  gtd�j} tdd	dgd� | ¡}t| ¡ g d¢ƒ |jd |j	d  dk�stJ ‚tdd	dd� | ¡}t| ¡ g d¢ƒ |j	du �sªJ ‚dS )zkCheck drop_idx is defined correctly with infrequent categories.

    Non-regression test for gh-25550.
    rE   r   rF   r%   r·   rµ   r$  r<   Frˆ   )r   r   r‡   )rÈ   Úx0_dÚx0_er(  r   rU   rš   r(  )rÊ   rÈ   r«  r(  N)rÊ   rÈ   rª  r«  r(  )
r   r   rf   rA   r   r+   r	   ra   r¬   rÓ   )r   rœ   r   r   r   Ú#test_drop_idx_infrequent_categories  s4    4ÿÿ,4ÿÿþr¬  c                 C   sä   t  dgd dgd  dgd  dgd  g¡j}tf d	d
dœ| ¤Ž |¡}t|jg d¢gƒ t|jddggƒ dgdgdgdgdgg}dgdgdgdgd
gg}| |¡}t	||ƒ | 
|¡}dgdgdgdgdgg}t||ƒ dS )zGTest parameters for grouping 'a', and 'd' into the infrequent category.rE   r   rF   rÏ   r·   rU   rµ   r   rÝ   r6   rß   r"  rº   r   r   r   r'  N)r   r   rA   r   r+   r	   r¬   r*  r/   r   r�   )r  r+  Úordinalr  Úexpected_transr˜   r0  Úexpected_inverser   r   r   Ú,test_ordinal_encoder_infrequent_three_levels6  s,    2ÿÿþ


ûr°  c                  C   sê   t jdgd dgd  dgd  dgd  gtd	�j} tg d
¢gdddd� | ¡}t|jg d
¢gƒ t|jddggƒ dgdgdgdgdgg}dgdgdgdgdgg}| 	|¡}t
||ƒ | |¡}dgdgdgdgdgg}t||ƒ dS )z¬Test that the order of the categories provided by a user is respected.

    In this case 'c' is encoded as the first category and 'b' is encoded
    as the second one.
    rE   r   rF   rÏ   r·   rU   rµ   r   r<   rE  rÝ   r6   )r?   r  r!   rà   rº   r   r   r   r'  N)r   r   rf   rA   r   r+   r	   r¬   r*  r/   r   r�   )r+  r­  r  r®  r˜   r0  r¯  r   r   r   Ú6test_ordinal_encoder_infrequent_three_levels_user_cats]  s2    *ÿüû


ûr±  c                  C   s²   t  g d¢g d¢f¡} tdd� | ¡}t|jd ddgƒ |jd du sLJ ‚ddgddgg}ddgddgg}| |¡}t||ƒ | |¡}t j	ddgd	dggt
d
�}t||ƒ dS )zETest when feature 0 has infrequent categories and feature 1 does not.rG  rH  r   ©r  r   r   r   Nr'  r<   )r   Zcolumn_stackr   r+   r	   r*  r/   r   r�   r   rf   )r   r­  r  r®  r˜   r0  r¯  r   r   r   Ú%test_ordinal_encoder_infrequent_mixed�  s    


r³  c                  C   s   t  d¡} |  g d¢¡}| jg d¢g d¢| jdgd dgd  d	g d
g |d�dœg d¢d�}tdd� |¡}t|jd ddgƒ t|jd g d¢ƒ t|jd d
d	gƒ | jg d¢g d¢| jdgd	g d
g dg |d�dœg d¢d�}g d¢g d¢g d¢g d¢g}| 	|¡}t
||ƒ dS )zHTest infrequent categories with a pandas DataFrame with multiple dtypes.rD   )Úbirdr   rf  r¨  rO  rQ  rf  r%   r   r   r¨  r´  r<   )rR  rï   r  rS  r²  r   rE   rF   r   rU  r   )rE   rF   rP  r·   )rX   r   rU   r   )r   r   r   )r   r   r   )r   r   r   r8  N)r,   rL   ZCategoricalDtyperM   r§   r   r+   r	   r*  r/   r   )rN   Zcategorical_dtyper   r­  r  r®  r˜   r   r   r   Ú:test_ordinal_encoder_infrequent_multiple_categories_dtypes–  s:    
þý÷
þý÷
rµ  c                  C   sÂ   t jdgd dgd  dgd  dgd  t jg gtd	�j} td
dddd� | ¡}t|jg d¢gƒ t jdgdgdgdgdgt jggtd	�}dgdgdgdgdgdgg}| 	|¡}t
||ƒ dS )zJCheck behavior of unknown_value and encoded_missing_value with infrequent.rE   r   rF   rÏ   r·   rU   rµ   r   r<   rÝ   r   )r!   rà   r  r�  r#  r$  r   r   N)r   r   r€   rf   rA   r   r+   r	   r*  r/   r   )r+  r­  r  r®  r˜   r   r   r   Ú.test_ordinal_encoder_infrequent_custom_mappingÆ  s     2ÿüû(
r¶  c                 C   s˜   t jdgd dgd  dgd  dgd  gtd	�j}tf i | ¤d
ddœ¤Ž |¡}td
dd� |¡}dgdgdgdgdgg}t| |¡| |¡ƒ dS )zMAll categories are considered frequent have same encoding as default encoder.rE   r   rF   rÏ   r·   rU   rµ   r   r<   rÝ   r6   rß   r$  N©r   r   rf   rA   r   r+   r   r/   )r  r+  Zadjusted_encoderZdefault_encoderr  r   r   r   Ú!test_ordinal_encoder_all_frequentÛ  s&    	*ÿÿÿ
þÿþÿr¸  éd   c                 C   s”   t jdgd dgd  dgd  dgd  gtd	�j}tf i | ¤d
ddœ¤Ž |¡}dgdgdgdgdgg}t| |¡dgdgdgdgdggƒ dS )zAWhen all categories are infrequent, they are all encoded as zero.rE   r   rF   rÏ   r·   rU   rµ   r   r<   rÝ   r6   rß   r$  r   Nr·  )r  r+  rŠ  r  r   r   r   Ú#test_ordinal_encoder_all_infrequentö  s    	*ÿÿÿ
þrº  c                  C   s�   t jt jgd dgd  dgd  dg dg gtd�j} td	d
� | ¡}t jdddt jggtd�j}| |¡}t|dgdgdgt jggƒ dS )z5Check behavior when missing value appears frequently.rÏ   rf  rU   r   r   r¨  Údeerr<   r   r²  r   r   r   N©	r   r   r€   rf   rA   r   r+   r/   r   ©r   r­  r  r˜   r   r   r   Ú-test_ordinal_encoder_missing_appears_frequent
	  s    ,þ
r¾  c                  C   s¾   t jt jgdgd  dgd  dg dg dgd d	gd  gtd
�j} tdd� | ¡}t jddgdd	gt jd	gdd	gddggtd
�}| |¡}t|ddgddgt jdgddgddggƒ dS )z7Check behavior when missing value appears infrequently.rf  rU   r   r   r¨  r»  Úredrë   Úgreenr<   r%   )r   r   r   r   Nr¼  r½  r   r   r   Ú/test_ordinal_encoder_missing_appears_infrequent	  s$    &þûûø

rÁ  c                 C   sb   t jdgdgdggtd�}| g d¢gd�}t t¡� | |¡ W d  ƒ n1 sT0    Y  dS )a!  Check that we raise a `NotFittedError` by calling transform before fit with
    the encoders.

    One could expect that the passing the `categories` argument to the encoder
    would make it stateless. However, `fit` is making a couple of check, such as the
    position of `np.nan`.
    rH   rI   r  r<   r  rs   N)r   r   rf   r,   r-   r   r/   )rÂ   r   rŠ  r   r   r   Útest_encoder_not_fitted3	  s    	rÂ  )‚r�   r	  Únumpyr   r,   Zscipyr   Zsklearn.exceptionsr   Zsklearn.preprocessingr   r   Zsklearn.utils._missingr   Zsklearn.utils._testingr   r   r	   Zsklearn.utils.fixesr
   r    ÚmarkZparametrizer4   r9   r  Zfloat32rÙ   rC   rP   rd   rg   rr   rv   ry   r   rf   r€   ri  r…   r•   r™   r�   r    r¥   r©   rÀ   r   Zstr_r´   rA   r¸   r¿   rÁ   rÄ   rÆ   rÇ   rÍ   rÖ   rÚ   rÛ   rÜ   rç   rï   rí   rî   rð   rô   r  r  r  r  r  r  r  r  r.  r1  r6  r9  r:  r;  r=  r@  rD  rF  rK  rN  rW  rZ  r[  r_  rb  re  rl  rt  ry  rz  r{  r~  r€  rƒ  r…  r†  r‡  rˆ  r‹  rŒ  rŽ  r�  r‘  r•  r™  r@   rœ  r¡  r¢  r§  r©  r¬  r°  r±  r³  rµ  r¶  r¸  rº  r¾  rÁ  rÂ  r   r   r   r   Ú<module>   sî  


<
ø
ô
/*þþþ


 &ý&*ý ýñé!
üüüüüüá&Ø1
	

ýù	
	ýù	
üüüóê




$

ûþ


ùþ


ÿ
$[A

ÿ

%
$

ü	ü	üîä"ýýýýðþ
ýþýþû
ûøþ!$ùþ$0þþþþ