U
    ½mœd| ã                   @   s¨
  d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dlm#Z# d dlm$Z$ d dlm%Z% d dlm&Z& d dlm'Z' 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!l0m1Z1 d d"l2m3Z3 d d#l4m5Z5 d d$l6m7Z7 d d%l8m9Z9 d d&lm: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/„ ZOd0d1„ ZPd2d3„ ZQd4d5„ ZRejS Td6d7d8gd+d9d:gd;d<d=ggd+d9d:gd+d9d: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@dAdBdCg¡dDdE„ ƒƒZWdFdG„ ZXejS TdHde	jYe	jZg¡ejS TdIdJdKg¡dLdM„ ƒƒZ[ejS TdNedJdO�e&dJdP�g¡ejS TdHej\e	jYe	jZg¡ejS TdIdJdKg¡ejS TdQej]ej^g¡ejS TdRd d?dSg¡dTdU„ ƒƒƒƒƒZ_ejS TdVd-dWdXg¡ejS TdYdZd+d[g¡ejS TdQej]ej^g¡ejS Td@ej\e	jYe	jZg¡d\d]„ ƒƒƒƒZ`d^d_„ Zaed`da„ ƒZbdbdc„ Zcddde„ Zddfdg„ Zedhdi„ Zfdjdk„ Zgdldm„ ZhejS Td8dKdg¡dndo„ ƒZiejS Td8dKdg¡dpdq„ ƒZjdrds„ Zkdtdu„ Zldvdw„ Zmdxdy„ Zndzd{„ ZoejS Td8dKdg¡d|d}„ ƒZpejS Td~dKdJg¡ejS TddKdJg¡ejS Td@ej\e	jYe	jZg¡d€d�„ ƒƒƒZqd‚dƒ„ Zrd„d…„ Zsd†d‡„ Ztdˆd‰„ ZudŠd‹„ ZvdŒd�„ ZwdŽd�„ ZxejS Td�dKdJg¡ejS Td‘dKdJg¡ejS Td7ej? Gd-d:¡e	jyd-d:d’d“�g¡d”d•„ ƒƒƒZzd–d—„ Z{d˜d™„ Z|ejS Tdšd d›dœd’d+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½dAd¾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¥dõdö„ Z¦ejS Td÷dødùg¡dúdû„ ƒZ§ejS Td÷dødùg¡ejS TdüdKdJg¡ejS Td7eKeHg¡dýdþ„ ƒƒƒZ¨dÿ�d „ Z©�d�d„ Zª�d�d„ Z«ejS Td7eHe ¬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 T�d�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üdKdJg¡�d�d„ ƒƒZ¶ejS Td÷dødùg¡ejS TdüdKdJg¡�d�d„ ƒƒZ·ejS Td÷dødùg¡ejS TdüdKdJg¡�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¡�d0�d1„ ƒZ¾ejS T�d/e e$e&ee"e)eeg¡�d2�d3„ ƒZ¿�d4�d5„ ZÀdS (6  é    N)ÚsparseÚstats)Úgen_batches)Úassert_almost_equal)Úassert_array_almost_equal)Úassert_array_equal)Úassert_array_less)Úassert_allclose)Úassert_allclose_dense_sparse)Úskip_if_32bit)Ú_convert_container)Úmean_variance_axis)Ú	Binarizer)ÚKernelCenterer)Ú
Normalizer)Ú	normalize)ÚStandardScaler)Úscale)ÚMinMaxScaler)Úminmax_scale)ÚQuantileTransformer)Úquantile_transform)ÚMaxAbsScaler)Úmaxabs_scale)ÚRobustScaler)Úrobust_scale)Úadd_dummy_feature)ÚPowerTransformer©Úpower_transform)Ú_handle_zeros_in_scale)ÚBOUNDS_THRESHOLD)Úlinear_kernel)ÚNotFittedError)Úclone)ÚPipeline)Úcross_val_predict)ÚSVR)Úshuffle)Údatasetsé   éè  éÿÿÿÿé   ©Úsizeé
   c                 C   s   t | dƒr|  ¡ } | S )NÚtoarray)Úhasattrr1   ©Úa© r5   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/preprocessing/tests/test_data.pyr1   L   s    
r1   c                 C   s   t  | ¡jd S )Nr   )ÚnpÚasarrayÚshaper3   r5   r5   r6   Ú_check_dim_1axisR   s    r:   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_seenr5   r5   r6   Úassert_correct_incrV   s    rB   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_notOKr5   r5   r6   Ú9test_raises_value_error_if_sample_weights_greater_than_1d]   s    
rS   ÚXwrP   rF   rC   rD   é   é   é   ç       @ç      ð?Ú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_meanrE   ç      ø?g      @ç      @g      @g      @)Ú
startswithr   r7   Úonesr9   r   rM   r   Úmean_Úvar_Ú	transform)
rT   rP   rF   rZ   r]   ZywZscaler_wrQ   rR   ÚX_testr5   r5   r6   Ú"test_standard_scaler_sample_weightp   s    



