a
    �ù»jg€ ã                   @   sô  d dl Z d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d d
l)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZCmDZD d dlEmFZF e G¡ ZHejI Jd ¡ZKdZLdZMeKjNddeLd�ZOeKjNddeLd�ZPeK QeMeL¡eP eO ZReRd dd…f  SdeL¡ZTeRdd…d f  SeMd¡ZUeT V¡ ZWeU V¡ ZXdd„ ZYdd„ ZZdd„ Z[dd „ Z\ej] ^g d!¢g d"¢g d#¢gg d"¢g d"¢g d#¢gd$d%gfg d&¢g d'¢gg d&¢g d'¢g d'¢g d'¢ge _dd(g¡fdej`dgej`ej`dggdej`dgej`ej`dgej`ej`dgej`ej`dgge _dd(g¡fg¡ej] ^d)g d*¢¡d+d,„ ƒƒZad-d.„ Zbej] ^d/dgeB eC ¡ej] ^d0d1d2g¡d3d4„ ƒƒZcej] ^d5e d1d6�ed1d7�g¡ej] ^d/dgeB eC ¡ej] ^d0d1d2g¡ej] ^d8ejdejeg¡ej] ^d9g d:¢¡d;d<„ ƒƒƒƒƒZfej] ^d=g d>¢¡ej] ^d?g d@¢¡ej] ^d8ejdejeg¡ej] ^d/dgeB eC ¡dAdB„ ƒƒƒƒZgdCdD„ Zhe=dEdF„ ƒZidGdH„ ZjdIdJ„ ZkdKdL„ ZldMdN„ ZmdOdP„ Znej] ^d/eBeC ¡dQdR„ ƒZoej] ^dSd2dg¡ej] ^d/eBeC ¡dTdU„ ƒƒZpej] ^dSd2dg¡dVdW„ ƒZqdXdY„ Zrej] ^dZe2ƒ ¡ej]j^d[e?ge4d\�ej]j^d]eƒ eƒ ed2d^�eƒ ed_d`�edad`�edbd`�ge4d\�dcdd„ ƒƒƒZsdedf„ Ztdgdh„ Zudidj„ Zvdkdl„ Zwej] ^dSd2dg¡ej] ^d/eBeC ¡dmdn„ ƒƒZxej] ^dod2d1g¡ej] ^dpd2d1g¡ej] ^d/dgeB eC ¡dqdr„ ƒƒƒZydsdt„ Zzej] ^d/eBeC ¡dudv„ ƒZ{ej] ^d/eBeC ¡dwdx„ ƒZ|ej] ^d/eCeB ¡dydz„ ƒZ}ej] ^d/eCeB ¡d{d|„ ƒZ~d}d~„ Zdd€„ Z€ej] ^d�d2d1g¡ej] ^d‚d2d1g¡ej] ^dƒejI Qdd(¡e	j�dd(d„d…�g¡d†d‡„ ƒƒƒZ‚ej] ^dˆeC¡d‰dŠ„ ƒZƒd‹dŒ„ Z„ej] ^d�g dŽ¢¡ej] ^d�g d�¢¡d‘d’„ ƒƒZ…ej] ^dˆeC¡d“d”„ ƒZ†d•d–„ Z‡d—d˜„ Zˆej] ^d™eB¡dšd›„ ƒZ‰ej] ^d™eB¡dœd�„ ƒZŠej] ^d™eB¡dždŸ„ ƒZ‹d d¡„ ZŒd¢d£„ Z�d¤d¥„ ZŽej] ^d™eB¡d¦d§„ ƒZ�d¨d©„ Z�ej] ^d™eB¡dªd«„ ƒZ‘d¬d­„ Z’d®d¯„ Z“ej] ^d°d±d²g¡d³d´„ ƒZ”dµd¶„ Z•ej] ^dˆeC¡d·d¸„ ƒZ–d¹dº„ Z—d»d¼„ Z˜d½d¾„ Z™d¿dÀ„ Zšej] ^d/eBeC ¡dÁdÂ„ ƒZ›dÃdÄ„ Zœej] ^dˆeC¡dÅdÆ„ ƒZ�dÇdÈ„ Zžej] ^dˆeC¡dÉdÊ„ ƒZŸdËdÌ„ Z ej] ^dÍg dÎ¢¡ej] ^dˆeC¡dÏdÐ„ ƒƒZ¡ej] ^dÍg dÎ¢¡ej] ^d/eAeB eD ¡dÑdÒ„ ƒƒZ¢ej] ^dˆeC¡dÓdÔ„ ƒZ£ej] ^dˆeC¡dÕdÖ„ ƒZ¤ej] ^d×ej_e¥geB eC ¡dØdÙ„ ƒZ¦dÚdÛ„ Z§dÜdÝ„ Z¨dÞdß„ Z©dàdá„ Zªdâdã„ Z«ej] ^d/eAeB eC ¡dädå„ ƒZ¬dædç„ Z­ej] ^dèdédêg¡dëdì„ ƒZ®ej] ^dèdédêg¡ej] ^díd2d1g¡ej] ^dƒeUeRg¡dîdï„ ƒƒƒZ¯dðdñ„ Z°dòdó„ Z±dôdõ„ Z²ej] ^dƒeRe ³eR¡e ³eR¡ e ´eRjµ¡g¡död÷„ ƒZ¶ej] ^dèdédêg¡dødù„ ƒZ·dúdû„ Z¸düdý„ Z¹ej] ^dþg dÿ¢¡�d �d„ ƒZº�d�d„ Z»�d�d„ Z¼ej] ^dèdédêg¡�d�d„ ƒZ½ej] ^dèdédêg¡ej] ^díd2d1g¡�d�d	„ ƒƒZ¾ej] ^dèdédêg¡ej] ^díd2d1g¡�d
�d„ ƒƒZ¿ej] ^dèdédêg¡ej] ^díd2d1g¡�d�d„ ƒƒZÀ�d�d„ ZÁej] ^�de	jIdd�dd �d�g�d�d„ eCD ƒ ¡�d�d„ ƒZÂej] ^�d�d�dg¡�d�d„ ƒZÃ�d�d„ ZÄ�d�d„ ZÅej] ^�d eeee eeg¡�d!�d"„ ƒZÆej] ^�d eeee eeeeg¡�d#�d$„ ƒZÇ�d%�d&„ ZÈej] ^díd2d1g¡�d'�d(„ ƒZÉdS ()  é    N)ÚsparseÚstats)Údatasets)Úclone)ÚNotFittedError)Úlinear_kernel)Úcross_val_predict)ÚPipeline)Ú	BinarizerÚKernelCentererÚMaxAbsScalerÚMinMaxScalerÚ
NormalizerÚPowerTransformerÚQuantileTransformerÚRobustScalerÚStandardScalerÚadd_dummy_featureÚmaxabs_scaleÚminmax_scaleÚ	normalizeÚpower_transformÚquantile_transformÚrobust_scaleÚscale)ÚBOUNDS_THRESHOLDÚ_handle_zeros_in_scale)ÚSVR)Úgen_batchesÚshuffle)Ú)yield_namespace_device_dtype_combinations)Ú_get_check_estimator_ids)Ú_convert_containerÚassert_allcloseÚassert_allclose_dense_sparseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚassert_array_lessÚskip_if_32bit)Ú check_array_api_input_and_values)ÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚLIL_CONTAINERS)Úmean_variance_axisé   éè  éÿÿÿÿé   ©Úsizeé
   c                 C   s   t | dƒr|  ¡ } | S )NÚtoarray)Úhasattrr7   ©Úa© r;   úKE:\soccer\ml_env\Lib\site-packages\sklearn/preprocessing/tests/test_data.pyr7   P   s    
r7   c                 C   s   t  | ¡jd S )Nr   )ÚnpZasarrayÚshaper9   r;   r;   r<   Ú_check_dim_1axisV   s    r?   c                 C   s:   ||kr| d | |ks6J ‚n| | ||  |ks6J ‚d S )Nr3   r;   )ÚiÚbatch_startÚ
batch_stopÚnÚ
chunk_sizeÚn_samples_seenr;   r;   r<   Úassert_correct_incrZ   s    rF   c               	   C   sŽ   ddg} ddg}t | |ƒD ]n\}}t ||¡}t |¡}tƒ }t |d¡d }t t¡�  |j|||d� W d   ƒ q1 s~0    Y  qd S )Né   é   r3   ©Úsample_weight)ÚzipÚrngÚrandnr   ÚpytestÚraisesÚ
ValueErrorÚfit)Z
n_samplessZn_featuressÚ	n_samplesÚ
n_featuresÚXÚyÚscalerZsample_weight_notOKr;   r;   r<   Ú9test_raises_value_error_if_sample_weights_greater_than_1da   s    
rW   )ÚXwrT   rJ   )r3   rG   rH   )é   é   é   ç       @ç      ð?©r3   r   r3   )r   r   r3   rH   Úarray_constructor)ÚarrayZ
sparse_csrZ
sparse_cscc           
      C   s¶   |  d¡ }t||ƒ}t| |ƒ} t | jd ¡}t|d�}|j| ||d� t |jd ¡}t|d�}| ||¡ g d¢g d¢g}	t|j|jƒ t|j	|j	ƒ t| 
|	¡| 
|	¡ƒ d S )Nr   r   ©Ú	with_meanrI   )ç      ø?g      @ç      @)rd   g      @g      @)Ú
startswithr"   r=   Úonesr>   r   rQ   r%   Úmean_Úvar_Ú	transform)
rX   rT   rJ   r_   rb   ZywZscaler_wrU   rV   ÚX_testr;   r;   r<   Ú"test_standard_scaler_sample_weights   s    



