U
    _»{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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/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z< e =¡ Z>ej? @d ¡ZAdZBdZCeAjDddeBd�ZEeAjDddeBd�ZFeA GeCeB¡eF eE ZHeHd dd…f  IdeB¡ZJeHdd…d f  IeCd¡ZKeJ L¡ ZMeK L¡ ZNdd„ ZOdd„ ZPdd„ ZQdd„ ZRejS Tdddgdd d!gd"d#d$ggdd d!gdd d!gd"d#d$ggd%d&gfdd dgd d dggdd dgd d dgd d dgd d dgge Udd!g¡fdejVdgejVejVdggdejVdgejVejVdgejVejVdgejVejVdgge Udd!g¡fg¡ejS Td'd(d)d*g¡d+d,„ ƒƒZWd-d.„ ZXejS Td/de
jYe
jZg¡ejS Td0d1d2g¡d3d4„ ƒƒZ[ejS Td5e!d1d6�e d1d7�g¡ejS Td/ej\e
jYe
jZg¡ejS Td0d1d2g¡ejS Td8ej]ej^g¡ejS Td9d d&d:g¡d;d<„ ƒƒƒƒƒZ_ejS Td=dd>d?g¡ejS Td@dAddBg¡ejS Td8ej]ej^g¡ejS Td'ej\e
jYe
jZg¡dCdD„ ƒƒƒƒZ`dEdF„ Zae:dGdH„ ƒZbdIdJ„ ZcdKdL„ ZddMdN„ ZedOdP„ ZfdQdR„ ZgdSdT„ ZhejS Tdd2dg¡dUdV„ ƒZiejS Tdd2dg¡dWdX„ ƒZjdYdZ„ Zkd[d\„ Zld]d^„ Zmd_d`„ Zndadb„ ZoejS Tdd2dg¡dcdd„ ƒZpejS Tded2d1g¡ejS Tdfd2d1g¡ejS Td'ej\e
jYe
jZg¡dgdh„ ƒƒƒZqdidj„ Zrdkdl„ Zsdmdn„ Ztdodp„ Zudqdr„ Zvdsdt„ Zwdudv„ ZxejS Tdwd2d1g¡ejS Tdxd2d1g¡ejS Tdej? Gdd!¡e
jydd!dydz�g¡d{d|„ ƒƒƒZzd}d~„ Z{dd€„ Z|ejS Td�d d‚dƒdydg¡ejS Td„d…d†d‡dg¡dˆd‰„ ƒƒZ}dŠd‹„ Z~dŒd�„ ZdŽd�„ Z€d�d‘„ Z�d’d“„ Z‚d”d•„ Zƒd–d—„ Z„d˜d™„ Z…dšd›„ Z†dœd�„ Z‡dždŸ„ Zˆd d¡„ Z‰d¢d£„ ZŠejS Td¤d(d¥g¡d¦d§„ ƒZ‹d¨d©„ ZŒdªd«„ Z�d¬d­„ ZŽd®d¯„ Z�d°d±„ Z�d²d³„ Z‘d´dµ„ Z’d¶d·„ Z“d¸d¹„ Z”dºd»„ Z•d¼d½„ Z–d¾d¿„ Z—dÀdÁ„ Z˜dÂdÃ„ Z™dÄdÅ„ ZšdÆdÇ„ Z›dÈdÉ„ ZœdÊdË„ Z�dÌdÍ„ ZždÎdÏ„ ZŸdÐdÑ„ Z dÒdÓ„ Z¡dÔdÕ„ Z¢dÖd×„ Z£dØdÙ„ Z¤dÚdÛ„ Z¥ejS TdÜdÝdÞg¡dßdà„ ƒZ¦ejS TdÜdÝdÞg¡ejS Tdád2d1g¡ejS TdeKeHg¡dâdã„ ƒƒƒZ§dädå„ Z¨dædç„ Z©dèdé„ ZªejS TdeHe «eH¡e «eH¡ e ¬eHj­¡g¡dêdë„ ƒZ®ejS TdÜdÝdÞg¡dìdí„ ƒZ¯dîdï„ Z°dðdñ„ Z±ejS Tdòdódôdõdöd÷g¡dødù„ ƒZ²dúdû„ Z³ejS TdÜdÝdÞg¡düdý„ ƒZ´ejS TdÜdÝdÞg¡ejS Tdád2d1g¡dþdÿ„ ƒƒZµejS TdÜdÝdÞg¡ejS Tdád2d1g¡�d �d„ ƒƒZ¶ejS TdÜdÝdÞg¡ejS Tdád2d1g¡�d�d„ ƒƒZ·�d�d„ Z¸ejS T�de
j?dd�dd �d�e
 Zej¹�d	ejV�d
�¡g¡�d�d„ ƒZºejS T�d�d�dg¡�d�d„ ƒZ»�d�d„ Z¼�d�d„ Z½ejS T�deee e!eeg¡�d�d„ ƒZ¾ejS T�deee e!eeeeg¡�d�d„ ƒZ¿�d�d„ ZÀejS Tdá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)Ú_convert_containerÚassert_allcloseÚassert_allclose_dense_sparseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚassert_array_lessÚskip_if_32bit)Úmean_variance_axisé   éè  éÿÿÿÿé   ©Úsizeé
   c                 C   s   t | dƒr|  ¡ } | S )NÚtoarray)Úhasattrr0   ©Úa© r4   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/preprocessing/tests/test_data.pyr0   G   s    
r0   c                 C   s   t  | ¡jd S )Nr   )ÚnpÚasarrayÚshaper2   r4   r4   r5   Ú_check_dim_1axisM   s    r9   c                 C   s:   ||kr| d | |ks6t ‚n| | ||  |ks6t ‚d S )Nr,   )ÚAssertionError)ÚiÚbatch_startÚ
batch_stopÚnÚ
chunk_sizeÚn_samples_seenr4   r4   r5   Úassert_correct_incrQ   s    rA   c               
   C   sz   ddg} ddg}t | |ƒD ]Z\}}t ||¡}t |¡}tƒ }t |d¡d }t t¡� |j|||d� W 5 Q R X qd S )Né   é   r,   ©Úsample_weight)ÚzipÚrngÚrandnr   ÚpytestÚraisesÚ
ValueErrorÚfit)Z
n_samplessZn_featuressÚ	n_samplesÚ
n_featuresÚXÚyÚscalerZsample_weight_notOKr4   r4   r5   Ú9test_raises_value_error_if_sample_weights_greater_than_1dX   s    
rR   ÚXwrO   rE   rB   rC   é   é   é   ç       @ç      ð?Úarray_constructorÚarrayZ
sparse_csrZ
sparse_cscc           
      C   sº   |  d¡ }t||ƒ}t| |ƒ} t | jd ¡}t|d�}|j| ||d� t |jd ¡}t|d�}| ||¡ dddgddd	gg}	t|j|jƒ t|j	|j	ƒ t| 
|	¡| 
|	¡ƒ d S )
Nr   r   ©Ú	with_meanrD   ç      ø?g      @ç      @g      @g      @)Ú
startswithr    r6   Úonesr8   r   rL   r#   Úmean_Úvar_Ú	transform)
rS   rO   rE   rY   r\   ZywZscaler_wrP   rQ   ÚX_testr4   r4   r5   Ú"test_standard_scaler_sample_weightj   s    



re   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t‚| |¡}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žt‚d S ©	NT©Úcopyr,   r   ©Úaxisç        rX   ©rU   r,   )ÚX_1rowÚX_1colÚX_list_1rowr   rL   rc   Ú
isinstanceÚlistr6   rZ   r9   r#   ra   ÚravelÚscale_r`   rN   r$   ÚmeanÚ
zeros_likeÚstdÚn_samples_seen_r8   r:   Úinverse_transform)rO   rQ   ÚX_scaledÚX_scaled_backr4   r4   r5   Útest_standard_scaler_1d–   s4    



