o
    tBhV                    @   sp
  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,ZFeAGeCeBeF eE ZHeHd ddf Id+eBZJeHddd f IeCd+ZKeJL ZMeKL ZNd.d/ ZOd0d1 ZPd2d3 ZQd4d5 ZRejSTg d6g d7g d8gg d7g d7g d8gd9d:gfg d;g d<gg d;g d<g d<g d<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>g d?d@dA ZWdBdC ZXejSTdDde	jYe	jZgejSTdEdFdGgdHdI Z[ejSTdJedFdKe&dFdLgejSTdDej\e	jYe	jZgejSTdEdFdGgejSTdMej]ej^gejSTdNg dOdPdQ Z_ejSTdRg dSejSTdTg dUejSTdMej]ej^gejSTd>ej\e	jYe	jZgdVdW Z`dXdY ZaedZd[ Zbd\d] Zcd^d_ Zdd`da Zedbdc Zfddde Zgdfdg ZhejSTdhdGdgdidj ZiejSTdhdGdgdkdl Zjdmdn Zkdodp Zldqdr Zmdsdt Zndudv ZoejSTdhdGdgdwdx ZpejSTdydGdFgejSTdzdGdFgejSTd>ej\e	jYe	jZgd{d| Zqd}d~ Zrdd Zsdd Ztdd Zudd Zvdd Zwdd ZxejSTddGdFgejSTddGdFgejSTdej?Gd-d=e	jyd-d=ddgdd Zzdd Z{dd Z|ejSTdg dejSTdg ddd Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZejSTdddg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 Zdd ZejSTdddgdd ZejSTdddgejSTddGdFgejSTdeKeHgdd Zdd Zdd Zdd ZejSTdeHeeHeeH eeHjgdd  ZejSTdddgdd Zdd Zdd Zdd ZejSTd	g d
dd Zdd ZejSTdddgdd ZejSTdddgejSTddGdFgdd ZejSTdddgejSTddGdFgdd ZejSTdddgejSTddGdFg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- ZdS (.      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   |/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/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sJ d S | | ||  |ksJ d S )Nr-   r5   )ibatch_start
batch_stopn
chunk_sizen_samples_seenr5   r5   r6   assert_correct_incrV   s   rA   c               	   C   s   ddg} ddg}t | |D ]7\}}t||}t|}t }t|dd }tt |j|||d W d    n1 s?w   Y  qd S )N      r-   sample_weight)ziprngrandnr   pytestraises
ValueErrorfit)
n_samplessn_featuress	n_samples
n_featuresXyscalersample_weight_notOKr5   r5   r6   9test_raises_value_error_if_sample_weights_greater_than_1d]   s   
rU   )XwrQ   rE   )r-   rB   rC   )                @      ?r-   r   r-   )r   r   r-   rC   array_constructor)array
sparse_csr
sparse_cscc           
      C   s   | d }t||}t| |} t| jd }t|d}|j| ||d t|jd }t|d}||| g dg dg}	t|j|j t|j	|j	 t|
|	|
|	 d S )Nr   r   	with_meanrD   )      ?g      @      @)rd   g      @g      @)
startswithr   r7   onesr9   r   rL   r   mean_var_	transform)
rV   rQ   rE   r]   rb   ywscaler_wrR   rS   X_testr5   r5   r6   "test_standard_scaler_sample_weightp   s   



rm   c                  C   s  t tttfD ]} t }|| j| dd}t| trt	| } t
| dkrOt|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sJ ||}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sJ d S 	NTcopyr-   r   axis        r[   rX   r-   )X_1rowX_1colX_list_1rowr   rL   ri   
isinstancelistr7   r^   r:   r   rg   ravelscale_rf   rP   r   mean
zeros_likestdn_samples_seen_r9   inverse_transform)rQ   rS   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 ur3||}d}t	|d}	|	j
||d|}
|j|
jksJJ |	jjt jksSJ |	jjt jks\J qd S )Nr   r0   rC   TFra   rD   )r7   randomRandomStaterf   float16float32float64rH   astyper   rL   ri   dtyperg   r{   )r   r   rG   rO   rP   rE   rb   r   rQ   rS   r   r5   r5   r6   test_standard_scaler_dtype   s$   
r   rS   ra   with_centeringr   constant)r   r[         Y@c                 C   s>  t | tr|rt| jj d tjd}d}d}|r)t	|j
|dd d}ni }tj||f||d}	||	}
| j|
fi ||
}t | trXt| jt|
jd d	d
 t| jt|
jd  t|drqt| |	 nt||
 t | tr|st|
| jd}t|drt| |  d S t|| d S d S d S )Nz# does not yet support sample_weightr   d   r-   r.   rB   rD   )r9   
fill_valuer   gHz>atolr1   ra   )rx   r   rI   skip	__class____name__r7   r   r   dictuniformfullrL   ri   r   r	   rh   zerosr9   r{   rf   r2   r1   r   rb   )rS   r   r   r   r   rG   rO   rP   
fit_paramsX_arrayrQ   r   
X_scaled_2r5   r5   r6   &test_standard_scaler_constant_features   s.   