rk   c                  C   s¢  t tttfD �]} tƒ }| | ¡j| dd�}t| tƒr@t 	| ¡} t
| ƒdkr t|j|  ¡ ƒ t|jt t¡ƒ t|jdd�t t¡ƒ t|jdd�t t¡ƒ n\t|j|  ¡ ƒ t|j|  ¡ ƒ t|jdd�t t¡ƒ t|jdd�dƒ t|jdd�dƒ |j| jd k�sJ ‚| |¡}t|| ƒ qt d¡} tƒ }| | ¡j| dd�}t|jdƒ t|jdƒ t|jdd�dƒ t|jdd�dƒ |j| jd k�sžJ ‚d S ©	NT©Úcopyr3   r   ©Úaxisç        r]   ©rZ   r3   )ÚX_1rowÚX_1colÚX_list_1rowr   rQ   ri   Ú
isinstanceÚlistr=   r`   r?   r%   rg   ÚravelÚscale_rf   rS   r&   ÚmeanÚ
zeros_likeÚstdÚn_samples_seen_r>   Úinverse_transform)rT   rV   ÚX_scaledÚX_scaled_backr;   r;   r<   Útest_standard_scaler_1dŸ   s4    



r�   Úsparse_containerÚadd_sample_weightFTc                 C   sØ   t j d¡}d}d}| r$t  |¡}nd }d}|d urBt jt jg}nt jt jt jg}|D ]|}| ||¡ |¡}	|d ur€||	ƒ}	d}t	|d�}
|
j
|	|d� |	¡}|	j|jks®J ‚|
jjt jksÀJ ‚|
jjt jksVJ ‚qVd S )Nr   r6   rH   TFra   rI   )r=   ÚrandomÚRandomStaterf   Úfloat64Úfloat32Úfloat16rM   Úastyper   rQ   ri   Údtyperg   ry   )rƒ   r‚   rL   rR   rS   rJ   rb   Zsupported_dtyperŠ   rT   rV   r   r;   r;   r<   Útest_standard_scaler_dtypeÄ   s(    
r‹   rV   ra   ©Úwith_centeringrŠ   Úconstant)r   r]   ç      Y@c                 C   s&  t | tƒr"|r"t | jj› d�¡ tj d¡}d}d}|rRt	|j
|d�d d�}ni }tj||f||d�}	|d u rv|	n||	ƒ}
| j|
fi |¤Ž |
¡}t | tƒr¼t| jt |
jd ¡d	d
� t| jt |
jd ¡ƒ ||
usàJ ‚t||
ƒ t | tƒ�r"|�s"t|
| jd�}||
u�sJ ‚t||
ƒ d S )Nz# does not yet support sample_weightr   éd   r3   r4   rG   rI   )r>   Ú
fill_valuerŠ   gH¯¼šò×z>©Zatolra   )rv   r   rN   ÚskipÚ	__class__Ú__name__r=   r„   r…   ÚdictÚuniformÚfullrQ   ri   r   r#   rh   Úzerosr>   ry   rf   r$   r   rb   )rV   rƒ   r‚   rŠ   rŽ   rL   rR   rS   Z
fit_paramsÚX_arrayrT   r   Z
X_scaled_2r;   r;   r<   Ú&test_standard_scaler_constant_featuresã   s(    

r›   rR   )r6   r�   i'  Úaverage)g»½×Ùß|Û=r3   g    _ Bc                 C   s¢  d\}}t jdd„ t||d ƒD ƒ|d�}|jd }t j| |f|d�}|| |d | d …d d …f< || || d d …d d …f< |d u rŠ|n||ƒ}	tdd	� |	¡}
t  t j¡j	}| | |d  | d |d  |d   }|d |k}t  
|¡sòJ ‚t|
j| || kƒ�sJ ‚t|
j| d
ƒ |dd d …f |dd d …f  dk}t|
jt  |¡ dƒ t|
jt  |¡ dƒ t  |d |k|¡}t|
j| t  |
j¡| ƒ d S )N)iâÿÿÿé   c                 S   s   g | ]}d | ‘qS )r6   r;   ©Ú.0r@   r;   r;   r<   Ú
<listcomp>  ó    z?test_standard_scaler_near_constant_features.<locals>.<listcomp>r3   ©rŠ   r   rG   Fra   r]   r2   )r=   r`   Úranger>   Úemptyr   rQ   Úfinfor†   ÚepsÚanyÚallrh   r#   ry   Zlogical_notÚlogical_andÚsqrt)rR   r‚   rœ   rŠ   Z	scale_minZ	scale_maxÚscalesrS   rT   rš   rV   r¦   ZboundsZwithin_boundsZrepresentable_diffZcommon_maskr;   r;   r<   Ú+test_standard_scaler_near_constant_features  s&    
"
($r¬   c                  C   s\   g d¢} t  | ¡}| |fD ]<}t|ƒ}t| ¡ dƒ t| ¡ dƒ tt|ddd�|ƒ qd S )N)r]   ç      @ç      @rq   rq   r]   F©rb   Úwith_std)r=   r`   r   r&   rz   r|   r'   )ZX_listZX_arrrT   r   r;   r;   r<   Útest_scale_1dF  s    
r±   c                  C   sì  t jdt  d¡t jd�} t ¡ �$ t dt¡ t| ƒ W d   ƒ n1 sJ0    Y  t	t| ƒt  
d¡ƒ t jdt  d¡t jd�} d}tjt|d�� t| ƒ}W d   ƒ n1 s°0    Y  t	|t  
d¡ƒ t jddt jd�} t ¡ �$ t dt¡ t| ƒ}W d   ƒ n1 �s0    Y  t	|t  
d¡ƒ t jdd	t jd�}d
}tjt|d�� t|ƒ}W d   ƒ n1 �sn0    Y  t	|t  
d¡ƒ t	||ƒ tjt|d�� t|dd�}W d   ƒ n1 �sÄ0    Y  t	|t  
d¡ƒ t	||ƒ d S )Né   çñhãˆµøä>r¢   Úerrorr6   z:standard deviation of the data is probably very close to 0©Úmatchg0Žä.ÿ++g}Ã”%­I²Tz$Dataset may contain too large valuesF©r°   )r=   r˜   Úlogr†   ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   r&   r™   rN   Úwarns)ÚxÚwarning_messageZx_scaledZx_small_scaledZx_bigZx_big_scaledZx_big_centeredr;   r;   r<   Ú(test_standard_scaler_numerical_stabilityR  s2    
&&
((
,rÀ   c                  C   s`  t j d¡} d}d}|  ||¡}d|d d …df< tƒ }| |¡j|dd�}t  t  |¡¡r^J ‚|j	|kslJ ‚t
|jdd�|dg ƒ t
|jdd�g d¢ƒ ||us¦J ‚| |¡}||us¼J ‚||usÈJ ‚t
||ƒ t|d	d
d�}t  t  |¡¡rôJ ‚t
|jd	d�|dg ƒ t|d	dd�}t  t  |¡¡�r0J ‚t
|jd	d�|dg ƒ t
|jd	d�|dg ƒ ||u�snJ ‚| |¡j|d
d�}t  t  |¡¡�r˜J ‚t
|jdd�|dg ƒ t
|jdd�g d¢ƒ ||u �sÔJ ‚|  dd¡}d|d d …df< tƒ }| |¡j|dd�}t  t  |¡¡�r J ‚t
|jdd�|dg ƒ t
|jdd�g d¢ƒ ||u�s\J ‚d S )Nr   rZ   rY   rq   Trm   ro   ©rq   r]   r]   r]   r]   r3   F)rp   r°   r]   )r=   r„   r…   rM   r   rQ   ri   r§   Úisnanr}   r&   rz   r|   r~   r   )rL   rS   rR   rT   rV   r   r€   r;   r;   r<   Útest_scaler_2d_arraysy  sJ    

rÃ   c                  C   s¢   t j d¡} |  ddddg¡ t j¡}t jdd��& tƒ  |¡}| 	|¡}W d   ƒ n1 s^0    Y  tƒ  
| t j¡¡}t  t  |¡¡s�J ‚t||dd	� d S )
Nr   rZ   r6   i@ r3   Úraise)ZoverrG   ©Údecimal)r=   r„   r…   r—   r‰   rˆ   Zerrstater   rQ   ri   Úfit_transformr†   r¨   Úisfiniter&   )rL   rT   rV   r   ZX_scaled_f64r;   r;   r<   Útest_scaler_float16_overflow­  s    (rÉ   c                  C   sF   t  g d¢¡} t| dd�}t| t  g d¢¡ƒ t|t  g d¢¡ƒ d S )N)r   g¼‰Ø—²Òœ<r3   rG   rH   Trm   )r3   r3   r3   rG   rH   )r=   r`   r   r#   )Ús1Ús2r;   r;   r<   Útest_handle_zeros_in_scaleÆ  s    rÌ   c               
   C   sˆ  t } | jd }ddd||d fD �]`}tƒ  | ¡}tƒ }tt|ƒD ]}| | | ¡}qBt|j|jƒ t|j	|j	ƒ |j
|j
ks‚J ‚t|j|jƒ t|j|jƒ t|j|jƒ td|ƒ}tƒ  | | ¡}tƒ  | | ¡}t|j|jƒ t|j	|j	ƒ |j
|j
k�sJ ‚t|j|jƒ t|j|jƒ t|j|jƒ tƒ  | ¡}tƒ }ttt|ƒƒD ]2\}}| | | ¡}t||j|j|||j
d� �qNq d S )Nr   r3   rG   é2   é*   ©rA   rB   rC   rD   rE   )ÚX_2dr>   r   rQ   r   rR   Úpartial_fitr&   Z	data_min_Z	data_max_r}   Zdata_range_ry   Úmin_ÚsliceÚ	enumeraterF   ÚstartÚstop©rT   rC   rD   Úscaler_batchÚscaler_incrÚbatchÚbatch0r@   r;   r;   r<   Útest_minmax_scaler_partial_fitÎ  sD    

úrÜ   c               
   C   sŒ  t } | jd }ddd||d fD �]d}tdd� | ¡}tdd�}tt|ƒD ]}| | | ¡}qJt|j|jƒ |j	|j	ks|J ‚|j
|j
ksŒJ ‚td|ƒ}tƒ  | | ¡}|dkràttjttjd�|j	ƒ ttjttjd�|jƒ n4ttj| | dd	�|j	ƒ ttj| | dd	�|jƒ tƒ  | ¡}tƒ }ttt|ƒƒD ]2\}}| | | ¡}t||j|j|||j
d
� �q4t|j	|j	ƒ |j
|j
ks J ‚q d S )Nr   r3   rG   rÍ   rÎ   Fr·   r¢   ro   rÏ   )rÐ   r>   r   rQ   r   rR   rÑ   r&   rg   rh   r}   rÓ   r=   r™   rS   r†   rf   ry   Úvarr|   rÔ   rF   rÕ   rÖ   r×   r;   r;   r<   Ú test_standard_scaler_partial_fitþ  sJ    