r{   Úsparse_constructorÚadd_sample_weightFTc                 C   s¾   t j d¡}d}d}| r$t  |¡}nd }d}t jt jt jfD ]|}| ||¡ |¡}|d k	rf||ƒ}d}t	|d�}	|	j
||d� |¡}
|j|
jks”t‚|	jjt jks¦t‚|	jjt jks<t‚q<d S )Nr   r/   rC   TFr[   rD   )r6   ÚrandomÚRandomStater`   Úfloat16Úfloat32Úfloat64rH   Úastyper   rL   rc   Údtyper:   ra   rs   )r}   r|   rG   rM   rN   rE   r\   r„   rO   rQ   ry   r4   r4   r5   Útest_standard_scaler_dtype»   s"    
r…   rQ   r[   ©Úwith_centeringr„   Úconstantç      Y@c                 C   s6  t | tƒr"|r"t | jj› d�¡ tj d¡}d}d}|rRt	|j
|d�d d�}ni }tj||f||d�}	||	ƒ}
| j|
f|Ž |
¡}t | tƒr¬t| jt |
jd ¡d	d
� t| jt |
jd ¡ƒ t|dƒrÞt| ¡ |	ƒ n
t||
ƒ t | tƒ�r2|�s2t|
| jd�}t|dƒ�r(t| ¡ | ¡ ƒ n
t||ƒ d S )Nz# does not yet support sample_weightr   éd   r,   r-   rB   rD   )r8   Ú
fill_valuer„   gH¯¼šò×z>©Zatolr0   r[   )rp   r   rI   ÚskipÚ	__class__Ú__name__r6   r~   r   ÚdictÚuniformÚfullrL   rc   r   r!   rb   Úzerosr8   rs   r`   r1   r0   r   r\   )rQ   r}   r|   r„   rˆ   rG   rM   rN   Z
fit_paramsÚX_arrayrO   ry   Z
X_scaled_2r4   r4   r5   Ú&test_standard_scaler_constant_featuresÖ   s,    


r•   rM   rŠ   i'  Úaverageg»½×Ùß|Û=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< ||ƒ}	tdd	� |	¡}
t  t j¡j	}| | |d  | d |d  |d   }|d |k}t  
|¡sæt‚t|
j| || kƒ�st‚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 )r/   r4   ©Ú.0r;   r4   r4   r5   Ú
<listcomp>  s     z?test_standard_scaler_near_constant_features.<locals>.<listcomp>r,   ©r„   r   rB   Fr[   rX   r+   )r6   rZ   Úranger8   Úemptyr   rL   Úfinfor‚   ÚepsÚanyr:   Úallrb   r!   rs   Zlogical_notÚlogical_andÚsqrt)rM   rY   r–   r„   Z	scale_minZ	scale_maxÚscalesrN   rO   r”   rQ   rŸ   ZboundsZwithin_boundsZrepresentable_diffZcommon_maskr4   r4   r5   Ú+test_standard_scaler_near_constant_features	  s&    "
($r¥   c                  C   s`   ddddg} t  | ¡}| |fD ]<}t|ƒ}t| ¡ dƒ t| ¡ dƒ tt|ddd�|ƒ qd S )NrX   ç      @ç      @rk   F©r\   Úwith_std)r6   rZ   r   r$   rt   rv   r%   )ZX_listZX_arrrO   ry   r4   r4   r5   Útest_scale_1dA  s    
rª   c               	   C   s‚  t jdt  d¡t jd�} t ¡ � t dt¡ t| ƒ W 5 Q R X t	t| ƒt  
d¡ƒ t jdt  d¡t jd�} d}tjt|d�� t| ƒ}W 5 Q R X t	|t  
d¡ƒ t jddt jd�} t ¡ � t dt¡ t| ƒ}W 5 Q R X t	|t  
d¡ƒ t jdd	t jd�}d
}tjt|d�� t|ƒ}W 5 Q R X t	|t  
d¡ƒ t	||ƒ tjt|d�� t|dd�}W 5 Q R X t	|t  
d¡ƒ t	||ƒ d S )Né   gñhãˆµøä>r›   Úerrorr/   z:standard deviation of the data is probably very close to 0©Úmatchg0Žä.ÿ++g}Ã”%­I²Tz$Dataset may contain too large valuesF©r©   )r6   r’   Úlogr‚   ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   r$   r“   rI   Úwarns)ÚxÚwarning_messageZx_scaledZx_small_scaledZx_bigZx_big_scaledZx_big_centeredr4   r4   r5   Ú(test_standard_scaler_numerical_stabilityM  s2    


r¸   c                  C   sr  t j d¡} d}d}|  ||¡}d|d d …df< tƒ }| |¡j|dd�}t  t  |¡¡r^t	‚|j
|kslt	‚t|jdd�|dg ƒ t|jdd�dddddgƒ ||k	s¬t	‚| |¡}||k	sÂt	‚||k	sÎt	‚t||ƒ t|d	d
d�}t  t  |¡¡rút	‚t|jd	d�|dg ƒ t|d	dd�}t  t  |¡¡�r6t	‚t|jd	d�|dg ƒ t|jd	d�|dg ƒ ||k	�stt	‚| |¡j|d
d�}t  t  |¡¡�ržt	‚t|jdd�|dg ƒ t|jdd�dddddgƒ ||k�sàt	‚|  dd¡}d|d d …df< tƒ }| |¡j|dd�}t  t  |¡¡�r,t	‚t|jdd�|dg ƒ t|jdd�dddddgƒ ||k	�snt	‚d S )Nr   rU   rT   rk   Trg   ri   rX   r,   F)rj   r©   )r6   r~   r   rH   r   rL   rc   r    Úisnanr:   rw   r$   rt   rv   rx   r   )rG   rN   rM   rO   rQ   ry   rz   r4   r4   r5   Útest_scaler_2d_arrayst  sJ    

rº   c               	   C   sŽ   t j d¡} |  ddddg¡ t j¡}t jdd�� tƒ  |¡}| 	|¡}W 5 Q R X tƒ  
| t j¡¡}t  t  |¡¡s|t‚t||dd	� d S )
Nr   rU   r/   i@ r,   Úraise)ZoverrB   ©Údecimal)r6   r~   r   r‘   rƒ   r€   Zerrstater   rL   rc   Úfit_transformr‚   r¡   Úisfiniter:   r$   )rG   rO   rQ   ry   ZX_scaled_f64r4   r4   r5   Útest_scaler_float16_overflow¨  s    rÀ   c               	   C   sX   t  dddddg¡} t| dd�}t| t  dddddg¡ƒ t|t  dddddg¡ƒ d S )Nr   g¼‰Ø—²Òœ<r,   rB   rC   Trg   )r6   rZ   r   r!   )Ús1Ús2r4   r4   r5   Ú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‚t‚t|j|jƒ t|j|jƒ t|j|jƒ td|ƒ}tƒ  | | ¡}tƒ  | | ¡}t|j|jƒ t|j	|j	ƒ |j
|j
k�st‚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   r,   rB   é2   é*   ©r<   r=   r>   r?   r@   )ÚX_2dr8   r   rL   r   rM   Úpartial_fitr$   Z	data_min_Z	data_max_rw   r:   Zdata_range_rs   Úmin_ÚsliceÚ	enumeraterA   ÚstartÚstop©rO   r>   r?   Úscaler_batchÚscaler_incrÚbatchÚbatch0r;   r4   r4   r5   Ú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|t
‚|j|jksŒt
‚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 t
‚q d S )Nr   r,   rB   rÄ   rÅ   Fr¯   r›   ri   rÆ   )rÇ   r8   r   rL   r   rM   rÈ   r$   ra   rb   r:   rw   rÊ   r6   r“   rN   r‚   r`   rs   Úvarrv   rË   rA   rÌ   rÍ   rÎ   r4   r4   r5   Ú test_standard_scaler_partial_fitù  sP    


 ÿ ÿ ÿú
	rÕ   c                  C   s`  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 |¡}t |¡}||fD ]l}tdd� |¡}tdd�}|D ]}| |¡}�qd
}	|j
d k	�s6t‚t	|j|j|	d� t	|j|j|	d� qîd S )Nr   rB   rŠ   g  4&õkÃg  4&õkCr-   g     @�@ç    €„.Ar,   g�íµ ÷Æ°>)Zrtol)rŠ   rC   g@Œµx¯DFr[   )r6   r~   r   r‘   rH   r   rL   rÈ   Úreshaper!   ra   rb   rs   Úrandintrƒ   r‚   r   Ú
csr_matrixÚ
csc_matrixr:   )rG   rN   rM   Úoffsetsr¤   rO   rÏ   rÐ   ÚchunkZtolr.   r   ÚX_csrÚX_cscrQ   r4   r4   r5   Ú4test_standard_scaler_partial_fit_numerical_stability,  s8    


rß   c                 C   s¶   t  dgdgdgdgg¡}t |¡}t |¡}| rBt |jd ¡} tdddd�}||fD ]X}|j	|| d� 
|¡}t| ¡ | ¡ ƒ | |¡}t| ¡ | ¡ ƒ t| ¡ | ¡ ƒ qXd S )	NrX   rk   r§   r   FT©r\   r©   rh   rD   )r6   rZ   r   rÙ   rÚ   rG   Úrandr8   r   rÈ   rc   r%   r0   rx   )rE   rO   rÝ   rÞ   Únull_transformÚX_nullÚX_origr4   r4   r5   Útest_partial_fit_sparse_inputZ  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 kr�tƒ  |¡}| 	|| ¡}n2tƒ j|| d |d … d�}|j	|| | | d�}| 
|¡}t||ƒ t||ƒ | |¡}	t||	ƒ t |jd ¡}
t t¡j}t|
|j| ƒ t|
|j| ƒ | d k�rP|d |jk�svt‚qBt | d |d … ¡t |j¡ksBt‚qBd S )NrŠ   r   r,   rD   )rÇ   rG   rá   r8   r   rË   r   rh   r¾   rÈ   rc   r$   rx   r6   r“   rž   ÚfloatrŸ   r&   rb   rs   rw   r:   ÚsumrI   Úapprox)rE   rO   rÐ   r;   rÑ   ZX_sofarZchunks_copyZscaled_batchZscaled_incrZright_inputÚzeroÚepsilonr4   r4   r5   Ú.test_standard_scaler_trasform_with_partial_fitm  s@     ÿ ÿ





ÿrë   c                  C   s‚   t jddddddgddddddgddddddgddddddgddddddgddddddggt jd�} tƒ }| | ¡ | | ¡ d S )Nr,   r   r«   rT   r›   )r6   rZ   Zint32r   rL   rx   )r¶   rQ   r4   r4   r5   Ú.test_standard_check_array_of_inverse_transform—  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 5 Q R X d S )Nr   ri   r,   ©r,   rB   ©Úfeature_rangerB   )ç      à¿ç333333ã?rð   rñ   )rB   r,   )ÚirisÚdatar   r¾   r$   ÚminÚmaxrx   rI   rJ   rK   rL   )rO   rQ   ÚX_transÚX_trans_invr4   r4   r5   Útest_min_max_scaler_iris¯  s,    











rø   c            	      C   s  dddgdddgdddgg} dddgdddgdddgg}t ƒ }| | ¡}dddgdddgdddgg}t||ƒ | |¡}t| |ƒ | |¡}dddgddd	gddd
gg}t||dd� t dd�}| | ¡}dddgdddgdddgg}t||ƒ t| ƒ}t||ƒ t| dd�}t||ƒ d S )Nrk   rX   ç      à?çš™™™™™¹¿çš™™™™™ñ?rW   ç      ð¿r]   gsh‘í|?µ?g‡ÙÎ÷Sõ?rB   r¼   rí   rî   )r   r¾   r$   rx   rc   r   )	rO   ÚX_newrQ   rö   ZX_expected_0_1r÷   ÚX_trans_newZX_expected_0_1_newZX_expected_1_2r4   r4   r5   Ú*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 )Nr,   ri   r   )rò   ró   r   r$   r6   rô   rõ   )rO   rö   r4   r4   r5   Ú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´t‚| |¡}t|| ƒ qt d¡} tƒ }| | ¡ | ¡}| ¡ dksút‚| ¡ dk�st‚|j| jd k�s"t‚t  ¡ }| ¡ }| ¡ }t|| ||  t|dd�ƒ d S rf   )rm   rn   ro   r   rL   rc   rp   rq   r6   rZ   r9   r$   rô   r“   rN   rõ   rw   r8   r:   rx   r`   rr   r   )rO   rQ   ry   rz   ÚX_1drÉ   Zmax_r4   r4   r5   Útest_min_max_scaler_1dõ  s4    




 
ÿr  c              	   C   s   t j d¡}| dd¡}d|d d …df< t |¡}t |¡}| rP| |jd ¡} t	 
t¡� tƒ  |¡ W 5 Q R X t	 
t¡� tƒ  |¡ W 5 Q R X tdddd�}| |¡}t|j|jƒ | |¡}t|j|jƒ tdd	�j|| d
�}|j|dd�}	t  t  |	¡¡�r
t‚tdd	�j|| d
�}
|
j|dd�}t  t  |j¡¡�rDt‚tdd	�j|| d
�}|j|dd�}t  t  |j¡¡�r~t‚t|j|
jƒ t|j|
jƒ t|j|
jƒ t|j|
jƒ t|j|jƒ t|j|jƒ t|j|jƒ t|j|jƒ | d k�r2t|	jdd�dddddgdƒ t|	jdd�dddddgƒ t|dƒ\}}t||	jdd�ƒ t||	jdd�ƒ |	|k	�srt‚||k	�s€t‚| |	¡}||k	�s˜t‚||	k	�s¦t‚t||ƒ |
 |¡}||k	�sÈt‚||k	�sÖt‚t| ¡ |ƒ |
 |  ¡ ¡}||k	�s t‚||k	�st‚t| ¡ |ƒ d S )NrÅ   rT   rU   rk   r   FTrà   r[   rD   rg   ri   ç{®Gáz„¿çìQ¸…ë@çffffffÖ¿çö(\�Âõè¿rB   rX   )!r6   r~   r   rH   r   rÙ   rÚ   rá   r8   rI   rJ   rK   r   rL   r¾   r%   ró   rx   rc   r    r¹   r:   r$   ra   rb   rs   rw   rt   rv   r(   rÔ   r0   Útocsc)rE   rG   rO   rÝ   rÞ   râ   rã   rä   rQ   ry   Ú
scaler_csrÚX_csr_scaledÚ
scaler_cscÚX_csc_scaledÚX_csr_scaled_meanZX_csr_scaled_varrz   ÚX_csr_scaled_backÚX_csc_scaled_backr4   r4   r5   Útest_scaler_without_centering  sr    





  ÿ


r  r\   r©   c                 C   sˆ   t jdddgt jddgddt jgddt jggt jd	�}||ƒ}t |¡rV| rVt d
¡ t| |d�}| 	|¡ t
|jt  dddg¡ƒ d S )Nr   r,   rC   rV   r/   rU   rT   r«   r›   z3'with_mean=True' cannot be used with sparse matrix.r¨   rB   )r6   rZ   Únanr‚   r   ÚissparserI   r�   r   rL   r%   rw   )r\   r©   rY   rO   Útransformerr4   r4   r5   Ú#test_scaler_n_samples_seen_with_nane  s    ( ÿ

