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

    Non-regression test for gh-26303
    r-  Nr   zColumn must not be all nan.r  r  r   )	rL   r  r=   r#  r   rN   rO   rP   r   )rT   r6  r  r;   r;   r<   1test_power_transformer_box_cox_raise_all_nans_col	  s    

r  r  皙?)r:  re  c                 C   s    g | ]}|t jd t jdqS ))r6   r3   )r   )r=   r   r#  )r   r>  r;   r;   r<   r   	  s   r   c                 C   sB   t jdddd}tdd}|||  t|jd s>J d S )NrZ   r3   r  r9  Fra   r   )r   r   r   rQ   r   r=   r   rh   )r  r  rV   r;   r;   r<   7test_standard_scaler_sparse_partial_fit_finite_variance	  s    
r  r  )r   r3   )r  r6   c                 C   s   t j}t| dd|}tj|ddtj|dd }}tj|d d d |dd  d f g}||}t	|| d | d | d | d gg d S )NT)r  r   r   ro   rG   r6   r3   )
r  r  r   rQ   r=   r  r   Zr_ri   r#   )r  rT   rV   ZX_minZX_maxrj   r  r;   r;   r<   test_minmax_scaler_clip	  s    (
r  c                  C   sX   t  t} d}tjt|d& | tdddf  W d   n1 sJ0    Y  dS )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   rQ   r   rN   rO   rP   r~   )rV   r6  r;   r;   r<   -test_standard_scaler_raise_error_for_1d_input	  s    r  c                  C   s   dt jg dd g d t jddd } t }t & tdt |	| }W d	   n1 sf0    Y  t 
t |rJ | td
ksJ | tdksJ | dksJ | dk sJ d	S )a  Check that significantly non-Gaussian data before transforms correctly.

    For some explored lambdas, the transformed data may be constant and will
    be rejected. Non-regression test for
    https://github.com/scikit-learn/scikit-learn/issues/14959
    r   )r  r\   r   r|  rY   )rj     r        r,  U   rS  r   r2   r3   r   Nrq   r]   r`  rG   )r=   r`   r   r   r   r   r   r   RuntimeWarningr   r   r   rz   rN   r   r|   r  r   )ZX_non_gaussianr  r  r;   r;   r<   1test_power_transformer_significantly_non_gaussian	  s    
(r  Transformerc                 C   s*   |   tj}|tj}t|tj dS )9Check one-to-one transformers give correct feature names.N)rQ   r  r  get_feature_names_outfeature_namesr'   )r  tr	names_outr;   r;   r<   test_one_to_one_features	  s    r  c                 C   s   t d}|jtjtjd}|  |}| }t|tj |tj}t|tj t	
d}t jt|d" td}|| W d   n1 s0    Y  dS )r  Zpandas)columnsz0input_features is not equal to feature_names_in_r   abcdN)rN   ZimportorskipZ	DataFramer  r  r  rQ   r  r'   reescaperO   rP   rw   )r  pdZdfr  Znames_out_df_defaultZnames_out_df_valid_inmsginvalid_namesr;   r;   r<   test_one_to_one_features_pandas 
  s    

r  c                  C   sX   t jd} | d}t|}t |}| }|jd }t	|dd t
|D  dS )z.Test that kernel centerer `feature_names_out`.r   )r[   rY   r3   c                 S   s   g | ]}d | qS )Zkernelcentererr;   r   r;   r;   r<   r   *
  r   z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>N)r=   r   r   r  r   r   rQ   r  r>   r'   r   )rL   rT   Z
X_pairwiser  r  Zsamples_out2r;   r;   r<   &test_kernel_centerer_feature_names_out 
  s    

r  c                 C   s~   g dg dg dg}t d| d|}t|jg d ||}||}||fD ]$}| rnt|t| qTt|| qTdS )z>Check that PowerTransfomer leaves constant features unchanged.)r`  r   rG   r  r  rk  N)r   rQ   r#   r  r   ri   r=   r{   )r  rT   r  ZXftZXtZXt_r;   r;   r<   'test_power_transformer_constant_feature-
  s    

r  )r  r   numpyr=   Znumpy.linalgr  r  rN   Zscipyr   r   Zsklearnr   Zsklearn.baser   Zsklearn.exceptionsr   Zsklearn.metrics.pairwiser   Zsklearn.model_selectionr   Zsklearn.pipeliner	   Zsklearn.preprocessingr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsklearn.preprocessing._datar   r   Zsklearn.svmr   Zsklearn.utilsr   r   Zsklearn.utils._array_apir    Z-sklearn.utils._test_common.instance_generatorr!   Zsklearn.utils._testingr"   r#   r$   r%   r&   r'   r(   r)   Zsklearn.utils.estimator_checksr*   Zsklearn.utils.fixesr+   r,   r-   r.   Zsklearn.utils.sparsefuncsr/   Z	load_irisr  r   r   rL   rS   rR   r   r   r   rM   r   r   rs   rt   tolistru   ZX_list_1colr7   r?   rF   rW   markZparametrizer`   r#  rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r!  r&  r'  r+  r/  r0  r1  r5  r7  r   r=  r?  rA  rH  rI  rR  rV  r[  rc  rg  ro  rx  r{  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rw   r  r  r  r  r  r  r  r  r  r  r  r  r  rG  r   r>   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r;   r;   r;   r<   <module>   s4  L(
*
%"2
&403
.
)	 &;

8

	&



9
A /
&
%


$		
)
 
8 

-
6,6	

		*




	

	