
     h|                        d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dlm#Z# d dlm$Z$ d dlm%Z% d dlm&Z& d dlm'Z' d dlm(Z( d dlm)Z) d dlm*Z* d dl+m,Z, d dl+m-Z- d d l.m/Z/ d d!l0m1Z1 d d"l2m3Z3 d d#l4m5Z5 d d$l6m7Z7 d d%l8m9Z9 d d&lm:Z: d d'l;m<Z<  e<j=                    Z>ej?        @                    d           ZAd(ZBd)ZCeAD                    d*d+eB,          ZEeAD                    d+d-eB,          ZFeAG                    eCeB          eFz  eEz   ZHeHd ddf         I                    d+eB          ZJeHddd f         I                    eCd+          ZKeJL                                ZMeKL                                ZNd. ZOd/ ZPd0 ZQd1 ZRejS        T                    g d2g d3g d4gg d3g d3g d4gd5d6gfg d7g d8gg d7g d8g d8g d8g ejU        d+d9g          fd+ejV        d+gejV        ejV        d+ggd+ejV        d+gejV        ejV        d+gejV        ejV        d+gejV        ejV        d+gg ejU        d+d9g          fg          ejS        T                    d:g d;          d<                         ZWd= ZXejS        T                    d>de	jY        e	jZ        g          ejS        T                    d?d@dAg          dB                         Z[ejS        T                    dC ed@D           e&d@E          g          ejS        T                    d>ej\        e	jY        e	jZ        g          ejS        T                    d?d@dAg          ejS        T                    dFej]        ej^        g          ejS        T                    dGg dH          dI                                                             Z_ejS        T                    dJg dK          ejS        T                    dLg dM          ejS        T                    dFej]        ej^        g          ejS        T                    d:ej\        e	jY        e	jZ        g          dN                                                 Z`dO ZaedP             ZbdQ ZcdR ZddS ZedT ZfdU ZgdV ZhejS        T                    dWdAdg          dX             ZiejS        T                    dWdAdg          dY             ZjdZ Zkd[ Zld\ Zmd] Znd^ ZoejS        T                    dWdAdg          d_             ZpejS        T                    d`dAd@g          ejS        T                    dadAd@g          ejS        T                    d:ej\        e	jY        e	jZ        g          db                                     Zqdc Zrdd Zsde Ztdf Zudg Zvdh Zwdi ZxejS        T                    djdAd@g          ejS        T                    dkdAd@g          ejS        T                    dlej?        G                    d-d9           e	jy        d-d9dmn          g          do                                     Zzdp Z{dq Z|ejS        T                    drg ds          ejS        T                    dtg du          dv                         Z}dw Z~dx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd ZejS        T                    dddg          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZejS        T                    dddg          d             ZejS        T                    dddg          ejS        T                    ddAd@g          ejS        T                    dleKeHg          d                                     Zd Zd Zd ZejS        T                    dleH ej        eH           ej        eH            ej        eHj                  g          d             ZejS        T                    dddg          d             Zd Zd ZejS        T                    dg d          d             Zd ZejS        T                    dddg          d             ZejS        T                    dddg          ejS        T                    ddAd@g          d                         ZejS        T                    dddg          ejS        T                    ddAd@g          d                         ZejS        T                    dddg          ejS        T                    ddAd@g          d                         ZejS        T                    d e	j?        d-d+dd            e	jZ         ej        dejV                            g          d             ZejS        T                    dddg          d             Zd ZdÄ ZejS        T                    de e$e&ee"e)g          dń             ZejS        T                    de e$e&ee"e)eeg          dƄ             ZdǄ ZdS )    N)sparsestats)gen_batches)assert_almost_equal)assert_array_almost_equal)assert_array_equal)assert_array_less)assert_allclose)assert_allclose_dense_sparse)skip_if_32bit)_convert_container)mean_variance_axis)	Binarizer)KernelCenterer)
Normalizer)	normalize)StandardScaler)scale)MinMaxScaler)minmax_scale)QuantileTransformer)quantile_transform)MaxAbsScaler)maxabs_scale)RobustScaler)robust_scale)add_dummy_feature)PowerTransformerpower_transform)_handle_zeros_in_scale)BOUNDS_THRESHOLD)linear_kernel)NotFittedError)clone)Pipeline)cross_val_predict)SVR)shuffle)datasets        size
   c                 N    t          | d          r|                                 } | S )Ntoarray)hasattrr3   as    a/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/preprocessing/tests/test_data.pyr3   r3   L   s&    q) IIKKH    c                 @    t          j        |           j        d         S )Nr   )npasarrayshaper5   s    r7   _check_dim_1axisr=   R   s    :a==q!!r8   c                 T    ||k    r| dz   |z  |k    sJ d S | |z  ||z
  z   |k    sJ d S )Nr.    )ibatch_start
batch_stopn
chunk_sizen_samples_seens         r7   assert_correct_incrrF   V   sP    QA#~555555:~k!9:nLLLLLLr8   c                     ddg} ddg}t          | |          D ]\  }}t                              ||          }t                              |          }t                      }t                              |d          dz  }t	          j        t                    5  |                    |||           d d d            n# 1 swxY w Y   d S )N      r.   sample_weight)ziprngrandnr   pytestraises
ValueErrorfit)
n_samplessn_featuress	n_samples
n_featuresXyscalersample_weight_notOKs           r7   9test_raises_value_error_if_sample_weights_greater_than_1dr[   ]   s    QJa&K!$Z!=!= 
@ 
@	:IIi,,IIi  !! "ii	155:]:&& 	@ 	@JJq!+>J???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
@ 
@s   B==C	C	)XwrW   rK   )r.   rH   rI   )                @      ?r.   r   r.   )r   r   r.   rI   array_constructor)array
sparse_csr
sparse_cscc                 n   |                     d           }t          ||          }t          | |          } t          j        | j        d                   }t          |          }|                    | ||           t          j        |j        d                   }t          |          }|                    ||           g dg dg}	t          |j        |j                   t          |j	        |j	                   t          |
                    |	          |
                    |	                     d S )Nr   r   	with_meanrJ   )      ?g      @      @)rk   g      @g      @)
startswithr   r:   onesr<   r   rR   r   mean_var_	transform)
r\   rW   rK   rc   ri   ywscaler_wrX   rY   X_tests
             r7   "test_standard_scaler_sample_weightrt   p   s    . &00:::I1/00A	B 1	2	2B 
!		B	222HLLR}L555 	
Ai000F
JJq!oo/Fhn555X]333((00(2D2DV2L2LMMMMMr8   c                     t           t          t          t          fD ]O} t                      }|                    |                               | d          }t          | t                    rt          j	        |           } t          |           dk    rt          |j        |                                            t          |j        t          j        t                                t#          |                    d          t          j        t                                t#          |                    d          t          j        t                                nt          |j        |                                            t          |j        |                                            t#          |                    d          t          j        t                                t#          |                    d          d           t#          |                    d          d           |j        | j        d         k    sJ |                    |          }t#          ||            Qt          j        d          } t                      }|                    |                               | d          }t          |j        d           t          |j        d           t#          |                    d          d           t#          |                    d          d           |j        | j        d         k    sJ d S 	NTcopyr.   r   axis        ra   r^   r.   )X_1rowX_1colX_list_1rowr   rR   rp   
isinstancelistr:   rd   r=   r   rn   ravelscale_rm   rV   r   mean
zeros_likestdn_samples_seen_r<   inverse_transform)rW   rY   X_scaledX_scaled_backs       r7   test_standard_scaler_1dr      s   fk;7 4 4!!::a==**14*88a 	AA!##aggii888rwz/B/BCCC%hmmm&;&;R]:=V=VWWW%hlll&:&:BM*<U<UVVVVaffhh777quuww777%hmmm&;&;R]:=V=VWWW%hmmm&;&;SAAA%hlll&:&:C@@@%3333 00::!-3333 	AFzz!}}&&qt&44Hc***s+++hmmm33S999hlll22C888!QWQZ//////r8   sparse_constructoradd_sample_weightFTc                 F   t           j                            d          }d}d}| rt          j        |          }nd }d}t           j        t           j        t           j        fD ]}|                    ||                              |          }| ||          }d}t          |          }	|	
                    ||                              |          }
|j        |
j        k    sJ |	j        j        t           j        k    sJ |	j        j        t           j        k    sJ d S )Nr   r1   rI   TFrh   rJ   )r:   randomRandomStaterm   float16float32float64rN   astyper   rR   rp   dtypern   r   )r   r   rM   rU   rV   rK   ri   r   rW   rY   r   s              r7   test_standard_scaler_dtyper      s#    )


"
"CIJ 	**I*bj"*5 
1 
1IIi,,33E::)""1%%AI)444::a}:==GGJJw(.((((|!RZ////}"bj00000
1 
1r8   rY   rh   with_centeringr   constant)r   ra         Y@c                 (   t          | t                    r#|r!t          j        | j        j         d           t          j                            d          }d}d}|r(t          |
                    |          dz            }ni }t          j        ||f||          }	 ||	          }
 | j        |
fi |                    |
          }t          | t                    r4t          | j        t          j        |
j        d                   d	
           t          | j        t          j        |
j        d                              t+          |d          r#t          |                                |	           nt          ||
           t          | t                    rp|spt/          |
| j                  }t+          |d          r6t          |                                |                                           d S t          ||           d S d S d S )Nz# does not yet support sample_weightr   d   r.   r/   rH   rJ   )r<   
fill_valuer   gHz>atolr3   rh   )r   r   rO   skip	__class____name__r:   r   r   dictuniformfullrR   rp   r   r
   ro   zerosr<   r   rm   r4   r3   r   ri   )rY   r   r   r   r   rM   rU   rV   
fit_paramsX_arrayrW   r   
X_scaled_2s                r7   &test_standard_scaler_constant_featuresr      s   " &,'' W,= Wv'0UUUVVV
)


"
"CIJ (C(Ca(GHHH


gY
3PUVVVG7##Avz!**z**44Q77H&.)) FRXagaj%9%9EEEE FM27171:#6#6777x## %((**G4444!$$$&.)) 42C 41(8999
:y)) 	4J..00*2D2D2F2FGGGGGJ
333334 4 4 4r8   rU   )r1   r   i'  average)g|=r.   g    _Bc                 2   d\  }}t          j        d t          ||dz             D             |          }|j        d         }t          j        | |f|          }||z   |d | dz  d d f<   ||z
  || dz  d d d f<    ||          }	t          d                              |	          }
t          j        t           j                  j	        }| |z  |dz  z  | dz  |dz  z  |dz  z  z   }|dz  |k    }t          j
        |          sJ t          |
j        |         ||         k              sJ t          |
j        |         d	           |dd d f         |d
d d f         z
  dk    }t          |
