o
    `^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;   c/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/sklearn/preprocessing/tests/test_data.pyr7   P   s   
r7   c                 C   s   t | jd S )Nr   )npasarrayshaper9   r;   r;   r<   _check_dim_1axisV   s   r@   c                 C   s<   ||kr| d | |ksJ d S | | ||  |ksJ d S )Nr3   r;   )ibatch_start
batch_stopn
chunk_sizen_samples_seenr;   r;   r<   assert_correct_incrZ   s   rG   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      r3   sample_weight)ziprngrandnr   pytestraises
ValueErrorfit)
n_samplessn_featuress	n_samples
n_featuresXyscalersample_weight_notOKr;   r;   r<   9test_raises_value_error_if_sample_weights_greater_than_1da   s   
r[   )XwrW   rK   )r3   rH   rI   )                @      ?r3   r   r3   )r   r   r3   rI   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_meanrJ   )      ?g      @      @)rj   g      @g      @)
startswithr"   r=   onesr?   r   rR   r%   mean_var_	transform)
r\   rW   rK   rc   rh   ywscaler_wrX   rY   X_testr;   r;   r<   "test_standard_scaler_sample_weights   s   



rs   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copyr3   r   axis        ra   r^   r3   )X_1rowX_1colX_list_1rowr   rR   ro   
isinstancelistr=   rd   r@   r%   rm   ravelscale_rl   rV   r&   mean
zeros_likestdn_samples_seen_r?   inverse_transform)rW   rY   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r!t jt jg}nt jt jt jg}|D ]>}||||}	|d ur@||	}	d}t	|d}
|
j
|	|d|	}|	j|jksWJ |
jjt jks`J |
jjt jksiJ q+d S )Nr   r6   rI   TFrg   rJ   )r=   randomRandomStaterl   float64float32float16rN   astyper   rR   ro   dtyperm   r   )r   r   rM   rU   rV   rK   rh   supported_dtyper   rW   rY   r   r;   r;   r<   test_standard_scaler_dtype   s*   
r   rY   rg   with_centeringr   constant)r   ra         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}	|d u r;|	n||	}
| j|
fi ||
}t | tr^t| jt|
jd d	d
 t| jt|
jd  ||
uspJ t||
 t | tr|st|
| jd}||
usJ t||
 d S d S d S )Nz# does not yet support sample_weightr   d   r3   r4   rH   rJ   )r?   
fill_valuer   gHz>atolrg   )r~   r   rO   skip	__class____name__r=   r   r   dictuniformfullrR   ro   r   r#   rn   zerosr?   r   rl   r$   r   rh   )rY   r   r   r   r   rM   rU   rV   
fit_paramsX_arrayrW   r   
X_scaled_2r;   r;   r<   &test_standard_scaler_constant_features   s*   

r   rU   )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 rE|n||}	tdd	|	}
t t jj	}| | |d  | d |d  |d   }|d |k}t 
|syJ 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 )r6   r;   .0rA   r;   r;   r<   
<listcomp>  s    z?test_standard_scaler_near_constant_features.<locals>.<listcomp>r3   r   r   rH   Frg   ra   r2   )r=   rd   ranger?   emptyr   rR   finfor   epsanyallrn   r#   r   logical_notlogical_andsqrt)rU   r   r   r   	scale_min	scale_maxscalesrV   rW   r   rY   r   boundswithin_boundsrepresentable_diff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)ra         @      @ry   ry   ra   Frh   with_std)r=   rd   r   r&   r   r   r'   )X_listX_arrrW   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 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   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   rO   warns)xwarning_messagex_scaledx_small_scaledx_bigx_big_scaledx_big_centeredr;   r;   r<   (test_standard_scaler_numerical_stabilityR  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   r^   r]   ry   Tru   rw   ry   ra   ra   ra   ra   r3   F)rx   r   ra   )r=   r   r   rN   r   rR   ro   r   isnanr   r&   r   r   r   r   )rM   rV   rU   rW   rY   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/w   Y  t 
|t j}t t |sHJ t||dd	 d S )
Nr   r^   r6   i@ r3   raise)overrH   decimal)r=   r   r   r   r   r   errstater   rR   ro   fit_transformr   r   isfiniter&   )rM   rW   rY   r   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   rH   rI   Tru   )r3   r3   r3   rH   rI   )r=   rd   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 ]	}|| | }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   r3   rH   2   *   rB   rC   rD   rE   rF   )X_2dr?   r   rR   r   rU   partial_fitr&   	data_min_	data_max_r   data_range_r   min_slice	enumeraterG   startstoprW   rD   rE   scaler_batchscaler_incrbatchbatch0rA   r;   r;   r<   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   r3   rH   r   r   Fr   r   rw   r   )r   r?   r   rR   r   rU   r   r&   rm   rn   r   r   r=   r   rV   r   rl   r   varr   r   rG   r   r   r   r;   r;   r<    test_standard_scaler_partial_fit  sL   


	r   c                 C   sT  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}	||	}qzd
}
|j
d usJ t	|j|j|
d t	|j|j|
d d S )Nr   rH   r   g  4&kg  4&kCr4   g     @@    .Ar3   gư>)rtol)r   rI   g@xDFrg   r2   )r=   r   r   r   rN   r   rR   r   reshaper#   rm   rn   r   randintr   r   ndim)r   rM   rV   rU   offsetsr   rW   r   r   chunktolr5   r   rY   r;   r;   r<   4test_standard_scaler_partial_fit_numerical_stability1  s6   