r   rO   )r0   r   i'  average)g|=r-   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 
|ssJ t|
j| || ksJ 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   rB   Fra   r[   r,   )r7   r^   ranger9   emptyr   rL   finfor   epsanyallrh   r	   r{   logical_notlogical_andsqrt)rO   r]   r   r   	scale_min	scale_maxscalesrP   rQ   r   rS   r   boundswithin_boundsrepresentable_diffcommon_maskr5   r5   r6   +test_standard_scaler_near_constant_features  s&   "
($ r   c                  C   s\   g d} t | }| |fD ]}t|}t| d t| d tt|ddd| qd S )N)r[         @      @rs   rs   r[   Frb   with_std)r7   r^   r   r   r|   r~   r   )X_listX_arrrQ   r   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 d    n1 s%w   Y  t	t| t 
d t jdt dt jd} d}tjt|d t| }W d    n1 sXw   Y  t	|t 
d t jddt jd} t  tdt t| }W d    n1 sw   Y  t	|t 
d t jdd	t jd}d
}tjt|d t|}W d    n1 sw   Y  t	|t 
d t	|| tjt|d t|dd}W d    n1 sw   Y  t	|t 
d t	|| d S )N   gh㈵>r   errorr0   z:standard deviation of the data is probably very close to 0matchg0.++g}Ô%ITz$Dataset may contain too large valuesFr   )r7   r   logr   warningscatch_warningssimplefilterUserWarningr   r   r   rI   warns)xwarning_messagex_scaledx_small_scaledx_bigx_big_scaledx_big_centeredr5   r5   r6   (test_standard_scaler_numerical_stabilityT  s<   






r   c                  C   sX  t jd} d}d}| ||}d|d d df< t }||j|dd}t t |r/J |j	|ks6J t
|jdd|dg  t
|jddg d ||usSJ ||}||us^J ||usdJ t
|| t|d	d
d}t t |rzJ t
|jd	d|dg  t|d	dd}t t |rJ t
|jd	d|dg  t
|jd	d|dg  ||usJ ||j|d
d}t t |rJ t
|jdd|dg  t
|jddg d ||u sJ | dd}d|d d df< t }||j|dd}t t |rJ t
|jdd|dg  t
|jddg d ||us*J d S )Nr   rX   rW   rs   Tro   rq   rs   r[   r[   r[   r[   r-   F)rr   r   r[   )r7   r   r   rH   r   rL   ri   r   isnanr   r   r|   r~   r   r   )rG   rP   rO   rQ   rS   r   r   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 d    n1 s/w   Y  t 
|t j}t t |sHJ t||dd	 d S )
Nr   rX   r0   i@ r-   raise)overrB   decimal)r7   r   r   r   r   r   errstater   rL   ri   fit_transformr   r   isfiniter   )rG   rQ   rS   r   X_scaled_f64r5   r5   r6   test_scaler_float16_overflow  s   r   c                  C   sF   t g d} t| dd}t| t g d t|t g d d S )N)r   gؗҜ<r-   rB   rC   Tro   )r-   r-   r-   rB   rC   )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 ]	}|| | }q t|j|j t|j	|j	 |j
|j
ks@J t|j|j t|j|j t|j|j td|}t | | }t | | }t|j|j t|j	|j	 |j
|j
ksJ t|j|j t|j|j t|j|j t | }t }ttt|D ]\}}|| | }t||j|j|||j
d qqd S )Nr   r-   rB   2   *   r<   r=   r>   r?   r@   )X_2dr9   r   rL   r   rO   partial_fitr   	data_min_	data_max_r   data_range_r{   min_slice	enumeraterA   startstoprQ   r>   r?   scaler_batchscaler_incrbatchbatch0r;   r5   r5   r6   test_minmax_scaler_partial_fit  sH   

r   c               
   C   s  t } | jd }ddd||d fD ]}tdd| }tdd}tt|D ]	}|| | }q$t|j|j |j	|j	ks=J |j
|j
ksEJ td|}t | | }|dkrottjttjd|j	 ttjttjd|j nttj| | dd	|j	 ttj| | dd	|j t | }t }ttt|D ]\}}|| | }t||j|j|||j
d
 qt|j	|j	 |j
|j
ksJ qd S )Nr   r-   rB   r   r   Fr   r   rq   r   )r   r9   r   rL   r   rO   r   r   rg   rh   r   r   r7   r   rP   r   rf   r{   varr~   r   rA   r   r   r   r5   r5   r6    test_standard_scaler_partial_fit   sL   


	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 ]4}tdd|}tdd}|D ]}||}qd
}	|j
d usJ t	|j|j|	d t	|j|j|	d qwd S )Nr   rB   r   g  4&kg  4&kCr.   g     @@    .Ar-   gư>)rtol)r   rC   g@xDFra   )r7   r   r   r   rH   r   rL   r   reshaper	   rg   rh   r{   randintr   r   r   
csr_matrix
csc_matrix)rG   rP   rO   offsetsr   rQ   r   r   chunktolr/   r   X_csrX_cscrS   r5   r5   r6   4test_standard_scaler_partial_fit_numerical_stability3  s:   


r  rE   c                 C   s   t dgdgdgdgg}t|}t|}| r!t|jd } tdddd}||fD ],}|j	|| d
|}t| |  ||}t| |  t| |  q,d S )	Nr[   rs   r   r   FTrb   r   rp   rD   )r7   r^   r   r   r   rG   randr9   r   r   ri   r   r1   r   )rE   rQ   r   r   null_transformX_nullX_origr5   r5   r6   test_partial_fit_sparse_inputa  s   


r  c                 C   sv  t d dd d f }| rt|jd } t }tt|jd dD ]\}}|d |d d d f }| }| d u rGt |}|	|| }nt j|| d |d  d}|j	|| | | d}|
|}t|| t|| ||}	t||	 t|jd }
ttj}t|
|j|  t|
|j|  | d u r|d |jksJ q!t| d |d  t|jksJ q!d S )Nr   r   r-   rD   )r   rG   r  r9   r   r   r   rp   r   r   ri   r   r   r7   r   r   floatr   r   rh   r{   r   sumrI   approx)rE   rQ   r   r;   r   X_sofarchunks_copyscaled_batchscaled_incrright_inputzeroepsilonr5   r5   r6   .test_standard_scaler_trasform_with_partial_fitu  s>   




r  c                  C   sR   t jg dg dg dg dg dg dgt jd} t }||  ||  d S )N)r-   r-   r-   r   r-   r   )r   r   r   r-   r   r   )r-   rW   r-   r-   r   r   )r   r-   r   r   r-   r   )r   rW   r   r-   r   r-   r   )r7   r^   int32r   rL   r   )r   rS   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 d    d S 1 sw   Y  d S )Nr   rq   r-   r-   rB   feature_rangerB   )      333333?r  r  )rB   r-   )irisdatar   r   r   minmaxr   rI   rJ   rK   rL   )rQ   rS   X_transX_trans_invr5   r5   r6   test_min_max_scaler_iris  s.   











"r   c            	      C   s   g dg dg dg} g dg dg dg}t  }|| }g dg dg d	g}t|| ||}t| | ||}g dg d
g dg}t||dd t dd}|| }g dg dg dg}t|| t| }t|| t| dd}t|| d S )Nrs   r[         ?rs   r[   grs   r[   g?rs   rZ   r"        r[   rs   rs   r[   rc   )rs   rs   r"  rs   rs   rs   rs   rs   r[   )r'  rs   gsh|??)rs   rs   gS?rB   r   r  r  )r[   r[   rc   r[   r[   r[   )r[   r[   rZ   )r   r   r   r   ri   r   )	rQ   X_newrS   r  X_expected_0_1r  X_trans_newX_expected_0_1_newX_expected_1_2r5   r5   r6   *test_min_max_scaler_zero_variance_features  s&   








r1  c                  C   s>   t j} t| dd}ttj|ddd ttj|ddd d S )Nr-   rq   r   )r  r  r   r   r7   r  r  )rQ   r  r5   r5   r6   test_minmax_scale_axis1  s   r2  c                  C   sX  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sZJ ||}t||  qtd} t }|| | }| dks}J | dksJ |j| jd ksJ t  }| }| }t|| ||  t|dd d S rn   )ru   rv   rw   r   rL   ri   rx   ry   r7   r^   r:   r   r  r   rP   r  r   r9   r   rf   rz   r   )rQ   rS   r   r   X_1dr   max_r5   r5   r6   test_min_max_scaler_1d  s2   