rf   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ç        rY   ©rV   r-   )ÚX_1rowÚX_1colÚX_list_1rowr   rM   rd   Ú
isinstanceÚlistr7   r[   r:   r   rb   ÚravelÚscale_ra   rO   r   ÚmeanZ
zeros_likeÚstdÚn_samples_seen_r9   r;   Úinverse_transform)rP   rR   ÚX_scaledÚX_scaled_backr5   r5   r6   Ú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   r0   rD   TFr\   rE   )r7   ÚrandomÚRandomStatera   Úfloat16Úfloat32Úfloat64rI   Úastyper   rM   rd   Údtyper;   rb   rt   )r}   r|   rH   rN   rO   rF   r]   r„   rP   rR   ry   r5   r5   r6   Útest_standard_scaler_dtypeÁ   s"    
r…   rR   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.   rC   rE   )r9   Ú
fill_valuer„   gH¯¼šò×z>©Zatolr1   r\   )rq   r   rJ   ÚskipÚ	__class__Ú__name__r7   r~   r   ÚdictÚuniformÚfullrM   rd   r   r	   rc   Úzerosr9   rt   ra   r2   r1   r   r]   )rR   r}   r|   r„   rˆ   rH   rN   rO   Z
fit_paramsÚX_arrayrP   ry   Z
X_scaled_2r5   r5   r6   Ú&test_standard_scaler_constant_featuresÜ   s,    