r  rK   c                 C   s   |t dgdgdgdgg}| rt|jd } tdddd}|j|| d|}t|	 |	  |
|}t|	 |	  t|	 |	  d S )	Nra   ry   r   r   FTrh   r   rv   rJ   )r=   rd   rM   randr?   r   r   ro   r'   r7   r   )rK   r   rW   null_transformX_nullX_origr;   r;   r<   test_partial_fit_sparse_input`  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   r3   rJ   )r   rM   r  r?   r   r   r   rv   r   r   ro   r&   r   r=   r   r   floatr   r(   rn   r   r   sumrO   approx)rK   rW   r   rA   r   X_sofarchunks_copyscaled_batchscaled_incr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   r]   r3   r3   r   r   )r   r3   r   r   r3   r   )r   r]   r   r3   r   r3   r   )r=   rd   int32r   rR   r   )r   rY   r;   r;   r<   .test_standard_check_array_of_inverse_transform  s   
r  z#array_namespace, device, dtype_namecheck)ids	estimator)clipl1norml2maxc                 C   s   | j j}||| |||d d S )N)device
dtype_name)r   r   )r  r  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    d S 1 sw   Y  d S )Nr   rw   r3   r3   rH   feature_rangerH   )      333333?r+  r,  )rH   r3   )irisdatar   r   r&   minr"  r   rO   rP   rQ   rR   )rW   rY   X_transX_trans_invr;   r;   r<   test_min_max_scaler_iris  s.   











"r2  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ry   ra         ?ry   ra   gry   ra   g?ry   r`   r4        ra   ry   ry   ra   ri   )ry   ry   r4  ry   ry   ry   ry   ry   ra   )r9  ry   gsh|??)ry   ry   gS?rH   r   r(  r)  )ra   ra   ri   ra   ra   ra   )ra   ra   r`   )r   r   r&   r   ro   r   )	rW   X_newrY   r0  X_expected_0_1r1  X_trans_newX_expected_0_1_newX_expected_1_2r;   r;   r<   *test_min_max_scaler_zero_variance_features  s&   








rC  c                  C   s>   t j} t| dd}ttj|ddd ttj|ddd d S )Nr3   rw   r   )r-  r.  r   r&   r=   r/  r"  )rW   r0  r;   r;   r<   test_minmax_scale_axis1  s   rD  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 rt   )r{   r|   r}   r   rR   ro   r~   r   r=   rd   r@   r&   r/  r   rV   r"  r   r?   r   rl   r   r   )rW   rY   r   r   X_1dr   max_r;   r;   r<   test_min_max_scaler_1d  s2   