r  c                 C   sn   | j |j   krd ksn t‚| j|j  kr6d ks<n t‚| j|j  krTd ksZn t‚| j|jksjt‚d S )N)ra   r:   rb   rs   rw   )Zscaler_1Zscaler_2r4   r4   r5   Ú"_check_identity_scalers_attributesy  s    r  c                  C   sF  t jdddgdddgdddggt jd�} t | ¡}| ¡ }td	d	d
�}| | ¡}t|ƒ}| |¡}t|ƒ}| |¡}t	||ƒ t	||ƒ t
|| ƒ t |||gd¡D ]\}	}
t|	|
ƒ q¤| | ¡ | |¡ | |¡ t |||gd¡D ]\}	}
t|	|
ƒ qè| | ¡ | |¡ | |¡ t |||gd¡D ]\}	}
t|	|
ƒ �q,d S )Nr   r,   rC   rU   rV   r«   r/   r›   Fr¨   rB   )r6   rZ   r‚   r   rÙ   r  r   r¾   r   r"   r!   Ú	itertoolsÚcombinationsr  rÈ   rL   )ÚX_denserÝ   rÞ   Útransformer_denseZX_trans_denseZtransformer_csrÚX_trans_csrZtransformer_cscÚX_trans_cscZtrans_1Ztrans_2r4   r4   r5   Útest_scaler_return_identity€  sB    (






 ÿ


 ÿ


 ÿr  c               	   C   sü  t j d¡} | jddd�}d|d d …df< t |¡}t |¡}tdddd�}tj	dd	�� | 
|¡}W 5 Q R X t|j|jƒ | |¡}t|j|jƒ tj	dd	��$ tdd
� |¡}|j|dd�}W 5 Q R X t  t  |¡¡rÞt‚tj	dd	��$ tdd
� |¡}	|	j|dd�}
W 5 Q R X t  t  |
j¡¡�r,t‚tj	dd	��$ tdd
� |¡}|j|dd�}W 5 Q R X t  t  |j¡¡�rzt‚t|j|	jƒ t|j|	jƒ t|j|	jƒ t|j|jƒ t|j|jƒ t|j|jƒ t|jdd�dddddgdƒ t|jdd�dddddgƒ t|
 t¡dƒ\}}t||jdd�ƒ t||jdd�ƒ ||k	�sNt‚|