j        t          j        |                   d           t          |
j        t          j        |                   d           t          j        |dz  |k    |          }t          |
j        |         t          j        |
j                  |                    d S )N)i   c                     g | ]}d |z  S )r1   r?   .0r@   s     r7   
<listcomp>z?test_standard_scaler_near_constant_features.<locals>.<listcomp>  s    FFFr1uFFFr8   r.   r   r   rH   Frh   ra   r-   )r:   rd   ranger<   emptyr   rR   finfor   epsanyallro   r
   r   logical_notlogical_andsqrt)rU   rc   r   r   	scale_min	scale_maxscalesrV   rW   r   rY   r   boundswithin_boundsrepresentable_diffcommon_masks                   r7   +test_standard_scaler_near_constant_featuresr     s7    #IyXFFeIy1}&E&EFFFeTTTFaJ
)Z(666A$v-A	Q$v-Ai1n""Ge,,,0099F (2:


"C _vqy(9a<#q&+@7A:+MMFAI'M 6-      v{=)VM-BBCCCCCFM-0#666 1aaa41RU8+q0FK/A B BCQGGGFM".1C"D"DEqIII
 .V!35GHHKFM+.0D0D[0QRRRRRr8   c                  *   g d} t          j        |           }| |fD ]u}t          |          }t          |                                d           t          |                                d           t          t          |dd          |           vd S )N)ra         @      @r{   r{   ra   Fri   with_std)r:   rd   r   r   r   r   r   )X_listX_arrrW   r   s       r7   test_scale_1dr   H  s    !!!FHVEe_ I I88!(--//3777!(,,..#6665eeDDDaHHHH	I Ir8   c                     t          j        dt          j        d          t           j                  } t	          j                    5  t	          j        dt                     t          |            d d d            n# 1 swxY w Y   t          t          |           t          j
        d                     t          j        dt          j        d          t           j                  } d}t          j        t          |          5  t          |           }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          j        ddt           j                  } t	          j                    5  t	          j        dt                     t          |           }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          j        dd	t           j                  }d
}t          j        t          |          5  t          |          }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          ||           t          j        t          |          5  t          |d          }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          ||           d S )N   gh㈵>r   errorr1   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_centereds          r7   (test_standard_scaler_numerical_stabilityr   T  s   
 	26$<<rz222A 
	 	"	"  g{333a               eAhh444 	BF4LL
333ARO	k	9	9	9  88              h555
F"*---A		 	"	" " "g{333q" " " " " " " " " " " " " " " nbhrll;;; GBRZ000E<O	k	9	9	9 $ $U||$ $ $ $ $ $ $ $ $ $ $ $ $ $ $lBHRLL999lN;;;	k	9	9	9 6 6uu5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6nbhrll;;;nn=====sZ   *A==BBD##D'*D'*F::F>F>%IIIJ77J;>J;c                  D   t           j                            d          } d}d}|                     ||          }d|d d df<   t	                      }|                    |                              |d          }t          j        t          j        |                    rJ |j	        |k    sJ t          |                    d          |dgz             t          |                    d          g d           ||usJ |                    |          }||usJ ||usJ t          ||           t          |d	d
          }t          j        t          j        |                    rJ t          |                    d	          |dgz             t          |d	d          }t          j        t          j        |                    rJ t          |                    d	          |dgz             t          |                    d	          |dgz             ||usJ |                    |                              |d
          }t          j        t          j        |                    rJ t          |                    d          |dgz             t          |                    d          g d           ||u sJ |                     dd          }d|d d df<   t	                      }|                    |                              |d          }t          j        t          j        |                    rJ t          |                    d          |dgz             t          |                    d          g d           ||usJ d S )Nr   r^   r]   r{   Trw   ry   r{   ra   ra   ra   ra   r.   F)rz   r   ra   )r:   r   r   rN   r   rR   rp   r   isnanr   r   r   r   r   r   )rM   rV   rU   rW   rY   r   r   s          r7   test_scaler_2d_arraysr   {  s   
)


"
"CJI		)Z((AAaaadGFzz!}}&&qt&44Hvbhx(()))))!Y....hmmm33Z3%5GHHHhlll224M4M4MNNN1 ,,X66M!!!!((((mQ///QQ///Hvbhx(()))))hmmm33Y#5FGGGQQ...Hvbhx(()))))hmmm33Y#5FGGGhlll22I4EFFF1zz!}}&&qu&55Hvbhx(()))))hmmm33Z3%5GHHHhlll224M4M4MNNNq====		!QAAaaadGFzz!}}&&qt&44Hvbhx(()))))hmmm33Z3%5GHHHhlll224M4M4MNNN1r8   c                  f   t           j                            d          } |                     ddddg                              t           j                  }t          j        d          5  t                                          |          }|	                    |          }d d d            n# 1 swxY w Y   t                      
                    |                    t           j                            }t          j        t          j        |                    sJ t          ||d	           d S )
Nr   r^   r1   i@ r.   raise)overrH   decimal)r:   r   r   r   r   r   errstater   rR   rp   fit_transformr   r   isfiniter   )rM   rW   rY   r   X_scaled_f64s        r7   test_scaler_float16_overflowr     s>   
)


"
"C 	ArFA;''..rz::A	'	"	"	" ' '!!%%a((##A&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '
 "##11!((2:2F2FGGL
 6"+h''(((((
 ha@@@@@@s   +7B..B25B2c                      t          j        g d          } t          | d          }t          | t          j        g d                     t          |t          j        g d                     d S )N)r   gؗҜ<r.   rH   rI   Trw   )r.   r.   r.   rH   rI   )r:   rd   r!   r
   )s1s2s     r7   test_handle_zeros_in_scaler     so    	%%%	&	&B		.	.	.BB!4!4!455666B1122222r8   c            
      H   t           } | j        d         }ddd||dz   fD ]}t                                          |           }t                      }t	          t
          |          D ]}|                    | |                   }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    sJ t          |j        |j                   t          |j        |j                   t          |j        |j                   t                                          |           }t                      }t          t	          t
          |                    D ]D\  }}|                    | |                   }t!          ||j        |j        |||j
                   Ed S )Nr   r.   rH   2   *   rA   rB   rC   rD   rE   )X_2dr<   r   rR   r   rU   partial_fitr   	data_min_	data_max_r   data_range_r   min_slice	enumeraterF   startstoprW   rC   rD   scaler_batchscaler_incrbatchbatch0r@   s           r7   test_minmax_scaler_partial_fitr    sw    	A	
A!RAF+ ' '
#~~))!,,"nn J77 	< 	<E%11!E(;;KK!,"8+:OPPP!,"8+:OPPP+{/JJJJJ!,":K<STTT!,"5{7IJJJ!,"3[5EFFF q*%%#~~))!F)44"nn006;;!,"8+:OPPP!,"8+:OPPP+{/JJJJJ!,":K<STTT!,"5{7IJJJ!,"3[5EFFF $~~))!,,"nn!+i"D"DEE 		 		HAu%11!E(;;K!K :%*:    		=' 'r8   c            
      0   t           } | j        d         }ddd||dz   fD ]u}t          d                              |           }t          d          }t	          t
          |          D ]}|                    | |                   }t          |j        |j                   |j	        |j	        k    sJ |j
        |j
        k    sJ t          d|          }t                                          | |                   }|dk    rqt          t          j        t          t          j                  |j	                   t          t          j        t          t          j                  |j                   n^t          t          j        | |         d	          |j	                   t          t          j        | |         d	          |j                   t                                          |           }t                      }t)          t	          t
          |                    D ]D\  }}|                    | |                   }t+          ||j        |j        |||j
        
           Et          |j	        |j	                   |j
        |j
        k    sJ wd S )Nr   r.   rH   r   r   Fr   r   ry   r   )r   r<   r   rR   r   rU   r   r   rn   ro   r   r   r:   r   rV   r   rm   r   varr   r   rF   r   r   r   s           r7    test_standard_scaler_partial_fitr     s    	A	
A!RAF+ *K *K
%u55599!<<$e444 J77 	< 	<E%11!E(;;KK!,"4k6GHHH K$44444+{/JJJJJ q*%%$&&221V9==??%2:6668H   &
"*555{7I    &bfQvYQ&?&?&?AQRRR%qyq)));+=  
 &''++A..$&&!+i"D"DEE 		 		HAu%11!E(;;K!K :%*:     	","3[5EFFF+{/JJJJJJU*K *Kr8   c                  >   t           j                            d          } d}d}|                     dd|          }|                     dd|          }|                     ||          |z  |z   }t                                          |          }t                      }|D ]+}|                    |                    d	|                    },d
}	t          |j
        |j
        |	           t          |j        |j        |	           t          |j        |j        |	           d}
d}|                     dd|
                              t           j                  |z  }t!          j        |          }t!          j        |          }||fD ]}t          d                              |          }t          d          }|D ]}|                    |          }d
}	|j
        J t          |j        |j        |	           t          |j        |j        |	           d S )Nr   rH   r   g  4&kg  4&kCr/   g     @@    .Ar.   gư>)rtol)r   rI   g@xDFrh   )r:   r   r   r   rN   r   rR   r   reshaper
   rn   ro   r   randintr   r   r   
csr_matrix
csc_matrix)rM   rV   rU   offsetsr   rW   r  r  chunktolr0   r   X_csrX_cscrY   s                  r7   4test_standard_scaler_partial_fit_numerical_stabilityr  3  s3    )