r5  c                 C   s6  t jd}|dd}d|d d df< t|}t|}| r(||jd } t	
t t | W d    n1 s>w   Y  t	
t t | W d    n1 sYw   Y  tdddd}||}t|j|j ||}t|j|j tdd	j|| d
}|j|dd}	t t |	rJ tdd	j|| d
}
|
j|dd}t t |jrJ tdd	j|| d
}|j|dd}t t |jrJ 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 u r$t|	jddg dd t|	jddg d t|d\}}t||	jdd t||	jdd |	|usDJ ||usKJ ||	}||usWJ ||	us^J t|| |
|}||usoJ ||usvJ t| | |
| }||usJ ||usJ t| | d S )Nr   rW   rX   rs   r   FTr  ra   rD   ro   rq   rs   g{GzgQ@gffffffֿg(\rB   r   ) r7   r   r   rH   r   r   r   r  r9   rI   rJ   rK   r   rL   r   r   r  r   ri   r   r   r   rg   rh   r{   r   r|   r~   r   r   r1   tocsc)rE   rG   rQ   r   r   r  r  r  rS   r   
scaler_csrX_csr_scaled
scaler_cscX_csc_scaledX_csr_scaled_meanX_csr_scaled_varr   X_csr_scaled_backX_csc_scaled_backr5   r5   r6   test_scaler_without_centering%  sr   







r@  rb   r   c                 C   s   t jg dt jddgddt jgddt jggt jd}||}t|r*| r*td	 t| |d
}|	| t
|jt g d d S )Nr   r-   rC   rY   r0   rX   rW   r   r   r   z3'with_mean=True' cannot be used with sparse matrix.r   )rC   rW   rB   )r7   r^   nanr   r   issparserI   r   r   rL   r   r   )rb   r   r]   rQ   transformerr5   r5   r6   #test_scaler_n_samples_seen_with_nano  s   *

rE  c                 C   st   | j |j   u rd u sJ  J | j|j  u rd u s J  J | j|j  u r-d u s0J  J | j|jks8J d S )N)rg   rh   r{   r   )scaler_1scaler_2r5   r5   r6   "_check_identity_scalers_attributes  s      rH  c                  C   s>  t jg dg dg dgt jd} t| }| }tddd}|| }t|}||}t|}||}t	|| t	|| t
||  t|||gdD ]	\}	}
t|	|
 qO||  || || t|||gdD ]	\}	}
t|	|
 qq||  || || t|||gdD ]	\}	}
t|	|
 qd S )NrA  )rX   rY   r   )r   r   r0   r   Fr   rB   )r7   r^   r   r   r   r7  r   r   r$   r
   r	   	itertoolscombinationsrH  r   rL   )X_denser   r   transformer_denseX_trans_densetransformer_csrX_trans_csrtransformer_cscX_trans_csctrans_1trans_2r5   r5   r6   test_scaler_return_identity  s>   "















rT  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 d    n1 s<w   Y  t|j|j ||}t|j|j tj	dd	 tdd
|}|j|dd}W d    n1 stw   Y  t t |rJ tj	dd	 tdd
|}	|	j|dd}
W d    n1 sw   Y  t t |
jrJ tj	dd	 tdd
|}|j|dd}W d    n1 sw   Y  t t |jrJ t|j|	j t|j|	j t|j|	j t|j|j t|j|j t|j|j t|jddg dd t|jddg d t|
td\}}t||jdd t||jdd ||usGJ |
|usNJ ||}||usZJ ||usaJ t|| |	|
}||usrJ ||
usyJ t| | |	| }||usJ ||usJ t| | d S )Nr      )rW   rX   r.   r   FTr  )recordra   ro   rq   )rs   gX9v?gV-?g      5@gl?rB   r   )r7   r   r   r   r   r   r   r   r   r   r   r   r  r   rL   ri   r   r   r   rg   rh   r{   r|   r~   r   r   r  r1   r7  )rG   rQ   r   r   r  r  r  rS   r   r8  r9  r:  r;  r<  X_csr_scaled_stdr   r>  r?  r5   r5   r6   test_scaler_int  sp   






rX  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   rW   rX   rs   r   Fro   )rb   rp   )r7   r   r   rH   r   r   r   rp   r   rL   r   r1   )rG   rQ   r   r   X_copy
X_csr_copy
X_csc_copyr5   r5   r6   test_scaler_without_copy  s   


r\  c                  C   s  t jd} | dd}t|}t|}tt	 t
|dd W d    n1 s,w   Y  tt	 tdd| W d    n1 sIw   Y  tt	 t
|dd W d    n1 sdw   Y  tt	 tdd| W d    n1 sw   Y  tdd|}tt	 || W d    n1 sw   Y  tt	 || W d    n1 sw   Y  t||}tt	 || W d    n1 sw   Y  t||}tt	 || W d    d S 1 sw   Y  d S )Nr   rW   rX   Tra   )r7   r   r   rH   r   r   r   rI   rJ   rK   r   r   rL   ri   r   )rG   rQ   r   r   rS   X_transformed_csrX_transformed_cscr5   r5   r6   +test_scale_sparse_with_mean_raise_exception  s>   

$r_  c                  C   sN   t jddddgg} tjtdd t|  W d    d S 1 s w   Y  d S )NrX   rY      r   z,Input contains infinity or a value too larger   )r7   infrI   rJ   rK   r   rQ   r5   r5   r6   &test_scale_input_finiteness_validation2  s   
"rc  c                  C   sX   t dd} tdd}d}tjt|d ||  W d    d S 1 s%w   Y  d S )Nr+   r0   Tr   zCannot center sparse matricesr   )r   r  r   rI   rJ   rK   rL   )X_sparserS   err_msgr5   r5   r6   test_robust_scaler_error_sparse;  s   
"rf  r   with_scalingrQ   r"  densityc                 C   s   |rt | rtd t||d}||  |r#t|jtj	s"J n|jd u s*J |r7t|j
tj	s5J d S |j
d u s>J d S )Nz(RobustScaler cannot center sparse matrix)r   rg  )r   rC  rI   r   r   rL   rx   center_r7   ndarrayr{   )rQ   r   rg  rS   r5   r5   r6   test_robust_scaler_attributesC  s   