ÿÿÿú
	rÞ   c                 C   sX  t j d¡}d}d}|jdd|d�}|jdd|d�}| ||¡| | }tƒ  |¡}tƒ }|D ]}	| |	 d	|¡¡}q^d
}
t	|j
|j
|
d� t	|j|j|
d� t	|j|j|
d� d}d}| | dd|¡ t j¡| ƒ}tdd� |¡}tdd�}|D ]&}	|	jd	k�r|	 d	d¡}	| |	¡}qôd
}
|j
d u�s0J ‚t	|j|j|
d� t	|j|j|
d� d S )Nr   rG   r�   g  4&õkÃg  4&õkCr4   g     @�@ç    €„.Ar3   g�íµ ÷Æ°>)Zrtol)r�   rH   g@Œµx¯DFra   r2   )r=   r„   r…   r—   rM   r   rQ   rÑ   Úreshaper#   rg   rh   ry   Úrandintr‰   r†   Úndim)r‚   rL   rS   rR   Úoffsetsr«   rT   rØ   rÙ   ÚchunkZtolr5   r   rV   r;   r;   r<   Ú4test_standard_scaler_partial_fit_numerical_stability1  s6    
rå   rJ   c                 C   s˜   |t  dgdgdgdgg¡ƒ}| r2t |jd ¡} tdddd�}|j|| d� |¡}t| 	¡ | 	¡ ƒ | 
|¡}t| 	¡ | 	¡ ƒ t| 	¡ | 	¡ ƒ d S )	Nr]   rq   r®   r   FT©rb   r°   rn   rI   )r=   r`   rL   Úrandr>   r   rÑ   ri   r'   r7   r~   )rJ   r‚   rT   Únull_transformÚX_nullÚX_origr;   r;   r<   Útest_partial_fit_sparse_input`  s    
rë   c                 C   s|  t d d…d d …f }| r(t |jd ¡} tƒ }tt|jd dƒƒD �]2\}}|d |d …d d …f }| ¡ }| d u r�tƒ  |¡}| 	|| ¡}n2tƒ j|| d |d … d�}|j	|| | | d�}| 
|¡}t||ƒ t||ƒ | |¡}	t||	ƒ t |jd ¡}
t t¡j}t|
|j| ƒ t|
|j| ƒ | d u �rP|d |jk�svJ ‚qBt | d |d … ¡t |j¡ksBJ ‚qBd S )Nr�   r   r3   rI   )rÐ   rL   rç   r>   r   rÔ   r   rn   rÇ   rÑ   ri   r&   r~   r=   r™   r¥   Úfloatr¦   r(   rh   ry   r}   ÚsumrN   Úapprox)rJ   rT   rÙ   r@   rÚ   ZX_sofarZchunks_copyZscaled_batchZscaled_incrZright_inputÚzeroÚepsilonr;   r;   r<   Ú.test_standard_scaler_trasform_with_partial_fitq  s<    ÿÿ





ÿrñ   c                  C   sR   t jg d¢g d¢g d¢g d¢g d¢g d¢gt jd�} tƒ }| | ¡ | | ¡ d S )N)r3   r3   r3   r   r3   r   )r   r²   r   r3   r   r   )r3   rY   r3   r3   r   r   )r   r3   r   r   r3   r   )r   rY   r   r3   r   r3   r¢   )r=   r`   Zint32r   rQ   r~   )r¾   rV   r;   r;   r<   Ú.test_standard_check_array_of_inverse_transform›  s    ú÷
rò   z#array_namespace, device, dtype_nameÚcheck)ZidsÚ	estimator)ÚclipÚl1©ÚnormÚl2Úmaxc                 C   s   | j j}||| |||d� d S )N)ÚdeviceÚ
dtype_name)r”   r•   )rô   ró   Zarray_namespacerû   rü   Únamer;   r;   r<   Ú test_scaler_array_api_compliance³  s    rþ   c                  C   s*  t j} tƒ }| | ¡}t|jdd�dƒ t|jdd�dƒ | |¡}t| |ƒ tdd�}| | ¡}t|jdd�dƒ t|jdd�dƒ | |¡}t| |ƒ tdd�}| | ¡}t|jdd�dƒ t|jdd�d	ƒ | |¡}t| |ƒ td
d�}t 	t
¡� | | ¡ W d   ƒ n1 �s0    Y  d S )Nr   ro   r3   ©r3   rG   ©Úfeature_rangerG   )ç      à¿ç333333ã?r  r  )rG   r3   )ÚirisÚdatar   rÇ   r&   Úminrú   r~   rN   rO   rP   rQ   )rT   rV   ÚX_transÚX_trans_invr;   r;   r<   Útest_min_max_scaler_irisÏ  s,    











r	  c            	      C   sþ   g d¢g d¢g d¢g} g d¢g d¢g d¢g}t ƒ }| | ¡}g d¢g d¢g d	¢g}t||ƒ | |¡}t| |ƒ | |¡}g d¢g d
¢g d¢g}t||dd� t dd�}| | ¡}g d¢g d¢g d¢g}t||ƒ t| ƒ}t||ƒ t| dd�}t||ƒ d S )N©rq   r]   ç      à?©rq   r]   gš™™™™™¹¿©rq   r]   gš™™™™™ñ?©rq   r\   r  ©ç      ð¿r]   rq   ©rq   r]   rc   )rq   rq   r  ©rq   rq   rq   ©rq   rq   r]   )r  rq   gsh‘í|?µ?)rq   rq   g‡ÙÎ÷Sõ?rG   rÅ   rÿ   r   )r]   r]   rc   ©r]   r]   r]   )r]   r]   r\   )r   rÇ   r&   r~   ri   r   )	rT   ÚX_newrV   r  ZX_expected_0_1r  ÚX_trans_newZX_expected_0_1_newZX_expected_1_2r;   r;   r<   Ú*test_min_max_scaler_zero_variance_featuresï  s&    








r  c                  C   s>   t j} t| dd�}ttj|dd�dƒ ttj|dd�dƒ d S )Nr3   ro   r   )r  r  r   r&   r=   r  rú   )rT   r  r;   r;   r<   Útest_minmax_scale_axis1  s    r  c                  C   s\  t tttfD ]¼} tdd�}| | ¡ | ¡}t| tƒr>t 	| ¡} t
| ƒdkr|t|jdd�t t¡ƒ t|jdd�t t¡ƒ n$t|jdd�dƒ t|jdd�dƒ |j| jd ks´J ‚| |¡}t|| ƒ qt d¡} tƒ }| | ¡ | ¡}| ¡ dksúJ ‚| ¡ dk�sJ ‚|j| jd k�s"J ‚t  ¡ }| ¡ }| ¡ }t|| ||  t|dd�ƒ d S rl   )rs   rt   ru   r   rQ   ri   rv   rw   r=   r`   r?   r&   r  r™   rS   rú   r}   r>   r~   rf   rx   r   )rT   rV   r   r€   ÚX_1drÒ   Zmax_r;   r;   r<   Útest_min_max_scaler_1d  s2    




ÿr  c                 C   sV  t j d¡}| dd¡}d|d d …df< ||ƒ}| rD| |jd ¡} t t¡� t	ƒ  
|¡ W d   ƒ n1 sp0    Y  t	dd�j
|| d�}|j|d	d
�}t  t  |¡¡r°J ‚t	dd�j
|| d�}|j|d	d
�}t  t  |j¡¡rèJ ‚t|j|jƒ t|j|jƒ t|j|jƒ t|j|jƒ | d u �rXt|jdd�g d¢dƒ t|jdd�g d¢ƒ t|dƒ\}	}
t|	|jdd�ƒ t|
|jdd�ƒ ||u�s˜J ‚||u�s¦J ‚| |¡}||u�s¾J ‚||u�sÌJ ‚t||ƒ | |¡}||u�sîJ ‚||u�süJ ‚t| ¡ |ƒ |tv �rRt	ddd	d�}| |¡}t|j|jƒ | |¡}t|j|jƒ d S )NrÎ   rY   rZ   rq   r   Fra   rI   Trm   ro   ©rq   g{®Gáz„¿gìQ¸…ë@gffffffÖ¿gö(\�Âõè¿rG   rÁ   ræ   )r=   r„   r…   rM   rç   r>   rN   rO   rP   r   rQ   ri   r§   rÂ   r  r&   rg   rh   ry   r}   rz   r|   r/   rÝ   r~   r7   r-   rÇ   r'   )rJ   r‚   rL   rT   ÚX_sparserV   r   Úscaler_sparseÚX_sparse_scaledÚX_sparse_scaled_meanZX_sparse_scaled_varr€   ÚX_sparse_scaled_backrè   ré   rê   r;   r;   r<   Útest_scaler_without_centering;  sX    *
ÿ
ÿ





r!  rb   r°   c                 C   sŒ   t jg d¢t jddgddt jgddt jggt jd�}|d urD||ƒ}t |¡r\| r\t d	¡ t| |d
�}| 	|¡ t
|jt  g d¢¡ƒ d S )N©r   r3   rH   r[   r6   rZ   rY   r²   r   r¢   z3'with_mean=True' cannot be used with sparse matrix.r¯   )rH   rY   rG   )r=   r`   Únanr†   r   ÚissparserN   r“   r   rQ   r'   r}   )rb   r°   r‚   rT   Útransformerr;   r;   r<   Ú#test_scaler_n_samples_seen_with_nanx  s    *ÿ

r&  c                 C   sn   | j |j   u rd u sn J ‚| j|j  u r6d u s<n J ‚| j|j  u rTd u sZn J ‚| j|jksjJ ‚d S )N)rg   rh   ry   r}   )Zscaler_1Zscaler_2r;   r;   r<   Ú"_check_identity_scalers_attributes‹  s    r'  c                 C   s°   t jg d¢g d¢g d¢gt jd�}| |ƒ}tddd�}| |¡}t||ƒ t|ƒ}| |¡}t||ƒ t||ƒ | 	|¡ | 	|¡ t||ƒ | 
|¡ | 
|¡ t||ƒ d S )Nr"  )rZ   r[   r   )r²   r   r6   r¢   Fr¯   )r=   r`   r†   r   rÇ   r#   r   r$   r'  rÑ   rQ   )r‚   ÚX_denser  Útransformer_denseZX_trans_denseZtransformer_sparseÚX_trans_sparser;   r;   r<   Útest_scaler_return_identity’  s    "