rG  c                 C   sL  t jd}|dd}d|d d df< ||}| r"||jd } tt t	 
| W d    n1 s8w   Y  t	ddj
|| d}|j|d	d
}t t |rXJ t	ddj
|| d}|j|d	d
}t t |jrtJ t|j|j t|j|j t|j|j t|j|j | d u rt|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 r$t	ddd	d}||}t|j|j ||}t|j|j d S d S )Nr   r]   r^   ry   r   Frg   rJ   Tru   rw   ry   g{GzgQ@gffffffֿg(\rH   r   r  )r=   r   r   rN   r  r?   rO   rP   rQ   r   rR   ro   r   r   r.  r&   rm   rn   r   r   r   r   r/   r   r   r7   r-   r   r'   )rK   r   rM   rW   X_sparserY   r   scaler_sparseX_sparse_scaledX_sparse_scaled_meanX_sparse_scaled_varr   X_sparse_scaled_backr	  r
  r  r;   r;   r<   test_scaler_without_centering;  s\   






rO  rh   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r"||}t|r.| r.td	 t| |d
}|	| t
|jt g d d S )Nr   r3   rI   r_   r6   r^   r]   r   r   r   z3'with_mean=True' cannot be used with sparse matrix.r   )rI   r]   rH   )r=   rd   nanr   r   issparserO   r   r   rR   r'   r   )rh   r   r   rW   transformerr;   r;   r<   #test_scaler_n_samples_seen_with_nanx  s   *

rT  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)rm   rn   r   r   )scaler_1scaler_2r;   r;   r<   "_check_identity_scalers_attributes  s      rW  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 )NrP  )r^   r_   r   )r   r   r6   r   Fr   )r=   rd   r   r   r   r#   r   r$   rW  r   rR   )r   X_denserI  transformer_denseX_trans_densetransformer_sparseX_trans_sparser;   r;   r<   test_scaler_return_identity  s   "









r]  c                 C   sr  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 s9w   Y  t 	t 
|rHJ tjdd tdd	|}|j|dd
}W d    n1 shw   Y  t 	t 
|jrxJ 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 r7tdddd}tjdd ||}W d    n	1 sw   Y  t|j|j ||}t|j|j d S d S )Nr      r]   r^   r4   r   T)recordFrg   ru   rw   )ry   gX9v?gV-?g      5@gl?rH   r   r  )r=   r   r   r  r   r   r   rR   ro   r   r   r.  r&   rm   rn   r   r   r   r/   r   r  r   r7   r-   r   r'   )r   rM   rW   rI  rY   r   rJ  rK  rL  X_sparse_scaled_stdr   rN  r	  r
  r  r;   r;   r<   test_scaler_int  sZ   





rb  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   r]   r^   ry   r   Fru   )rh   rv   )	r=   r   r   rN   rv   r   rR   r'   r7   )r   rM   rW   rI  X_copyX_sparse_copyr;   r;   r<   test_scaler_without_copy  s   
re  c                 C   s  t jd}|dd}| |}tt t|dd W d    n1 s&w   Y  tt tdd	| W d    n1 sCw   Y  tdd	|}tt |
| W d    n1 sew   Y  | |
|}tt || W d    d S 1 sw   Y  d S )Nr   r]   r^   Trg   )r=   r   r   rN   rO   rP   rQ   r   r   rR   ro   r   )r   rM   rW   rI  rY   X_transformed_sparser;   r;   r<   +test_scale_sparse_with_mean_raise_exception  s"   "rg  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 )Nr^   r_      r   z,Input contains infinity or a value too larger   )r=   infrO   rP   rQ   r   rW   r;   r;   r<   &test_scale_input_finiteness_validation  s   
"rk  c                  C   sX   t dd} tdd}d}tjt|d ||  W d    d S 1 s%w   Y  d S )Nr1   r6   Tr   zCannot center sparse matricesr   )r   r  r   rO   rP   rQ   rR   )rI  rY   err_msgr;   r;   r<   test_robust_scaler_error_sparse  s   
"rm  r   with_scalingrW   r4  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   rn  )r   rR  rO   r   r   rR   r~   center_r=   ndarrayr   )rW   r   rn  rY   r;   r;   r<   test_robust_scaler_attributes  s   