rl  c                  C   s   t jdd} d| d d df< t| } tdd}||  |jd t	dks*J |
| }t| d d df  |d d df   d S )Nr0   rX   r   Fr   r-   )r7   r   rH   r   r   r   rL   r{   rI   r
  ri   r	   r1   )rQ   rS   r  r5   r5   r6   "test_robust_scaler_col_zero_sparseX  s   



.rm  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   rW   rX   rs   rq   )
r7   r   r   rH   r   rL   ri   r   medianr~   )rG   rQ   rS   r   r5   r5   r6   test_robust_scaler_2d_arraysg  s   ro  ri  )r   g?皙?r"  r-   strictly_signed)positivenegativer   Nc                 C   s   t jdd| d }|dkrt|j|_n|dkr#t|j |_n|dkr2tj|jjtjd|_|	 }t
dd	}t
dd	}|| || t|j|j d S )
Nr+   rX   rh  rr  rs  r   r   Fr   )r   r  r7  r7   absr  r   r9   r   r1   r   rL   r	   r{   )ri  rq  rd  rK  scaler_sparsescaler_denser5   r5   r6   +test_robust_scaler_equivalence_dense_sparset  s   



rw  c                  C   s   t jd} | dd}t g dg}tdd}||}|t	|}||j
 }t| | ||}t||  d S )Nr   rW   rX   )rp  r[   rZ   rs   r'  Fr   )r7   r   r   rH   r^   r   rL   ri   r   r   r{   r   r1   r   )rG   rQ   
single_rowrS   	row_transrow_expectedrow_scaled_backr5   r5   r6   (test_robust_scaler_transform_one_row_csr  s   



r|  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   rq      K   qrr   r-   	r  r  r   r   r   r7   rn  r   
percentile)rQ   rS   r  r  r  iqrr5   r5   r6   test_robust_scaler_iris  s   


r  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   rq   r  r-   r  )rQ   rS   r  r  r  q_ranger5   r5   r6   !test_robust_scaler_iris_quantiles  s   



r  c                  C   s   t j} tdd}|| }||}t| | tddd}|| }||}t| | t| }||}||}t|j|j d S )Nr*   n_quantilesnormalr  output_distribution)	r  r  r   r   r   r   r   r   A)rQ   rD  r  r  rd  X_sparse_tranX_sparse_tran_invr5   r5   r6   test_quantile_transform_iris  s   









r  c                  C   s  t g dg dg dg} t| } t g dg dg dg}t|}d}tjt|d tdd|  W d    n1 sBw   Y  d	}tjt|d tdd
|  W d    n1 scw   Y  d}tjt|d tdd
|  W d    n1 sw   Y  tdd}d}tjt|d || W d    n1 sw   Y  ||  d}tjt|d |	| W d    n1 sw   Y  t g dg dg}d}tjt|d |
| W d    n1 sw   Y  tddd}d}tjt|d ||  W d    n	1 sw   Y  d|_||  |	| }d|_d}tjt|d |	|  W d    n	1 sGw   Y  d}tjt|d |
| W d    n	1 sfw   Y  tjtdd |	d W d    n	1 sw   Y  tdd}d}tjt|d}||  W d    n	1 sw   Y  t|dksJ |j| jd ksJ d S )N)
r   r~  r   r   r   r   r  r   r   r   )
rB   rW   r   r   rY   r   r   r0   r   r   )
r   r   @ffffff@r   r   ffffff@r         #@rp  )
rW   r   r   rY   r   r   r0   r   r   z#Invalid value for 'n_quantiles': 0.r   r   r  z!Invalid value for 'subsample': 0.)	subsamplezmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.r0   z>QuantileTransformer only accepts non-negative sparse matrices.zKX has 2 features, but QuantileTransformer is expecting 3 features as input.rndr  zP'output_distribution' has to be either 'normal' or 'uniform'. Got 'rnd' instead.r   z+Expected 2D array, got scalar array insteadr   zn_quantiles is set to n_samplesr-   )r7   	transposer   r   rI   rJ   rK   r   rL   ri   r   r  r   r   lenn_quantiles_r9   )rQ   X_negre  rD  
X_bad_featX_tranwarn_msgrV  r5   r5   r6   #test_quantile_transform_check_error  s   