r+  c                 C   sz  t j d¡}|jddd�}d|d d …df< | |ƒ}tjdd��. tdd	� |¡}|j|dd
�}W d   ƒ n1 sr0    Y  t  	t  
|¡¡r�J ‚tjdd��. tdd	� |¡}|j|dd
�}W d   ƒ n1 sÐ0    Y  t  	t  
|j¡¡rðJ ‚t|j|jƒ t|j|jƒ t|j|jƒ t|jdd�g d¢dƒ t|jdd�g d¢ƒ t| t¡dƒ\}}	t||jdd�ƒ t|	|jdd�ƒ ||u�sŽJ ‚||u�sœJ ‚| |¡}
|
|u�s´J ‚|
|u�sÂJ ‚t|
|ƒ | |¡}||u�säJ ‚||u�sòJ ‚t| ¡ |ƒ | tv �rvtdddd�}tjdd�� | |¡}W d   ƒ n1 �sF0    Y  t|j|jƒ | |¡}t|j|jƒ d S )NrÎ   é   ©rY   rZ   r4   r   T)ÚrecordFra   rm   ro   )rq   gX9´Èv¾ñ?gV-²ý?g      5@g‹lçû©ñø?rG   rÁ   ræ   )r=   r„   r…   rá   r¹   rº   r   rQ   ri   r§   rÂ   r  r&   rg   rh   ry   rz   r|   r/   r‰   rì   r~   r7   r-   rÇ   r'   )r‚   rL   rT   r  rV   r   r  r  r  ZX_sparse_scaled_stdr€   r   rè   ré   rê   r;   r;   r<   Útest_scaler_int¬  sR    ,,ÿ
ÿ



*
r/  c                 C   s‚   t j d¡}| dd¡}d|d d …df< | |ƒ}| ¡ }tdd� |¡ t||ƒ | ¡ }tddd� |¡ t| ¡ | ¡ ƒ d S )	NrÎ   rY   rZ   rq   r   Frm   )rb   rn   )	r=   r„   r…   rM   rn   r   rQ   r'   r7   )r‚   rL   rT   r  ZX_copyZX_sparse_copyr;   r;   r<   Útest_scaler_without_copyå  s    
r0  c                 C   s  t j d¡}| dd¡}| |ƒ}t t¡� t|dd� W d   ƒ n1 sL0    Y  t t¡�  tdd� 	|¡ W d   ƒ n1 s†0    Y  tdd� 	|¡}t t¡� | 
|¡ W d   ƒ n1 sÊ0    Y  | | 
|¡ƒ}t t¡� | |¡ W d   ƒ n1 �s0    Y  d S )NrÎ   rY   rZ   Tra   )r=   r„   r…   rM   rN   rO   rP   r   r   rQ   ri   r~   )r‚   rL   rT   r  rV   ZX_transformed_sparser;   r;   r<   Ú+test_scale_sparse_with_mean_raise_exceptionö  s    *.(r1  c                  C   sL   t jddddgg} tjtdd�� t| ƒ W d   ƒ n1 s>0    Y  d S )NrZ   r[   é   r²   z,Input contains infinity or a value too largerµ   )r=   ÚinfrN   rO   rP   r   ©rT   r;   r;   r<   Ú&test_scale_input_finiteness_validation  s
    ÿr5  c                  C   sV   t  dd¡} tdd�}d}tjt|d�� | | ¡ W d   ƒ n1 sH0    Y  d S )Nr1   r6   TrŒ   zCannot center sparse matricesrµ   )r   rç   r   rN   rO   rP   rQ   )r  rV   Úerr_msgr;   r;   r<   Útest_robust_scaler_error_sparse  s
    
r7  r�   Úwith_scalingrT   r  ©Údensityc                 C   s~   |rt  | ¡rt d¡ t||d�}| | ¡ |rFt|jtj	ƒsTJ ‚n|jd u sTJ ‚|rlt|j
tj	ƒszJ ‚n|j
d u szJ ‚d S )Nz(RobustScaler cannot center sparse matrix)r�   r8  )r   r$  rN   r“   r   rQ   rv   Úcenter_r=   Úndarrayry   )rT   r�   r8  rV   r;   r;   r<   Útest_robust_scaler_attributes  s    

r=  Úcsr_containerc                 C   sŽ   t j dd¡}d|d d …df< | |ƒ}tdd�}| |¡ |jd t d¡ksRJ ‚| |¡}t	|d d …dgf  
¡ |d d …dgf  
¡ ƒ d S )Nr6   rZ   r   FrŒ   r3   )r=   r„   rM   r   rQ   ry   rN   rî   ri   r#   r7   )r>  rT   rV   r  r;   r;   r<   Ú"test_robust_scaler_col_zero_sparse2  s    


r?  c                  C   sr   t j d¡} |  dd¡}d|d d …df< tƒ }| |¡ |¡}tt j|dd�ddg ƒ t|j	dd�d dƒ d S )Nr   rY   rZ   rq   ro   )
r=   r„   r…   rM   r   rQ   ri   r&   Úmedianr|   )rL   rT   rV   r   r;   r;   r<   Útest_robust_scaler_2d_arraysB  s    rA  r:  )r   gš™™™™™©?çš™™™™™¹?r  r3   Ústrictly_signed)ÚpositiveÚnegativer™   Nc                 C   s¦   t jdd| d� ¡ }|dkr,t |j¡|_n8|dkrFt |j¡ |_n|dkrdtj|jjtjd�|_| 	¡ }t
dd	�}t
dd	�}| |¡ | |¡ t|j|jƒ d S )
Nr1   rZ   r9  rD  rE  r™   r¢   FrŒ   )r   rç   Útocscr=   Úabsr  r™   r>   r†   r7   r   rQ   r#   ry   )r:  rC  r  r(  r  Zscaler_denser;   r;   r<   Ú+test_robust_scaler_equivalence_dense_sparseO  s    