r•   rN   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 )r0   r5   ©Ú.0r<   r5   r5   r6   Ú
<listcomp>  s     z?test_standard_scaler_near_constant_features.<locals>.<listcomp>r-   ©r„   r   rC   Fr\   rY   r,   )r7   r[   Úranger9   Úemptyr   rM   Úfinfor‚   ÚepsÚanyr;   Úallrc   r	   rt   Zlogical_notÚlogical_andÚsqrt)rN   rZ   r–   r„   Z	scale_minZ	scale_maxÚscalesrO   rP   r”   rR   rŸ   ZboundsZwithin_boundsZrepresentable_diffZcommon_maskr5   r5   r6   Ú+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 )NrY   ç      @ç      @rl   F©r]   Úwith_std)r7   r[   r   r   ru   rv   r   )ZX_listZX_arrrP   ry   r5   r5   r6   Útest_scale_1dH  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›   Úerrorr0   z:standard deviation of the data is probably very close to 0©Úmatchg0Žä.ÿ++g}Ã”%­I²Tz$Dataset may contain too large valuesF©r©   )r7   r’   Úlogr‚   ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   r   r“   rJ   Úwarns)ÚxÚwarning_messageZx_scaledZx_small_scaledZx_bigZx_big_scaledZx_big_centeredr5   r5   r6   Ú(test_standard_scaler_numerical_stabilityT  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   rV   rU   rl   Trh   rj   rY   r-   F)rk   r©   )r7   r~   r   rI   r   rM   rd   r    Úisnanr;   rw   r   ru   rv   rx   r   )rH   rO   rN   rP   rR   ry   rz   r5   r5   r6   Útest_scaler_2d_arrays{  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   rV   r0   i@ r-   Úraise)ZoverrC   ©Údecimal)r7   r~   r   r‘   rƒ   r€   Zerrstater   rM   rd   Úfit_transformr‚   r¡   Úisfiniter;   r   )rH   rP   rR   ry   ZX_scaled_f64r5   r5   r6   Ú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-   rC   rD   Trh   )r7   r[   r    r	   )Ús1Ús2r5   r5   r6   Ú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-   rC   é2   é*   ©r=   r>   r?   r@   rA   )ÚX_2dr9   r   rM   r   rN   Úpartial_fitr   Z	data_min_Z	data_max_rw   r;   Zdata_range_rt   Úmin_ÚsliceÚ	enumeraterB   ÚstartÚstop©rP   r?   r@   Úscaler_batchÚscaler_incrÚbatchÚbatch0r<   r5   r5   r6   Ú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-   rC   rÄ   rÅ   Fr¯   r›   rj   rÆ   )rÇ   r9   r   rM   r   rN   rÈ   r   rb   rc   r;   rw   rÊ   r7   r“   rO   r‚   ra   rt   Úvarrv   rË   rB   rÌ   rÍ   rÎ   r5   r5   r6   Ú 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   rC   rŠ   g  4&õkÃg  4&õkCr.   g     @�@ç    €„.Ar-   g�íµ ÷Æ°>)Zrtol)rŠ   rD   g@Œµx¯DFr\   )r7   r~   r   r‘   rI   r   rM   rÈ   Úreshaper	   rb   rc   rt   Úrandintrƒ   r‚   r   Ú
csr_matrixÚ
csc_matrixr;   )rH   rO   rN   Úoffsetsr¤   rP   rÏ   rÐ   ÚchunkZtolr/   r   ÚX_csrÚX_cscrR   r5   r5   r6   Ú4test_standard_scaler_partial_fit_numerical_stability3  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 )	NrY   rl   r§   r   FT©r]   r©   ri   rE   )r7   r[   r   rÙ   rÚ   rH   Úrandr9   r   rÈ   rd   r   r1   rx   )rF   rP   rÝ   rÞ   Únull_transformÚX_nullÚX_origr5   r5   r6   Útest_partial_fit_sparse_inputa  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-   rE   )rÇ   rH   rá   r9   r   rË   r   ri   r¾   rÈ   rd   r   rx   r7   r“   rž   ÚfloatrŸ   r   rc   rt   rw   r;   ÚsumrJ   Úapprox)rF   rP   rÐ   r<   rÑ   ZX_sofarZchunks_copyZscaled_batchZscaled_incrZright_inputÚzeroÚepsilonr5   r5   r6   Ú.test_standard_scaler_trasform_with_partial_fitu  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«   rU   r›   )r7   r[   Zint32r   rM   rx   )r¶   rR   r5   r5   r6   Ú.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   rj   r-   ©r-   rC   ©Úfeature_rangerC   )ç      à¿ç333333ã?rð   rñ   )rC   r-   )ÚirisÚdatar   r¾   r   ÚminÚmaxrx   rJ   rK   rL   rM   )rP   rR   ÚX_transÚX_trans_invr5   r5   r6   Ú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 )Nrl   rY   ç      à?çš™™™™™¹¿çš™™™™™ñ?rX   ç      ð¿r^   gsh‘í|?µ?g‡ÙÎ÷Sõ?rC   r¼   rí   rî   )r   r¾   r   rx   rd   r   )	rP   ÚX_newrR   rö   ZX_expected_0_1r÷   ÚX_trans_newZX_expected_0_1_newZX_expected_1_2r5   r5   r6   Ú*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-   rj   r   )rò   ró   r   r   r7   rô   rõ   )rP   rö   r5   r5   r6   Ú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 rg   )rn   ro   rp   r   rM   rd   rq   rr   r7   r[   r:   r   rô   r“   rO   rõ   rw   r9   r;   rx   ra   rs   r   )rP   rR   ry   rz   ÚX_1drÉ   Zmax_r5   r5   r6   Ú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Å   rU   rV   rl   r   FTrà   r\   rE   rh   rj   ç{®Gáz„¿çìQ¸…ë@çffffffÖ¿çö(\�Âõè¿rC   rY   )!r7   r~   r   rI   r   rÙ   rÚ   rá   r9   rJ   rK   rL   r   rM   r¾   r   ró   rx   rd   r    r¹   r;   r   rb   rc   rt   rw   ru   rv   r   rÔ   r1   Útocsc)rF   rH   rP   rÝ   rÞ   râ   rã   rä   rR   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_backr5   r5   r6   Ú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-   rD   rW   r0   rV   rU   r«   r›   z3'with_mean=True' cannot be used with sparse matrix.r¨   rC   )r7   r[   Únanr‚   r   ÚissparserJ   r�   r   rM   r   rw   )r]   r©   rZ   rP   Útransformerr5   r5   r6   Ú#test_scaler_n_samples_seen_with_nano  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)rb   r;   rc   rt   rw   )Zscaler_1Zscaler_2r5   r5   r6   Ú"_check_identity_scalers_attributesƒ  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-   rD   rV   rW   r«   r0   r›   Fr¨   rC   )r7   r[   r‚   r   rÙ   r  r   r¾   r$   r
   r	   Ú	itertoolsÚcombinationsr  rÈ   rM   )ÚX_denserÝ   rÞ   Útransformer_denseZX_trans_denseZtransformer_csrÚX_trans_csrZtransformer_cscÚX_trans_cscZtrans_1Ztrans_2r5   r5   r6   Ú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Å   é   )rU   rV   r.   r   FTrà   )Úrecordr\   rh   rj   rl   gX9´Èv¾ñ?gV-²ý?g      5@g‹lçû©ñø?rC   rY   )r7   r~   r   rØ   r   rÙ   rÚ   r   r±   r²   r¾   r   ró   rx   rM   rd   r    r¹   r;   r   rb   rc   rt   ru   rv   r   rƒ   ræ   r1   r  )rH   rP   rÝ   rÞ   râ   rã   rä   rR   ry   r  r	  r
  r  r  ÚX_csr_scaled_stdrz   r  r  r5   r5   r6   Ú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Å   rU   rV   rl   r   Frh   )r]   ri   )r7   r~   r   rI   r   rÙ   rÚ   ri   r   rM   r   r1   )rH   rP   rÝ   rÞ   ZX_copyZ