r  c            	      C   s.  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 d    n1 s8w   Y  t ddgddgddgddgddgg}|	|}t
||j t g d	}t g d
}t g d}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 g d}t g d}t g d}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   TrX   )ignore_implicit_zerosr  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r   )r   r   r-   r   rB   rB   r-   r   r-   rB   r   )r   r   r-   r-   r-   r-   r-   r-   r-   r-   r-   )r   rW   r   r-   rB   rC   rW   rX   rY   r`  r   rs   r"  r[   )	r,   r,   r-   r   r   r   r-   r,   r-   )	r   r   r-   r-   r-   r-   r-   r-   r-   )	r   rW   r   r-   rB   rC   rW   rX   rY   g      ?r   )r  r  r  random_state)r7   r^   r   r   r   rI   r   r   rL   r   r   r  r   )	rQ   rd  rD  r   
X_expectedr  X_dataX_colX_rowr5   r5   r6   +test_quantile_transform_sparse_ignore_zeros  s\   (
(


,
r  c                  C   s   t g dg dg dg dg dg} tdd}||  || }t t jdd	dd
dj}tt j	|dd| t g dg dg}t g dg dg}t
||| ||}t
| | d S )N)r   rB   r  )r~  rW   r  )r   rY   r  )r  r   r  )r   r0   rp  rX   r  r   r-   )num)rC   r-   rq   )r,   r-   r   )e      r0   )r   r   r   r-   r-   r-   )r7   r^   r   rL   r   tilelinspaceTr   sortr   ri   r   )rQ   rD  r  r  rl   r  r5   r5   r6   !test_quantile_transform_dense_toyY  s*    



r  c            	      C   sN  d} d}t jt j| dfdd}d}g }t|D ]0}t||| d d}|| t dd|t |j	 }t 
t |}|d	k sDJ || qtt |t|ksWJ tj| dd
ddd}g }t|D ]0}t||| d d}|| t dd|t |j	 }t 
t |}|dk sJ || qgtt |t|ksJ d S )N@B r+   r-   r   rq   rX   r0   )r  r  r  {Gz?gGz?csc)ri  formatr  rp  )r7   r  r   sampler   r   rL   r  rz   
quantiles_r  rt  appendr  uniquer   r  )	rO   r  rQ   ROUNDinf_norm_arrr  rD  diffinf_normr5   r5   r6   #test_quantile_transform_subsamplingy  s>   

r  c                  C   s(  t g dg dg dg dg dg dg dg dg d	g d
g
} t| } tdd}||  || }tt j|	 ddd tt j
|	 ddd ||}t| 	 |	  tdd| 	 }|| }tt j|	 ddd tt j
|	 ddd ||}t| 	 |	  d S )N)rs   rZ   rs   )g      9@      @rs   )g      I@rs   r  )rs   rs   r  )rs   g      @rs   )rs   g       @rs   )g     R@rs   r  )rs   g      $@rs   )rs   rs   r  )r   rs   rp  r0   r  r   rq   rs   r[   )r7   r^   r   r   r   rL   r   r   r  r1   r  r   ri   )rQ   rD  r  r  rL  r5   r5   r6   "test_quantile_transform_sparse_toy  s6   






r  c                  C   sJ   t g dg dg dg} t| jddd}t| ddd}t||j d S )Nr   r~  r   r  r   rB   rW   rY   r   r0   r  r  r  r  rp  r   rX   )rr   r  r-   )r7   r^   r   r  r   )rQ   
X_trans_a0
X_trans_a1r5   r5   r6   test_quantile_transform_axis1  s   r  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sJ |	d
gg|	t |ggksJ |d	gg|t |jggksJ |d
gg|t |jggksJ d S )Nr   r-   rC   r  r  r"  rp  r  )r+   r-   r0   )r7   r^   r   r   r   r   r   r  rL   ri   r   r  r  r   references_)rK  rd  r  
X_trans_sprQ   X1rD  r5   r5   r6   test_quantile_transform_bounds  s2   




&&
r  c               	   C   sp   t j} tdgtd gdgdgdgdgdgg}| |fD ]}tddd	}||}||}t||d
d qd S )Nrs   r0   rc   rB   rC   rW   r+   r   r  	   r   )	r  r  r7   r^   r!   r   r   r   r   )X_1X_2rQ   rD  r  r  r5   r5   r6   #test_quantile_transform_and_inverse  s   *

r  c                  C   s   t t jdddgt jt jddgt jdddgg} tddd}||  t |jd d df  s3J t |jd d dd f  rEJ d S )Nr   r-   r"  r0   r   r  )	r7   r^   rB  r   r   r   r  r   r   )rQ   rD  r5   r5   r6   test_quantile_transform_nan  s
   0
 (r  
array_typer^   r   c                 C   s|   t g dd }d|dd }t|| }d}t|d|}|jd d df }t|dks1J tt 	|dks<J d S )	N)r   r-   r-   rB   rB   rC   rC   rW   rX   rX   r-   r-   r  r  r  r   r   r`  r0   rp  r,   r-   r   r  r   )
r7   r^   r   r   r   rL   r  r  r   r  )r  rQ   r  qt	quantilesr5   r5   r6   *test_quantile_transformer_sorted_quantiles  s   
r  c               	   C   sR   dD ]$} t | d}tjtdd |tj W d    n1 s!w   Y  qd S )N))r,   r  )r  )r0   r  )g      Y@r  )r  r   r  zInvalid quantile range: \(r   )r   rI   rJ   rK   rL   r  r  )range_rS   r5   r5   r6    test_robust_scaler_invalid_range%  s   
r  c                  C   s\  t jd} | dd}d|d d df< t|}t|dd}t t |r)J t|dd}t t |j	r:J t|
 dd}t||  tt t|ddd	 W d    n1 s`w   Y  t|jdd
g dd t|jdd
g d ||usJ t|d\}}t||jdd
 t||jdd
 t|dddd}t| |  d S )Nr   rW   rX   rs   r   Fra   r-   )rb   rr   rq   r6  rB   r   Tr  )r7   r   r   rH   r   r   r   r   r   r  r7  r   r1   rI   rJ   rK   r|   r~   r   )rG   rQ   r   r   r9  r;  r<  rW  r5   r5   r6   %test_scale_function_without_centering3  s.   
r  c                  C   sT   t j} t| dd}ttj|ddd tj|ddd}|d |d  }t|d d S )Nr-   rq   r   r}  r  r  r  r   r   r7   rn  r  rQ   r  r  r  r5   r5   r6   test_robust_scale_axis1W  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  r  r  r5   r5   r6   test_robust_scale_1d_array`  s   r  c                  C   s   g dg dg dg} t  }|| }g dg dg dg}t|| ||}t| | g dg dg d	g}||}g d
g dg dg}t||dd d S )Nr!  r#  r$  r)  )rs   rs   r'  r*  r%  r&  r(  )rs   r[   rs   )r'  rs   g_)rs   rs   gіs)?rC   r   )r   r   r   r   ri   )rQ   rS   r  r  r  r,  r.  X_expected_newr5   r5   r6   )test_robust_scaler_zero_variance_featuresi  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s:J |jt
jdddksFJ | t
jdddksSJ d S )Nr   r  r-   )r   r-   r   i)r-   c   T)r  unit_variancer   MbP?)rt  r  )r7   r   r   rH   vstackrf   r   rL   ri   rj  rI   r
  r{   r~   )rG   rQ   X_with_outliersr  robust_scalerr  r5   r5   r6    test_robust_scaler_unit_variance  s   $
r  c                  C   sH  g dg dg dg dg} t  }|| }g dg dg dg dg}t|| ||}t| | g dg d	g dg}||}g d
g d	g dg}t||dd t| }t|| t| }t| }	||}
||	}g dg dg dg dg}t|
j	| t|j	| ||
}||}t| |j	 t| |j	 d S )Nr!  )rs   r[   333333ӿr(  r)  )rs   r[   UUUUUU?)rs   r[   gɿ)rs   r[   r[   r%  r&  )rs   rZ   r  rB   r   )
r   r   r   r   ri   r   r   r   r   r  )rQ   rS   r  r  r  r,  r.  r  r   r   rO  rQ  X_trans_csr_invX_trans_csc_invr5   r5   r6   )test_maxabs_scaler_zero_variance_features  s@   