|k	�s\t‚| |¡}||k	�stt‚||k	�s‚t‚t||ƒ |	 |
¡}||k	�s¤t‚||
k	�s²t‚t| ¡ |ƒ |	 | ¡ ¡}||k	�sÜt‚||k	�sêt‚t| ¡ |ƒ d S )NrÅ   é   ©rT   rU   r-   r   FTrà   )Úrecordr[   rg   ri   rk   gX9´Èv¾ñ?gV-²ý?g      5@g‹lçû©ñø?rB   rX   )r6   r~   r   rØ   r   rÙ   rÚ   r   r±   r²   r¾   r%   ró   rx   rL   rc   r    r¹   r:   r$   ra   rb   rs   rt   rv   r(   rƒ   ræ   r0   r  )rG   rO   rÝ   rÞ   râ   rã   rä   rQ   ry   r  r	  r
  r  r  ÚX_csr_scaled_stdrz   r  r  r4   r4   r5   Útest_scaler_int¬  sn    



  ÿ ÿ


r   c                  C   sº   t j d¡} |  dd¡}d|d d …df< t |¡}t |¡}| ¡ }tdd� 	|¡ t
||ƒ | ¡ }tddd� 	|¡ t
| ¡ | ¡ ƒ | ¡ }tddd� 	|¡ t
| ¡ | ¡ ƒ d S )	NrÅ   rT   rU   rk   r   Frg   )r\   rh   )r6   r~   r   rH   r   rÙ   rÚ   rh   r   rL   r%   r0   )rG   rO   rÝ   rÞ   ZX_copyZ
X_csr_copyZ
X_csc_copyr4   r4   r5   Útest_scaler_without_copyò  s    


r!  c               	   C   sp  t j d¡} |  dd¡}t |¡}t |¡}t t	¡� t
|dd� W 5 Q R X t t	¡� tdd� |¡ W 5 Q R X t t	¡� t
|dd� W 5 Q R X t t	¡� tdd� |¡ W 5 Q R X tdd� |¡}t t	¡� | |¡ W 5 Q R X t t	¡� | |¡ W 5 Q R X t | |¡¡}t t	¡� | |¡ W 5 Q R X t | |¡¡}t t	¡� | |¡ W 5 Q R X d S )NrÅ   rT   rU   Tr[   )r6   r~   r   rH   r   rÙ   rÚ   rI   rJ   rK   r   r   rL   rc   rx   )rG   rO   rÝ   rÞ   rQ   ZX_transformed_csrZX_transformed_cscr4   r4   r5   Ú+test_scale_sparse_with_mean_raise_exception  s.    

r"  c               	   C   s8   t jddddgg} tjtdd�� t| ƒ W 5 Q R X d S )NrU   rV   é   r«   z,Input contains infinity or a value too larger­   )r6   ÚinfrI   rJ   rK   r   ©rO   r4   r4   r5   Ú&test_scale_input_finiteness_validation(  s     ÿr&  c               	   C   sB   t  dd¡} tdd�}d}tjt|d�� | | ¡ W 5 Q R X d S )Nr*   r/   Tr†   zCannot center sparse matricesr­   )r   rá   r   rI   rJ   rK   rL   )ÚX_sparserQ   Úerr_msgr4   r4   r5   Útest_robust_scaler_error_sparse1  s
    
r)  r‡   Úwith_scalingrù   ©Údensityc                 C   s~   |rt  | ¡rt d¡ t||d�}| | ¡ |rFt|jtj	ƒsTt
‚n|jd ksTt
‚|rlt|jtj	ƒszt
‚n|jd kszt
‚d S )Nz(RobustScaler cannot center sparse matrix)r‡   r*  )r   r  rI   r�   r   rL   rp   Úcenter_r6   Úndarrayr:   rs   )rO   r‡   r*  rQ   r4   r4   r5   Útest_robust_scaler_attributes9  s    

r/  c                  C   sŒ   t j dd¡} d| d d …df< t | ¡} tdd�}| | ¡ |jd t 	d¡ksTt
‚| | ¡}t| d d …df  ¡ |d d …df  ¡ ƒ d S )Nr/   rU   r   Fr†   r,   )r6   r~   rH   r   rÙ   r   rL   rs   rI   rè   r:   rc   r!   r0   )rO   rQ   rö   r4   r4   r5   Ú"test_robust_scaler_col_zero_sparseN  s    



r0  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   rT   rU   rk   ri   )
r6   r~   r   rH   r   rL   rc   r$   Úmedianrv   )rG   rO   rQ   ry   r4   r4   r5   Útest_robust_scaler_2d_arrays]  s    r2  r,  gš™™™™™©?çš™™™™™¹?Ústrictly_signedÚpositiveÚnegativer“   c                 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 )
Nr*   rU   r+  r5  r6  r“   r›   Fr†   )r   rá   r  r6   Úabsró   r“   r8   r‚   r0   r   rL   r!   rs   )r,  r4  r'  r  Zscaler_sparseZscaler_denser4   r4   r5   Ú+test_robust_scaler_equivalence_dense_sparsej  s    



r8  c                  C   s†   t j d¡} |  dd¡}t  dddddgg¡}td	d
�}| |¡}| t 	|¡¡}||j
 }t| ¡ |ƒ | |¡}t|| ¡ ƒ d S )Nr   rT   rU   r3  rX   rW   rk   rü   Fr†   )r6   r~   r   rH   rZ   r   rL   rc   r   rÙ   rs   r$   r0   rx   )rG   rO   Z
single_rowrQ   Z	row_transZrow_expectedZrow_scaled_backr4   r4   r5   Ú(test_robust_scaler_transform_one_row_csr€  s    



r9  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   ri   ©é   éK   ©Úqrj   r,   ©	rò   ró   r   r¾   r$   r6   r1  rx   Ú
percentile)rO   rQ   rö   r÷   r>  Úiqrr4   r4   r5   Útest_robust_scaler_irisŽ  s    


rB  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)r/   éZ   ©Úquantile_ranger   ri   r=  r,   r?  )rO   rQ   rö   r÷   r>  Zq_ranger4   r4   r5   Ú!test_robust_scaler_iris_quantilesš  s    



rF  c                  C   sˆ   t j} tdd�}| | ¡}| |¡}t| |ƒ tddd�}| | ¡}| |¡}t| |ƒ t | ¡}| |¡}| |¡}t|j|jƒ d S )Nr)   ©Ún_quantilesÚnormal)rH  Zoutput_distribution)	rò   ró   r   r¾   rx   r$   r   rÚ   ÚA)rO   r  rö   r÷   r'  ZX_sparse_tranZX_sparse_tran_invr4   r4   r5   Útest_quantile_transform_iris¦  s    









rK  c                  C   s.  t  ddddddddddg
dddddd	dd
ddg
ddddddddddg
g¡} t | ¡} t  ddddddddddg
dddddd	dd
ddg
ddddddddddg
g¡}t |¡}d}tjt|d�� td
d� | ¡ W 5 Q R X td
d�}d}tjt|d�� | |¡ W 5 Q R X | | ¡ d}tjt|d�� | 	|¡ W 5 Q R X t  ddddddddddg
ddddddddddg
g¡}d}tjt|d�� | 
|¡ W 5 Q R X td
d� | ¡}tjtdd�� | 	d
¡ W 5 Q R X tdd�}d}tjt|d��}| | ¡ W 5 Q R X t|ƒdk�st‚|j| jd k�s*t‚d S )Nr   r;  rÄ   r<  rŠ   rB   rT   rV   r«   r/   çÍÌÌÌÌÌ@çffffff@çffffff@ç      #@r3  éþÿÿÿzmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.r­   )Ú	subsamplerG  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 insteadzn_quantiles is set to n_samplesr,   )r6   Z	transposer   rÚ   rI   rJ   rK   r   rL   rc   rx   rµ   r´   Úlenr:   Zn_quantiles_r8   )rO   ZX_negr(  r  Z
X_bad_featZwarn_msgr  r4   r4   r5   Ú#test_quantile_transform_check_errorº  sT    ýÿ
ýÿ
ÿ