rs  csr_containerc                 C   s   t jdd}d|d d df< | |}tdd}|| |jd tdks)J ||}t	|d d dgf 
 |d d dgf 
  d S )Nr6   r^   r   Fr   r3   )r=   r   rN   r   rR   r   rO   r  ro   r#   r7   )rt  rW   rY   r0  r;   r;   r<   "test_robust_scaler_col_zero_sparse2  s   


2ru  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   r]   r^   ry   rw   )
r=   r   r   rN   r   rR   ro   r&   medianr   )rM   rW   rY   r   r;   r;   r<   test_robust_scaler_2d_arraysB  s   rw  rp  )r   g?皙?r4  r3   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 )
Nr1   r^   ro  rz  r{  r   r   Fr   )r   r  tocscr=   absr.  r   r?   r   r7   r   rR   r#   r   )rp  ry  rI  rX  rJ  scaler_denser;   r;   r<   +test_robust_scaler_equivalence_dense_sparseO  s   



r  c                 C   s~   t jd}|dd}t g dg}tdd}||}|| |}||j }t	|
 | ||}t	||
  d S )Nr   r]   r^   )rx  ra   r`   ry   r9  Fr   )r=   r   r   rN   rd   r   rR   ro   r   r&   r7   r   )rt  rM   rW   
single_rowrY   	row_transrow_expectedrow_scaled_backr;   r;   r<   (test_robust_scaler_transform_one_row_csre  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   rw      K   qrx   r3   	r-  r.  r   r   r&   r=   rv  r   
percentile)rW   rY   r0  r1  r  iqrr;   r;   r<   test_robust_scaler_irist  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)r6   Z   quantile_ranger   rw   r  r3   r  )rW   rY   r0  r1  r  q_ranger;   r;   r<   !test_robust_scaler_iris_quantiles  s   



r  csc_containerc                 C   s   t j}tdd}||}||}t|| tddd}||}||}t|| | |}||}||}t| |  d S )Nr0   n_quantilesnormal)r  output_distribution)r-  r.  r   r   r   r&   r7   )r  rW   rS  r0  r1  rI  X_sparse_tran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 s@w   Y  tdd	}d
}tjt|d || W d    n1 scw   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	|}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sJ |j|jd ksJ d S )N)
r   r  r   r   r   r   r  r   r   r   )
rH   r]   r   r   r_   r   r   r6   r   r   )
r   r   @ffffff@r   r   ffffff@r         #@rx  )
r]   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   )	subsampler  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=   	transposerO   rP   rQ   r   rR   ro   r   r   r   lenn_quantiles_r?   )r  rW   X_negrl  rS  
X_bad_featwarn_msgr`  r;   r;   r<   #test_quantile_transform_check_error  s`   


r  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 s7w   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   rH   Tr^   )ignore_implicit_zerosr  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r   )r   r   r3   r   rH   rH   r3   r   r3   rH   r   )r   r   r3   r3   r3   r3   r3   r3   r3   r3   r3   )r   r]   r   r3   rH   rI   r]   r^   r_   rh  r   ry   r4  ra   )	r2   r2   r3   r   r   r   r3   r2   r3   )	r   r   r3   r3   r3   r3   r3   r3   r3   )	r   r]   r   r3   rH   rI   r]   r^   r_   g      ?r   )r  r  r  random_state)r=   rd   r   rO   r   r   rR   r   r%   r7   r   )
r  rW   rI  rS  r   
X_expectedr0  X_dataX_colX_rowr;   r;   r<   +test_quantile_transform_sparse_ignore_zeros  sd   ((


,
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   rH   r  )r  r]   r  )r   r_   r  )r  r   r  )r   r6   rx  r^   r  r   r3   )num)rI   r3   rw   )r2   r3   r   )e      r6   )r   r   r   r3   r3   r3   )r=   rd   r   rR   r   tilelinspaceTr%   sortr&   ro   r   )rW   rS  r0  r  rr   r1  r;   r;   r<   !test_quantile_transform_dense_toy  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 r1   r3   r   rw   r^   r6   )r  r  r  {Gz?gGz?csc)rp  formatr  rx  )r=   r  r   sampler   r   rR   r  r   
quantiles_r"  r}  appendr  uniquer   r  )	rU   r  rW   ROUNDinf_norm_arrr  rS  diffinf_normr;   r;   r<   #test_quantile_transform_subsampling=  s>   