r  c                  C   sV   g dg dg dg dg} t  }|| }g dg dg dg dg}t|| d S )	N)rs   r[   r"  r'  )rs   r[   r  r  )rs   r[   g      Yrs   )rs   rs   rs   g       )rs   r[   g{Gzt?r  )rs   r[   g~jthg      п)rs   r[   r'  rs   )rs   rs   rs   r'  )r   r   r   )rQ   rS   r  r  r5   r5   r6   'test_maxabs_scaler_large_negative_value  s   
r  c                  C   sl   t g dg} t }|| }|| }t g dg}t| |  ||}t|  |  d S )N)r"  r[   r[   r+  )r   r   r   rL   ri   r   r1   r   )rQ   rS   r  r  r   r5   r5   r6   (test_maxabs_scaler_transform_one_row_csr  s   


r  c                  C   s(  t tttfD ]O} tdd}|| | }t| trt	| } t
| dkr5tt|jddtt ntt|jddd |j| jd ksKJ ||}t||  qtd} t }|| | }tt|jddd |j| jd ks|J t  }t| }t|| t|dd d S )NTro   r-   r   rq   r[   rt   )ru   rv   rw   r   rL   ri   rx   ry   r7   r^   r:   r   rt  r  rf   rP   r   r9   r   rz   r   )rQ   rS   r   r   r3  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 ]!}|| | }t| | }||}t| | }	||	}q.t	|j
|j
 t	|j
|j
 t	|j
|j
 |j|jksmJ |j|jksuJ |j|jks}J t	|j|j t	|j|j t	|j|j t	|| ||  td|}
t | |
 }t | |
 }t	|j
|j
 |j|jksJ t	|j|j t	|| ||  t | }t }tt||D ]\}}|| | }t||j|j|||jd qqd S )Nr   r   r-   rB   r   r   r   )r   r9   r   rL   r   r   r   r   r   r   max_abs_r   r{   ri   r   r   rA   r   r   )rQ   r>   r?   r   r   scaler_incr_csrscaler_incr_cscr   r   r   r   r;   r5   r5   r6   test_maxabs_scaler_partial_fit  sX   


r  c                  C   s  t jd} | dd}t|}d|dd d f< |jd }|jd }d|j||< t|}|||fD ]Q}tddd}|	|}||usGJ t
|}	tdd	d}|	|}||u s\J t
|}
|	|
fD ] }t |jd
d}tdD ]	}t|| d qst|d d qdq4tjtjtjfD ];}||}tdd	d	| }}||usJ t|tjsJ t
|}tdD ]	}t|| d qtt|d d qd S )Nr   rW   rX   rs   rC   l1Tnormrp   Fr-   rq   r[   l2)r7   r   r   rH   r   r   indptrr  r   ri   r1   rt  r	  r   r   
coo_matrixr   
lil_matrixrx   lar  )rG   rK  X_sparse_unprunedindptr_3indptr_4X_sparse_prunedrQ   
normalizerX_normX_norm1X_norm2row_sumsr;   initr5   r5   r6   test_normalizer_l1;  sB   





r  c                  C   s  t jd} | dd}t|}d|dd d f< |jd }|jd }d|j||< t|}|||fD ]N}tddd}|	|}||usGJ t
|}tdd	d}|	|}	|	|u s\J t
|	}	||	fD ]}
tdD ]}tt|
| d
 qjtt|
d d qdq4tjtjtjfD ]>}||}tdd	d	| }
}|
|usJ t|
tjsJ t
|
}
tdD ]}tt|
| d
 qtt|
d d qd S )Nr   rW   rX   rs   rC   r  Tr  Fr[   )r7   r   r   rH   r   r   r  r  r   ri   r1   r   r   r  r  r  r   r  rx   )rG   rK  r  r  r  r   rQ   r  r  r  r  r;   r  r5   r5   r6   test_normalizer_l2l  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 ]P}tddd}|	|}||usGJ t
|}tdd	d}|	|}	|	|u s\J t
|	}	||	fD ]}
t|
jd
d}tdD ]	}t|| d qrt|d d qdq4tjtjtjfD ];}||}tdd	d	| }
}|
|usJ t|
tjsJ t
|
}
tdD ]	}t|| d qtt|
d d qd S )Nr   rW   rX   rs   rC   r  Tr  Fr-   rq   r[   r  )r7   r   r   rH   r   r   r  r  r   ri   r1   rt  r  r   r   r  r   r  rx   r  r  )rG   rK  r  r  r  r   rQ   r  r  r  r  row_maxsr;   r  r5   r5   r6   test_normalizer_max  sB   





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 ]#}tdd	}|	|}||usJJ t
|}tt |t t
| q8d S )
Nr   rW   rX   rs   rC   rB   r,   r  r  )r7   r   r   rH   rt  argmaxr   r   r   ri   r1   r   sign)rG   rK  	X_all_negX_all_neg_sparserQ   r  r  r5   r5   r6   test_normalizer_max_sign  s   (


r  c               	   C   sd  t jddd} tt| ddt| jdddj tt	 tdggdd W d    n1 s2w   Y  tt	 tdggd	d
 W d    n1 sOw   Y  t jd}|dd}t
|}t d}||fD ]C} t jt jfD ]:}dD ]5}| |} t| |d
}|j|ksJ t|}|dkrt |jdd}n
|d }	|	jdd}t|| qzqvqnt g dg dg dg}dD ]3}t||dd\}
}|dkrt|t g d q|dkrt|t g d qt|t g d qt
|}dD ]}tt t||dd W d    n	1 sw   Y  qt|ddd\}
}t|t g d d S )N%   rC   rB   Fro   r   )rr   rp   rq   l3r  r0   rX   )r  r  r  r-   )r   r   r  )r[   rs   rs   )rZ   r   rs   )r  r  r  T)r  return_norm)      @r[   r   r  )r   r[   g1C+@)r  r[   r   r  )r7   r   r   rH   r   r   r  rI   rJ   rK   r   r   rf   r   r   r   r   r1   rt  r	  r   r^   NotImplementedError)rQ   rsrK  rd  rf   r   r  r  r  X_norm_squared_normsr5   r5   r6   test_normalize  sT    