.ÿÿ
rS  c            	      C   sz  t  ddgddgddgddgddgg¡} t | ¡}tddd�}d}tjt|d�� | | ¡ W 5 Q R X t  ddgddgddgddgddgg¡}| 	|¡}t
||jƒ t  dddddddddddg¡}t  dddddddddddg¡}t  dd	dddd
d	ddddg¡}t |||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
||jƒ tddd�}t  dddddddddg	¡}t  dddddddddg	¡}t  dd	dddd
d	ddg	¡}t |||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
||jƒ t
|j| |¡jƒ tddddd�}| 	|¡}t
||jƒ t
|j| |¡jƒ d S )Nr   r,   rB   TrU   )Úignore_implicit_zerosrH  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r­   rT   rC   rV   r#  r«   rk   rù   rX   r+   g      Ø?)rT  rH  rQ  Úrandom_state)r6   rZ   r   rÚ   r   rI   rµ   r´   rL   r¾   r#   rJ  rx   )	rO   r'  r  r·   Ú
X_expectedrö   ZX_dataZX_colZX_rowr4   r4   r5   Ú+test_quantile_transform_sparse_ignore_zerosó  s`    (
ÿ(
   
÷ÿ
,ÿ   ÿ
rW  c               	   C   sÚ   t  dddgdddgddd	gd
ddgdddgg¡} tdd�}| | ¡ | | ¡}t  t jdddd�d¡j}tt j	|dd�|ƒ t  dddgdddgg¡}t  dddgdddgg¡}t
| |¡|ƒ | |¡}t
| |ƒ d S )Nr   rB   rL  r;  rT   rM  rÄ   rV   rN  r<  r«   rO  rŠ   r/   r3  rU   rG  r,   )Únum)rC   r,   ri   r+   ée   é   )r6   rZ   r   rL   r¾   ZtileÚlinspaceÚTr#   Úsortr$   rc   rx   )rO   r  rö   rV  rd   r÷   r4   r4   r5   Ú!test_quantile_transform_dense_toy0  s*    *ÿ


þÿþÿ
r^  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ˆt‚| |¡ q2tt  |¡ƒt|ƒks®t‚tj| dd
ddd�}g }t|ƒD ]b}t||| d d�}| |¡ t  dd|¡t  |j	¡ }t  
t  |¡¡}|dk �s&t‚| |¡ qÎtt  |¡ƒt|ƒk�sNt‚d S )Né@B r*   r,   r   ri   rU   r/   )rU  rH  rQ  ç{®Gáz„?g®Gáz®ï?Úcsc)r,  ÚformatrU  r3  )r6   r]  r~   Úsamplerœ   r   rL   r[  rr   Ú
quantiles_rõ   r7  r:   ÚappendrR  Úuniquer   rá   )	rM   rH  rO   ZROUNDZinf_norm_arrrU  r  ÚdiffZinf_normr4   r4   r5   Ú#test_quantile_transform_subsamplingP  s>    ý
ý
rh  c                  C   s<  t  dddgdddgdddgdddgdddgdd	dgd
ddgdddgdddgdddgg
¡} t | ¡} 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 )Nrk   rW   g      9@ç      @g      I@rL  rM  g      @g       @g     ÀR@rN  g      $@rO  r‰   r3  r/   rG  r   ri   rX   )r6   rZ   r   rÚ   r   rL   r¾   r$   rô   r0   rõ   rx   rc   )rO   r  rö   r÷   r  r4   r4   r5   Ú"test_quantile_transform_sparse_toy  s6    öÿ






rj  c               	   C   s\   t  dddddgdddd	d
gdddddgg¡} t| jddd�}t| ddd�}t||jƒ d S )Nr   r;  rÄ   r<  rŠ   rB   rT   rV   r«   r/   rL  rM  rN  rO  r3  rU   )rj   rH  r,   )r6   rZ   r   r\  r$   )rO   Z
X_trans_a0Z
X_trans_a1r4   r4   r5   Útest_quantile_transform_axis1¥  s    .rk  c                  C   sŒ  t  ddgddgddgg¡} t | ¡}tddd� | ¡}t|| ƒ tddd� |¡}t|j| ƒ 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� |¡}| 	|¡}t||ƒ t j
 
d¡}tƒ }| |¡ | 	d	gg¡| 	t  |¡gg¡k�st‚| 	d
gg¡| 	t  |¡gg¡k�s4t‚| d	gg¡| t  |j¡gg¡k�s^t‚| d
gg¡| t  |j¡gg¡k�sˆt‚d S )Nr   r,   rC   ©rH  rU  rù   r3  rG  )r*   r,   éöÿÿÿr/   )r6   rZ   r   rÚ   r   r¾   r$   rJ  rL   rc   r~   rô   r:   rõ   rx   Zreferences_)r  r'  rö   Z
X_trans_sprO   ZX1r  r4   r4   r5   Útest_quantile_transform_bounds­  s2    

ÿ


((ÿÿrn  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 )Nrk   r/   r]   rB   rC   rT   r*   r   rl  é	   r¼   )	rò   ró   r6   rZ   r   r   r¾   rx   r$   )ÚX_1ÚX_2rO   r  rö   r÷   r4   r4   r5   Ú#test_quantile_transform_and_inverseÒ  s    *

rr  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 ¡ ¡ sft‚t  |jd d …dd …f ¡ 	¡ rŠt‚d S )Nr   r,   rù   r/   rÅ   rl  )
r6   rZ   r  r   r¾   r¹   rd  r¡   r:   r    )rO   r  r4   r4   r5   Útest_quantile_transform_nanÜ  s
    0
 rs  Ú
array_typer   c                 C   sœ   t  dddddddddddddddddd	gd
 ¡}d| dd¡ }t|| ƒ}d}t|d� |¡}|jd d …df }t|ƒdks‚t‚t	t  
|¡dkƒs˜t‚d S )Nr   r,   rB   rC   rT   rU   ro  r«   r#  r/   r3  r+   rŠ   rG  )r6   rZ   r×   r    r   rL   rd  rR  r:   r¡   rg  )rt  rO   rH  ZqtZ	quantilesr4   r4   r5   Ú*test_quantile_transformer_sorted_quantilesè  s    2
ru  c               
   C   s>   dD ]4} t | d�}tjtdd�� | tj¡ W 5 Q R X qd S )N))r+   rC  )rP  éýÿÿÿ)r/   rY  )g      Y@rY  )rC  rÄ   rD  zInvalid quantile range: \(r­   )r   rI   rJ   rK   rL   rò   ró   )Zrange_rQ   r4   r4   r5   Ú test_robust_scaler_invalid_rangeü  s    
rw  c               	   C   sT  t j d¡} |  dd¡}d|d d …df< t |¡}t|dd�}t  t  |¡¡rRt	‚t|dd�}t  t  |j
¡¡rtt	‚t| ¡ dd�}t|| ¡ ƒ t t¡� t|ddd	� W 5 Q R X t|jdd
�dddddgdƒ t|jdd
�dddddgƒ ||k	süt	‚t|dƒ\}}t||jdd
�ƒ t||jdd
�ƒ t|dddd�}t| ¡ | ¡ ƒ d S )NrÅ   rT   rU   rk   r   Fr[   r,   )r\   rj   ri   r  r  r  r  rB   rX   Trà   )r6   r~   r   rH   r   rÙ   r   r    r¹   r:   ró   r  r$   r0   rI   rJ   rK   rt   rv   r(   )rG   rO   rÝ   ry   r	  r  r  r  r4   r4   r5   Ú%test_scale_function_without_centering
  s0    

  ÿrx  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 )Nr,   ri   r   r:  r=  ©rò   ró   r   r$   r6   r1  r@  ©rO   rö   r>  rA  r4   r4   r5   Ú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 )Nr,   r   r:  )r>  ry  rz  r4   r4   r5   Útest_robust_scale_1d_array7  s    r|  c                  C   sº   dddgdddgdddgg} t ƒ }| | ¡}dddgdddgdddgg}t||ƒ | |¡}t| |ƒ dddgdddgdddgg}| |¡}dddgddd	gddd
gg}t||dd� d S )Nrk   rX   rù   rú   rû   rü   rW   r]   g_Ò­£ªê¿gÑ–s)®ªú?rC   r¼   )r   r¾   r$   rx   rc   )rO   rQ   rö   rV  r÷   rý   rþ   ÚX_expected_newr4   r4   r5   Ú)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stt‚|jt
jddd�ksŒt‚| ¡ t
jddd�ks¦t‚d S )NrÅ   r_  r,   )rŠ   r,   rŠ   iœÿÿÿ)r,   éc   T)rE  Zunit_variancer   çü©ñÒMbP?)r7  r`  )r6   r~   r   rH   Úvstackr`   r   rL   rc   r-  rI   rè   r:   rs   rv   )rG   rO   ZX_with_outliersrE  Zrobust_scalerrö   r4   r4   r5   Ú test_robust_scaler_unit_varianceY  s    $ÿ
r‚  c                  C   sl  dddgdddgdddgdddgg} t ƒ }| | ¡}dddgdddgdddgdddgg}t||ƒ | |¡}t| |ƒ dddgd	ddgdddgg}| |¡}dddgd	ddgdddgg}t||d
d� t| ƒ}t||ƒ t | ¡}t | ¡}	| |¡}
| |	¡}dddgdddgdddgdddgg}t|
j	|ƒ t|j	|ƒ | |
¡}| |¡}t| |j	ƒ t| |j	ƒ d S )Nrk   rX   rù   ç333333Ó¿r]   gUUUUUUÕ?gš™™™™™É¿rW   rü   rB   r¼   )
r   r¾   r$   rx   rc   r   r   rÙ   rÚ   rJ  )rO   rQ   rö   rV  r÷   rý   rþ   r}  rÝ   rÞ   r  r  ZX_trans_csr_invZX_trans_csc_invr4   r4   r5   Ú)test_maxabs_scaler_zero_variance_featuresk  s@    $
ü








ü

r„  c                  C   sv   ddddgddddgddddgddddgg} t ƒ }| | ¡}ddd	dgddd
dgddddgddddgg}t||ƒ d S )Nrk   rX   rù   rü   rƒ  rð   g      YÀg       Àg{®Gázt?gú~j¼t“h¿g      Ð¿)r   r¾   r$   )rO   rQ   rö   rV  r4   r4   r5   Ú'test_maxabs_scaler_large_negative_value™  s    



ü




ür…  c                  C   sp   t  dddgg¡} tƒ }| | ¡}| | ¡}t  dddgg¡}t| ¡ | ¡ ƒ | |¡}t|  ¡ | ¡ ƒ d S )Nrù   rX   )r   rÙ   r   rL   rc   r$   r0   rx   )rO   rQ   rö   rV  rz   r4   r4   r5   Ú(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–t‚| |¡}t|| ƒ qt d¡} tƒ }| | ¡ | ¡}tt |jdd�¡dƒ |j| jd ksøt‚t  ¡ }t |¡ ¡ }t|| t|dd�ƒ d S )NTrg   r,   r   ri   rX   rl   )rm   rn   ro   r   rL   rc   rp   rq   r6   rZ   r9   r$   r7  rõ   r`   rN   rw   r8   r:   rx   rr   r   )rO   rQ   ry   rz   r  Zmax_absr4   r4   r5   Ú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 ]B}| | | ¡}t | | ¡}| |¡}t | | ¡}	| |	¡}q^t	|j
|j
ƒ t	|j
|j
ƒ t	|j
|j
ƒ |j|jksÜt‚|j|jksìt‚|j|jksüt‚t	|j|jƒ t	|j|jƒ t	|j|jƒ t	| | ¡| | ¡ƒ td|ƒ}
tƒ  | |
 ¡}tƒ  | |
 ¡}t	|j