"
"CJIkk%Jk77G[[c
[33F		)Z((61G;A!##''**L ""K L L!--emmAz.J.JKK CK%|'9DDDDK$l&7cBBBBK&(;#FFFF
 DEAq$&&rz22U:Aa  Ea  EU^ E E%00044Q77$u555 	9 	9E%11%88KK |'''(&+C@@@@*FMDDDDDE Er8   rK   c                    t          j        dgdgdgdgg          }t          j        |          }t          j        |          }| r%t
                              |j        d                   } t          ddd          }||fD ]}|	                    ||           
                    |          }t          |                                |                                           |                    |          }t          |                                |                                           t          |                                |                                           d S )	Nra   r{   r   r   FTri   r   rx   rJ   )r:   rd   r   r  r  rM   randr<   r   r   rp   r   r3   r   )rK   rW   r  r  null_transformX_nullX_origs          r7   test_partial_fit_sparse_inputr  a  s9    	3%#u-..Aa  Ea  E 1Q00#ee$OOONU^ : :++A]+KKUUVWXX6>>++QYY[[99911&996>>++V^^-=-=>>>6>>++QYY[[9999: :r8   c                    t           d dd d f         }| r%t                              |j        d                   } t	                      }t          t          |j        d         d                    D ]\  }}|d |dz   d d f         }|                                }| =t	                                          |          }|	                    ||                   }nQt	                                          || d |dz                      }|	                    ||         | |                   }|
                    |          }t          ||           t          ||           |                    |          }	t          ||	           t          j        |j        d                   }
t          j        t                     j        }t%          |
|j        |z              t%          |
|j        |z              | |dz   |j        k    sJ t          j        | d |dz                      t/          j        |j                  k    sJ d S )Nr   r   r.   rJ   )r   rM   r  r<   r   r   r   rx   r   r   rp   r   r   r:   r   r   floatr   r	   ro   r   r   sumrO   approx)rK   rW   r  r@   r  X_sofarchunks_copyscaled_batchscaled_incrright_inputzeroepsilons               r7   .test_standard_scaler_trasform_with_partial_fitr(  u  sG    	TcT111WA -,, ""Kk!'!*a8899  5Iq1uIqqqL/llnn )++99'BBL%11!E(;;KK)++99}Wq1uW'= :  L &11%e(< 2  K "++G44!,<<<!';777!33K@@!';777x
##(5//%$ 07 :;;;$ 2W <=== Ek9999996-!a%011V]+6 6     ; r8   c            	          t          j        g dg dg dg dg dg dgt           j                  } t                      }|                    |            |                    |            d S )N)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:   rd   int32r   rR   r   )r   rY   s     r7   .test_standard_check_array_of_inverse_transformr+    s     		
 h
	 
	 
	A F
JJqMMM
 Qr8   c                  4   t           j        } t                      }|                    |           }t	          |                    d          d           t	          |                    d          d           |                    |          }t	          | |           t          d          }|                    |           }t	          |                    d          d           t	          |                    d          d           |                    |          }t	          | |           t          d          }|                    |           }t	          |                    d          d           t	          |                    d          d	           |                    |          }t	          | |           t          d
          }t          j	        t                    5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr   ry   r.   r.   rH   feature_rangerH   )      333333?r0  r1  )rH   r.   )irisdatar   r   r   minmaxr   rO   rP   rQ   rR   )rW   rY   X_transX_trans_invs       r7   test_min_max_scaler_irisr8    s!   	A^^F""1%%Ggkkqk111555gkkqk111555**733Ka--- ///F""1%%Ggkkqk111555gkkqk111555**733Ka--- 444F""1%%Ggkkqk114888gkkqk113777**733Ka--- ///F	z	"	"  

1                 s   *HHHc                  \   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           t          d          }|                    |           }g dg dg dg}t          ||           t          |           }t          ||           t          | d          }t          ||           d S )Nr{   ra         ?r{   ra   gr{   ra   g?r{   r`   r;        ra   r{   r{   ra   rj   )r{   r{   r;  r{   r{   r{   r{   r{   ra   )r@  r{   gsh|??)r{   r{   gS?rH   r   r-  r.  )ra   ra   rj   ra   ra   ra   )ra   ra   r`   )r   r   r   r   rp   r   )	rW   X_newrY   r6  X_expected_0_1r7  X_trans_newX_expected_0_1_newX_expected_1_2s	            r7   *test_min_max_scaler_zero_variance_featuresrJ    s   			+++-=-=-=>A///1A1A1ABE ^^F""1%%G%ooHNg~666**733Ka---""5))K,,,.@.@.@BTBTBTUk+=qIIII ///F""1%%G%ooHNg~666 1ooGg~6661F333Gg~66666r8   c                      t           j        } t          | d          }t          t	          j        |d          d           t          t	          j        |d          d           d S )Nr.   ry   r   )r2  r3  r   r   r:   r4  r5  )rW   r6  s     r7   test_minmax_scale_axis1rL    s_    	A11%%%GbfW1555q999bfW1555q99999r8   c                  "   t           t          t          t          fD ]s} t          d          }|                    |                               |           }t          | t                    rt          j	        |           } t          |           dk    rwt          |                    d          t          j        t                               t          |                    d          t          j        t                               nHt          |                    d          d           t          |                    d          d           |j        | j        d         k    sJ |                    |          }t          ||            ut          j        d          } t                      }|                    |                               |           }|                                dk    sJ |                                dk    sJ |j        | j        d         k    sJ t                                           }|                                }|                                }t          ||z
  ||z
  z  t+          |d                     d S rv   )r}   r~   r   r   rR   rp   r   r   r:   rd   r=   r   r4  r   rV   r5  r   r<   r   rm   r   r   )rW   rY   r   r   X_1dr   max_s          r7   test_min_max_scaler_1drP    s/   fk;7 4 44(((::a==**1--a 	AA!##%hlll&:&:BHZ<P<PQQQ%hlll&:&:BHZ<P<PQQQQ%hlll&:&:C@@@%hlll&:&:C@@@%3333 00::!-3333 	A^^Fzz!}}&&q))H<<>>S    <<>>S    !QWQZ//// <<>>D88::D88::D	%|Dt'D'D'D    r8   c                 H
   t           j                            d          }|                    dd          }d|d d df<   t	          j        |          }t	          j        |          }| r |                    |j        d                   } t          j
        t                    5  t                                          |           d d d            n# 1 swxY w Y   t          j
        t                    5  t                                          |           d d d            n# 1 swxY w Y   t          ddd          }|                    |          }t          |j        |j                   |                    |          }t          |j        |j                   t          d	                              || 
          }|                    |d          }	t          j        t          j        |	                    rJ t          d	                              || 
          }
|
                    |d          }t          j        t          j        |j                            rJ t          d	                              || 
          }|                    |d          }t          j        t          j        |j                            rJ t+          |j        |
j                   t+          |j        |
j                   t+          |j        |
j                   t+          |j        |
j                   t+          |j        |j                   t+          |j        |j                   t+          |j        |j                   t+          |j        |j                   | Mt+          |	                    d          g dd           t+          |	                    d          g d           t9          |d          \  }}t+          ||	                    d                     t+          ||	                    d                     |	|usJ ||usJ |                    |	          }||usJ ||	usJ t+          ||           |
                    |          }||usJ ||usJ t+          |                                |           |
                    |                                          }||usJ ||usJ t+          |                                |           d S )Nr   r]   r^   r{   r   FTr  rh   rJ   rw   ry   r{   g{GzgQ@gffffffֿg(\rH   r   ) r:   r   r   rN   r   r  r  r  r<   rO   rP   rQ   r   rR   r   r   r3  r   rp   r   r   r   rn   ro   r   r   r   r   r   r  r3   tocsc)rK   rM   rW   r  r  r  r  r  rY   r   
scaler_csrX_csr_scaled
scaler_cscX_csc_scaledX_csr_scaled_meanX_csr_scaled_varr   X_csr_scaled_backX_csc_scaled_backs                      r7   test_scaler_without_centeringr\  %  si   
)


#
#C		!QAAaaadGa  Ea  E -,,	z	"	" $ $U###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	z	"	" $ $U###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ee$OOON))%00Fv{EJ///--f55Fv{EJ///e,,,00-0PPF--Hvbhx(()))))%00044U-4XXJ''D'99Lvbh|01122222%00044U-4XXJ''D'99Lvbh|01122222flJ,<===fk:?;;;fmZ->???f4j6PQQQflJ,<===fk:?;;;fmZ->???f4j6PQQQ!MMqM!!#C#C#CQ	
 	
 	
 	"(,,A,"6"68Q8Q8QRRR*<\1*M*M''/A1F1FGGG.!0D0DEEE 1u$$$$,,X66M!!!!((((mQ///"44\BBE))))L0000/77991==="44\5G5G5I5IJJE))))L0000/77991=====s$   ""CCC4"D""D&)D&ri   r   c                    t          j        g dt           j        ddgddt           j        gddt           j        ggt           j                  } ||          }t	          j        |          r| rt          j        d	           t          | |
          }|	                    |           t          |j        t          j        g d                     d S )Nr   r.   rI   r_   r1   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   )ri   r   rc   rW   transformers        r7   #test_scaler_n_samples_seen_with_nanrb  o  s     		RVQOaBF^aBF^DBJ	 	 	A 	!Aq Ki KIJJJ 9xHHHKOOA{2BHYYY4G4GHHHHHr8   c                     | j         |j         cxu rn J | j        |j        cxu rn J | j        |j        cxu rn J | j        |j        k    sJ d S )N)rn   ro   r   r   )scaler_1scaler_2s     r7   "_check_identity_scalers_attributesrf    s    >X^333333333=HM111111111?ho555555555#x'???????r8   c                     t          j        g dg dg dgt           j                  } t          j        |           }|                                }t          dd          }|                    |           }t          |          }|                    |          }t          |          }|                    |          }t          ||           t          ||           t          ||            t          j        |||gd          D ]\  }	}
t          |	|
           |                    |            |                    |           |                    |           t          j        |||gd          D ]\  }	}
t          |	|
           |                    |            |                    |           |                    |           t          j        |||gd          D ]\  }	}
t          |	|
           d S )Nr^  )r^   r_   r   )r   r   r1   r   Fr   rH   )r:   rd   r   r   r  rS  r   r   r%   r   r
   	itertoolscombinationsrf  r   rR   )X_denser  r  transformer_denseX_trans_densetransformer_csrX_trans_csrtransformer_cscX_trans_csctrans_1trans_2s              r7   test_scaler_return_identityrs    s*    h			999jjj9LLLGg&&EKKMME&GGG%33G<<M-..O!//66K-..O!//66K e444 e444M7+++%2	O_=q  = = 	+7G<<<<!!'***&&&&&&%2	O_=q  = = 	+7G<<<<'"""%2	O_=q  = = 	+7G<<<<= =r8   c                  	   t           j                            d          } |                     dd          }d|d d df<   t	          j        |          }t	          j        |          }t          ddd          }t          j	        d	          5  |
                    |          }d d d            n# 1 swxY w Y   t          |j        |j                   |                    |          }t          |j        |j                   t          j	        d	          5  t          d
                              |          }|                    |d          }d d d            n# 1 swxY w Y   t          j        t          j        |                    rJ t          j	        d	          5  t          d
                              |          }	|	                    |d          }
d d d            n# 1 swxY w Y   t          j        t          j        |
j                            rJ t          j	        d	          5  t          d
                              |          }|                    |d          }d d d            n# 1 swxY w Y   t          j        t          j        |j                            rJ t%          |j        |	j                   t%          |j        |	j                   t%          |j        |	j                   t%          |j        |j                   t%          |j        |j                   t%          |j        |j                   t%          |                    d          g dd           t%          |                    d          g d           t1          |
                    t4                    d          \  }}t%          ||                    d                     t%          ||                    d                     ||usJ |
|usJ |                    |          }||usJ ||usJ t%          ||           |	                    |
          }||usJ ||
usJ t%          |                                |           |	                    |                                          }||usJ ||usJ t%          |                                |           d S )Nr      )r]   r^   r/   r   FTr  )recordrh   rw   ry   )r{   gX9v?gV-?g      5@gl?rH   r   )r:   r   r   r  r   r  r  r   r   r   r   r   r3  r   rR   rp   r   r   r   rn   ro   r   r   r   r   r   r  r3   rS  )rM   rW   r  r  r  r  r  rY   r   rT  rU  rV  rW  rX  X_csr_scaled_stdr   rZ  r[  s                     r7   test_scaler_intrx    s    )


#
#CBV$$AAaaadGa  Ea  E#ee$OOON		 	-	-	- 5 5--e445 5 5 5 5 5 5 5 5 5 5 5 5 5 5v{EJ///--f55Fv{EJ///		 	-	-	- 2 2%00044Q77##AD#112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 vbhx(()))))		 	-	-	- > >#e44488??
!++E+==> > > > > > > > > > > > > > > vbh|01122222		 	-	-	- > >#e44488??
!++E+==> > > > > > > > > > > > > > > vbh|01122222flJ,<===fk:?;;;fmZ->???flJ,<===fk:?;;;fmZ->???1???   hlll224M4M4MNNN*<E""A+ +'' /A1F1FGGG.!0D0DEEE 1u$$$$,,X66M!!!!((((mQ///"44\BBE))))L0000/77991==="44\5G5G5I5IJJE))))L0000/77991=====sH   B11B58B5;E!!E%(E%);G00G47G4=;JJJc                     t           j                            d          } |                     dd          }d|d d df<   t	          j        |          }t	          j        |          }|                                }t          d          	                    |           t          ||           |                                }t          dd          	                    |           t          |                                |                                           |                                }t          dd          	                    |           t          |                                |                                           d S )	Nr   r]   r^   r{   r   Frw   )ri   rx   )r:   r   r   rN   r   r  r  rx   r   rR   r   r3   )rM   rW   r  r  X_copy
X_csr_copy
X_csc_copys          r7   test_scaler_without_copyr}    s?   
)


#
#C		!QAAaaadGa  Ea  EVVXXF""1%%%q&!!!JU///33E:::u}}
(:(:(<(<===JU///33E:::u}}
(:(:(<(<=====r8   c                  ,   t           j                            d          } |                     dd          }t	          j        |          }t	          j        |          }t          j        t                    5  t          |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          d                              |           d d d            n# 1 swxY w Y   t          j        t                    5  t          |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          d                              |           d d d            n# 1 swxY w Y   t          d                              |          }t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t	          j        |                    |                    }t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t	          j        |                    |                    }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r]   r^   Trh   )r:   r   r   rN   r   r  r  rO   rP   rQ   r   r   rR   rp   r   )rM   rW   r  r  rY   X_transformed_csrX_transformed_cscs          r7   +test_scale_sparse_with_mean_raise_exceptionr    s   
)


#
#C		!QAa  Ea  E 
z	"	" % %et$$$$% % % % % % % % % % % % % % %	z	"	" 2 2&&&**51112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
z	"	" % %et$$$$% % % % % % % % % % % % % % %	z	"	" 2 2&&&**51112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 d+++//22F	z	"	"                                 	z	"	"                                  )&*:*:1*=*=>>	z	"	" 4 4  !23334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 )&*:*:1*=*=>>	z	"	" 4 4  !23334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   7BBB9$C))C-0C-D++D/2D/$E??FFG((G,/G,H..H25H29JJ"J&L		LLc                      t           j        ddddgg} t          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nr^   r_      r   z,Input contains infinity or a value too larger   )r:   infrO   rP   rQ   r   rW   s    r7   &test_scale_input_finiteness_validationr  2  s    
&!Q1	A	H
 
 
   	a                 s   AAAc                      t          j        dd          } t          d          }d}t          j        t
          |          5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr,   r1   Tr   zCannot center sparse matricesr   )r   r  r   rO   rP   rQ   rR   )X_sparserY   err_msgs      r7   test_robust_scaler_error_sparser  ;  s    {4$$H...F-G	z	1	1	1  

8                 s   A&&A*-A*r   with_scalingrW   r;  densityc                 \   |r(t          j        |           rt          j        d           t	          ||          }|                    |            |r"t          |j        t          j	                  sJ n	|j        J |r#t          |j
        t          j	                  sJ d S |j
        J d S )Nz(RobustScaler cannot center sparse matrix)r   r  )r   r`  rO   r   r   rR   r   center_r:   ndarrayr   )rW   r   r  rY   s       r7   test_robust_scaler_attributesr  C  s    
  @&/!,, @>???lSSSF
JJqMMM &&."*555555~%%% %&-4444444}$$$$$r8   c                     t           j                            dd          } d| d d df<   t          j        |           } t          d          }|                    |            |j        d         t          j	        d          k    sJ |
                    |           }t          | d d df                                         |d d df                                                    d S )Nr1   r^   r   Fr   r.   )r:   r   rN   r   r  r   rR   r   rO   r   rp   r
   r3   )rW   rY   r6  s      r7   "test_robust_scaler_col_zero_sparser  X  s     		AAAaaadG!A///F
JJqMMM=v}Q//////q!!GAaaadGOO%%wqqq!t}'<'<'>'>?????r8   c                     t           j                            d          } |                     dd          }d|d d df<   t	                      }|                    |                              |          }t          t          j        |d          ddgz             t          |	                    d          d         d           d S )Nr   r]   r^   r{   ry   )
r:   r   r   rN   r   rR   rp   r   medianr   )rM   rW   rY   r   s       r7   test_robust_scaler_2d_arraysr  g  s    
)


"
"C		!QAAaaadG^^Fzz!}}&&q))Hbiq9991u9EEEhlll2215q99999r8   r  )r   g?皙?r;  r.   strictly_signed)positivenegativer   Nc                 H   t          j        dd|                                           }|dk    rt          j        |j                  |_        n[|dk    r t          j        |j                   |_        n5|dk    r/t          j        |j        j        t          j                  |_        |	                                }t          d	          }t          d	          }|                    |           |                    |           t          |j        |j                   d S )
Nr,   r^   r  r  r  r   r   Fr   )r   r  rS  r:   absr3  r   r<   r   r3   r   rR   r
   r   )r  r  r  rj  scaler_sparsescaler_denses         r7   +test_robust_scaler_equivalence_dense_sparser  t  s    {4G444::<<H*$$x}--	J	&	&...	G	#	#!4BJGGG  G 666Mu555LhWM(,*=>>>>>r8   c                     t           j                            d          } |                     dd          }t          j        g dg          }t          d          }|                    |          }|                    t          j	        |                    }||j
        z  }t          |                                |           |                    |          }t          ||                                           d S )Nr   r]   r^   )r  ra   r`   r{   r@  Fr   )r:   r   r   rN   rd   r   rR   rp   r   r  r   r   r3   r   )rM   rW   
single_rowrY   	row_transrow_expectedrow_scaled_backs          r7   (test_robust_scaler_transform_one_row_csrr    s    
)


"
"C		!QA555677J///FZZ]]F  !2:!>!>??I-Li//11<@@@..y99Oj/*A*A*C*CDDDDDr8   c                  f   t           j        } t                      }|                    |           }t	          t          j        |d          d           |                    |          }t	          | |           t          j        |dd          }|d         |d         z
  }t	          |d           d S )Nr   ry      K   qrz   r.   	r2  r3  r   r   r   r:   r  r   
percentile)rW   rY   r6  r7  r  iqrs         r7   test_robust_scaler_irisr    s    	A^^F""1%%Gbia888!<<<**733Ka---
g222A
A$1+Cc1%%%%%r8   c                  j   t           j        } t          d          }|                    |           }t	          t          j        |d          d           |                    |          }t	          | |           t          j        |dd          }|d         |d         z
  }t	          |d           d S )N)r1   Z   quantile_ranger   ry   r  r.   r  )rW   rY   r6  r7  r  q_ranges         r7   !test_robust_scaler_iris_quantilesr    s    	A222F""1%%Gbia888!<<<**733Ka---
g222AdQqTkGgq)))))r8   c                     t           j        } t          d          }|                    |           }|                    |          }t          | |           t          dd          }|                    |           }|                    |          }t          | |           t          j        |           }|                    |          }|                    |          }t          |j        |j                   d S )Nr+   n_quantilesnormal)r  output_distribution)	r2  r3  r   r   r   r   r   r  A)rW   ra  r6  r7  r  X_sparse_tranX_sparse_tran_invs          r7   test_quantile_transform_irisr    s    	A%"555K''**G//88Ka---%"(SSSK''**G//88Ka---  ##H--h77M#55mDDhj*;*=>>>>>r8   c                     t          j        g dg dg dg          } t          j        |           } t          j        g dg dg dg          }t          j        |          }d}t	          j        t          |          5  t          d                              |            d d d            n# 1 swxY w Y   t          d	          }d
}t	          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   |                    |            d
}t	          j        t          |          5  |	                    |           d d d            n# 1 swxY w Y   t          j        g dg dg          }d}t	          j        t          |          5  |
                    |           d d d            n# 1 swxY w Y   t          d	                              |           }t	          j        t          d          5  |	                    d           d d d            n# 1 swxY w Y   t          d	          }d}t	          j        t          |          5 }|                    |            d d d            n# 1 swxY w 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   r1   r   r   )
r   r   @ffffff@r   r   ffffff@r         #@r  )
r]   r   r   r_   r   r   r1   r   r   zmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.r   r1   )	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_samplesr.   r   )r:   	transposer   r  rO   rP   rQ   r   rR   rp   r   r   r   lenn_quantiles_r<   )rW   X_negr  ra  
X_bad_featwarn_msgrv  s          r7   #test_quantile_transform_check_errorr    s^   
///+++444	
	 	A 	!AL///,,,444	
 E e$$E	 
 
z	1	1	1 1 1b)))--a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 &"555KNG	z	1	1	1                OOANG	z	1	1	1 % %e$$$% % % % % % % % % % % % % % % 	,	,	,.V.V.VW J 	V  
z	1	1	1 2 2%%j1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &"55599!<<K	z)V	W	W	W " "b!!!" " " " " " " " " " " " " " " &#666K0H	k	2	2	2 f              v;;!#qwqz111111sl    $B00B47B4(D

DDE))E-0E-+GGGH88H<?H<0JJJc                     t          j        ddgddgddgddgddgg          } t          j        |           }t	          dd          }d}t          j        t          |          5  |                    |            d d d            n# 1 swxY w Y   t          j        ddgddgddgddgddgg          }|	                    |          }t          ||j                   t          j        g d	          }t          j        g d
          }t          j        g d          }t          j        |||ff          }|	                    |          }t          j        ddgddgddgddgddgddgddgddgddgg	          }t          ||j                   t	          dd          }t          j        g d          }t          j        g d          }t          j        g d          }t          j        |||ff          }|	                    |          }t          j        ddgddgddgddgddgddgddgg          }t          ||j                   t          |j        |                    |          j                   t	          dddd          }|	                    |          }t          ||j                   t          |j        |                    |          j                   d S )Nr   r.   rH   Tr^   )ignore_implicit_zerosr  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r   )r   r   r.   r   rH   rH   r.   r   r.   rH   r   )r   r   r.   r.   r.   r.   r.   r.   r.   r.   r.   )r   r]   r   r.   rH   rI   r]   r^   r_   r  r   r{   r;  ra   )	r-   r-   r.   r   r   r   r.   r-   r.   )	r   r   r.   r.   r.   r.   r.   r.   r.   )	r   r]   r   r.   rH   rI   r]   r^   r_   g      ?r   )r  r  r  random_state)r:   rd   r   r  r   rO   r   r   rR   r   r   r  r   )	rW   r  ra  r   
X_expectedr6  X_dataX_colX_rows	            r7   +test_quantile_transform_sparse_ignore_zerosr    sm   
1a&1a&1a&1a&1a&9::A ##H%DaPPPK	 
 
k	9	9	9                 Aq6Aq6Aq6Aq6Aq6BCCJ''11G
GI... X77788FH66677EH66677E &5%.!9::H''11G#J#J#J#J#J#J#J#J#J
	
 J 
GI...%DaPPPKX44455FH00011EH00011E &5%.!9::H''11G
Q!UaZ!UaVaVaVL J 
GI...
K$A$A'$J$J$LMMM &"QQ  K ''11G
GI...
K$A$A'$J$J$LMMMMMs   &BBBc                  ^   t          j        g dg dg dg dg dg          } t          d          }|                    |            |                    |           }t          j        t          j        dd	d
          d          j        }t          t          j	        |d          |           t          j        g dg dg          }t          j        g dg dg          }t          |                    |          |           |                    |          }t          | |           d S )N)r   rH   r  )r  r]   r  )r   r_   r  )r  r   r  )r   r1   r  r^   r  r   r.   )num)rI   r.   ry   )r-   r.   r   )e      r1   )r   r   r   r.   r.   r.   )r:   rd   r   rR   r   tilelinspaceTr   sortr   rp   r   )rW   ra  r6  r  rs   r7  s         r7   !test_quantile_transform_dense_toyr  :  sE   
	lllLLL,,,O	 	A &!444KOOA ''**GQq1116::<Ja000*===XJJMM	
 F IIII	
 J k33F;;ZHHH//88Ka-----r8   c                  B   d} d}t          j        t           j                            | df          d          }d}g }t	          |          D ]}t          ||| dz            }|                    |           t          j        dd|          t          j        |j	                  z
  }t          j
        t          j        |                    }|d	k     sJ |                    |           t          t          j        |                    t          |          k    sJ t          j        | dd
dd          }g }t	          |          D ]}t          ||| dz            }|                    |           t          j        dd|          t          j        |j	                  z
  }t          j
        t          j        |                    }|dk     sJ |                    |           t          t          j        |                    t          |          k    sJ d S )N@B r,   r.   r   ry   r^   r1   )r  r  r  {Gz?gGz?csc)r  formatr  r  )r:   r  r   sampler   r   rR   r  r   
quantiles_r5  r  appendr  uniquer   r  )	rU   r  rW   ROUNDinf_norm_arrr  ra  diffinf_norms	            r7   #test_quantile_transform_subsamplingr  Z  s    IK
	  )Q00q999AELe 
& 
&)%#2o
 
 

 	{1a--9O0P0PP6"&,,''$H%%%% ry&&''3|+<+<<<<< 	Iq$u1MMMALe 
& 
&)%#2o
 
 

 	{1a--9O0P0PP6"&,,''$H%%%% ry&&''3|+<+<<<<<<<r8   c                  n   t          j        g dg dg dg dg dg dg dg dg d	g d
g
          } t          j        |           } t	          d          }|                    |            |                    |           }t          t          j        |	                                d          d           t          t          j
        |	                                d          d           |                    |          }t          | 	                                |	                                           t	          d                              | 	                                          }|                    |           }t          t          j        |	                                d          d           t          t          j
        |	                                d          d           |                    |          }t          | 	                                |	                                           d S )N)r{   r`   r{   )g      9@      @r{   )g      I@r{   r  )r{   r{   r  )r{   g      @r{   )r{   g       @r{   )g     R@r{   r  )r{   g      $@r{   )r{   r{   r  )r   r{   r  r1   r  r   ry   r{   ra   )r:   rd   r   r  r   rR   r   r   r4  r3   r5  r   rp   )rW   ra  r6  r7  rk  s        r7   "test_quantile_transform_sparse_toyr    s   
OOOOOOOOOO	
	 	A 	!A%"555KOOA''**GbfW__%6%6Q???EEEbfW__%6%6Q???EEE//88Kaiikk;+>+>+@+@AAA+;;;??		LL))!,,GbfW__%6%6Q???EEEbfW__%6%6Q???EEE#55g>>Kaiikk;+>+>+@+@AAAAAr8   c                      t          j        g dg dg dg          } t          | j        dd          }t          | dd          }t	          ||j                   d S )Nr   r  r   r  r   rH   r]   r_   r   r1   r  r  r  r  r  r   r^   )rz   r  r.   )r:   rd   r   r  r   )rW   
X_trans_a0
X_trans_a1s      r7   test_quantile_transform_axis1r    so    
&&&(8(8(8:S:S:STUUA#ACaQ???J#AA1===Jj*,77777r8   c                  (   t          j        ddgddgddgg          } t          j        |           }t	          dd                              |           }t          ||            t	          dd                              |          }t          |j        |            t          ||j                   t          j        ddgddgddgg          }t          j        ddgddgddgg          }t	          d                              |          }|	                    |          }t          ||           t           j
        
                    d          }t	                      }|                    |           |	                    d	gg          |	                    t          j        |          gg          k    sJ |	                    d
gg          |	                    t          j        |          gg          k    sJ |                    d	gg          |                    t          j        |j                  gg          k    sJ |                    d
gg          |                    t          j        |j                  gg          k    sJ d S )Nr   r.   rI   r  r  r;  r  r  )r,   r.   r1   )r:   rd   r   r  r   r   r   r  rR   rp   r   r4  r5  r   references_)rj  r  r6  
X_trans_sprW   X1ra  s          r7   test_quantile_transform_boundsr    s    hAAA/00G ))H "aa@@@NNwWWGgw///$CCCQQ J jlG444gz|444 	1a&1c(QF+,,A	As8aX3x0	1	1B%!44488;;K##B''Ggr*** 		##A%''KOOA  3%))[-B-BRVAYYK=-Q-QQQQQ  2$((K,A,ABF1II;-,P,PPPPP((3%11[5R5R
&(
)
)	*+6 6     ((2$00K4Q4Q
&(
)
)	*+5 5      r8   c            	         t           j        } t          j        dgt          dz  gdgdgdgdgdgg          }| |fD ]O}t          dd	          }|                    |          }|                    |          }t          ||d
           Pd S )Nr{   r1   rj   rH   rI   r]   r,   r   r  	   r   )	r2  r3  r:   rd   r"   r   r   r   r   )X_1X_2rW   ra  r6  r7  s         r7   #test_quantile_transform_and_inverser    s    
)C
(SE,r12SEA3aS1#N
O
OC3Z = =)dKKK++A..!33G<<!![!<<<<<	= =r8   c                     t          j        t           j        dddgt           j        t           j        ddgt           j        dddgg          } t          dd          }|                    |            t          j        |j        d d df                                                   sJ t          j        |j        d d dd f                                                   rJ d S )Nr   r.   r;  r1   r   r  )	r:   rd   r_  r   r   r   r  r   r   )rW   ra  s     r7   test_quantile_transform_nanr    s    
261a#bfbfa%=1a?PQRRA%"2FFFKa    8K*111a40115577777x.qqq!""u566::<<<<<<<r8   
array_typerd   r   c                 n   t          j        g ddz            }d|                    dd          z  }t          ||           }d}t	          |                              |          }|j        d d df         }t          |          dk    sJ t          t          j	        |          dk              sJ d S )	N)r   r.   r.   rH   rH   rI   rI   r]   r^   r^   r.   r.   r  r  r  r   r   r  r1   r  r-   r.   r   r  r   )
r:   rd   r  r   r   rR   r  r  r   r  )r  rW   r  qt	quantiless        r7   *test_quantile_transformer_sorted_quantilesr	    s     	GGG"LMMAaiiAA1j))AK		5	5	5	9	9!	<	<B aaad#Iy>>S    rwy!!Q&'''''''r8   c                      dD ]d} t          |           }t          j        t          d          5  |                    t
          j                   d d d            n# 1 swxY w Y   ed S )N))r-   r  )r  )r1   r  )g      Y@r  )r  r   r  zInvalid quantile range: \(r   )r   rO   rP   rQ   rR   r2  r3  )range_rY   s     r7    test_robust_scaler_invalid_ranger    s     
" 
" V444]:-JKKK 	" 	"JJty!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
" 
"s    AA 	#A 	c                     t           j                            d          } |                     dd          }d|d d df<   t	          j        |          }t          |d          }t          j        t          j        |                    rJ t          |d          }t          j        t          j        |j	                            rJ t          |
                                d          }t          ||                                           t          j        t                    5  t          |dd	           d d d            n# 1 swxY w Y   t          |                    d
          g dd           t          |                    d
          g d           ||usJ t%          |d          \  }}t          ||                    d
                     t          ||                    d
                     t          |ddd          }t          |                                |                                           d S )Nr   r]   r^   r{   r   Frh   r.   )ri   rz   ry   rR  rH   r   Tr  )r:   r   r   rN   r   r  r   r   r   r3  rS  r   r3   rO   rP   rQ   r   r   r   )rM   rW   r  r   rU  rW  rX  rw  s           r7   %test_scale_function_without_centeringr    sb   
)


#
#C		!QAAaaadGa  EQ%(((Hvbhx(()))))%000Lvbh|01122222 %888Lh(<(<(>(>??? 
z	"	" . .eu1----. . . . . . . . . . . . . . . 1???   hlll224M4M4MNNN1*<\1*M*M''/A1F1FGGG.!0D0DEEE %%dKKKLemmoo|/C/C/E/EFFFFFs   (EEEc                      t           j        } t          | d          }t          t	          j        |d          d           t	          j        |dd          }|d         |d         z
  }t          |d           d S )Nr.   ry   r   r  r  r2  r3  r   r   r:   r  r  rW   r6  r  r  s       r7   test_robust_scale_axis1r  8  sw    	A11%%%Gbia888!<<<
g222A
A$1+Cc1%%%%%r8   c                     t           j        d d df         } t          |           }t          t	          j        |          d           t	          j        |d          }|d         |d         z
  }t          |d           d S )Nr.   r   r  )r  r  r  s       r7   test_robust_scale_1d_arrayr  A  su    	!!!Q$A1ooGbi00!444
g***A
A$1+Cc1%%%%%r8   c                  \   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 S )Nr:  r<  r=  rB  )r{   r{   r@  rC  r>  r?  rA  )r{   ra   r{   )r@  r{   g_)r{   r{   gіs)?rI   r   )r   r   r   r   rp   )rW   rY   r6  r  r7  rE  rG  X_expected_news           r7   )test_robust_scaler_zero_variance_featuresr  J  s   			+++-=-=-=>A^^F""1%%G #""$4$4$46F6F6FGJgz222**733Ka--- ///1A1A1ABE""5))K''')>)>)>@U@U@UVNk>1EEEEEEr8   c                  H   t           j                            d          } |                     dd          }t          j        |t          j        d          dz  t          j        d          dz  g          }d}t          |d	                              |          }|                    |          }|j	        t          j        d
d          k    sJ |j        t          j        dd          k    sJ |                                t          j        dd          k    sJ d S )Nr   r  r.   )r   r.   r   i)r.   c   T)r  unit_variancer   MbP?)r  r  )r:   r   r   rN   vstackrm   r   rR   rp   r  rO   r   r   r   )rM   rW   X_with_outliersr  robust_scalerr6  s         r7    test_robust_scaler_unit_variancer   c  s    )