r  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   r^   N)r  r  r3   )r=   r   r   r  r   rR   r  r#   references_quantiler   r  )rW   r  rS  expected_references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)ry   r`   ry   )g      9@      @ry   )g      I@ry   r  )ry   ry   r  )ry   g      @ry   )ry   g       @ry   )g     R@ry   r  )ry   g      $@ry   )ry   ry   r  )r   ry   rx  r6   r  r   rw   ry   ra   )r=   rd   r   rR   r   r&   r/  r7   r"  r   ro   )r  rW   rS  r0  r1  rY  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   r  r   r  r   )rH   r]   r_   r   r6   )r  r  r  r  rx  r   r^   )rx   r  r3   )r=   rd   r   r  r&   )rW   
X_trans_a0
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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   r3   rI   r  r  r4  rx  r  )r1   r3   r6   )r=   rd   r   r   r&   r7   rR   ro   r   r/  r"  r   r  )r  rX  rI  r0  
X_trans_sprW   X1rS  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 ]}tddd	}||}||}t||d
d qd S )Nry   r6   ri   rH   rI   r]   r1   r   r  	   r   )	r-  r.  r=   rd   r   r   r   r   r&   )X_1X_2rW   rS  r0  r1  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  s3J t |jd d dd f  rEJ d S )Nr   r3   r4  r6   r   r  )	r=   rd   rQ  r   r   r   r  r   r   )rW   rS  r;   r;   r<   test_quantile_transform_nan  s
   0
 (r  
array_typerd   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   r3   r3   rH   rH   rI   rI   r]   r^   r^   r3   r3   r  r  r  r   r   rh  r6   rx  r2   r3   r   r  r   )
r=   rd   r   r"   r   rR   r  r  r   r  )r  rW   r  qt	quantilesr;   r;   r<   *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))r2   r  )r  )r6   r  )g      Y@r  )r  r   r  zInvalid quantile range: \(r   )r   rO   rP   rQ   rR   r-  r.  )range_rY   r;   r;   r<    test_robust_scaler_invalid_range  s   
r  c           	      C   sZ  t jd}|dd}d|d d df< | |}t|dd}t t |r(J t|dd}t t |jr9J 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   r]   r^   ry   r   Frg   r3   )rh   rx   rw   rH  rH   r   Tr  )r=   r   r   rN   r   r   r   r.  r|  r&   r7   rO   rP   rQ   r   r   r/   )	rt  rM   rW   X_csrr   X_csr_scaledX_csc_scaledX_csr_scaled_mean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   rw   r   r  r  r-  r.  r   r&   r=   rv  r  rW   r0  r  r  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   r  )r  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 )Nr3  r5  r6  r;  )ry   ry   r9  r<  r7  r8  r:  )ry   ra   ry   )r9  ry   g_)ry   ry   gіs)?rI   r   )r   r   r&   r   ro   )rW   rY   r0  r  r1  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s:J |jt
jdddksFJ | t
jdddksSJ d S )Nr   r  r3   )r   r3   r   i)r3   c   T)r  unit_variancer   MbP?)r}  r  )r=   r   r   rN   vstackrl   r   rR   ro   rq  rO   r  r   r   )rM   rW   X_with_outliersr  robust_scalerr0  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 )Nr3  )ry   ra   333333ӿr:  r;  )ry   ra   UUUUUU?)ry   ra   gɿ)ry   ra   ra   r7  r8  )ry   r`   r  rH   r   )r   r   r&   r   ro   r   r7   )r   rW   rY   r0  r  r1  r>  r@  r  rI  r\  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)ry   ra   r4  r9  )ry   ra   r  r+  )ry   ra   g      Yry   )ry   ry   ry   g       )ry   ra   g{Gzt?r+  )ry   ra   g~jthg      п)ry   ra   r9  ry   )ry   ry   ry   r9  )r   r   r&   )rW   rY   r0  r  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)r4  ra   ra   r=  )r   rR   ro   r&   r7   r   )rt  rW   rY   r0  r  r   r;   r;   r<   (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 )NTru   r3   r   rw   ra   rz   )r{   r|   r}   r   rR   ro   r~   r   r=   rd   r@   r&   r}  r"  rl   rV   r   r?   r   r   r   )rW   rY   r   r   rE  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skJ |j|jkssJ |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   r3   rH   r   r   r   )r   r?   r   rR   r   r   r&   max_abs_r   r   ro   r   r   rG   r   r   )rt  rW   rD   rE   r   r   scaler_incr_csrscaler_incr_cscr   r  X_cscr   rA   r;   r;   r<   test_maxabs_scaler_partial_fit  sX   


r   c                 C   s   | dkr$t |jdd}tdD ]	}t|| d qt|d d d	S | dkrEtdD ]}tt|| d q,tt|d d d	S | dkrht|jdd}tdD ]	}t|| d qUt|d d d	S d	S )
zr
    Convenient checking function for `test_normalizer_l1_l2_max` and
    `test_normalizer_l1_l2_max_non_csr`
    r  r3   rw   rI   ra   ry   r!  r"  N)r=   r}  r  r   r%   lar   r"  )r   X_normrow_sumsrA   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 ]8}t| dd}	|	|}
|
|usEJ t|
}
t| dd}	|	|}||u sZJ t|}|
|fD ]}t	| | qbq2d S )	Nr   r]   r^   ry   rI   Tr   rv   F)
r=   r   r   rN   indptrr.  r   ro   r7   r  )r   rt  rM   rX  X_sparse_unprunedindptr_3indptr_4X_sparse_prunedrW   
normalizerX_norm1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s'J t|r1|jdks3J t	|}t
| | d S )	Nr   r]   r^   ry   rI   Fr  csr)r=   r   r   rN   r   ro   r   rR  r  r7   r  )r   r   rM   rX  rW   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 ]#}tdd	}||}||usIJ t|}t	t 
|t 
t| q7d S )
Nr   r]   r^   ry   rI   rH   r2   r"  r  )r=   r   r   rN   r}  argmaxr   ro   r7   r'   sign)rt  rM   rX  	X_all_negX_all_neg_sparserW   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 ]C}t jt j	fD ]:}d
D ]5}|
|}t||d}|j|ksSJ t|}|dkret |jdd}	n
|d }
|
jdd}	t|	| q?q;q3t 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 q| |}d
D ]}tt t||dd W d    n1 sw   Y  qt|ddd\}}t|t g d d S )N%   rI   rH   Fru   r   )rx   rv   r6   r^   )r  r!  r  r  r3   rw   )r   r   r  )ra   ry   ry   )r`   r   ry   r  T)r   return_norm)      @ra   r   r!  )r   ra   g1C+@)r  ra   r   r"  )r=   r   r   rN   r'   r   r  rl   r   r   r   r   r7   r}  r  r&   rd   rO   rP   NotImplementedError)rt  rW   rsrX  rI  rl   r   r   r  r  X_norm_squared_normsr;   r;   r<   test_normalizem  sH    