rH  c                 C   s~   t j d¡}| dd¡}t  g d¢g¡}tdd�}| |¡}| | |ƒ¡}||j }t	| 
¡ |ƒ | |¡}t	|| 
¡ ƒ d S )Nr   rY   rZ   )rB  r]   r\   rq   r  FrŒ   )r=   r„   r…   rM   r`   r   rQ   ri   ry   r&   r7   r~   )r>  rL   rT   Z
single_rowrV   Z	row_transZrow_expectedZrow_scaled_backr;   r;   r<   Ú(test_robust_scaler_transform_one_row_csre  s    



rI  c                  C   sl   t j} tƒ }| | ¡}ttj|dd�dƒ | |¡}t| |ƒ tj|ddd�}|d |d  }t|dƒ d S )Nr   ro   ©é   éK   ©Úqrp   r3   ©	r  r  r   rÇ   r&   r=   r@  r~   Ú
percentile)rT   rV   r  r  rN  Úiqrr;   r;   r<   Útest_robust_scaler_irist  s    


rR  c                  C   sp   t j} tdd�}| | ¡}ttj|dd�dƒ | |¡}t| |ƒ tj|ddd�}|d |d  }t|dƒ d S )N)r6   éZ   ©Úquantile_ranger   ro   rM  r3   rO  )rT   rV   r  r  rN  Zq_ranger;   r;   r<   Ú!test_robust_scaler_iris_quantiles€  s    



rV  Úcsc_containerc                 C   sŠ   t j}tdd�}| |¡}| |¡}t||ƒ tddd�}| |¡}| |¡}t||ƒ | |ƒ}| |¡}| |¡}t| ¡ | ¡ ƒ d S )Nr0   ©Ún_quantilesÚnormal)rY  Zoutput_distribution)r  r  r   rÇ   r~   r&   r7   )rW  rT   r%  r  r  r  ZX_sparse_tranZX_sparse_tran_invr;   r;   r<   Útest_quantile_transform_irisŒ  s    








r[  c                 C   s*  t  g d¢g d¢g d¢g¡}| |ƒ}t  g d¢g d¢g d¢g¡}| |ƒ}d}tjt|d��  tdd� |¡ W d   ƒ n1 s€0    Y  tdd	�}d
}tjt|d�� | |¡ W d   ƒ n1 sÆ0    Y  | |¡ d
}tjt|d�� | |¡ W d   ƒ n1 �s0    Y  t  g d¢g d¢g¡}d}tjt|d�� | |¡ W d   ƒ n1 �sb0    Y  tdd	� |¡}tjtdd�� | d¡ W d   ƒ n1 �s¬0    Y  tdd	�}d}tj	t
|d��}| |¡ W d   ƒ n1 �sô0    Y  t|ƒdk�sJ ‚|j|jd k�s&J ‚d S )N)
r   rK  rÍ   r   r   r   rL  r   r   r�   )
rG   rY   r   r   r[   r²   r   r6   r   r   )
r   r   çÍÌÌÌÌÌ@çffffff@r   r   çffffff@r   ç      #@rB  )
éþÿÿÿrY   r   r   r[   r²   r   r6   r   r   zmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.rµ   r6   )Ú	subsamplerX  z>QuantileTransformer only accepts non-negative sparse matrices.zKX has 2 features, but QuantileTransformer is expecting 3 features as input.z+Expected 2D array, got scalar array insteadr�   zn_quantiles is set to n_samplesr3   r   )r=   Z	transposerN   rO   rP   r   rQ   ri   r~   r½   r¼   ÚlenZn_quantiles_r>   )rW  rT   ZX_negr6  r%  Z
X_bad_featZwarn_msgr.  r;   r;   r<   Ú#test_quantile_transform_check_error¡  sT    ýÿýÿÿ.
(
*ÿÿ**
*rc  c           
      C   s8  t  ddgddgddgddgddgg¡}| |ƒ}tddd�}d}tjt|d�� | |¡ W d   ƒ n1 sn0    Y  t  ddgddgddgddgddgg¡}| |¡}t|| 	¡ ƒ t  g d	¢¡}t  g d
¢¡}t  g d¢¡}	| ||	|ffƒ}| |¡}t  ddgddgddgddgddgddgddgddgddgg	¡}t|| 	¡ ƒ tddd�}t  g d¢¡}t  g d¢¡}t  g d¢¡}	| ||	|ffƒ}| |¡}t  ddgddgddgddgddgddgddgg¡}t|| 	¡ ƒ t| 	¡ | 
|¡ 	¡ ƒ tddddd�}| |¡}t|| 	¡ ƒ t| 	¡ | 
|¡ 	¡ ƒ d S )Nr   r3   rG   TrZ   )Úignore_implicit_zerosrY  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.rµ   )r   r   r3   r   rG   rG   r3   r   r3   rG   r   )r   r   r3   r3   r3   r3   r3   r3   r3   r3   r3   )r   rY   r   r3   rG   rH   rY   rZ   r[   r2  r²   rq   r  r]   )	r2   r2   r3   r   r   r   r3   r2   r3   )	r   r   r3   r3   r3   r3   r3   r3   r3   )	r   rY   r   r3   rG   rH   rY   rZ   r[   g      Ø?r²   )rd  rY  ra  Úrandom_state)r=   r`   r   rN   r½   r¼   rQ   rÇ   r%   r7   r~   )
rW  rT   r  r%  r¿   Ú
X_expectedr  ZX_dataZX_colZX_rowr;   r;   r<   Ú+test_quantile_transform_sparse_ignore_zerosÛ  sb    (ÿ((

÷ÿ
,ÿÿÿ
ÿrg  c                  C   sÈ   t  g d¢g d¢g d¢g d¢g d¢g¡} tdd�}| | ¡ | | ¡}t  t jdd	dd
�d¡j}tt j	|dd�|ƒ t  g d¢g d¢g¡}t  g d¢g d¢g¡}t
| |¡|ƒ | |¡}t
| |ƒ d S )N)r   rG   r\  )rK  rY   r]  )rÍ   r[   r^  )rL  r²   r_  )r�   r6   rB  rZ   rX  r   r3   )Únum)rH   r3   ro   )r2   r3   r   )ée   é   r6   )r   r   r   ©r3   r3   r3   )r=   r`   r   rQ   rÇ   ZtileÚlinspaceÚTr%   Úsortr&   ri   r~   )rT   r%  r  rf  rj   r  r;   r;   r<   Ú!test_quantile_transform_dense_toy  s*     ÿ


þÿþÿ
ro  c            	      C   sR  d} d}t jt j | df¡dd�}d}g }t|ƒD ]`}t||| d d�}| |¡ t  dd|¡t  |j	¡ }t  
t  |¡¡}|d	k sˆJ ‚| |¡ q2tt  |¡ƒt|ƒks®J ‚tj| dd
ddd�}g }t|ƒD ]b}t||| d d�}| |¡ t  dd|¡t  |j	¡ }t  
t  |¡¡}|dk �s&J ‚| |¡ qÎtt  |¡ƒt|ƒk�sNJ ‚d S )Né@B r1   r3   r   ro   rZ   r6   )re  rY  ra  ç{®Gáz„?g®Gáz®ï?Zcsc)r:  Úformatre  rB  )r=   rn  r„   Úsampler£   r   rQ   rl  rx   Ú
quantiles_rú   rG  Úappendrb  Úuniquer   rç   )	rR   rY  rT   ZROUNDZinf_norm_arrre  r%  ÚdiffZinf_normr;   r;   r<   Ú#test_quantile_transform_subsampling=  s>    ý
ý
rx  c                  C   sh   t j d¡jdd�} d}t|dd� | ¡}t  dd|¡}t|j|ƒ t  	|  
¡ |¡}t|j 
¡ |ƒ dS )zCCheck the behaviour of `QuantileTransformer` when `subsample=None`.r   )éÈ   r3   r4   rZ   N)rY  ra  r3   )r=   r„   r…   rZ  r   rQ   rl  r#   Úreferences_Zquantilerx   rt  )rT   rY  r%  Zexpected_referencesZexpected_quantilesr;   r;   r<   Ú,test_quantile_transform_subsampling_disabledl  s    r{  c                 C   s&  t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g
¡}| |ƒ}tdd�}| |¡ | |¡}tt j| ¡ dd�dƒ tt j| ¡ dd�dƒ | 	|¡}t| ¡ | ¡ ƒ tdd� | ¡ ¡}| 
|¡}tt j| ¡ dd�dƒ tt j| ¡ dd�dƒ | 	|¡}t| ¡ | ¡ ƒ d S )N)rq   r\   rq   )g      9@ç      @rq   )g      I@rq   r\  )rq   rq   r]  )rq   g      @rq   )rq   g       @rq   )g     ÀR@rq   r^  )rq   g      $@rq   )rq   rq   r_  )r�   rq   rB  r6   rX  r   ro   rq   r]   )r=   r`   r   rQ   rÇ   r&   r  r7   rú   r~   ri   )rW  rT   r%  r  r  r)  r;   r;   r<   Ú"test_quantile_transform_sparse_toyy  s6    öÿ





r}  c                  C   sJ   t  g d¢g d¢g d¢g¡} t| jddd�}t| ddd�}t||jƒ d S )N)r   rK  rÍ   rL  r�   )rG   rY   r[   r²   r6   )r\  r]  r^  r_  rB  r   rZ   )rp   rY  r3   )r=   r`   r   rm  r&   )rT   Z
X_trans_a0Z
X_trans_a1r;   r;   r<   Útest_quantile_transform_axis1   s    r~  c                 C   sŽ  t  ddgddgddgg¡}| |ƒ}tddd� |¡}t||ƒ tddd� |¡}t| ¡ |ƒ t|| ¡ ƒ 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� |¡}| |¡}t||ƒ t j d¡}tƒ }| |¡ | d	gg¡| t  	|¡gg¡k�sJ ‚| d
gg¡| t  
|¡gg¡k�s6J ‚| d	gg¡| t  	|j¡gg¡k�s`J ‚| d
gg¡| t  
|j¡gg¡k�sŠJ ‚d S )Nr   r3   rH   ©rY  re  r  rB  rX  )r1   r3   éöÿÿÿr6   )r=   r`   r   rÇ   r&   r7   rQ   ri   r„   r  rú   r~   rz  )rW  r(  r  r  Z
X_trans_sprT   ZX1r%  r;   r;   r<   Útest_quantile_transform_bounds¨  s2    
ÿ


((ÿÿr�  c               	   C   sp   t j} t dgtd gdgdgdgdgdgg¡}| |fD ]2}tddd	�}| |¡}| |¡}t||d
d� q8d S )Nrq   r6   rc   rG   rH   rY   r1   r   r  é	   rÅ   )	r  r  r=   r`   r   r   rÇ   r~   r&   )ÚX_1ÚX_2rT   r%  r  r  r;   r;   r<   Ú#test_quantile_transform_and_inverseÎ  s    *

r…  c                  C   sŽ   t  t jdddgt jt jddgt jdddgg¡} tddd�}| | ¡ t  |jd d …df ¡ ¡ sfJ ‚t  |jd d …dd …f ¡ ¡ rŠJ ‚d S )Nr   r3   r  r6   rÎ   r  )	r=   r`   r#  r   rÇ   rÂ   rt  r¨   r§   )rT   r%  r;   r;   r<   Útest_quantile_transform_nanØ  s
    0
 r†  Ú