|j
ƒ |j|jk�s†t‚t	|j|jƒ t	| | ¡| | ¡ƒ tƒ  | ¡}tƒ }tt||ƒƒD ]2\}}| | | ¡}t||j|j|||jd� �qÊq0d S )NrŠ   r   r,   rB   rÄ   rÅ   rÆ   )rÇ   r8   r   rL   r   rÈ   r   rÙ   rÚ   r$   Zmax_abs_rw   r:   rs   rc   rÊ   rË   rA   rÌ   rÍ   )rO   r>   r?   rÏ   rÐ   Zscaler_incr_csrZscaler_incr_cscrÑ   rÝ   rÞ   rÒ   r;   r4   r4   r5   Útest_maxabs_scaler_partial_fitÙ  sT    


úrˆ  c                  C   sª  t j d¡} |  dd¡}t |¡}d|dd d …f< |jd }|jd }d|j||…< t |¡}|||fD ]¢}tddd�}| 	|¡}||k	sŽt
‚t|ƒ}	tdd	d�}| 	|¡}||ks¸t
‚t|ƒ}
|	|
fD ]@}t  |¡jd
d�}tdƒD ]}t|| dƒ qæt|d dƒ qÈqhtjtjtjfD ]ˆ}||ƒ}tdd	d� 	|¡ }}||k	�sLt
‚t |¡�rd|jdk�sht
‚t|ƒ}tdƒD ]}t|| dƒ �qxtt |d ¡dƒ �qd S )Nr   rT   rU   rk   rC   Úl1T©Únormrh   Fr,   ri   rX   Úl2Úcsr)r6   r~   r   rH   r   rÙ   Úindptrró   r   rc   r:   r0   r7  rç   rœ   r#   Ú
coo_matrixrÚ   Ú
lil_matrixr  rb  Úlar‹  )rG   r  ÚX_sparse_unprunedÚindptr_3Úindptr_4ÚX_sparse_prunedrO   Ú
normalizerÚX_normÚX_norm1ÚX_norm2Úrow_sumsr;   Úinitr4   r4   r5   Útest_normalizer_l1  s>    





rœ  c                  C   sª  t j d¡} |  dd¡}t |¡}d|dd d …f< |jd }|jd }d|j||…< t |¡}|||fD ]œ}tddd�}| 	|¡}||k	sŽt
‚t|ƒ}tdd	d�}| 	|¡}	|	|ks¸t
‚t|	ƒ}	||	fD ]:}
tdƒD ]}tt |
| ¡d
ƒ qÔtt |
d ¡dƒ qÈqhtjtjtjfD ]Ž}||ƒ}tdd	d� 	|¡ }
}|
|k	�sFt
‚t |
¡�r^|
jdk�sbt
‚t|
ƒ}
tdƒD ]}tt |
| ¡d
ƒ �qrtt |
d ¡dƒ �qd S )Nr   rT   rU   rk   rC   rŒ  TrŠ  FrX   r�  )r6   r~   r   rH   r   rÙ   rŽ  ró   r   rc   r:   r0   rœ   r#   r‘  r‹  r�  rÚ   r�  r  rb  )rG   r  r’  r“  r”  r•  rO   r–  r˜  r™  r—  r;   r›  r4   r4   r5   Útest_normalizer_l2A  s<    





r�  c                  C   s¨  t j d¡} |  dd¡}t |¡}d|dd d …f< |jd }|jd }d|j||…< t |¡}|||fD ] }tddd�}| 	|¡}||k	sŽt
‚t|ƒ}tdd	d�}| 	|¡}	|	|ks¸t
‚t|	ƒ}	||	fD ]>}
t|
ƒjd
d�}tdƒD ]}t|| dƒ qät|d dƒ qÈqhtjtjtjfD ]ˆ}||ƒ}tdd	d� 	|¡ }
}|
|k	�sJt
‚t |
¡�rb|
jdk�sft
‚t|
ƒ}
tdƒD ]}t|| dƒ �qvtt |
d ¡dƒ �qd S )Nr   rT   rU   rk   rC   rõ   TrŠ  Fr,   ri   rX   rŒ  r�  )r6   r~   r   rH   r   rÙ   rŽ  ró   r   rc   r:   r0   r7  rõ   rœ   r#   r�  rÚ   r�  r  rb  r‘  r‹  )rG   r  r’  r“  r”  r•  rO   r–  r˜  r™  r—  Zrow_maxsr;   r›  r4   r4   r5   Útest_normalizer_maxp  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  |¡ }t |¡}|||fD ]F}tdd	�}| 	|¡}||k	s”t
‚t|ƒ}tt  |¡t  t|ƒ¡ƒ qpd S )
Nr   rT   rU   rk   rC   rB   r+   rõ   ©r‹  )r6   r~   r   rH   r7  Zargmaxr   rÙ   r   rc   r:   r0   r%   Úsign)rG   r  Z	X_all_negZX_all_neg_sparserO   r–  r—  r4   r4   r5   Útest_normalizer_max_sign   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 |¡}t  	d¡}||fD ]†} t j
t jfD ]t}d
D ]j}|  |¡} t| |d�}|j|ks¨t‚t|ƒ}|dkrÌt  |¡jdd�}n|d }	|	jdd�}t||ƒ q€qxqht  dddgdddgdddgg¡}dD ]r}t||dd�\}
}|dk�rNt|t  dddg¡ƒ n8|dk�rpt|t  dddg¡ƒ nt|t  dddg¡ƒ �qt |¡}d
D ]*}t t¡� t||dd� W 5 Q R X �q˜t|ddd�\}
}t|t  dddg¡ƒ d S )Né%   rC   rB   Frg   r   )rj   rh   r/   rU   )r‰  rŒ  rŸ  r‰  r,   ri   r¦   ri  rX   rk   rW   )r‰  rŒ  rõ   T)r‹  Zreturn_normç      @r§   rŒ  g1œ¥C+Ø@rõ   )r6   r~   r   rH   r%   r   r\  r   rÙ   r`   r�   r‚   rƒ   r„   r:   r0   r7  rç   r$   rZ   rI   rJ   ÚNotImplementedError)rO   Úrsr  r'  r`   r„   r‹  r—  rš  ZX_norm_squaredÚ_Znormsr4   r4   r5   Útest_normalize´  s@     