r   constructorc                 C   s  t g dg dg}| | }tddd}t||}t |dkdks)J t |dkd	ks4J ||}t|t|ksEJ tdd
	|}t||}||usZJ t |dkd	kseJ t |dkdkspJ 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 tddd}| t jt
fv r"| | }t||}t |dkdksJ t |dkdksJ ||}| tv rGtt || | W d    d S 1 s@w   Y  d S d S )N)r3   r   r^   )rH   rI   r2   r`   T)	thresholdrv   r   r]   r3   rH   ru   Fr   r+  r^   )r=   rd   rv   r
   r7   ro   r  r   rR  rR   r   r   r,   rO   rP   rQ   )r!  X_rW   	binarizerX_binX_floatr;   r;   r<   test_binarizer  sV   








$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   r^   r]   Fr   )rH   r]   )r=   r   r   random_sampler   rR   ro   dotr  r   r   r&   	ones_liker?   r#   )rM   X_fitrY   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_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)a_mina_max)r=   r  r  rj  r;   r;   r<   phi  s
   z2test_kernelcenterer_non_linear_kernel.<locals>.phiFr   N)r=   r   r   rN   r   r   ro   r  r   rR   r#   r+  r?   )rM   rW   rr   r>  phi_X
phi_X_testrY   phi_X_centerphi_X_test_centerKK_testK_centerK_test_centerkernel_centererr7  
K_centeredr9  K_test_centeredr;   r;   r<   %test_kernelcenterer_non_linear_kernel   s.   	







	 rJ  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