array_typer`   r   c                 C   s|   t  g d¢d ¡}d| dd¡ }t|| ƒ}d}t|d� |¡}|jd d …df }t|ƒdksbJ ‚tt  	|¡dkƒsxJ ‚d S )	N)r   r3   r3   rG   rG   rH   rH   rY   rZ   rZ   r3   r3   r‚  r‚  r‚  r²   r²   r2  r6   rB  r2   r3   r�   rX  r   )
r=   r`   rà   r"   r   rQ   rt  rb  r¨   rw  )r‡  rT   rY  ZqtZ	quantilesr;   r;   r<   Ú*test_quantile_transformer_sorted_quantilesä  s    
rˆ  c               	   C   sR   dD ]H} t | d�}tjtdd�� | tj¡ W d   ƒ q1 sB0    Y  qd S )N))r2   rS  )r`  éýÿÿÿ)r6   ri  )g      Y@ri  )rS  rÍ   rT  zInvalid quantile range: \(rµ   )r   rN   rO   rP   rQ   r  r  )Zrange_rV   r;   r;   r<   Ú test_robust_scaler_invalid_rangeø  s    
rŠ  c           	      C   s\  t j d¡}| dd¡}d|d d …df< | |ƒ}t|dd�}t  t  |¡¡rPJ ‚t|dd�}t  t  |j¡¡rrJ ‚t| ¡ dd�}t	|| 
¡ ƒ t t¡� t|ddd	� W d   ƒ n1 s¾0    Y  t	|jdd
�g d¢dƒ t	|jdd
�g d¢ƒ ||u�sJ ‚t|dƒ\}}t	||jdd
�ƒ t	||jdd
�ƒ t|dddd�}t	| 
¡ | 
¡ ƒ d S )NrÎ   rY   rZ   rq   r   Fra   r3   )rb   rp   ro   r  rG   rÁ   Træ   )r=   r„   r…   rM   r   r§   rÂ   r  rF  r&   r7   rN   rO   rP   rz   r|   r/   )	r>  rL   rT   ÚX_csrr   ZX_csr_scaledZX_csc_scaledZX_csr_scaled_meanZX_csr_scaled_stdr;   r;   r<   Ú%test_scale_function_without_centering  s,    ,ÿrŒ  c                  C   sT   t j} t| dd�}ttj|dd�dƒ tj|ddd�}|d |d  }t|dƒ d S )Nr3   ro   r   rJ  rM  ©r  r  r   r&   r=   r@  rP  ©rT   r  rN  rQ  r;   r;   r<   Útest_robust_scale_axis1+  s    r�  c                  C   sV   t jd d …df } t| ƒ}tt |¡dƒ tj|dd�}|d |d  }t|dƒ d S )Nr3   r   rJ  )rN  r�  rŽ  r;   r;   r<   Útest_robust_scale_1d_array4  s    r�  c                  C   s¢   g d¢g d¢g d¢g} t ƒ }| | ¡}g d¢g d¢g d¢g}t||ƒ | |¡}t| |ƒ g d¢g d¢g d	¢g}| |¡}g d
¢g d¢g d¢g}t||dd� d S )Nr
  r  r  r  )rq   rq   r  r  r  r  r  )rq   r]   rq   )r  rq   g_Ò­£ªê¿)rq   rq   gÑ–s)®ªú?rH   rÅ   )r   rÇ   r&   r~   ri   )rT   rV   r  rf  r  r  r  ÚX_expected_newr;   r;   r<   Ú)test_robust_scaler_zero_variance_features=  s    




r’  c                  C   sª   t j d¡} |  dd¡}t  |t  d¡d t  d¡d g¡}d}t|dd	� |¡}| |¡}|j	t
jd
dd�kstJ ‚|jt
jddd�ksŒJ ‚| ¡ t
jddd�ks¦J ‚d S )NrÎ   rp  r3   )r�   r3   r�   iœÿÿÿ)r3   éc   T)rU  Zunit_variancer   çü©ñÒMbP?)rG  rq  )r=   r„   r…   rM   Úvstackrf   r   rQ   ri   r;  rN   rî   ry   r|   )rL   rT   ZX_with_outliersrU  Zrobust_scalerr  r;   r;   r<   Ú test_robust_scaler_unit_varianceV  s    $ÿ
r–  c                 C   s  g d¢g d¢g d¢g d¢g}t ƒ }| |¡}g d¢g d¢g d¢g d¢g}t||ƒ | |¡}t||ƒ g d¢g d	¢g d¢g}| |¡}g d
¢g d	¢g d¢g}t||dd� t|ƒ}t||ƒ | |ƒ}	| |	¡}
g d¢g d¢g d¢g d¢g}t|
 ¡ |ƒ | |
¡}t|| ¡ ƒ d S )Nr
  )rq   r]   ç333333Ó¿r  r  )rq   r]   çUUUUUUÕ?)rq   r]   gš™™™™™É¿)rq   r]   r]   r  r  )rq   r\   r˜  rG   rÅ   )r   rÇ   r&   r~   ri   r   r7   )r‚   rT   rV   r  rf  r  r  r  r‘  r  r*  ZX_trans_sparse_invr;   r;   r<   Ú)test_maxabs_scaler_zero_variance_featuresh  s6    
ü





ü
r™  c                  C   sV   g d¢g d¢g d¢g d¢g} t ƒ }| | ¡}g d¢g d¢g d¢g d¢g}t||ƒ d S )	N)rq   r]   r  r  )rq   r]   r—  r  )rq   r]   g      YÀrq   )rq   rq   rq   g       À)rq   r]   g{®Gázt?r  )rq   r]   gú~j¼t“h¿g      Ð¿)rq   r]   r  rq   )rq   rq   rq   r  )r   rÇ   r&   )rT   rV   r  rf  r;   r;   r<   Ú'test_maxabs_scaler_large_negative_value’  s    ü
ürš  c                 C   sh   | g d¢gƒ}t ƒ }| |¡}| |¡}| g d¢gƒ}t| ¡ | ¡ ƒ | |¡}t| ¡ | ¡ ƒ d S )N)r  r]   r]   r  )r   rQ   ri   r&   r7   r~   )r>  rT   rV   r  rf  r€   r;   r;   r<   Ú(test_maxabs_scaler_transform_one_row_csr¦  s    


r›  c                  C   s(  t tttfD ]ž} tdd�}| | ¡ | ¡}t| tƒr>t 	| ¡} t
| ƒdkrjtt |jdd�¡t t¡ƒ ntt |jdd�¡dƒ |j| jd ks–J ‚| |¡}t|| ƒ qt d¡} tƒ }| | ¡ | ¡}tt |jdd�¡dƒ |j| jd ksøJ ‚t  ¡ }t |¡ ¡ }t|| t|dd�ƒ d S )NTrm   r3   r   ro   r]   rr   )rs   rt   ru   r   rQ   ri   rv   rw   r=   r`   r?   r&   rG  rú   rf   rS   r}   r>   r~   rx   r   )rT   rV   r   r€   r  Zmax_absr;   r;   r<   Útest_maxabs_scaler_1d³  s&    


 

rœ  c              
   C   s   t d d…d d …f }|jd }ddd||d fD �]È}tƒ  |¡}tƒ }tƒ }tƒ }t||ƒD ]>}| || ¡}| || ƒ}	| |	¡}| || ƒ}
| |
¡}q^t|j|jƒ t|j|jƒ t|j|jƒ |j|jksØJ ‚|j|jksèJ ‚|j|jksøJ ‚t|j	|j	ƒ t|j	|j	ƒ t|j	|j	ƒ t| 
|¡| 
|¡ƒ td|ƒ}tƒ  || ¡}tƒ  || ¡}t|j|jƒ |j|jk�s‚J ‚t|j	|j	ƒ t| 
|¡| 
|¡ƒ tƒ  |¡}tƒ }tt||ƒƒD ]2\}}| || ¡}t||j|j|||jd� �qÆq0d S )Nr�   r   r3   rG   rÍ   rÎ   rÏ   )rÐ   r>   r   rQ   r   rÑ   r&   Zmax_abs_r}   ry   ri   rÓ   rÔ   rF   rÕ   rÖ   )r>  rT   rC   rD   rØ   rÙ   Zscaler_incr_csrZscaler_incr_cscrÚ   r‹  ZX_cscrÛ   r@   r;   r;   r<   Útest_maxabs_scaler_partial_fitÓ  sT    


úr�  c                 C   sÌ   | dkrFt  |¡jdd�}tdƒD ]}t|| dƒ q"t|d dƒ n‚| dkr†tdƒD ]}tt || ¡dƒ qVtt |d ¡dƒ nB| dkrÈt|ƒjdd�}tdƒD ]}t|| dƒ q¦t|d dƒ d	S )
zr
    Convenient checking function for `test_normalizer_l1_l2_max` and
    `test_normalizer_l1_l2_max_non_csr`
    rö   r3   ro   rH   r]   rq   rù   rú   N)r=   rG  rí   r£   r%   Úlarø   rú   )rø   ÚX_normÚrow_sumsr@   Zrow_maxsr;   r;   r<   Úcheck_normalizer  s    r¡  rø   ©rö   rù   rú   c                 C   sÚ   t j d¡}| dd¡}||ƒ}d|dd d …f< |jd }|jd }d|j||…< ||ƒ}|||fD ]p}t| dd�}	|	 |¡}
|
|usŠJ ‚t|
ƒ}
t| dd�}	|	 |¡}||u s´J ‚t|ƒ}|
|fD ]}t	| |ƒ qÄqdd S )	Nr   rY   rZ   rq   rH   T©rø   rn   F)
r=   r„   r…   rM   Zindptrr  r   ri   r7   r¡  )rø   r>  rL   r(  ZX_sparse_unprunedZindptr_3Zindptr_4ZX_sparse_prunedrT   Ú
normalizerZX_norm1ZX_norm2rŸ  r;   r;   r<   Útest_normalizer_l1_l2_max!  s&    



r¥  c                 C   s|   t j d¡}| dd¡}d|dd d …f< ||ƒ}t| dd� |¡}||usNJ ‚t |¡rb|jdksfJ ‚t	|ƒ}t
| |ƒ d S )	Nr   rY   rZ   rq   rH   Fr£  Zcsr)r=   r„   r…   rM   r   ri   r   r$  rr  r7   r¡  )rø   r‚   rL   r(  rT   rŸ  r;   r;   r<   Ú!test_normalizer_l1_l2_max_non_csrC  s    r¦  c                 C   sº   t j d¡}| dd¡}d|dd d …f< |dt|dd d …f ƒ ¡ f  d9  < t  |¡ }| |ƒ}|||fD ]F}tdd	�}| |¡}||us’J ‚t|ƒ}t	t  
|¡t  
t|ƒ¡ƒ qnd S )
Nr   rY   rZ   rq   rH   rG   r2   rú   r÷   )r=   r„   r…   rM   rG  Zargmaxr   ri   r7   r'   Úsign)r>  rL   r(  Z	X_all_negZX_all_neg_sparserT   r¤  rŸ  r;   r;   r<   Útest_normalizer_max_signX  s    (

r¨  c              	   C   sô  t j d¡ dd¡}tt|dd�t|jddd�jƒ t j d¡}| dd	¡}| |ƒ}t  d¡}||fD ]†}t jt j	fD ]t}d
D ]j}| 
|¡}t||d�}|j|ks¦J ‚t|ƒ}|dkrÊt  |¡jdd�}	n|d }
|
jdd�}	t|	|ƒ q~qvqft  g d¢g d¢g d¢g¡}dD ]l}t||dd�\}}|dk�rDt|t  g d¢¡ƒ n4|dk�rdt|t  g d¢¡ƒ nt|t  g d¢¡ƒ �q| |ƒ}d
D ]@}t t¡� t||dd� W d   ƒ n1 �s¼0    Y  �qˆt|ddd�\}}t|t  g d¢¡ƒ d S )Né%   rH   rG   Frm   r   )rp   rn   r6   rZ   )rö   rù   r÷   rö   r3   ro   )r­   r   r|  )r]   rq   rq   )r\   r­   rq   r¢  T)rø   Zreturn_norm)ç      @r]   r®   rù   )r®   r]   g1œ¥C+Ø@)r|  r]   r­   rú   )r=   r„   r…   rM   r'   r   rm  rf   r‡   r†   r‰   rŠ   r7   rG  rí   r&   r`   rN   rO   ÚNotImplementedError)r>  rT   Úrsr(  r  rf   rŠ   rø   rŸ  r   ZX_norm_squaredÚ_Znormsr;   r;   r<   Útest_normalizem  s@     