X_csr_copyZ
X_csc_copyr5   r5   r6   Ú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Å   rU   rV   Tr\   )r7   r~   r   rI   r   rÙ   rÚ   rJ   rK   rL   r   r   rM   rd   rx   )rH   rP   rÝ   rÞ   rR   ZX_transformed_csrZX_transformed_cscr5   r5   r6   Ú+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 )NrV   rW   é   r«   z,Input contains infinity or a value too larger­   )r7   ÚinfrJ   rK   rL   r   ©rP   r5   r5   r6   Ú&test_scale_input_finiteness_validation2  s     ÿr%  c               	   C   sB   t  dd¡} tdd�}d}tjt|d�� | | ¡ W 5 Q R X d S )Nr+   r0   Tr†   zCannot center sparse matricesr­   )r   rá   r   rJ   rK   rL   rM   )ÚX_sparserR   Úerr_msgr5   r5   r6   Útest_robust_scaler_error_sparse;  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  rJ   r�   r   rM   rq   Úcenter_r7   Úndarrayr;   rt   )rP   r‡   r)  rR   r5   r5   r6   Útest_robust_scaler_attributesC  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 )Nr0   rV   r   Fr†   r-   )r7   r~   rI   r   rÙ   r   rM   rt   rJ   rè   r;   rd   r	   r1   )rP   rR   rö   r5   r5   r6   Ú"test_robust_scaler_col_zero_sparseX  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   rU   rV   rl   rj   )
r7   r~   r   rI   r   rM   rd   r   Úmedianrv   )rH   rP   rR   ry   r5   r5   r6   Útest_robust_scaler_2d_arraysg  s    r1  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+   rV   r*  r4  r5  r“   r›   Fr†   )r   rá   r  r7   Úabsró   r“   r9   r‚   r1   r   rM   r	   rt   )r+  r3  r&  r  Zscaler_sparseZscaler_denser5   r5   r6   Ú+test_robust_scaler_equivalence_dense_sparset  s    



r7  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   rU   rV   r2  rY   rX   rl   rü   Fr†   )r7   r~   r   rI   r[   r   rM   rd   r   rÙ   rt   r   r1   rx   )rH   rP   Z
single_rowrR   Z	row_transZrow_expectedZrow_scaled_backr5   r5   r6   Ú(test_robust_scaler_transform_one_row_csrŠ  s    



r8  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   rj   ©é   éK   ©Úqrk   r-   ©	rò   ró   r   r¾   r   r7   r0  rx   Ú
percentile)rP   rR   rö   r÷   r=  Úiqrr5   r5   r6   Útest_robust_scaler_iris˜  s    


rA  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)r0   éZ   ©Úquantile_ranger   rj   r<  r-   r>  )rP   rR   rö   r÷   r=  Zq_ranger5   r5   r6   Ú!test_robust_scaler_iris_quantiles¤  s    



rE  c                  C   sˆ   t j} tdd�}| | ¡}| |¡}t| |ƒ tddd�}| | ¡}| |¡}t| |ƒ t | ¡}| |¡}| |¡}t|j|jƒ d S )Nr*   ©Ún_quantilesÚnormal)rG  Zoutput_distribution)	rò   ró   r   r¾   rx   r   r   rÚ   ÚA)rP   r  rö   r÷   r&  ZX_sparse_tranZX_sparse_tran_invr5   r5   r6   Útest_quantile_transform_iris°  s    









rJ  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Š   rC   rU   rW   r«   r0   çÍÌÌÌÌÌ@çffffff@çffffff@ç      #@r2  éþÿÿÿzmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.r­   )Ú	subsamplerF  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-   )r7   Z	transposer   rÚ   rJ   rK   rL   r   rM   rd   rx   rµ   r´   Úlenr;   Zn_quantiles_r9   )rP   ZX_negr'  r  Z
X_bad_featZwarn_msgr  r5   r5   r6   Ú#test_quantile_transform_check_errorÄ  sT    ýÿ
ýÿ
ÿ