#
#C		'1AiBGH$5$5$;RWX=N=NQU=U VWWON dSSSWW M %%a((G FM!$>$>$>>>>>6=#=#=#=====;;==FM!666666666r8   c                  b   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           t          |           }t          ||           t          j        |           }t          j        |           }	|                    |          }
|                    |	          }g dg dg dg dg}t          |
j	        |           t          |j	        |           |                    |
          }|                    |          }t          | |j	                   t          | |j	                   d S )Nr:  )r{   ra   333333ӿrA  rB  )r{   ra   UUUUUU?)r{   ra   gɿ)r{   ra   ra   r>  r?  )r{   r`   r#  rH   r   )
r   r   r   r   rp   r   r   r  r  r  )rW   rY   r6  r  r7  rE  rG  r  r  r  rn  rp  X_trans_csr_invX_trans_csc_invs                 r7   )test_maxabs_scaler_zero_variance_featuresr&  u  s   			+++-=-=-=?O?O?OPA^^F""1%%G	J gz222**733Ka--- ///1A1A1ABE""5))K,,,.>.>.>@P@P@PQNk>1EEEE 1ooGgz222 a  Ea  E&&u--K&&u--K	J kmZ888kmZ888..{;;O..{;;Oa!2333a!233333r8   c                      g dg dg dg dg} t                      }|                    |           }g dg dg dg dg}t          ||           d S )	N)r{   ra   r;  r@  )r{   ra   r"  r0  )r{   ra   g      Yr{   )r{   r{   r{   g       )r{   ra   g{Gzt?r0  )r{   ra   g~jthg      п)r{   ra   r@  r{   )r{   r{   r{   r@  )r   r   r   )rW   rY   r6  r  s       r7   'test_maxabs_scaler_large_negative_valuer(    s     			A ^^F""1%%G!!!	J gz22222r8   c                     t          j        g dg          } t                      }|                    |           }|                    |           }t          j        g dg          }t          |                                |                                           |                    |          }t          |                                 |                                           d S )N)r;  ra   ra   rD  )r   r  r   rR   rp   r   r3   r   )rW   rY   r6  r  r   s        r7   (test_maxabs_scaler_transform_one_row_csrr*    s    ???+,,A^^FZZ]]Fq!!G"OOO#455Jgoo//1C1C1E1EFFF,,W55Maiikk=+@+@+B+BCCCCCr8   c                     t           t          t          t          fD ]8} t          d          }|                    |                               |           }t          | t                    rt          j	        |           } t          |           dk    rNt          t          j        |                    d                    t          j        t                               n6t          t          j        |                    d                    d           |j        | j        d         k    sJ |                    |          }t          ||            :t          j        d          } t                      }|                    |                               |           }t          t          j        |                    d                    d           |j        | j        d         k    sJ t                                           }t          j        |                                          }t          ||z  t)          |d                     d S )NTrw   r.   r   ry   ra   r|   )r}   r~   r   r   rR   rp   r   r   r:   rd   r=   r   r  r5  rm   rV   r   r<   r   r   r   )rW   rY   r   r   rN  max_abss         r7   test_maxabs_scaler_1dr-    s   fk;7 4 44(((::a==**1--a 	AA!##%bfX\\q\-A-A&B&BBGJDWDWXXXX%bfX\\q\-A-A&B&BCHHH%3333 00::!-3333 	A^^Fzz!}}&&q))HbfX\\q\%9%9::C@@@!QWQZ//// <<>>DfTll  GdWnl4d.K.K.KLLLLLr8   c            
         t           d dd d f         } | j        d         }ddd||dz   fD ]M}t                                          |           }t                      }t                      }t                      }t	          ||          D ]{}|                    | |                   }t          j        | |                   }|                    |          }t          j        | |                   }	|                    |	          }|t          |j
        |j
                   t          |j
        |j
                   t          |j
        |j
                   |j        |j        k    sJ |j        |j        k    sJ |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    sJ t          |j        |j                   t          |                    |           |                    |                      t                                          |           }t                      }t          t	          ||                    D ]D\  }}|                    | |                   }t!          ||j        |j        |||j                   EOd S )Nr   r   r.   rH   r   r   r   )r   r<   r   rR   r   r   r   r  r  r   max_abs_r   r   rp   r   r   rF   r   r   )rW   rC   rD   r  r  scaler_incr_csrscaler_incr_cscr  r  r  r  r@   s               r7   test_maxabs_scaler_partial_fitr2    sF    	TcT111WA	
A!RAF+ / /
#~~))!,,"nn&..&.. J// 	A 	AE%11!E(;;K%ah//E-99%@@O%ah//E-99%@@OO!,"79MNNN!,"79QRRR!,"79QRRR+{/JJJJJ+/NNNNN+/NNNNN!,"5{7IJJJ!,"57MNNN!,"57MNNN!,"8"8";";[=R=RST=U=UVVV q*%%#~~))!F)44"nn006;;!,"79MNNN+{/JJJJJ!,"5{7IJJJ!,"8"8";";[=R=RST=U=UVVV $~~))!,,"nn!+a"<"<== 		 		HAu%11!E(;;K!K :%*:    		M/ /r8   c                     t           j                            d          } |                     dd          }t	          j        |          }d|dd d f<   |j        d         }|j        d         }d|j        ||<   t	          j        |          }|||fD ]}t          dd          }|	                    |          }||usJ t          |          }	t          dd	          }|	                    |          }||u sJ t          |          }
|	|
fD ]h}t          j        |                              d
          }t          d          D ]}t          ||         d           t          |d         d           it          j        t          j        t          j        fD ]} ||          }t          dd	          	                    |          x}}||usJ t%          |t          j                  sJ t          |          }t          d          D ]}t          ||         d           t          t'          j        |d                   d           d S )Nr   r]   r^   r{   rI   l1Tnormrx   Fr.   ry   ra   l2)r:   r   r   rN   r   r  indptrr3  r   rp   r3   r  r  r   r   
coo_matrixr  
lil_matrixr   lar6  )rM   rj  X_sparse_unprunedindptr_3indptr_4X_sparse_prunedrW   
normalizerX_normX_norm1X_norm2row_sumsr@   inits                 r7   test_normalizer_l1rF    su   
)


"
"Cii1ooG)'22 GAqqqDM !'*H '*H038H,- '00O (9: 2 2T555
%%a((Q&//T666
%%a(({{{{&//( 	2 	2Fvf~~))q)11H1XX 6 6#HQK5555S1111		2 "F$5v7HI 
5 
5DMM(d???II!LLLQ&&"344444q 	2 	2AS1111BGF1I..4444
5 
5r8   c            	         t           j                            d          } |                     dd          }t	          j        |          }d|dd d f<   |j        d         }|j        d         }d|j        ||<   t	          j        |          }|||fD ]}t          dd          }|	                    |          }||usJ t          |          }t          dd	          }|	                    |          }	|	|u sJ t          |	          }	||	fD ]d}
t          d          D ]*}t          t          j        |
|                   d
           +t          t          j        |
d                   d           et          j        t          j        t          j        fD ]} ||          }t          dd	          	                    |          x}
}|
|usJ t%          |
t          j                  sJ t          |
          }
t          d          D ]*}t          t          j        |
|                   d
           +t          t          j        |
d                   d           d S )Nr   r]   r^   r{   rI   r7  Tr5  Fra   )r:   r   r   rN   r   r  r8  r3  r   rp   r3   r   r   r;  r6  r9  r  r:  r   )rM   rj  r<  r=  r>  r?  rW   r@  rB  rC  rA  r@   rE  s                r7   test_normalizer_l2rH  M  s}   
)


"
"Cii1ooG)'22 GAqqqDM !'*H '*H038H,- '00O (9: 9 9T555
&&q))a'""T666
&&q))!||||'""( 	9 	9F1XX = =#BGF1I$6$6<<<<q	 2 2C8888	9 "F$5v7HI 
5 
5DMM(d???II!LLLQ&&"344444q 	9 	9Aq	 2 2C8888BGF1I..4444
5 
5r8   c                     t           j                            d          } |                     dd          }t	          j        |          }d|dd d f<   |j        d         }|j        d         }d|j        ||<   t	          j        |          }|||fD ]}t          dd          }|	                    |          }||usJ t          |          }t          dd	          }|	                    |          }	|	|u sJ t          |	          }	||	fD ]c}
t          |
                              d
          }t          d          D ]}t          ||         d           t          |d         d           dt          j        t          j        t          j        fD ]} ||          }t          dd	          	                    |          x}
}|
|usJ t%          |
t          j                  sJ t          |
          }
t          d          D ]}t          ||         d           t          t'          j        |
d                   d           d S )Nr   r]   r^   r{   rI   r5  Tr5  Fr.   ry   ra   r7  )r:   r   r   rN   r   r  r8  r3  r   rp   r3   r  r5  r   r   r9  r  r:  r   r;  r6  )rM   rj  r<  r=  r>  r?  rW   r@  rB  rC  rA  row_maxsr@   rE  s                 r7   test_normalizer_maxrK  }  sx   
)


"
"Cii1ooG)'22 GAqqqDM !'*H '*H038H,- '00O (9: 2 2U666
&&q))a'""U777
&&q))!||||'""( 	2 	2F6{{A..H1XX 6 6#HQK5555S1111		2 "F$5v7HI 
5 
5DMM(d???II!LLLQ&&"344444q 	2 	2AS1111BGF1I..4444
5 
5r8   c            	      P   t           j                            d          } |                     dd          }d|dd d f<   |dt	          |dd d f                                                   fxx         dz  cc<   t          j        |           }t          j        |          }|||fD ]}}t          d	          }|	                    |          }||usJ t          |          }t          t          j        |          t          j        t          |                               ~d S )
Nr   r]   r^   r{   rI   rH   r-   r5  r6  )r:   r   r   rN   r  argmaxr   r  r   rp   r3   r   sign)rM   rj  	X_all_negX_all_neg_sparserW   r@  rA  s          r7   test_normalizer_max_signrR    s(   
)


"
"Cii1ooGGAqqqDM As71aaa4=!!((***+++r1+++ I(33y"23 A AU+++
%%a((Q276??BGGAJJ,?,?@@@@A Ar8   c                     t           j                            d                              dd          } t	          t          | d          t          | j        dd          j                   t          j        t                    5  t          dggd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dggd	
           d d d            n# 1 swxY w Y   t           j                            d          }|                    dd          }t          j        |          }t          j        d          }||fD ]} t           j        t           j        fD ]}dD ]}|                     |          } t          | |
          }|j        |k    sJ t#          |          }|dk    r)t          j        |                              d          }n|dz  }	|	                    d          }t)          ||           t          j        g dg dg dg          }dD ]}t          ||d          \  }
}|dk    r%t)          |t          j        g d                     B|dk    r%t)          |t          j        g d                     mt)          |t          j        g d                     t          j        |          }dD ]E}t          j        t,                    5  t          ||d           d d d            n# 1 swxY w Y   Ft          |dd          \  }
}t)          |t          j        g d                     d S )N%   rI   rH   Frw   r   )rz   rx   ry   l3rM  r1   r^   )r4  r7  r4  r.   )r   r   r  )ra   r{   r{   )r`   r   r{   )r4  r7  r5  T)r6  return_norm)      @ra   r   r7  )r   ra   g1C+@)r  ra   r   r5  )r:   r   r   rN   r   r   r  rO   rP   rQ   r   r  rm   r   r   r   r   r3   r  r  r   rd   NotImplementedError)rW   rsrj  r  rm   r   r6  rA  rD  X_norm_squared_normss               r7   test_normalizer]    s    		b!!''1--Ay///13QU1S1S1S1UVVV	z	"	" ! !A3%a    ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	z	"	" $ $A3%d####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
		q	!	!Bhhr1ooG ))H7B==Dx  : :j"*- 	: 	:E$ : :HHUOO"14000|u,,,, 4<<!vf~~11q199HH%+QYN-11q199H)(D9999:	:  hHIIG# H HW4TBBB54<<%eRXooo-F-FGGGGT\\%eRX6L6L6L-M-MNNNN%eRXooo-F-FGGGG ))H = =].// 	= 	=hTt<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=4@@@HAueRXooo%>%>?????s6   B&&B*-B*
C**C.1C.7LL	L	c                     t          j        g dg dg          } t           j        t          t          j        t          j        fD ]} ||                                           }t          dd          }t          |	                    |                    }t          j
        |dk              dk    sJ t          j
        |dk              d	k    sJ |	                    |          }t          j        |          t          j        |          k    sJ t          d
                              |          }t          |	                    |                    }||usJ t          j
        |dk              d	k    sJ t          j
        |dk              dk    sJ t          d
          }|	                    |          }||usJ t          |          }t          j
        |dk              d	k    sJ t          j
        |dk              dk    sJ t          d
          }|	                    |          }|t          ur||u sJ t          d
          }t          j        g dg dgt           j                  }|	                    |          }|t          ur||u sJ t          |          }t          j
        |dk              d	k    sJ t          j
        |dk              dk    sJ t          dd          }t           j        t          fD ]} ||                                           }t          |	                    |                    }t          j
        |dk              dk    sJ t          j
        |dk              dk    sJ |	                    |          }t          j        t                     5  |	                    t          j        |                     d d d            d S # 1 swxY w Y   d S )N)r.   r   r^   )rH   rI   r-   r`   T)	thresholdrx   r   r]   r.   rH   rw   Fr   r0  r^   )r:   rd   r   r   r  r  rx   r   r3   rp   r  r`  rR   r   rO   rP   rQ   )X_rE  rW   	binarizerX_binX_floats         r7   test_binarizerrd    s   	999jjj)	*	*B4!2F4EF %' %'DOO$777		++A..//veqj!!Q&&&&veqj!!Q&&&&##A&&q!!V_U%;%;;;;;4(((,,Q//		++A..//A~~~~veqj!!Q&&&&veqj!!Q&&&&4(((	##A&&A~~~~veqj!!Q&&&&veqj!!Q&&&&5)))	##A&&tA::::5)))	(IIIzzz2"*EEE##G,,tG####veqj!!Q&&&&veqj!!Q&&&&&Dt444I4  ' 'DOO	++A..//veqj!!Q&&&&veqj!!Q&&&&##A&& 