2r®  Úconstructorc                 C   sž  t  g d¢g d¢g¡}| | ¡ ƒ}tddd�}t| |¡ƒ}t  |dk¡dksRJ ‚t  |dk¡d	kshJ ‚| |¡}t |¡t |¡ksŠJ ‚tdd
� 	|¡}t| |¡ƒ}||us´J ‚t  |dk¡d	ksÊJ ‚t  |dk¡dksàJ ‚tdd
�}| |¡}||u�sJ ‚t|ƒ}t  |dk¡d	k�s"J ‚t  |dk¡dk�s:J ‚tdd
�}| |¡}| t
u�rf||u �sfJ ‚tdd
�}t jg d¢g d¢gt jd�}| |¡}| t
u�r®||u �s®J ‚t|ƒ}t  |dk¡d	k�sÎJ ‚t  |dk¡dk�sæJ ‚tddd�}| t jt
fv �rV| | ¡ ƒ}t| |¡ƒ}t  |dk¡dk�s4J ‚t  |dk¡dk�sLJ ‚| |¡}| tv �ršt t¡� | | |ƒ¡ W d   ƒ n1 �s�0    Y  d S )N)r3   r   rZ   )rG   rH   r2   r\   T)Ú	thresholdrn   r   rY   r3   rG   rm   Fr¢   r  rZ   )r=   r`   rn   r
   r7   ri   rí   r   r$  rQ   rw   r†   r,   rN   rO   rP   )r¯  ZX_rT   Z	binarizerZX_binZX_floatr;   r;   r<   Útest_binarizer›  sR    










r±  c                  C   s.  t j d¡} |  d¡}tdd�}| |¡ | |¡}t  ||j¡}t	ƒ }t  ||j¡}| 
|¡}t||ƒ |  d¡}t  ||j¡}	| |¡}
t  |
|j¡}| |	¡}t||ƒ t  |¡|jd  }|||  ||  || |  }t||ƒ t  |	¡|jd  }|	||  |	|  || |  }t||ƒ d S )Nr   ©rZ   rY   Fr·   )rG   rY   )r=   r„   r…   Úrandom_sampler   rQ   ri   Údotrm  r   rÇ   r&   Ú	ones_liker>   r#   )rL   ZX_fitrV   ZX_fit_centeredZK_fitÚcentererZK_fit_centeredZK_fit_centered2ZX_predZK_predZX_pred_centeredZK_pred_centeredZK_pred_centered2Úones_MZK_fit_centered3Úones_prime_MZK_pred_centered3r;   r;   r<   Útest_center_kernelÔ  s.    









	 
ÿr¹  c                  C   s@  t j d¡} |  dd¡|  dd¡ }}dd„ }||ƒ}||ƒ}tdd�}| |¡}| |¡}||j }	||j }
||j }||j }tƒ }| 	|	¡ t
| |	¡|ƒ t
| |
¡|ƒ t  |	¡|	jd  }|	||	  |	|  ||	 |  }t
| |	¡|ƒ t  |
¡|	jd  }|
||	  |
|  ||	 |  }t
| |
¡|ƒ d	S )
z-Check kernel centering for non-linear kernel.r   r�   rÍ   r,  c                 S   s(   t  t j| ddd�t j| ddd� g¡S )zOur mapping function phi.r   N)Za_minZa_max)r=   r•  rõ   r4  r;   r;   r<   Úphi  s
    þÿz2test_kernelcenterer_non_linear_kernel.<locals>.phiFr·   N)r=   r„   r…   rM   r   rÇ   ri   rm  r   rQ   r#   rµ  r>   )rL   rT   rj   rº  Zphi_XZ
phi_X_testrV   Zphi_X_centerZphi_X_test_centerÚKZK_testZK_centerZK_test_centerÚkernel_centererr·  Z
K_centeredr¸  ZK_test_centeredr;   r;   r<   Ú%test_kernelcenterer_non_linear_kernel   s.    	







	 ÿr½  c                  C   s‚   t  g d¢g d¢g d¢g d¢g¡} t  d¡}|  | j¡}tƒ }td|fdtƒ fgƒ}| ¡ j	j
sdJ ‚t|||dd	�}t||ƒ d S )
N)rH   r   r   )r   rH   r   )r   r   rH   rk  )rY   r¼  ZsvrrG   )Zcv)r=   r`   rf   r´  rm  r   r	   r   Z__sklearn_tags__Z
input_tagsÚpairwiser   r&   )rT   Zy_truer»  ZkcentZpipelineZy_predr;   r;   r<   Útest_cv_pipeline_precomputed6  s    "
r¿  c                  C   sT   t j d¡} |  d¡}tƒ tƒ tƒ fD ](}| |¡ |¡}| 	|¡}t
||ƒ q&d S )Nr   r²  )r=   r„   r…   r³  r   r   r
   rQ   ri   rÇ   r'   )rL   rT   ÚobjÚX_transformedZX_transformed2r;   r;   r<   Útest_fit_transformJ  s    

rÂ  c                  C   s>   ddgddgddgg} t | ƒ} t| g d¢g d¢g d¢gƒ d S ©Nr3   r   )r3   r3   r   r^   )r   r'   r4  r;   r;   r<   Útest_add_dummy_featureS  s    rÄ  c                 C   sh   | ddgddgddggƒ}|j }t|ƒ}t |¡r<|j |ksDJ |ƒ‚t| ¡ g d¢g d¢g d¢gƒ d S rÃ  )rr  r   r   r$  r'   r7   )r‚   rT   Zdesired_formatr;   r;   r<   Útest_add_dummy_feature_sparseY  s
    rÅ  c                  C   sR   t j} | d d …d d…f }tddd�tƒ tƒ g}|D ]}| | ¡ | |¡ q4d S )NrG   Fr¯   )r  r  r   r   r   rÇ   )rT   rÐ   ZscalersrV   r;   r;   r<   Útest_fit_cold_startd  s    
ý
rÆ  Úmethodúbox-coxúyeo-johnsonc                 C   s€   t | d�}t t¡}t t¡� | |¡ W d   ƒ n1 s>0    Y  t t¡� | |¡ W d   ƒ n1 sr0    Y  d S )N©rÇ  )	r   r=   rG  rt   rN   rO   r   ri   r~   )rÇ  ÚptrT   r;   r;   r<   Ú test_power_transformer_notfittedv  s    

(rÌ  Ústandardizec                 C   s@   | dkrt  |¡n|}t| |d�}| |¡}t|| |¡ƒ d S )NrÈ  ©rÇ  rÍ  )r=   rG  r   rÇ   r%   r~   )rÇ  rÍ  rT   rË  r  r;   r;   r<   Útest_power_transformer_inverse€  s    
rÏ  c                  C   sÈ   t  t¡} dD ]´}td|d�}| | ¡}t| d|d�}t |  ¡ ¡\}}|rTt	|ƒ}t
| dd¡|ƒ t
| dd¡|ƒ t
| | |¡ƒ t
||jd ƒ t|jƒ| jd ks°J ‚t|jt jƒsJ ‚qd S )N©TFrÈ  rÎ  r2   r3   r   )r=   rG  rt   r   rÇ   r   r   ÚboxcoxÚflattenr   r%   rà   r~   Úlambdas_rb  r>   rv   r<  )rT   rÍ  rË  r  ÚX_trans_funcrf  Zlambda_expectedr;   r;   r<   Útest_power_transformer_1dŒ  s    

rÕ  c            
      C   sì   t  t¡} dD ]Ø}td|d�}| | ¡}t| d|d�}||fD ]|}t|jd ƒD ]T}t 	| d d …|f  
¡ ¡\}}|r~t|ƒ}t|d d …|f |ƒ t||j| ƒ qP| |¡}	t|	| ƒ q>t|jƒ| jd ksÔJ ‚t|jt jƒsJ ‚qd S )NrÐ  rÈ  rÎ  r3   )r=   rG  rÐ   r   rÇ   r   r£   r>   r   rÑ  rÒ  r   r%   rÓ  r~   r&   rb  rv   r<  )
rT   rÍ  rË  ZX_trans_classrÔ  r  Újrf  ÚlmbdaÚX_invr;   r;   r<   Útest_power_transformer_2d¤  s     


rÙ  c                  C   s˜  t dd�} |  t t¡¡ t}d}tjt|d�� |  |¡ W d   ƒ n1 sP0    Y  tjt|d�� |  |¡ W d   ƒ n1 sˆ0    Y  tjt|d�� t	|dd� W d   ƒ n1 sÂ0    Y  tjt|d��" |  t 
tj¡¡ W d   ƒ n1 �s0    Y  tjt|d��" |  t 
tj¡¡ W d   ƒ n1 �sF0    Y  tjt|d��$ t	t 
tj¡dd� W d   ƒ n1 �sŠ0    Y  d S )NrÈ  rÊ  zstrictly positiverµ   )r   rQ   r=   rG  rÐ   rN   rO   rP   ri   r   r™   r>   )rË  ZX_with_negativesZnot_positive_messager;   r;   r<   Ú9test_power_transformer_boxcox_strictly_positive_exception¿  s     
((*22rÚ  c                 C   s   t | dd� d S )NrÉ  rÊ  )r   r4  r;   r;   r<   Ú+test_power_transformer_yeojohnson_any_inputÛ  s    rÛ  c                 C   s¶   t | d�}t t¡}| |¡ d}tjt|d��* | |d d …dd…f ¡ W d   ƒ n1 s`0    Y  tjt|d��* | 	|d d …dd…f ¡ W d   ƒ n1 s¨0    Y  d S )NrÊ  zBX has \d+ features, but PowerTransformer is expecting \d+ featuresrµ   r   r3   )
r   r=   rG  rÐ   rQ   rN   rO   rP   ri   r~   )rÇ  rË  rT   Zwrong_shape_messager;   r;   r<   Ú&test_power_transformer_shape_exceptioná  s    


ÿ8rÜ  c                  C   sR   t ddd�} t t¡d d …dd…f }t dg¡| _|  |¡}t|  |¡|ƒ d S )NrÈ  FrÎ  r   r3   )	r   r=   rG  rÐ   r`   rÓ  ri   r&   r~   ©rË  rT   r  r;   r;   r<   Ú"test_power_transformer_lambda_zeroô  s
    