s2J t|||dd	}t|| d S )
N)rI   r   r   )r   rI   r   )r   r   rI   r  )r]   rG  svrrH   )cv)r=   rd   rl   r*  r  r   r	   r   __sklearn_tags__
input_tagspairwiser   r&   )rW   y_truerC  kcentpipeliney_predr;   r;   r<   test_cv_pipeline_precomputed6  s   "
rT  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
   rR   ro   r   r'   )rM   rW   objX_transformedX_transformed2r;   r;   r<   test_fit_transformJ  s   

rX  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   rb   )r   r'   rj  r;   r;   r<   test_add_dummy_featureS  s    rZ  c                 C   sh   | ddgddgddgg}|j }t|}t|r|j |ks"J |t| g dg dg dg d S rY  )r  r   r   rR  r'   r7   )r   rW   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 ]}||  || qd S )NrH   Fr   )r-  r.  r   r   r   r   )rW   r   scalersrY   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w   Y  tt || W d    d S 1 s:w   Y  d S )Nr_  )	r   r=   r}  r|   rO   rP   r   ro   r   )r_  ptrW   r;   r;   r<    test_power_transformer_notfittedv  s   

"rd  standardizec                 C   s@   | dkr	t |n|}t| |d}||}t||| d S )Nr`  r_  re  )r=   r}  r   r   r%   r   )r_  re  rW   rc  r0  r;   r;   r<   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  r2   r3   r   )r=   r}  r|   r   r   r   r   boxcoxflattenr   r%   r   r   lambdas_r  r?   r~   rr  )rW   re  rc  r0  X_trans_funcr  lambda_expectedr;   r;   r<   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  r3   )r=   r}  r   r   r   r   r   r?   r   ri  rj  r   r%   rk  r   r&   r  r~   rr  )
rW   re  rc  X_trans_classrl  r0  jr  lmbdaX_invr;   r;   r<   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   rR   r=   r}  r   rO   rP   rQ   ro   r   r   r?   )rc  X_with_negativesnot_positive_messager;   r;   r<   9test_power_transformer_boxcox_strictly_positive_exception  s,   
"rv  c                 C   s   t | dd d S )Nra  rb  )r   rj  r;   r;   r<   +test_power_transformer_yeojohnson_any_input  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   r3   )
r   r=   r}  r   rR   rO   rP   rQ   ro   r   )r_  rc  rW   wrong_shape_messager;   r;   r<   &test_power_transformer_shape_exception  s   


"ry  c                  C   sR   t ddd} ttd d ddf }tdg| _| |}t| || d S )Nr`  Frf  r   r3   )	r   r=   r}  r   rd   rk  ro   r&   r   rc  rW   r0  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 )Nra  Frf  r   r3   )r   r=   r}  r   rd   rk  ro   r&   rz  r;   r;   r<   !test_power_transformer_lambda_one  s
   
r|  zmethod, lmbda))r`  rx  )r`  r4  )ra  rx  )ra  r4  )ra  ra   c                 C   s   t jd}d}|jdd|dfd}| dkr!t |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   Frf  rH   r   )r=   r   r   r  r  r   rk  r   r   r%   linalgr   r   r   )r_  rq  rM   rU   rW   rc  rr  X_inv_transr;   r;   r<   #test_optimization_power_transformer	  s   

r  c                  C   s4   t ddd} dg| _| dgg}t|sJ d S )Nr`  Frf  r4  g )r   rk  r   r=   r   )rc  rr  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 ra   r`   gffffff?g333333@rj   gffffff@g?g@r  r   g"@g      @g      r2   r3   ra  rb  gzG?r  r   )r=   rd   r   r   rR   rk  allclose)rW   rq  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 )Nrb  r   )r  r^   r   )r=   r}  r|   r   rR   rk  concatenate	full_likerQ  r   r%   ro   r'   r   )r_  rW   rc  lmbda_no_nans
lmbda_nansr0  r;   r;   r<   test_power_transformer_nans?	  s   