z	"	" 2 2F-a001112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   <(O11O58O5c                     t           j                            d          } |                     d          }t	          d          }|                    |           |                    |          }t          j        ||j                  }t                      }t          j        ||j                  }|
                    |          }t          ||           |                     d          }t          j        ||j                  }	|                    |          }
t          j        |
|j                  }|                    |	          }t          ||           t          j        |          |j        d         z  }|||z  z
  ||z  z
  ||z  |z  z   }t          ||           t          j        |	          |j        d         z  }|	||z  z
  |	|z  z
  ||z  |z  z   }t          ||           d S )Nr   r^   r]   Fr   )rH   r]   )r:   r   r   random_sampler   rR   rp   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_centered3s                    r7   test_center_kernelry  +  s    )


"
"Cf%%EU+++F
JJu%%e,,NF5%'""E HVNN,<==N,,U33Ono>>> v&&FVFEG$$F&&v..Of_n.>??O))&11o/?@@@ \%  5;q>1Ffun,uv~=QW@WWONO444 <''%+a.8L%%7,:NQW:WW  O%566666r8   c                     t           j                            d          } |                     dd          |                     dd          }}d } ||          } ||          }t	          d          }|                    |          }|                    |          }||j        z  }	||j        z  }
||j        z  }||j        z  }t                      }|	                    |	           t          |                    |	          |           t          |                    |
          |           t          j        |	          |	j        d         z  }|	||	z  z
  |	|z  z
  ||	z  |z  z   }t          |                    |	          |           t          j        |
          |	j        d         z  }|