"


r§  c               	   C   s¢  t  dddgdddgg¡} t jttjtjfD �]Ö}||  ¡ ƒ}tddd	�}t| 	|¡ƒ}t  
|dk¡d
ksnt‚t  
|dk¡dks„t‚| 	|¡}t |¡t |¡ks¦t‚tdd� |¡}t| 	|¡ƒ}||k	sÐt‚t  
|dk¡dksæt‚t  
|dk¡d
ksüt‚tdd�}| 	|¡}||k	�st‚t|ƒ}t  
|dk¡dk�s>t‚t  
|dk¡d
k�sVt‚tdd�}| 	|¡}|tk	�r‚||k�s‚t‚tdd�}t jdddgdddggt jd�}| 	|¡}|tk	�rÎ||k�sÎt‚t|ƒ}t  
|dk¡dk�sît‚t  
|dk¡d
ks,t‚q,tddd	�}t jtfD ]Z}||  ¡ ƒ}t| 	|¡ƒ}t  
|dk¡dk�sRt‚t  
|dk¡dk�sjt‚| 	|¡}�qt t¡� | 	t |¡¡ W 5 Q R X d S )Nr,   r   rU   rB   rC   r+   rW   T)Ú	thresholdrh   rT   rg   Fr›   rð   )r6   rZ   rq   r   rÙ   rÚ   rh   r
   r0   rc   rç   r:   r  rL   r‚   rI   rJ   rK   )ZX_r›  rO   Z	binarizerZX_binZX_floatr4   r4   r5   Ú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   ©rU   rT   Fr¯   )rB   rT   )r6   r~   r   Úrandom_sampler   rL   rc   Údotr\  r   r¾   r$   Ú	ones_liker8   r!   )rG   ZX_fitrQ   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_centered3r4   r4   r5   Ú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)r6   r�  Úclipr%  r4   r4   r5   ÚphiI  s
    þÿz2test_kernelcenterer_non_linear_kernel.<locals>.phiFr¯   N)r6   r~   r   rH   r   r¾   rc   r\  r   rL   r!   r­  r8   )rG   rO   rd   r³  Zphi_XZ
phi_X_testrQ   Zphi_X_centerZphi_X_test_centerÚKZK_testZK_centerZK_test_centerÚkernel_centererr¯  Z
K_centeredr°  ZK_test_centeredr4   r4   r5   Ú%test_kernelcenterer_non_linear_kernelD  s.    	







	 ÿr¶  c                  C   sŠ   t  dddgdddgdddgdddgg¡} t  d¡}|  | j¡}tƒ }td|fdtƒ fgƒ}| ¡ d slt	‚t