.ÿÿ
rR  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-   rC   TrV   )Úignore_implicit_zerosrG  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r­   rU   rD   rW   r"  r«   rl   rù   rY   r,   g      Ø?)rS  rG  rP  Úrandom_state)r7   r[   r   rÚ   r   rJ   rµ   r´   rM   r¾   r   rI  rx   )	rP   r&  r  r·   Ú
X_expectedrö   ZX_dataZX_colZX_rowr5   r5   r6   Ú+test_quantile_transform_sparse_ignore_zerosý  s`    (
ÿ(
   
÷ÿ
,ÿ   ÿ
rV  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   rC   rK  r:  rU   rL  rÄ   rW   rM  r;  r«   rN  rŠ   r0   r2  rV   rF  r-   )Únum)rD   r-   rj   r,   ée   é   )r7   r[   r   rM   r¾   ZtileÚlinspaceÚTr   Úsortr   rd   rx   )rP   r  rö   rU  re   r÷   r5   r5   r6   Ú!test_quantile_transform_dense_toy:  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   rj   rV   r0   )rT  rG  rP  ç{®Gáz„?g®Gáz®ï?Zcsc)r+  ÚformatrT  r2  )r7   r\  r~   Úsamplerœ   r   rM   rZ  rs   Ú
quantiles_rõ   r6  r;   ÚappendrQ  Úuniquer   rá   )	rN   rG  rP   ZROUNDZinf_norm_arrrT  r  ÚdiffZinf_normr5   r5   r6   Ú#test_quantile_transform_subsamplingZ  s>    ý
ý
rf  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 )Nrl   rX   g      9@ç      @g      I@rK  rL  g      @g       @g     ÀR@rM  g      $@rN  r‰   r2  r0   rF  r   rj   rY   )r7   r[   r   rÚ   r   rM   r¾   r   rô   r1   rõ   rx   rd   )rP   r  rö   r÷   r  r5   r5   r6   Ú"test_quantile_transform_sparse_toy‰  s6    öÿ






rh  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Š   rC   rU   rW   r«   r0   rK  rL  rM  rN  r2  rV   )rk   rG  r-   )r7   r[   r   r[  r   )rP   Z
X_trans_a0Z
X_trans_a1r5   r5   r6   Útest_quantile_transform_axis1¯  s    .ri  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-   rD   ©rG  rT  rù   r2  rF  )r+   r-   éöÿÿÿr0   )r7   r[   r   rÚ   r   r¾   r   rI  rM   rd   r~   rô   r;   rõ   rx   Zreferences_)r  r&  rö   Z
X_trans_sprP   ZX1r  r5   r5   r6   Útest_quantile_transform_bounds·  s2    

ÿ


((ÿÿrl  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 )Nrl   r0   r^   rC   rD   rU   r+   r   rj  é	   r¼   )	rò   ró   r7   r[   r!   r   r¾   rx   r   )ÚX_1ÚX_2rP   r  rö   r÷   r5   r5   r6   Ú#test_quantile_transform_and_inverseÜ  s    *

rp  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ù   r0   rÅ   rj  )
r7   r[   r  r   r¾   r¹   rb  r¡   r;   r    )rP   r  r5   r5   r6   Útest_quantile_transform_nanæ  s
    0
 rq  Ú
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-   rC   rD   rU   rV   rm  r«   r"  r0   r2  r,   rŠ   rF  )r7   r[   r×   r   r   rM   rb  rQ  r;   r¡   re  )rr  rP   rG  ZqtZ	quantilesr5   r5   r6   Ú*test_quantile_transformer_sorted_quantilesò  s    2
rs  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,   rB  )rO  éýÿÿÿ)r0   rX  )g      Y@rX  )rB  rÄ   rC  zInvalid quantile range: \(r­   )r   rJ   rK   rL   rM   rò   ró   )Zrange_rR   r5   r5   r6   Ú test_robust_scaler_invalid_range  s    
ru  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Å   rU   rV   rl   r   Fr\   r-   )r]   rk   rj   r  r  r  r  rC   rY   Trà   )r7   r~   r   rI   r   rÙ   r   r    r¹   r;   ró   r  r   r1   rJ   rK   rL   ru   rv   r   )rH   rP   rÝ   ry   r	  r  r  r  r5   r5   r6   Ú%test_scale_function_without_centering  s0    

  ÿrv  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-   rj   r   r9  r<  ©rò   ró   r   r   r7   r0  r?  ©rP   rö   r=  r@  r5   r5   r6   Útest_robust_scale_axis18  s    ry  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   r9  )r=  rw  rx  r5   r5   r6   Útest_robust_scale_1d_arrayA  s    rz  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 )Nrl   rY   rù   rú   rû   rü   rX   r^   g_Ò­£ªê¿gÑ–s)®ªú?rD   r¼   )r   r¾   r   rx   rd   )rP   rR   rö   rU  r÷   rý   rþ   ÚX_expected_newr5   r5   r6   Ú)test_robust_scaler_zero_variance_featuresJ  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)rD  Zunit_variancer   çü©ñÒMbP?)r6  r_  )r7   r~   r   rI   Úvstackra   r   rM   rd   r,  rJ   rè   r;   rt   rv   )rH   rP   ZX_with_outliersrD  Zrobust_scalerrö   r5   r5   r6   Ú test_robust_scaler_unit_variancec  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 )Nrl   rY   rù   ç333333Ó¿r^   gUUUUUUÕ?gš™™™™™É¿rX   rü   rC   r¼   )
r   r¾   r   rx   rd   r   r   rÙ   rÚ   rI  )rP   rR   rö   rU  r÷   rý   rþ   r{  rÝ   rÞ   r  r  ZX_trans_csr_invZX_trans_csc_invr5   r5   r6   Ú)test_maxabs_scaler_zero_variance_featuresu  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 )Nrl   rY   rù   rü   r�  rð   g      YÀg       Àg{®Gázt?gú~j¼t“h¿g      Ð¿)r   r¾   r   )rP   rR   rö   rU  r5   r5   r6   Ú'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ù   rY   )r   rÙ   r   rM   rd   r   r1   rx   )rP   rR   rö   rU  rz   r5   r5   r6   Ú(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 )NTrh   r-   r   rj   rY   rm   )rn   ro   rp   r   rM   rd   rq   rr   r7   r[   r:   r   r6  rõ   ra   rO   rw   r9   r;   rx   rs   r   )rP   rR   ry   rz   r  Zmax_absr5   r5   r6   Ú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-   rC   rÄ   rÅ   rÆ   )rÇ   r9   r   rM   r   rÈ   r   rÙ   rÚ   r   Zmax_abs_rw   r;   rt   rd   rÊ   rË   rB   rÌ   rÍ   )rP   r?   r@   rÏ   rÐ   Zscaler_incr_csrZscaler_incr_cscrÑ   rÝ   rÞ   rÒ   r<   r5   r5   r6   Ú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|tjƒ�s^t
‚t|ƒ}tdƒD ]}t|| dƒ �qntt |d ¡dƒ �qd S )Nr   rU   rV   rl   rD   Úl1T©Únormri   Fr-   rj   rY   Úl2)r7   r~   r   rI   r   rÙ   Úindptrró   r   rd   r;   r1   r6  rç   rœ   r   Ú
coo_matrixrÚ   Ú
lil_matrixrq   Úlar‰  )rH   r  ÚX_sparse_unprunedÚindptr_3Úindptr_4ÚX_sparse_prunedrP   Ú
normalizerÚX_normÚX_norm1ÚX_norm2Úrow_sumsr<   Úinitr5   r5   r6   Ú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|
tjƒ�sXt
‚t|
ƒ}
tdƒD ]}tt |
| ¡d
ƒ �qhtt |
d ¡dƒ �qd S )Nr   rU   rV   rl   rD   rŠ  Trˆ  FrY   )r7   r~   r   rI   r   rÙ   r‹  ró   r   rd   r;   r1   rœ   r   rŽ  r‰  rŒ  rÚ   r�  rq   )rH   r  r�  r�  r‘  r’  rP   r“  r•  r–  r”  r<   r˜  r5   r5   r6   Útest_normalizer_l2M  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|
tjƒ�s\t
‚t|
ƒ}
tdƒD ]}t|| dƒ �qltt |
d ¡dƒ �qd S )Nr   rU   rV   rl   rD   rõ   Trˆ  Fr-   rj   rY   rŠ  )r7   r~   r   rI   r   rÙ   r‹  ró   r   rd   r;   r1   r6  rõ   rœ   r   rŒ  rÚ   r�  rq   rŽ  r‰  )rH   r  r�  r�  r‘  r’  rP   r“  r•  r–  r”  Zrow_maxsr<   r˜  r5   r5   r6   Útest_normalizer_max}  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   rU   rV   rl   rD   rC   r,   rõ   ©r‰  )r7   r~   r   rI   r6  Zargmaxr   rÙ   r   rd   r;   r1   r   Úsign)rH   r  Z	X_all_negZX_all_neg_sparserP   r“  r”  r5   r5   r6   Ú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 t	¡� tdggdd� W 5 Q R X t t	¡� tdggd	d
� W 5 Q R X t j d¡}| dd¡}t
 |¡}t  d¡}||fD ]ˆ} t jt jfD ]v}dD ]l}|  |¡} t| |d
�}|j|ksôt‚t|ƒ}|dk�rt  |¡jdd�}n|d }	|	jdd�}t||ƒ qÌqÄq´t  dddgdddgdddgg¡}dD ]r}t||dd�\}
}|dk�rœt|t  dddg¡ƒ n8|dk�r¾t|t  dddg¡ƒ nt|t  dddg¡ƒ �qdt
 |¡}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é%   rD   rC   Frh   r   )rk   ri   rj   Úl3rœ  r0   rV   )r‡  rŠ  r‡  r-   r¦   rg  rY   rl   rX   )r‡  rŠ  rõ   T)r‰  Zreturn_normç      @r§   rŠ  g1œ¥C+Ø@rõ   )r7   r~   r   rI   r   r   r[  rJ   rK   rL   r   rÙ   ra   r�   r‚   rƒ   r„   r;   r1   r6  rç   r   r[   ÚNotImplementedError)rP   Úrsr  r&  ra   r„   r‰  r”  r—  ZX_norm_squaredÚ_Znormsr5   r5   r6   Útest_normalizeÂ  sH     



"


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   rV   rC   rD   r,   rX   T)Ú	thresholdri   rU   rh   Fr›   rð   )r7   r[   rr   r   rÙ   rÚ   ri   r   r1   rd   rç   r;   r  rM   r‚   rJ   rK   rL   )ZX_r˜  rP   Z	binarizerZX_binZX_floatr5   r5   r6   Ú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   ©rV   rU   Fr¯   )rC   rU   )r7   r~   r   Úrandom_sampler   rM   rd   Údotr[  r   r¾   r   Ú	ones_liker9   r	   )rH   ZX_fitrR   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_centered3r5   r5   r6   Ú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)r7   r  Úclipr$  r5   r5   r6   Úphi\  s
    þÿz2test_kernelcenterer_non_linear_kernel.<locals>.phiFr¯   N)r7   r~   r   rI   r   r¾   rd   r[  r   rM   r	   r«  r9   )rH   rP   re   r±  Zphi_XZ
phi_X_testrR   Zphi_X_centerZphi_X_test_centerÚKZK_testZK_centerZK_test_centerÚkernel_centererr­  Z
K_centeredr®  ZK_test_centeredr5   r5   r6   Ú%test_kernelcenterer_non_linear_kernelW  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 )
NrD   r   r-   )rU   r³  ZsvrÚpairwiserC   )Zcv)r7   r[   ra   rª  r[  r   r%   r'   Z	_get_tagsr;   r&   r   )rP   Zy_truer²  ZkcentZpipelineZy_predr5   r5   r6   Útest_cv_pipeline_precomputed�  s    *
r¶  c                  C   sT   t j d¡} |  d¡}tƒ tƒ tƒ fD ](}| |¡ |¡}| 	|¡}t
||ƒ q&d S )Nr   r¨  )r7   r~   r   r©  r   r   r   rM   rd   r¾   r   )rH   rP   ÚobjÚX_transformedZX_transformed2r5   r5   r6   Ú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$  r5   r5   r6   Útest_add_dummy_featureª  s    r»  c                  C   s`   t  ddgddgddgg¡} t| ƒ} t  | ¡s6t| ƒ‚t|  ¡ dddgdddgdddggƒ d S rº  )r   rŒ  r   Zisspmatrix_coor;   r   r1   r$  r5   r5   r6   Útest_add_dummy_feature_coo°  s    r¼  c                  C   s`   t  ddgddgddgg¡} t| ƒ} t  | ¡s6t| ƒ‚t|  ¡ dddgdddgdddggƒ d S rº  )r   rÚ   r   Zisspmatrix_cscr;   r   r1   r$  r5   r5   r6   Útest_add_dummy_feature_csc·  s    r½  c                  C   s`   t  ddgddgddgg¡} t| ƒ} t  | ¡s6t| ƒ‚t|  ¡ dddgdddgdddggƒ d S rº  )r   rÙ   r   Zisspmatrix_csrr;   r   r1   r$  r5   r5   r6   Ú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 )NrC   Fr¨   )rò   ró   r   r   r   r¾   )rP   rÇ   ZscalersrR   r5   r5   r6   Útest_fit_cold_startÅ  s    
ý
r¿  c               	   C   sZ   t  dddddgdddd	d
gdddddgg¡} tjtdd�� t| jdd� W 5 Q R X d S )Nr   r:  rÄ   r;  rŠ   rC   rU   rW   r«   r0   rK  rL  rM  rN  r2  z1axis should be either equal to 0 or 1. Got axis=2r­   rj   )r7   r[   rJ   rK   rL   r   r[  r$  r5   r5   r6   Ú"test_quantile_transform_valid_axis×  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   r7   r6  ro   rJ   rK   r#   rd   rx   )rÁ  ÚptrP   r5   r5   r6   Ú test_power_transformer_notfittedà  s    

rÆ  Ústandardizec                 C   s@   | dkrt  |¡n|}t| |d�}| |¡}t|| |¡ƒ d S )NrÂ  ©rÁ  rÇ  )r7   r6  r   r¾   r   rx   )rÁ  rÇ  rP   rÅ  rö   r5   r5   r6   Ú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   )r7   r6  ro   r   r¾   r   r   ÚboxcoxÚflattenr   r   r×   rx   Úlambdas_rQ  r9   r;   rq   r-  )rP   rÇ  rÅ  rö   ÚX_trans_funcrU  Zlambda_expectedr5   r5   r6   Ú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-   )r7   r6  rÇ   r   r¾   r   rœ   r9   r   rË  rÌ  r   r   rÍ  rx   r   rQ  r;   rq   r-  )
rP   rÇ  rÅ  ZX_trans_classrÎ  rö   ÚjrU  ÚlmbdaÚX_invr5   r5   r6   Ú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   rM   r7   r6  rÇ   rJ   rK   rL   rd   r   r“   r9   )rÅ  ZX_with_negativesZnot_positive_messager5   r5   r6   Ú9test_power_transformer_boxcox_strictly_positive_exception)	  s     
rÔ  c                 C   s   t | dd� d S )NrÃ  rÄ  r   r$  r5   r5   r6   Ú+test_power_transformer_yeojohnson_any_inputE	  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   r7   r6  rÇ   rM   rJ   rK   rL   rd   rx   )rÁ  rÅ  rP   Zwrong_shape_messager5   r5   r6   Ú&test_power_transformer_shape_exceptionK	  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   r7   r6  rÇ   r[   rÍ  rd   r   rx   ©rÅ  rP   rö   r5   r5   r6   Ú"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   r-   )r   r7   r6  rÇ   r[   rÍ  rd   r   r×  r5   r5   r6   Ú!test_power_transformer_lambda_oneh	  s
    
rÙ  zmethod, lmbda)rÂ  r2  )rÂ  rù   )rÃ  r2  )rÃ  rù   )rÃ  rY   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È  rC   r¼   )r7   r~   r   rH  r   rÍ  rx   r¾   r   Úlinalgr‰  ru   rv   )rÁ  rÑ  rH   rN   rP   rÅ  rÒ  ÚX_inv_transr5   r5   r6   Ú#test_optimization_power_transformerr	  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ÍÌÌÌÌÌ ÀrY   rX   gffffffæ?g333333@r_   gffffff@gÍÌÌÌÌÌü?gÍÌÌÌÌÌ@r¡  r¦   gš™™™™™"@g      @g      Àr,   r-   rÃ  rÄ  gáz®Gáô?r~  rŒ   )r7   r[   r×   r   rM   rÍ  Zallcloser;   )rP   rÑ  r5   r5   r6   Útest_yeo_johnson_darwin_example“	  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   )rT  rV   r¼   )r7   r6  ro   r   rM   rÍ  ZconcatenateZ	full_liker  r(   r   rd   r   r¹   )rÁ  rP   rÅ  Zlmbda_no_nansZ
lmbda_nansrö   r5   r5   r6   Útest_power_transformer_nansœ	  s    