r  c                 C   sB   t }| dkrt|}t| |d}t||||| d S )Nr`  )re  )r|   r=   r}  r   r&   rR   ro   r   )r_  re  rW   rc  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s6J ||}t|| ||usFJ |	|}||usQJ d S )Nr`  Tre  rv   
r|   r=   r}  rv   r&   r   rR   ro   r   r   r_  re  rW   
X_originalrc  r0  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 s6J | dkr?t|}||}||u sJJ |	|}||u sUJ d S )Nr`  Fr  r  r  r;   r;   r<   !test_power_transformer_copy_False~	  s"   







r  c                  C   sh   t d} tj| dddf< d}tdd}tjt|d ||  W d   dS 1 s-w   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`  rb  r   )	rM   r)  r=   rQ  r   rO   rP   rQ   r   )rW   rl  rc  r;   r;   r<   1test_power_transformer_box_cox_raise_all_nans_col	  s   

"r  r  皙?)rp  r  c                 C   s    g | ]}|t jd t jdqS ))r6   r3   )r   )r=   r   rQ  )r   rt  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 )Nr^   r3   r  ro  Frg   r   )r   r   r   rR   r   r=   r   rn   )r  r  rY   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   rw   rH   r6   r3   )
r-  r.  r   rR   r=   r/  r"  r_ro   r#   )r*  rW   rY   X_minX_maxrr   rV  r;   r;   r<   test_minmax_scaler_clip	  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   rR   r   rO   rP   rQ   r   )rY   rl  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 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,  r`   r   r  r]   )r     r        r^  U   r  r   r2   r3   r   Nry   ra   r  rH   )r=   rd   r   r   r   r   r   r   RuntimeWarningr   r   r   r   rO   r  r   r/  r"  )X_non_gaussianrc  r0  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)rR   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   dS 1 sKw   Y  dS )r  pandas)columnsz0input_features is not equal to feature_names_in_r   abcdN)rO   importorskip	DataFramer-  r.  r  rR   r  r'   reescaperP   rQ   r   )r  pddfr  names_out_df_default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_   r]   r3   c                 S   s   g | ]}d | qS )kernelcentererr;   r   r;   r;   r<   r   *
  s    z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>N)r=   r   r   r)  r   r   rR   r  r?   r'   r   )rM   rW   
X_pairwiser/  r  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 ]}| r7t|t| q*t|| q*dS )z>Check that PowerTransfomer leaves constant features unchanged.)r  r   rH   ra  rf  r  N)r   rR   r#   rk  r   ro   r=   r   )re  rW   rc  XftXtXt_r;   r;   r<   'test_power_transformer_constant_feature-
  s   

r  )r  r   numpyr=   numpy.linalgr~  r  rO   scipyr   r   sklearnr   sklearn.baser   sklearn.exceptionsr   sklearn.metrics.pairwiser   sklearn.model_selectionr   sklearn.pipeliner	   sklearn.preprocessingr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.preprocessing._datar   r   sklearn.svmr   sklearn.utilsr   r   sklearn.utils._array_apir    -sklearn.utils._test_common.instance_generatorr!   sklearn.utils._testingr"   r#   r$   r%   r&   r'   r(   r)   sklearn.utils.estimator_checksr*   sklearn.utils.fixesr+   r,   r-   r.   sklearn.utils.sparsefuncsr/   	load_irisr-  r   r   rM   rV   rU   r   r  r   rN   r   r   r{   r|   tolistr}   X_list_1colr7   r@   rG   r[   markparametrizerd   rQ  rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r'  r2  rC  rD  rG  rO  rT  rW  r]  rb  re  rg  rk  rm  r  rs  ru  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  r   r   r'  r;  rJ  rT  rX  rZ  r\  r^  rd  rg  rn  rs  rv  r}  r   r?   rw  ry  r{  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r;   r;   r;   r<   <module>   s6  L(
*
%"2
&403
.
)	 &;

8

	&



9
A /
&
%


$		
)
 
8 

-
6,6	

		*




	

	