r  c                  C   s  t g dg dg} t jttjtjfD ]}||  }tddd}t|	|}t 
|dkdks4J t 
|dkd	ks?J |	|}t|t|ksPJ tdd
|}t|	|}||useJ t 
|dkd	kspJ t 
|dkdks{J tdd
}|	|}||usJ t|}t 
|dkd	ksJ t 
|dkdksJ tdd
}|	|}|tur||u sJ tdd
}t jg dg dgt jd}|	|}|tur||u sJ t|}t 
|dkd	ksJ t 
|dkdksJ qtddd}t jtfD ]-}||  }t|	|}t 
|dkdksJ t 
|dkdks(J |	|}qtt |	t| W d    d S 1 sIw   Y  d S )N)r-   r   rX   )rB   rC   r,   rZ   T)	thresholdrp   r   rW   r-   rB   ro   Fr   r  rX   )r7   r^   ry   r   r   r   rp   r   r1   ri   r	  rC  rL   r   rI   rJ   rK   )X_r  rQ   	binarizerX_binX_floatr5   r5   r6   test_binarizer  sT   






$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   rX   rW   Fr   )rB   rW   )r7   r   r   random_sampler   rL   ri   dotr  r   r   r   	ones_liker9   r	   )rG   X_fitrS   X_fit_centeredK_fitcentererK_fit_centeredK_fit_centered2X_predK_predX_pred_centeredK_pred_centeredK_pred_centered2ones_MK_fit_centered3ones_prime_MK_pred_centered3r5   r5   r6   test_center_kernelJ  s.   









	 
r4  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   rU  c                 S   s(   t t j| dddt j| ddd gS )zOur mapping function phi.r   N)a_mina_max)r7   r  cliprb  r5   r5   r6   phi{  s
   z2test_kernelcenterer_non_linear_kernel.<locals>.phiFr   N)r7   r   r   rH   r   r   ri   r  r   rL   r	   r$  r9   )rG   rQ   rl   r8  phi_X
phi_X_testrS   phi_X_centerphi_X_test_centerKK_testK_centerK_test_centerkernel_centererr0  
K_centeredr2  K_test_centeredr5   r5   r6   %test_kernelcenterer_non_linear_kernelv  s.   	







	 rD  c                  C   s   t g dg dg dg dg} t d}| | j}t }td|fdt fg}| d s2J t	|||d	d
}t
|| d S )N)rC   r   r   )r   rC   r   )r   r   rC   r  )rW   rA  svrpairwiserB   )cv)r7   r^   rf   r#  r  r   r%   r'   	_get_tagsr&   r   )rQ   y_truer=  kcentpipeliney_predr5   r5   r6   test_cv_pipeline_precomputed  s   "
rM  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   rL   ri   r   r   )rG   rQ   objX_transformedX_transformed2r5   r5   r6   test_fit_transform  s   

rQ  c                  C   s>   ddgddgddgg} t | } t| g dg dg dg d S Nr-   r   )r-   r-   r   r\   )r   r   rb  r5   r5   r6   test_add_dummy_feature  s    rS  c                  C   Z   t ddgddgddgg} t| } t | sJ | t|  g dg dg dg d S rR  )r   r  r   isspmatrix_coor   r1   rb  r5   r5   r6   test_add_dummy_feature_coo     $rV  c                  C   rT  rR  )r   r   r   isspmatrix_cscr   r1   rb  r5   r5   r6   test_add_dummy_feature_csc  rW  rY  c                  C   rT  rR  )r   r   r   isspmatrix_csrr   r1   rb  r5   r5   r6   test_add_dummy_feature_csr  rW  r[  c                  C   sR   t j} | d d d df }tdddt t g}|D ]}||  || qd S )NrB   Fr   )r  r  r   r   r   r   )rQ   r   scalersrS   r5   r5   r6   test_fit_cold_start  s   

r]  c                  C   s^   t g dg dg dg} tjtdd t| jdd W d    d S 1 s(w   Y  d S )Nr  r  r  z1axis should be either equal to 0 or 1. Got axis=2r   rB   rq   )r7   r^   rI   rJ   rK   r   r  rb  r5   r5   r6   "test_quantile_transform_valid_axis  s   "r^  methodbox-coxyeo-johnsonc                 C   s   t | d}tt}tt || W d    n1 sw   Y  tt || W d    d S 1 s:w   Y  d S )Nr_  )	r   r7   rt  rv   rI   rJ   r#   ri   r   )r_  ptrQ   r5   r5   r6    test_power_transformer_notfitted  s   

"rd  standardizec                 C   s@   | dkr	t |n|}t| |d}||}t||| d S )Nr`  r_  re  )r7   rt  r   r   r   r   )r_  re  rQ   rc  r  r5   r5   r6   test_power_transformer_inverse		  s   
rg  c                  C   s   t t} dD ]Z}td|d}|| }t| d|d}t|  \}}|r*t	|}t
|dd| t
|dd| t
| || t
||jd  t|j| jd ksXJ t|jt jsaJ qd S )NTFr`  rf  r,   r-   r   )r7   rt  rv   r   r   r   r   boxcoxflattenr   r   r   r   lambdas_r  r9   rx   rk  )rQ   re  rc  r  X_trans_funcr  lambda_expectedr5   r5   r6   test_power_transformer_1d	  s   

rn  c            
      C   s   t t} dD ]l}td|d}|| }t| d|d}||fD ]>}t|jd D ]*}t	| d d |f 
 \}}|r?t|}t|d d |f | t||j|  q(||}	t|	|  qt|j| jd ksjJ t|jt jssJ qd S )Nrh  r`  rf  r-   )r7   rt  r   r   r   r   r   r9   r   ri  rj  r   r   rk  r   r   r  rx   rk  )
rQ   re  rc  X_trans_classrl  r  jr  lmbdaX_invr5   r5   r6   test_power_transformer_2d-	  s"   