rÞ  c                  C   sL   t ddd�} t t¡d d …dd…f }t dg¡| _|  |¡}t||ƒ d S )NrÉ  FrÎ  r   r3   )r   r=   rG  rÐ   r`   rÓ  ri   r&   rÝ  r;   r;   r<   Ú!test_power_transformer_lambda_oneþ  s
    
rß  zmethod, lmbda))rÈ  rB  )rÈ  r  )rÉ  rB  )rÉ  r  )rÉ  r]   c                 C   s¼   t j d¡}d}|jdd|dfd�}| dkrBt  |d| d d ¡}t| dd	�}|g|_| |¡}t| dd	�}| |¡}t	dt j
 || ¡| d
d� t	d| ¡ dd� t	d| ¡ dd� d S )Nr   i N  r3   )Úlocr   r5   rÈ  r2   r³   FrÎ  rG   rÅ   )r=   r„   r…   rZ  rõ   r   rÓ  r~   rÇ   r%   Úlinalgrø   rz   r|   )rÇ  r×  rL   rR   rT   rË  rØ  ÚX_inv_transr;   r;   r<   Ú#test_optimization_power_transformer	  s    

rã  c                  C   s4   t ddd�} dg| _|  dgg¡}t |¡s0J ‚d S )NrÈ  FrÎ  r  gÍÌÌÌÌÌ À)r   rÓ  r~   r=   rÂ   )rË  rØ  r;   r;   r<   Útest_invserse_box_cox.	  s    rä  c                  C   sD   g d¢} t  | ¡ dd¡} tdd� | ¡j}t j|ddd�s@J ‚d S )	N)gffffff@gÍÌÌÌÌÌ Àr]   r\   gffffffæ?g333333@rd   gffffff@gÍÌÌÌÌÌü?gÍÌÌÌÌÌ@rª  r­   gš™™™™™"@g      @g      Àr2   r3   rÉ  rÊ  gáz®Gáô?r”  r’   )r=   r`   rà   r   rQ   rÓ  Zallclose)rT   r×  r;   r;   r<   Útest_yeo_johnson_darwin_example6	  s    rå  c                 C   s’   t  t¡}t| d�}| |¡ |jd }t  |t  |t j¡g¡}t	|dd�}| |¡ |jd }t
||dd� | |¡}tt  |¡t  |¡ƒ d S )NrÊ  r   )re  rZ   rÅ   )r=   rG  rt   r   rQ   rÓ  ZconcatenateZ	full_liker#  r   r%   ri   r'   rÂ   )rÇ  rT   rË  Zlmbda_no_nansZ
lmbda_nansr  r;   r;   r<   Útest_power_transformer_nans?	  s    






ræ  c                 C   sB   t }| dkrt |¡}t| |d�}t| |¡ |¡| |¡ƒ d S )NrÈ  )rÍ  )rt   r=   rG  r   r&   rQ   ri   rÇ   )rÇ  rÍ  rT   rË  r;   r;   r<   Ú$test_power_transformer_fit_transformV	  s
    
rç  c                 C   s¦   t }| dkrt |¡}| ¡ }||us*J ‚t||ƒ t| |dd�}| |¡ t||ƒ | |¡}||uslJ ‚| |¡}t||ƒ ||usŒJ ‚| 	|¡}||us¢J ‚d S )NrÈ  T©rÍ  rn   ©
rt   r=   rG  rn   r&   r   rQ   ri   rÇ   r~   ©rÇ  rÍ  rT   Z
X_originalrË  r  râ  r;   r;   r<   Ú test_power_transformer_copy_Trueb	  s     







rë  c                 C   s®   t }| dkrt |¡}| ¡ }||us*J ‚t||ƒ t| |dd�}| |¡ t||ƒ | |¡}||u slJ ‚| dkr~t |¡}| |¡}||u s”J ‚| 	|¡}||u sªJ ‚d S )NrÈ  Frè  ré  rê  r;   r;   r<   Ú!test_power_transformer_copy_False~	  s"    







rì  c                  C   sf   t  d¡} tj| dd…df< d}tdd�}tjt|d�� | | ¡ W d  ƒ n1 sX0    Y  dS )zqCheck that box-cox raises informative when a column contains all nans.

    Non-regression test for gh-26303
    r-  Nr   zColumn must not be all nan.rÈ  rÊ  rµ   )	rL   r³  r=   r#  r   rN   rO   rP   rÇ   )rT   r6  rË  r;   r;   r<   Ú1test_power_transformer_box_cox_raise_all_nans_colœ	  s    

rí  r„  çš™™™™™é?)r:  re  c                 C   s    g | ]}|t jd t jd�ƒ‘qS ))r6   r3   )r‘   )r=   r˜   r#  )rŸ   r>  r;   r;   r<   r    ®	  s   ÿr    c                 C   sB   t jdddd�}tdd�}| |¡ | ¡ t |jd ¡s>J ‚d S )NrZ   r3   rî  r9  Fra   r   )r   r„   r   rQ   rÑ   r=   rÈ   rh   )r„  rƒ  rV   r;   r;   r<   Ú7test_standard_scaler_sparse_partial_fit_finite_variance«	  s    
rï  r  )r   r3   )r€  r6   c                 C   s�   t j}t| dd� |¡}tj|dd�tj|dd� }}tj|d d… d |dd … d f g}| |¡}t	|| d | d | d | d ggƒ d S )NT)r  rõ   r   ro   rG   r6   r3   )
r  r  r   rQ   r=   r  rú   Zr_ri   r#   )r  rT   rV   ZX_minZX_maxrj   rÁ  r;   r;   r<   Útest_minmax_scaler_clip¼	  s    (
þrð  c                  C   sX   t ƒ  t¡} d}tjt|d��& |  tdd…df ¡ W d  ƒ n1 sJ0    Y  dS )z·Check that `inverse_transform` from `StandardScaler` raises an error
    with 1D array.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/19518
    z'Expected 2D array, got 1D array insteadrµ   Nr   )r   rQ   rÐ   rN   rO   rP   r~   )rV   r6  r;   r;   r<   Ú-test_standard_scaler_raise_error_for_1d_inputÊ	  s    rñ  c                  C   sÔ   dt jg d¢d g d¢ t jd� dd¡ } tƒ }t ¡ �& t dt¡ | 	| ¡}W d	  ƒ n1 sf0    Y  t  
t  |¡¡r„J ‚| ¡ t d
¡ksšJ ‚| ¡ t d¡ks°J ‚| ¡ dksÀJ ‚| ¡ dk sÐJ ‚d	S )a  Check that significantly non-Gaussian data before transforms correctly.

    For some explored lambdas, the transformed data may be constant and will
    be rejected. Non-regression test for
    https://github.com/scikit-learn/scikit-learn/issues/14959
    rß   )r  r\   r­   r|  rY   )rj  é   rò  é   é   r,  éU   rS  r¢   r2   r3   r´   Nrq   r]   r`  rG   )r=   r`   r†   rà   r   r¹   rº   r»   ÚRuntimeWarningrÇ   r§   rÂ   rz   rN   rî   r|   r  rú   )ZX_non_gaussianrË  r  r;   r;   r<   Ú1test_power_transformer_significantly_non_gaussianÖ	  s    ÿþ
(r÷  ÚTransformerc                 C   s*   | ƒ   tj¡}| tj¡}t|tjƒ dS )ú9Check one-to-one transformers give correct feature names.N)rQ   r  r  Úget_feature_names_outÚfeature_namesr'   )rø  ÚtrÚ	names_outr;   r;   r<   Útest_one_to_one_featuresî	  s    rþ  c                 C   s¢   t  d¡}|jtjtjd�}| ƒ  |¡}| ¡ }t|tjƒ | tj¡}t|tjƒ t	 
d¡}t jt|d��" tdƒ}| |¡ W d  ƒ n1 s”0    Y  dS )rù  Zpandas)Úcolumnsz0input_features is not equal to feature_names_in_rµ   ÚabcdN)rN   ZimportorskipZ	DataFramer  r  rû  rQ   rú  r'   ÚreÚescaperO   rP   rw   )rø  ÚpdÚdfrü  Znames_out_df_defaultZnames_out_df_valid_inÚmsgÚinvalid_namesr;   r;   r<   Útest_one_to_one_features_pandas 
  s    

r  c                  C   sX   t j d¡} |  d¡}t|ƒ}tƒ  |¡}| ¡ }|jd }t	|dd„ t
|ƒD ƒƒ dS )z.Test that kernel centerer `feature_names_out`.r   )r[   rY   r3   c                 S   s   g | ]}d |› �‘qS )Zkernelcentererr;   rž   r;   r;   r<   r    *
  r¡   z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>N)r=   r„   r…   r³  r   r   rQ   rú  r>   r'   r£   )rL   rT   Z
X_pairwiser¶  rý  Zsamples_out2r;   r;   r<   Ú&test_kernel_centerer_feature_names_out 
  s    

r  c                 C   s~   g d¢g d¢g d¢g}t d| d� |¡}t|jg d¢ƒ | |¡}| |¡}||fD ]$}| rnt|t |¡ƒ qTt||ƒ qTdS )z>Check that PowerTransfomer leaves constant features unchanged.)r`  r   rG   rÉ  rÎ  rk  N)r   rQ   r#   rÓ  rÇ   ri   r=   r{   )rÍ  rT   rË  ZXftZXtZXt_r;   r;   r<   Ú'test_power_transformer_constant_feature-
  s    

r	  )Êr  r¹   Únumpyr=   Znumpy.linalgrá  rž  rN   Zscipyr   r   Zsklearnr   Zsklearn.baser   Zsklearn.exceptionsr   Zsklearn.metrics.pairwiser   Zsklearn.model_selectionr   Zsklearn.pipeliner	   Zsklearn.preprocessingr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsklearn.preprocessing._datar   r   Zsklearn.svmr   Zsklearn.utilsr   r   Zsklearn.utils._array_apir    Z-sklearn.utils._test_common.instance_generatorr!   Zsklearn.utils._testingr"   r#   r$   r%   r&   r'   r(   r)   Zsklearn.utils.estimator_checksr*   Zsklearn.utils.fixesr+   r,   r-   r.   Zsklearn.utils.sparsefuncsr/   Z	load_irisr  r„   r…   rL   rS   rR   r—   rã   r«   rM   rÐ   rà   rs   rt   Útolistru   ZX_list_1colr7   r?   rF   rW   ÚmarkZparametrizer`   r#  rk   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/  r0  r1  r5  r7  rç   r=  r?  rA  rH  rI  rR  rV  r[  rc  rg  ro  rx  r{  r}  r~  r�  r…  r†  rˆ  rŠ  rŒ  r�  r�  r’  r–  r™  rš  r›  rœ  r�  r¡  r¥  r¦  r¨  r®  rw   r±  r¹  r½  r¿  rÂ  rÄ  rÅ  rÆ  rÌ  rÏ  rÕ  rÙ  rÚ  rG  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>   s4  L(
*ý
üøùþ%þþ"2
&403
.
)ÿýù	õ &;

8

	&



9
A /
&
%


$		
)
 
8 ÿ

-ÿ
6,6	ÿ

		*



þ
	

þÿþ	úþøþ