||	z  z
  |
|z  z
  ||	z  |z  z   }t          |                    |
          |           dS )	z-Check kernel centering for non-linear kernel.r   r   r   ru  c                     t          j        t          j        | dd          t          j        | dd           g          S )zOur mapping function phi.r   N)a_mina_max)r:   r  clipr  s    r7   phiz2test_kernelcenterer_non_linear_kernel.<locals>.phi\  sF    y$///$a0000
 
 	
r8   Fr   N)r:   r   r   rN   r   r   rp   r  r   rR   r
   ri  r<   )rM   rW   rs   r  phi_X
phi_X_testrY   phi_X_centerphi_X_test_centerKK_testK_centerK_test_centerkernel_centererru  
K_centeredrw  K_test_centereds                     r7   %test_kernelcenterer_non_linear_kernelr  W  s   
)


"
"C		#r""CIIb"$5$5vA
 
 
 CFFEVJ U+++F''..L((44 	A%'!Fln,H%6M$&&OO--a00(;;;O--f55}EEE \!__qwqz)FVaZ!f*,vzF/BBJO--a00*=== <''!'!*4L!!FVO3lQ6F6OO  O--f55GGGGGr8   c                  ~   t          j        g dg dg dg dg          } t          j        d          }|                     | j                  }t                      }t          d|fdt                      fg          }|                                d         sJ t          |||d	
          }t          ||           d S )N)rI   r   r   )r   rI   r   )r   r   rI   r  )r]   r  svrpairwiserH   )cv)r:   rd   rm   rh  r  r   r&   r(   	_get_tagsr'   r   )rW   y_truer  kcentpipeliney_preds         r7   test_cv_pipeline_precomputedr    s     	)))YYY			999=>>AWT]]F	ac

AE+U3eSUU^DEEH 
++++
 xFq999Fff-----r8   c                  `   t           j                            d          } |                     d          }t	                      t                      t                      fD ]O}|                    |                              |          }|	                    |          }t          ||           Pd S )Nr   rf  )r:   r   r   rg  r   r   r   rR   rp   r   r   )rM   rW   objX_transformedX_transformed2s        r7   test_fit_transformr    s    
)


"
"C&!!A  *,,	< : :

,,Q//**1--=.9999: :r8   c                  l    ddgddgddgg} t          |           } t          | g dg dg dg           d S Nr.   r   )r.   r.   r   rb   )r   r   r  s    r7   test_add_dummy_featurer    sP    
Q!Q!Q A!Aq999iii;<<<<<r8   c                      t          j        ddgddgddgg          } t          |           } t          j        |           s
J |             t	          |                                 g dg dg dg           d S r  )r   r9  r   isspmatrix_coor   r3   r  s    r7   test_add_dummy_feature_coor        Aq6Aq6Aq6233A!A ##&&Q&&#qyy{{YYY			999$EFFFFFr8   c                      t          j        ddgddgddgg          } t          |           } t          j        |           s
J |             t	          |                                 g dg dg dg           d S r  )r   r  r   isspmatrix_cscr   r3   r  s    r7   test_add_dummy_feature_cscr    r  r8   c                      t          j        ddgddgddgg          } t          |           } t          j        |           s
J |             t	          |                                 g dg dg dg           d S r  )r   r  r   isspmatrix_csrr   r3   r  s    r7   test_add_dummy_feature_csrr    r  r8   c                      t           j        } | d d d df         }t          dd          t                      t	                      g}|D ],}|                    |            |                    |           -d S )NrH   Fr   )r2  r3  r   r   r   r   )rW   r   scalersrY   s       r7   test_fit_cold_startr    s    	AQQQU8D 	777G  # #Q 	T""""	# #r8   c                      t          j        g dg dg dg          } t          j        t          d          5  t          | j        d           d d d            d S # 1 swxY w Y   d S )Nr  r  r  z1axis should be either equal to 0 or 1. Got axis=2r   rH   ry   )r:   rd   rO   rP   rQ   r   r  r  s    r7   "test_quantile_transform_valid_axisr    s    
&&&(8(8(8:S:S:STUUA	M
 
 
 ( ( 	13Q''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   AA!$A!methodbox-coxyeo-johnsonc                 r   t          |           }t          j        t                    }t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr  )	r   r:   r  r~   rO   rP   r$   rp   r   )r  ptrW   s      r7    test_power_transformer_notfittedr    s   		(	(	(B
vA	~	&	&  
Q              	~	&	&    
Q                                   s$   A%%A),A)	B,,B03B0standardizec                     | dk    rt          j        |          n|}t          | |          }|                    |          }t	          ||                    |                     d S )Nr  r  r  )r:   r  r   r   r   r   )r  r  rW   r  r6  s        r7   test_power_transformer_inverser    sh     y((q			aA	[	A	A	ABq!!G2//8899999r8   c                     t          j        t                    } dD ]A}t          d|          }|                    |           }t          | d|          }t          j        |                                           \  }}|rt          |          }t          |                    dd          |           t          |                    dd          |           t          | |                    |                     t          ||j        d                    t          |j                  | j        d         k    sJ t!          |j        t           j                  sJ Cd S )NTFr  r  r-   r.   r   )r:   r  r~   r   r   r    r   boxcoxflattenr   r   r  r   lambdas_r  r<   r   r  )rW   r  r  r6  X_trans_funcr  lambda_expecteds          r7   test_power_transformer_1dr    sD   
vA$ 3 3YKHHH""1%%&qTTT&+l199;;&?&?#
O 	+z**JJ..r155w???J..r155|DDDAr33G<<===OR[^<<<2;171:----"+rz222222%3 3r8   c                     t          j        t                    } dD ]C}t          d|          }|                    |           }t          | d|          }||fD ]}t          |j        d                   D ]{}t          j	        | d d |f         
                                          \  }}|rt          |          }t          |d d |f         |           t          ||j        |                    ||                    |          }	t          |	|            t!          |j                  | j        d         k    sJ t#          |j        t           j                  sJ Ed S )Nr  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  X_trans_classr  r6  jr  lmbdaX_invs
             r7   test_power_transformer_2dr  	  sm   
tA$ 3 3YKHHH((++&qTTT%|4 	0 	0G7=+,, ; ;$)L111a41B1B$C$C!
E 3!&z!2!2J#GAAAqDM:>>>#E2;q>:::: ((11E%eQ////2;171:----"+rz222222+3 3r8   c                     t          d          } |                     t          j        t                               t          }d}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     t          j
        t          j                             d d d            n# 1 swxY w Y   t          j        t          |          5  |                     t          j
        t          j                             d d d            n# 1 swxY w Y   t          j        t          |          5  t          t          j
        t          j                  d           d d d            d S # 1 swxY w Y   d S )Nr  r  zstrictly positiver   )r   rR   r:   r  r   rO   rP   rQ   rp   r    r   r<   )r  X_with_negativesnot_positive_messages      r7   9test_power_transformer_boxcox_strictly_positive_exceptionr  )	  s~    
	+	+	+BFF26$<<.	z)=	>	>	> ' '
%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
z)=	>	>	> ! !
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z)=	>	>	> < <(;;;;< < < < < < < < < < < < < < < 
z)=	>	>	> + +
RXdj))***+ + + + + + + + + + + + + + + 
z)=	>	>	> % %
rx
##$$$% % % % % % % % % % % % % % % 
z)=	>	>	> @ @,,Y????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @sl   !BB
B)CCC1DDD52E33E7:E72GGG=.H88H<?H<c                 (    t          | d           d S )Nr  r  r   r  s    r7   +test_power_transformer_yeojohnson_any_inputr  E	  s     Am,,,,,,r8   c                    t          |           }t          j        t                    }|                    |           d}t          j        t          |          5  |                    |d d ddf                    d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    |d d ddf                    d d d            d S # 1 swxY w Y   d S )Nr  zBX has \d+ features, but PowerTransformer is expecting \d+ featuresr   r   r.   )
r   r:   r  r   rR   rO   rP   rQ   rp   r   )r  r  rW   wrong_shape_messages       r7   &test_power_transformer_shape_exceptionr  K	  sh   		(	(	(B
tAFF1III
 	R  
z)<	=	=	=    
Qqqq!A#vY                              
z)<	=	=	= ( (
Qqqq!A#vY'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s$   "B

BB0"CC#&C#c                     t          dd          } t          j        t                    d d ddf         }t          j        dg          | _        |                     |          }t          |                     |          |           d S )Nr  Fr  r   r.   )	r   r:   r  r   rd   r  rp   r   r   r  rW   r6  s      r7   "test_power_transformer_lambda_zeror  ^	  sx    		>	>	>B
tQQQ!VA (A3--BKll1ooGb227;;Q?????r8   c                      t          dd          } t          j        t                    d d ddf         }t          j        dg          | _        |                     |          }t          ||           d S )Nr  Fr  r   r.   )r   r:   r  r   rd   r  rp   r   r  s      r7   !test_power_transformer_lambda_oner  h	  sh    	E	B	B	BB
tQQQ!VA(A3--BKll1ooGgq)))))r8   zmethod, lmbda))r  r  )r  r;  )r  r  )r  r;  )r  ra   c                    t           j                            d          }d}|                    dd|df          }t	          | d          }|g|_        |                    |          }t	          | d          }|                    |          }t          dt           j	        
                    ||z
            |z  d           t          d|                                d           t          d|                                d           d S )	Nr   i N  r.   )locr   r0   Fr  rH   r   )r:   r   r   r  r   r  r   r   r   linalgr6  r   r   )r  r  rM   rU   rW   r  r  X_inv_transs           r7   #test_optimization_power_transformerr  r	  s    " )


"
"CI

qA
77A	U	;	;	;B'BK  ##E	U	;	;	;B""5))K29>>!k/::YFPQRRRR;++--q9999;??,,a888888r8   c                      g d} t          j        |                               dd          } t          d                              |           j        }t          j        |dd          sJ d S )	N)gffffff@g ra   r`   gffffff?g333333@rk   gffffff@g?g@rW  r   g"@g      @g      r-   r.   r  r  gzG?r  r   )r:   rd   r  r   rR   r  allclose)rW   r  s     r7   test_yeo_johnson_darwin_exampler  	  sq     	VUUA
B""AM22266q99BE;ue$////////r8   c                    t          j        t                    }t          |           }|                    |           |j        d         }t          j        |t          j        |t           j                  g          }t          |d          }|                    |           |j        d         }t          ||d           |                    |          }t          t          j        |          t          j        |                     d S )Nr  r   )r  r^   r   )r:   r  r~   r   rR   r  concatenate	full_liker_  r)   r   rp   r   r   )r  rW   r  lmbda_no_nans
lmbda_nansr6  s         r7   test_power_transformer_nansr  	  s    
 	vA		(	(	(BFF1IIIKNM 	2<2622344A"""AFF1IIIQJz1====ll1ooGrx(("(1++66666r8   c                     t           }| dk    rt          j        |          }t          | |          }t	          |                    |                              |          |                    |                     d S )Nr  )r  )r~   r:   r  r   r   rR   rp   r   )r  r  rW   r  s       r7   $test_power_transformer_fit_transformr  	  so     	AF1II	&k	:	:	:BbffQii11!44b6F6Fq6I6IJJJJJr8   c                    t           }| dk    rt          j        |          }|                                }||usJ t	          ||           t          | |d          }|                    |           t	          ||           |                    |          }||usJ |                    |          }t	          ||           ||usJ |	                    |          }||usJ d S )Nr  Tr  rx   
r~   r:   r  rx   r   r   rR   rp   r   r   r  r  rW   
X_originalr  r6  r  s          r7    test_power_transformer_copy_Truer  	  s    
 	AF1IIJJa,,,	&k	E	E	EBFF1IIIa,,,ll1ooG!q!!Ga,,,!&&w//K+%%%%%%r8   c                    t           }| dk    rt          j        |          }|                                }||usJ t	          ||           t          | |d          }|                    |           t	          ||           |                    |          }||u sJ | dk    rt          j        |          }|                    |          }||u sJ |	                    |          }||u sJ d S )Nr  Fr  r  r  s          r7   !test_power_transformer_copy_Falser  	  s    
 	AF1IIJJa,,,	&k	F	F	FBFF1IIIa,,,ll1ooGa<<<<F1IIq!!Ga<<<<&&w//Kk!!!!!!r8   r  皙?)r  r  )r1   r.   )r   c                     t          j        ddd          }t          d          }|                    |                              |            t          j        |j        d                   sJ d S )Nr^   r.   r  r  Frh   r   )r   r   r   rR   r   r:   r   ro   )r  r   rY   s      r7   7test_standard_scaler_sparse_partial_fit_finite_variancer  	  sj     -1c
*
*
*Ce,,,F
JJsOO$$$;v{1~&&&&&&&r8   r/  )r   r.   )r  r1   c                    t           j        }t          | d                              |          }t	          j        |d          t	          j        |d          }}t          j        |d d         dz
  |dd          dz   f         g}|                    |          }t          || d         | d         | d         | d         gg           d S )NT)r/  r~  r   ry   rH   r1   r.   )
r2  r3  r   rR   r:   r4  r5  r_rp   r
   )r/  rW   rY   X_minX_maxrs   r  s          r7   test_minmax_scaler_clipr  	
  s     		ADAAAEEaHHF6!!$$$bfQQ&7&7&75EeE"1"INE!""IN234F$$V,,M

M!,mA.>a@P	QR    r8   c                     t                                          t                    } d}t          j        t
          |          5  |                     t          dddf                    ddd           dS # 1 swxY 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   r  s     r7   -test_standard_scaler_raise_error_for_1d_inputr  
  s     !!$''F7G	z	1	1	1 - -  aaad,,,- - - - - - - - - - - - - - - - - -s   %A66A:=A:c                     dt          j        g ddz  g dz   t           j                                      dd          z  } t	                      }t          j                    5  t          j        dt                     |	                    |           }d	d	d	           n# 1 swxY w Y   t          j
        t          j        |                    rJ |                                t          j        d
          k    sJ |                                t          j        d          k    sJ |                                dk    sJ |                                dk     sJ 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
  )r1  r`   r   r  r]   )r     r        ru  U   r  r   r-   r.   r   Nr{   ra   r  rH   )r:   rd   r   r  r   r   r   r   RuntimeWarningr   r   r   r   rO   r   r   r4  r5  )X_non_gaussianr  r6  s      r7   1test_power_transformer_significantly_non_gaussianr  #
  s    28q #C#C#CC2:  gb!nnN 
		B		 	"	" 3 3g~666"">223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 vbhw''(((((<<>>V]3//////;;==FM#......;;==2;;==1s   #0BB#&B#Transformerc                      |                                  t          j                  }|                    t          j                  }t          |t          j                   dS )9Check one-to-one transformers give correct feature names.N)rR   r2  r3  get_feature_names_outfeature_namesr   )r  tr	names_outs      r7   test_one_to_one_featuresr  ;
  sN     
		49	%	%B(();<<Iy$"455555r8   c                 d   t          j        d          }|                    t          j        t          j                  } |                                 |          }|                                }t          |t          j                   |                    t          j                  }t          |t          j                   t          j
        d          }t          j        t          |          5  t          d          }|                    |           ddd           dS # 1 swxY w Y   dS )r   pandas)columnsz0input_features is not equal to feature_names_in_r   abcdN)rO   importorskip	DataFramer2  r3  r  rR   r  r   reescaperP   rQ   r   )r  pddfr  names_out_df_defaultnames_out_df_valid_inmsginvalid_namess           r7   test_one_to_one_features_pandasr  M
  s@    
	X	&	&B	di);	<	<B			2		B3355+T-?@@@44T5GHH,d.@AAA
)F
G
GC	z	-	-	- 0 0V
  ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   3%D%%D),D)c                  ^   t           j                            d          } |                     d          }t	          |          }t                                          |          }|                                }|j        d         }t          |d t          |          D                        dS )z.Test that kernel centerer `feature_names_out`.r   )r_   r]   r.   c                     g | ]}d | S )kernelcentererr?   r   s     r7   r   z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>w
  s!    "U"U"UA#7A#7#7"U"U"Ur8   N)r:   r   r   rg  r#   r   rR   r  r<   r   r   )rM   rW   
X_pairwiserm  r  samples_out2s         r7   &test_kernel_centerer_feature_names_outr  m
  s     )


"
"C&!!Aq!!J##J//H..00I#A&Ly"U"U|ATAT"U"U"UVVVVVr8   )r   rh  r  numpyr:   numpy.linalgr  r;  scipyr   r   rO   sklearn.utilsr   sklearn.utils._testingr   r   r   r	   r
   r   r   r   sklearn.utils.sparsefuncsr   sklearn.preprocessingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    sklearn.preprocessing._datar!   r"   sklearn.metrics.pairwiser#   sklearn.exceptionsr$   sklearn.baser%   sklearn.pipeliner&   sklearn.model_selectionr'   sklearn.svmr(   r)   sklearnr*   	load_irisr2  r   r   rM   rV   rU   r   r  r   rN   r   r  r}   r~   tolistr   X_list_1colr3   r=   rF   r[   markparametrizerd   r_  rt   r   r  r  r   r;   r   r   r   r   r   r   r   r   r   r  r  r  r  r(  r+  r8  rJ  rL  rP  r\  rb  rf  rs  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r   r&  r(  r*  r-  r2  rF  rH  rK  rR  r]  rd  ry  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  r?   r8   r7   <module>r/     sd        				                    % % % % % % 6 6 6 6 6 6 < < < < < < 5 5 5 5 5 5 4 4 4 4 4 4 2 2 2 2 2 2 ? ? ? ? ? ? 0 0 0 0 0 0 5 5 5 5 5 5 8 8 8 8 8 8 + + + + + + 0 0 0 0 0 0 , , , , , , + + + + + + 0 0 0 0 0 0 ' ' ' ' ' ' . . . . . . . . . . . . 5 5 5 5 5 5 4 4 4 4 4 4 . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 > > > > > > 8 8 8 8 8 8 2 2 2 2 2 2 - - - - - -       % % % % % % 5 5 5 5 5 5       ! ! ! ! ! !       x 	iA
	
++b!*+
-
-	Q	,	,
yyJ''&07:	ad		Az	*	*	aaad		Iq	)	)mmoommoo  " " "M M M@ @ @&    
))YYY	)))YYY			!BS#JOYY			"YY			999iii8BHaV	
 ^bfbfa01BFA###	 BHaV		
 * ,.S.S.STTN N UT+ ,N,"0 "0 "0J 4!2F4EF  ,udm<<1 1 =< 1. '''E***  2:v'8&:KL  ,udm<<2:rz":;;___55$4 $4 65 <; =<  $4N &7&7&788$4$4$4552:rz":;;"*f&79JK /S /S  <; 65 98/Sd	I 	I 	I #> #> #>L1 1 1hA A A23 3 3- - -`0K 0K 0Kf+E +E +E\ 4,77: : 87:& 4,77' ' 87'T     0  @7 7 7>: : :$ $ $N 4,77F> F> 87F>R tUm44dE]33"*f&79JK I I  43 54
I@ @ @)= )= )=XC> C> C>L> > >*4 4 4B     )D%=99$77ryr155{v{2qRU7V7V7VWXX% % YX 87 :9%$@ @ @
: 
: 
: $:$:$:;;*,S,S,STT? ? UT <;?(E E E	& 	& 	&	* 	* 	*? ? ?(62 62 62r:N :N :Nz. . .@,= ,= ,=^#B #B #BL8 8 8" " "J= = =	= 	= 	= ':;;( ( <;(&" " "!G !G !GH& & && & &F F F27 7 7$+4 +4 +4\3 3 3(	D 	D 	DM M MB5 5 5p.5 .5 .5b-5 -5 -5`.5 .5 .5bA A A(.@ .@ .@b52 52 52p)7 )7 )7X3H 3H 3Hl. . .(: : := = =G G GG G GG G G# # #$( ( ( I}#=>>    ?>  I}#=>>u66vtn--: : .- 76 ?>:3 3 303 3 36@ @ @8 tVRVD\\FBF4LL=("(4:BVBVWXX- - YX-
 I}#=>>( ( ?>($@ @ @* * *   	 	9 9	 	9.0 0 0 I}#=>>7 7 ?>7, I}#=>>u66K K 76 ?>K I}#=>>u66& & 76 ?>&4 I}#=>>u66" " 76 ?>"8 	b!Sq999'"''bf===>> ' ' ' 69*=>>
 
 ?>
	- 	- 	-  0 
 
6 6
 
6 	 0 0 0&
W 
W 
W 
W 
Wr8   