rß  c                 C   sB   t }| dkrt |¡}t| |d�}t| |¡ |¡| |¡ƒ d S )NrÂ  )rÇ  )ro   r7   r6  r   r   rM   rd   r¾   )rÁ  rÇ  rP   rÅ  r5   r5   r6   Ú$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Ç  ri   ©ro   r7   r6  ri   r;   r   r   rM   rd   r¾   rx   ©rÁ  rÇ  rP   Z
X_originalrÅ  rö   rÜ  r5   r5   r6   Ú 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ã  r5   r5   r6   Ú!test_power_transformer_copy_FalseÛ	  s"    







rå  ro  çš™™™™™é?)r+  rT  )r0   r-   )r‹   c                 C   sB   t jdddd�}tdd�}| |¡ | ¡ t |jd ¡s>t‚d S )NrV   r-   ræ  r*  Fr\   r   )	r   r~   r   rM   rÈ   r7   r¿   rc   r;   )ro  rn  rR   r5   r5   r6   Ú7test_standard_scaler_sparse_partial_fit_finite_varianceù	  s    

rç  rï   )r   r-   )rk  r0   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   rj   rC   r0   r-   )
rò   ró   r   rM   r7   rô   rõ   Zr_rd   r	   )rï   rP   rR   ZX_minZX_maxre   r¸  r5   r5   r6   Ú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   rM   rÇ   rJ   rK   rL   rx   )rR   r'  r5   r5   r6   Ú-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ñ   rX   r¦   rg  rU   rY  é   é   é   r  éU   rB  r›   r,   r-   r¬   rl   rY   rO  rC   N)r7   r[   r‚   r×   r   r±   r²   r³   ÚRuntimeWarningr¾   r    r¹   r;   ru   rJ   rè   rv   rô   rõ   )ZX_non_gaussianrÅ  rö   r5   r5   r6   Ú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)rM   rò   ró   Úget_feature_names_outÚfeature_namesr   )rð  ÚtrÚ	names_outr5   r5   r6   Ú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)rJ   ZimportorskipZ	DataFramerò   ró   ró  rM   rò  r   ÚreÚescaperK   rL   rr   )rð  ÚpdZdfrô  Znames_out_df_defaultZnames_out_df_valid_inÚmsgÚinvalid_namesr5   r5   r6   Útest_one_to_one_features_pandasM
  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   )rW   rU   r-   c                 S   s   g | ]}d |› �‘qS )Zkernelcentererr5   r˜   r5   r5   r6   rš   w
  s     z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>N)r7   r~   r   r©  r"   r   rM   rò  r9   r   rœ   )rH   rP   Z