rs  c                  C   s  t dd} | tt t}d}tjt|d | | W d    n1 s(w   Y  tjt|d | | W d    n1 sDw   Y  tjt|d t	|dd W d    n1 saw   Y  tjt|d | t
tj W d    n1 sw   Y  tjt|d | t
tj W d    n1 sw   Y  tjt|d t	t
tjdd W d    d S 1 sw   Y  d S )Nr`  rb  zstrictly positiver   )r   rL   r7   rt  r   rI   rJ   rK   ri   r   r   r9   )rc  X_with_negativesnot_positive_messager5   r5   r6   9test_power_transformer_boxcox_strictly_positive_exceptionH	  s,   
"rv  c                 C   s   t | dd d S )Nra  rb  r   rb  r5   r5   r6   +test_power_transformer_yeojohnson_any_inputd	  s   rw  c                 C   s   t | d}tt}|| d}tjt|d ||d d ddf  W d    n1 s0w   Y  tjt|d |	|d d ddf  W d    d S 1 sUw   Y  d S )Nrb  zBX has \d+ features, but PowerTransformer is expecting \d+ featuresr   r   r-   )
r   r7   rt  r   rL   rI   rJ   rK   ri   r   )r_  rc  rQ   wrong_shape_messager5   r5   r6   &test_power_transformer_shape_exceptionj	  s   


"ry  c                  C   sV   t dd} tt}d}tjt|d | | W d    d S 1 s$w   Y  d S )Nzmonty-pythonrb  z'method' must be one ofr   )r   r7   rt  r   rI   rJ   rK   rL   )rc  rQ   bad_method_messager5   r5   r6   'test_power_transformer_method_exception}	  s   

"r{  c                  C   sR   t ddd} ttd d ddf }tdg| _| |}t| || d S )Nr`  Frf  r   r-   )	r   r7   rt  r   r^   rk  ri   r   r   rc  rQ   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 )Nra  Frf  r   r-   )r   r7   rt  r   r^   rk  ri   r   r|  r5   r5   r6   !test_power_transformer_lambda_one	  s
   
r~  zmethod, lmbda))r`  rp  )r`  r"  )ra  rp  )ra  r"  )ra  r[   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/   Frf  rB   r   )r7   r   r   r  r   rk  r   r   r   linalgr  r|   r~   )r_  rq  rG   rO   rQ   rc  rr  X_inv_transr5   r5   r6   #test_optimization_power_transformer	  s   

r  c                  C   sD   g d} t | dd} tdd| j}t j|ddds J d S )	N)gffffff@g r[   rZ   gffffff?g333333@rd   gffffff@g?g@r  r   g"@g      @g      r,   r-   ra  rb  gzG?r  r   )r7   r^   r   r   rL   rk  allclose)rQ   rq  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 )Nrb  r   )r  rX   r   )r7   rt  rv   r   rL   rk  concatenate	full_likerB  r(   r   ri   r   r   )r_  rQ   rc  lmbda_no_nans
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`  )re  )rv   r7   rt  r   r   rL   ri   r   )r_  re  rQ   rc  r5   r5   r6   $test_power_transformer_fit_transform	  s
   
 r  c                 C   s   t }| dkrt|}| }||usJ t|| t| |dd}|| t|| ||}||us6J ||}t|| ||usFJ |	|}||usQJ d S )Nr`  Tre  rp   
rv   r7   rt  rp   r   r   rL   ri   r   r   r_  re  rQ   
X_originalrc  r  r  r5   r5   r6    test_power_transformer_copy_True	  s    







r  c                 C   s   t }| dkrt|}| }||usJ t|| t| |dd}|| t|| ||}||u s6J | dkr?t|}||}||u sJJ |	|}||u sUJ d S )Nr`  Fr  r  r  r5   r5   r6   !test_power_transformer_copy_False
  s"   







r  r  皙?)ri  r  )r0   r-   )r   c                 C   sB   t jdddd}tdd}|||  t|jd sJ d S )NrX   r-   r  rh  Fra   r   )r   r   r   rL   r   r7   r   rh   )r  r  rS   r5   r5   r6   7test_standard_scaler_sparse_partial_fit_finite_variance"
  s   

r  r  )r   r-   )r  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  r7  r   rq   rB   r0   r-   )
r  r  r   rL   r7   r  r  r_ri   r	   )r  rQ   rS   X_minX_maxrl   rO  r5   r5   r6   test_minmax_scaler_clip2
  s   (
r  c                  C   sZ   t  t} d}tjt|d | tdddf  W d   dS 1 s&w   Y  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   r   )rS   re  r5   r5   r6   -test_standard_scaler_raise_error_for_1d_input@
  s
   "r  c                  C   s   dt jg dd g d t jddd } t }t  tdt |	| }W d	   n1 s3w   Y  t 
t |rBJ | td
ksMJ | tdksXJ | dks`J | dk shJ 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  rZ   r   r  rW   )r     r        rU  U   r  r   r,   r-   r   Nrs   r[   r  rB   )r7   r^   r   r   r   r   r   r   RuntimeWarningr   r   r   r|   rI   r
  r~   r  r  )X_non_gaussianrc  r  r5   r5   r6   1test_power_transformer_significantly_non_gaussianL
  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_outr5   r5   r6   test_one_to_one_featuresd
  s   r  c                 C   s   t d}|jtjtjd}|  |}| }t|tj |tj}t|tj t	
d}t jt|d td}|| W d   dS 1 sKw   Y  dS )r  pandas)columnsz0input_features is not equal to feature_names_in_r   abcdN)rI   importorskip	DataFramer  r  r  rL   r  r   reescaperJ   rK   ry   )r  pddfr  names_out_df_defaultnames_out_df_valid_inmsginvalid_namesr5   r5   r6   test_one_to_one_features_pandasv
  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   )rY   rW   r-   c                 S   s   g | ]}d | qS )kernelcentererr5   r   r5   r5   r6   r   
  s    z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>N)r7   r   r   r"  r"   r   rL   r  r9   r   r   )rG   rQ   
X_pairwiser(  r  samples_out2r5   r5   r6   &test_kernel_centerer_feature_names_out
  s   

r  )r   rI  r  numpyr7   numpy.linalgr  r  scipyr   r   rI   sklearn.utilsr   sklearn.utils._testingr   r   r   r   r	   r
   r   r   sklearn.utils.sparsefuncsr   sklearn.preprocessingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.preprocessing._datar    r!   sklearn.metrics.pairwiser"   sklearn.exceptionsr#   sklearn.baser$   sklearn.pipeliner%   sklearn.model_selectionr&   sklearn.svmr'   r(   sklearnr)   	load_irisr  r   r   rG   rP   rO   r   r   r   rH   r   r   ru   rv   tolistrw   X_list_1colr1   r:   rA   rU   markparametrizer^   rB  rm   r   r   r   r   r8   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r1  r2  r5  r@  rE  rH  rT  rX  r\  r_  rc  rf  r  rl  rm  ro  rw  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   r4  rD  rM  rQ  rS  rV  rY  r[  r]  r^  rd  rg  rn  rs  rv  rt  r   r9   rw  ry  r{  r}  r~  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r5   r5   r5   r6   <module>   s  *
%'2
&403.

* '
I,F!	&X= /&%

$		.!810118,6		
		*



	
	