U
    9%e{                    @   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ZFeAGeCeBeF eE ZHeHd ddf IdeBZJeHddd f IeCdZKeJL ZMeKL ZNdd ZOdd ZPdd ZQdd ZRejSTd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jSTd'd(d)d*gd+d, ZWd-d. ZXejSTd/de
jYe
jZgejSTd0d1d2gd3d4 Z[ejSTd5e!d1d6e d1d7gejSTd/ej\e
jYe
jZgejSTd0d1d2gejSTd8ej]ej^gejSTd9d d&d:gd;d< Z_ejSTd=dd>d?gejSTd@dAddBgejSTd8ej]ej^gejSTd'ej\e
jYe
jZgdCdD Z`dEdF Zae:dGdH ZbdIdJ ZcdKdL ZddMdN ZedOdP ZfdQdR ZgdSdT ZhejSTdd2dgdUdV ZiejSTdd2dgdWdX ZjdYdZ Zkd[d\ Zld]d^ Zmd_d` Zndadb ZoejSTdd2dgdcdd ZpejSTded2d1gejSTdfd2d1gejSTd'ej\e
jYe
jZgdgdh Zqdidj Zrdkdl Zsdmdn Ztdodp Zudqdr Zvdsdt Zwdudv ZxejSTdwd2d1gejSTdxd2d1gejSTdej?Gdd!e
jydd!dydzgd{d| Zzd}d~ Z{dd Z|ejSTdd dddydgejSTdddddgdd Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZejSTdd(dgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ ZejSTdddgdd ZejSTdddgejSTdd2d1gejSTdeKeHgdd Zdd Zdd Zdd ZejSTdeHeeHeeH eeHjgdd ZejSTdddgdd Zdd Zdd ZejSTddddddgdd Zdd ZejSTdddgdd ZejSTdddgejSTdd2d1gdd ZejSTdddgejSTdd2d1gd d ZejSTdddgejSTdd2d1gdd Zdd ZejSTde
j?dddd de
Zejd	ejVd
gdd ZejSTdddgdd Zdd Zdd ZejSTdeee e!eegdd ZejSTdeee e!eeeegdd Zdd ZejSTdd2d1gdd Zd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/Darija-Ai-API/env/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rt|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st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st|	jjt jkst|	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rt| jt|
jd d	d
 t| jt|
jd  t|drt| |	 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   gHz>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 
|st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   gh㈵>r   errorr/   z:standard deviation of the data is probably very close to 0matchg0.++g}Ô%ITz$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	st	||}||k	st	||k	st	t|| t|d	d
d}t t |rt	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 |rt	t|jdd|dg  t|jdddddddg ||kst	| 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st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st
td|}t | | }|dkrt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 qd 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rt |}|	|| }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st||}t||  qtd} t }|| | }| dkst| 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	st||	}||k	st||	k	stt|| |
|}||k	st||k	stt| | |
|  }||k	s t||k	stt| | d S )Nr   rT   rU   rk   r   FTr   r[   rD   rg   ri   {GzQ@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 |rt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	stt|| |	|
}||k	st||
k	stt| | |	| }||k	st||k	stt| | d S )Nr      rT   rU   r-   r   FTr   )recordr[   rg   ri   rk   gX9v?gV-?g      5@gl?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 st|| q2tt |t|kst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|| qtt |t|ksNtd S )N@B r*   r,   r   ri   rU   r/   )rU  rH  rQ  {Gz?gGz?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st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 	 rt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stt	t 
|dkst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	st	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st| t
jdddkst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      Yg       g{Gzt?g~jthg      п)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st||}t||  qtd} t }|| | }tt|jddd |j| jd kst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st|j|jkst|j|jkstt	|j|j t	|j|j t	|j|j t	|| ||  td|}
t | |
 }t | |
 }t	|j
|j
 |j|jkstt	|j|j t	|| ||  t | }t }tt||D ]2\}}|| | }t||j|j|||jd qq0d 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	st
t|}	tdd	d}|	|}||kst
t|}
|	|
fD ]@}t |jd
d}tdD ]}t|| d qt|d d qqht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	st
t|}tdd	d}|	|}	|	|kst
t|	}	||	fD ]:}
tdD ]}tt|
| d
 qtt|
d d qqht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	st
t|}tdd	d}|	|}	|	|kst
t|	}	||	fD ]>}
t|
jd
d}tdD ]}t|| d qt|d d qqht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	st
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stt|}|dkrt |jdd}n|d }	|	jdd}t|| qqxqht 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 qt|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  g1C+@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st|	|}t|t|ksttdd|}t|	|}||k	stt 
|dkdkstt 
|dkd
kst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sttdd}t jdddgdddggt jd}|	|}|tk	r||kstt|}t 
|dkdkst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st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st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  gz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	st|
|}||k	st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st|
|}||kst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 )zCheck 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 |rt| tdkst| tdkst| dkst| dk st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	
		*





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