X_pairwiser¬  rõ  Zsamples_out2r5   r5   r6   Ú&test_kernel_centerer_feature_names_outm
  s    

rÿ  )Ár±   r  rù  Únumpyr7   Znumpy.linalgrÛ  rŽ  Zscipyr   r   rJ   Zsklearn.utilsr   Zsklearn.utils._testingr   r   r   r   r	   r
   r   r   Zsklearn.utils.sparsefuncsr   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.metrics.pairwiser"   Zsklearn.exceptionsr#   Zsklearn.baser$   Zsklearn.pipeliner%   Zsklearn.model_selectionr&   Zsklearn.svmr'   r(   Zsklearnr)   Z	load_irisrò   r~   r   rH   rO   rN   r‘   rÛ   r¤   rI   rÇ   r×   rn   ro   Útolistrp   ZX_list_1colr1   r:   rB   rS   ÚmarkZparametrizer[   r  rf   r{   rÚ   rÙ   r…   r8   r�   r‚   r•   r¥   rª   r¸   rº   rÀ   rÃ   rÓ   rÕ   rß   rå   rë   rì   rø   rÿ   r   r  r  r  r  r  r  r   r!  r%  r(  rá   r.  r/  r1  r7  r8  rA  rE  rJ  rR  rV  r]  rf  rh  ri  rl  rp  rq  rs  ru  rv  ry  rz  r|  r€  r‚  rƒ  r„  r…  r†  r™  rš  r›  rž  r¥  r§  r¯  r´  r¶  r¹  r»  r¼  r½  r¾  r¿  rÀ  rÆ  rÉ  rÏ  rÓ  rÔ  r6  r“   r9   rÕ  rÖ  rØ  rÙ  rÝ  rÞ  rß  rà  rä  rå  r’   rç  rè  ré  rï  rö  rþ  rÿ  r5   r5   r5   r6   Ú<module>   s  4"ý
üøùþ% ÿþþ ÿ' ÿ2
&403.

* '
I ÿ,F!	&9= /&%

$		.!810118,6		
		
*

ûþ
	
þþ	úþøþ