|||dd	�}t||ƒ d S )
NrC   r   r,   )rT   rµ  ZsvrÚpairwiserB   )Zcv)r6   rZ   r`   r¬  r\  r   r	   r   Z	_get_tagsr:   r   r$   )rO   Zy_truer´  ZkcentZpipelineZy_predr4   r4   r5   Útest_cv_pipeline_precomputedz  s    *
r¸  c                  C   sT   t j d¡} |  d¡}tƒ tƒ tƒ fD ](}| |¡ |¡}| 	|¡}t
||ƒ q&d S )Nr   rª  )r6   r~   r   r«  r   r   r
   rL   rc   r¾   r%   )rG   rO   ÚobjÚX_transformedZX_transformed2r4   r4   r5   Útest_fit_transformŽ  s    

r»  c                  C   sD   ddgddgddgg} t | ƒ} t| dddgdddgdddggƒ d S )Nr,   r   )r   r%   r%  r4   r4   r5   Útest_add_dummy_feature—  s    r¼  c                  C   sj   t  ddgddgddgg¡} t| ƒ} t  | ¡r8| jdks@t| ƒ‚t|  ¡ dddgdddgdddggƒ d S )Nr,   r   Zcoo)r   r�  r   r  rb  r:   r%   r0   r%  r4   r4   r5   Útest_add_dummy_feature_coo�  s    r½  c                  C   sj   t  ddgddgddgg¡} t| ƒ} t  | ¡r8| jdks@t| ƒ‚t|  ¡ dddgdddgdddggƒ d S )Nr,   r   ra  )r   rÚ   r   r  rb  r:   r%   r0   r%  r4   r4   r5   Útest_add_dummy_feature_csc¤  s    r¾  c                  C   sj   t  ddgddgddgg¡} t| ƒ} t  | ¡r8| jdks@t| ƒ‚t|  ¡ dddgdddgdddggƒ d S )Nr,   r   r�  )r   rÙ   r   r  rb  r:   r%   r0   r%  r4   r4   r5   Útest_add_dummy_feature_csr«  s    r¿  c                  C   sR   t j} | d d …d d…f }tddd�tƒ tƒ g}|D ]}| | ¡ | |¡ q4d S )NrB   Fr¨   )rò   ró   r   r   r   r¾   )rO   rÇ   ZscalersrQ   r4   r4   r5   Útest_fit_cold_start²  s    
ý
rÀ  Úmethodúbox-coxúyeo-johnsonc              	   C   sX   t | d�}t t¡}t t¡� | |¡ W 5 Q R X t t¡� | |¡ W 5 Q R X d S )N©rÁ  )	r   r6   r7  rn   rI   rJ   r   rc   rx   )rÁ  ÚptrO   r4   r4   r5   Ú test_power_transformer_notfittedÄ  s    

rÆ  Ústandardizec                 C   s@   | dkrt  |¡n|}t| |d�}| |¡}t|| |¡ƒ d S )NrÂ  ©rÁ  rÇ  )r6   r7  r   r¾   r#   rx   )rÁ  rÇ  rO   rÅ  rö   r4   r4   r5   Ú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°t‚t|jt jƒst‚qd S )N©TFrÂ  rÈ  r+   r,   r   )r6   r7  rn   r   r¾   r   r   ÚboxcoxÚflattenr   r#   r×   rx   Úlambdas_rR  r8   r:   rp   r.  )rO   rÇ  rÅ  rö   ÚX_trans_funcrV  Zlambda_expectedr4   r4   r5   Ú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Ôt‚t|jt jƒst‚qd S )NrÊ  rÂ  rÈ  r,   )r6   r7  rÇ   r   r¾   r   rœ   r8   r   rË  rÌ  r   r#   rÍ  rx   r$   rR  r:   rp   r.  )
rO   rÇ  rÅ  ZX_trans_classrÎ  rö   ÚjrV  ÚlmbdaÚX_invr4   r4   r5   Útest_power_transformer_2dò  s     


rÓ  c               	   C   s  t dd�} |  t t¡¡ t}d}tjt|d�� |  |¡ W 5 Q R X tjt|d�� |  |¡ W 5 Q R X tjt|d�� t	|dd� W 5 Q R X tjt|d�� |  t 
tj¡¡ W 5 Q R X tjt|d�� |  t 
tj¡¡ W 5 Q R X tjt|d�� t	t 
tj¡dd� W 5 Q R X d S )NrÂ  rÄ  zstrictly positiver­   )r   rL   r6   r7  rÇ   rI   rJ   rK   rc   r   r“   r8   )rÅ  ZX_with_negativesZnot_positive_messager4   r4   r5   Ú9test_power_transformer_boxcox_strictly_positive_exception	  s     
rÔ  c                 C   s   t | dd� d S )NrÃ  rÄ  )r   r%  r4   r4   r5   Ú+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 5 Q R X tjt|d��  | 	|d d …dd…f ¡ W 5 Q R X d S )NrÄ  zBX has \d+ features, but PowerTransformer is expecting \d+ featuresr­   r   r,   )
r   r6   r7  rÇ   rL   rI   rJ   rK   rc   rx   )rÁ  rÅ  rO   Zwrong_shape_messager4   r4   r5   Ú&test_power_transformer_shape_exception/	  s    


ÿ$rÖ  c                  C   sR   t ddd�} t t¡d d …dd…f }t dg¡| _|  |¡}t|  |¡|ƒ d S )NrÂ  FrÈ  r   r,   )	r   r6   r7  rÇ   rZ   rÍ  rc   r$   rx   ©rÅ  rO   rö   r4   r4   r5   Ú"test_power_transformer_lambda_zeroB	  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   r,   )r   r6   r7  rÇ   rZ   rÍ  rc   r$   r×  r4   r4   r5   Ú!test_power_transformer_lambda_oneL	  s
    
rÙ  zmethod, lmbda)rÂ  r3  )rÂ  rù   )rÃ  r3  )rÃ  rù   )rÃ  rX   c                 C   sž   t j d¡}d}|jdd|df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  r,   )Úlocr   r.   FrÈ  rB   r¼   )r6   r~   r   rI  r   rÍ  rx   r¾   r#   Úlinalgr‹  rt   rv   )rÁ  rÑ  rG   rM   rO   rÅ  rÒ  ÚX_inv_transr4   r4   r5   Ú#test_optimization_power_transformerV	  s    

rÝ  c                  C   s^   ddddddddd	d
dddddg} t  | ¡ dd¡} tdd� | ¡j}t j|ddd�sZt‚d S )Ngffffff@gÍÌÌÌÌÌ ÀrX   rW   gffffffæ?g333333@r^   gffffff@gÍÌÌÌÌÌü?gÍÌÌÌÌÌ@r£  r¦   gš™™™™™"@g      @g      Àr+   r,   rÃ  rÄ  gáz®Gáô?r€  rŒ   )r6   rZ   r×   r   rL   rÍ  Zallcloser:   )rO   rÑ  r4   r4   r5   Útest_yeo_johnson_darwin_examplew	  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   )rU  rU   r¼   )r6   r7  rn   r   rL   rÍ  ZconcatenateZ	full_liker  r   r#   rc   r%   r¹   )rÁ  rO   rÅ  Zlmbda_no_nansZ
lmbda_nansrö   r4   r4   r5   Útest_power_transformer_nans€	  s    






rß  c                 C   sB   t }| dkrt |¡}t| |d�}t| |¡ |¡| |¡ƒ d S )NrÂ  )rÇ  )rn   r6   r7  r   r$   rL   rc   r¾   )rÁ  rÇ  rO   rÅ  r4   r4   r5   Ú$test_power_transformer_fit_transform—	  s
    
rà  c                 C   s¦   t }| dkrt |¡}| ¡ }||k	s*t‚t||ƒ t| |dd�}| |¡ t||ƒ | |¡}||k	slt‚| 	|¡}t||ƒ ||k	sŒt‚| 
|¡}||k	s¢t‚d S )NrÂ  T©rÇ  rh   ©rn   r6   r7  rh   r:   r$   r   rL   rc   r¾   rx   ©rÁ  rÇ  rO   Z
X_originalrÅ  rö   rÜ  r4   r4   r5   Ú test_power_transformer_copy_True£	  s     







rä  c                 C   s®   t }| dkrt |¡}| ¡ }||k	s*t‚t||ƒ t| |dd�}| |¡ t||ƒ | |¡}||kslt‚| dkr~t |¡}| 	|¡}||ks”t‚| 
|¡}||ksªt‚d S )NrÂ  Frá  râ  rã  r4   r4   r5   Ú!test_power_transformer_copy_False¿	  s"    







rå  c               	   C   sR   t  d¡} tj| dd…df< d}tdd�}tjt|d�� | | ¡ W 5 Q R X 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­   )	rG   r«  r6   r  r   rI   rJ   rK   r¾   )rO   r(  rÅ  r4   r4   r5   Ú1test_power_transformer_box_cox_raise_all_nans_colÝ	  s    

ræ  rq  çš™™™™™é?)r,  rU  )r/   r,   )r‹   c                 C   sB   t jdddd�}tdd�}| |¡ | ¡ t |jd ¡s>t‚d S )NrU   r,   rç  r+  Fr[   r   )	r   r~   r   rL   rÈ   r6   r¿   rb   r:   )rq  rp  rQ   r4   r4   r5   Ú7test_standard_scaler_sparse_partial_fit_finite_varianceì	  s    

rè  rï   )r   r,   )rm  r/   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   ri   rB   r/   r,   )
rò   ró   r   rL   r6   rô   rõ   Zr_rc   r!   )rï   rO   rQ   ZX_minZX_maxrd   rº  r4   r4   r5   Útest_minmax_scaler_clipü	  s    (
þré  c               	   C   sD   t ƒ  t¡} d}tjt|d�� |  tdd…df ¡ W 5 Q R X 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   rL   rÇ   rI   rJ   rK   rx   )rQ   r(  r4   r4   r5   Ú-test_standard_scaler_raise_error_for_1d_input

  s    rê  c                  C   sÐ   dt jddddgd dddd	d
dddg t jd� dd¡ } tƒ }t ¡ � t dt¡ | 	| ¡}W 5 Q R X t  
t  |¡¡r€t‚| ¡ t d¡ks–t‚| ¡ t d¡ks¬t‚| ¡ dks¼t‚| ¡ dk sÌt‚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ñ   rW   r¦   ri  rT   rZ  é   é   é   r  éU   rC  r›   r+   r,   r¬   rk   rX   rP  rB   N)r6   rZ   r‚   r×   r   r±   r²   r³   ÚRuntimeWarningr¾   r    r¹   r:   rt   rI   rè   rv   rô   rõ   )ZX_non_gaussianrÅ  rö   r4   r4   r5   Ú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)rL   rò   ró   Úget_feature_names_outÚfeature_namesr%   )rñ  ÚtrÚ	names_outr4   r4   r5   Ú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 5 Q R X dS )rò  Zpandas)Úcolumnsz0input_features is not equal to feature_names_in_r­   ÚabcdN)rI   ZimportorskipZ	DataFramerò   ró   rô  rL   ró  r%   ÚreÚescaperJ   rK   rq   )rñ  ÚpdZdfrõ  Znames_out_df_defaultZnames_out_df_valid_inÚmsgÚinvalid_namesr4   r4   r5   Ú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   )rV   rT   r,   c                 S   s   g | ]}d |› �‘qS )Zkernelcentererr4   r˜   r4   r4   r5   rš   j
  s     z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>N)r6   r~   r   r«  r   r   rL   ró  r8   r%   rœ   )rG   rO   Z
X_pairwiser®  rö  Zsamples_out2r4   r4   r5   Ú&test_kernel_centerer_feature_names_out`
  s    

r   c                 C   s†   dddgdddgdddgg}t d| d� |¡}t|jdddgƒ | |¡}| |¡}||fD ]$}| rvt|t |¡ƒ q\t||ƒ q\dS )z>Check that PowerTransfomer leaves constant features unchanged.rP  r   rB   rÃ  rÈ  r,   N)r   rL   r!   rÍ  r¾   rc   r6   ru   )rÇ  rO   rÅ  ZXftZXtZXt_r4   r4   r5   Ú'test_power_transformer_constant_featurem
  s    

r  )Âr  rú  r±   Únumpyr6   Znumpy.linalgrÛ  r‘  rI   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._testingr    r!   r"   r#   r$   r%   r&   r'   Zsklearn.utils.sparsefuncsr(   Z	load_irisrò   r~   r   rG   rN   rM   r‘   rÛ   r¤   rH   rÇ   r×   rm   rn   Útolistro   ZX_list_1colr0   r9   rA   rR   ÚmarkZparametrizerZ   r  re   r{   rÚ   rÙ   r…   r7   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/  r0  r2  r8  r9  rB  rF  rK  rS  rW  r^  rh  rj  rk  rn  rr  rs  ru  rw  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Ô  r7  r“   r8   rÕ  rÖ  rØ  rÙ  rÝ  rÞ  rß  rà  rä  rå  ræ  r’   rè  ré  rê  rð  r÷  rÿ  r   r  r4   r4   r4   r5   Ú<module>   sâ  L(
4"ý
üøùþ% ÿþþ ÿ& ÿ2
&403.

) &
I ÿ,F!	&9= /&%

$		. 80/0-7,6	
		*



ûþ

	

þþ	úþøþ