
    -iր                       S SK r S SKrS SKrS SKJr  S SKrS SKJ	r	J
r
  S SKJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.J/r/  S SK0J1r1  S SK2J3r3J4r4  S SK5J6r6J7r7J8r8  S SK9J:r:  S SK;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrD  S SKEJFrF  S SKGJHrHJIrIJJrJJKrKJLrL  S SKMJNrN  \R                  " 5       rP\R                  R                  S 5      rSSrTSrU\SR                  SS\TS9rW\SR                  SS\TS9rX\SR                  \U\T5      \X-  \W-   rZ\ZS SS24   R                  S\T5      r\\ZSS2S 4   R                  \US5      r]\\R                  5       r_\]R                  5       r`S raS rbS rcS rd\R                  R                  / SQ/ SQ/ S Q// SQ/ SQ/ S Q/S!S"/4/ S#Q/ S$Q// S#Q/ S$Q/ S$Q/ S$Q/\R                  " SS%/5      4S\R                  S/\R                  \R                  S//S\R                  S/\R                  \R                  S/\R                  \R                  S/\R                  \R                  S//\R                  " SS%/5      4/5      \R                  R                  S&/ S'Q5      S( 5       5       riS) rj\R                  R                  S*S/\I-   \J-   5      \R                  R                  S+S,S-/5      S. 5       5       rk\R                  R                  S/\$" S,S09\#" S,S19/5      \R                  R                  S*S/\I-   \J-   5      \R                  R                  S+S,S-/5      \R                  R                  S2\R                  \R                  /5      \R                  R                  S3/ S4Q5      S5 5       5       5       5       5       rn\R                  R                  S6/ S7Q5      \R                  R                  S8/ S9Q5      \R                  R                  S2\R                  \R                  /5      \R                  R                  S*S/\I-   \J-   5      S: 5       5       5       5       roS; rp\DS< 5       rqS= rrS> rsS? rtS@ ruSA rv\R                  R                  S*\I\J-   5      SB 5       rw\R                  R                  SCS-S/5      \R                  R                  S*\I\J-   5      SD 5       5       rx\R                  R                  SCS-S/5      SE 5       rySF rz\R                  R                  SG\8" 5       \7SH9\R                  R                  SI\F/\:SH9\R                  R                  SJ\" 5       \" 5       \" S-SK9\" 5       \ " SLSM9\ " SNSM9\ " SOSM9\" 5       /\:SH9SP 5       5       5       r{SQ r|SR r}SS r~ST r\R                  R                  SCS-S/5      \R                  R                  S*\I\J-   5      SU 5       5       r\R                  R                  SVS-S,/5      \R                  R                  SWS-S,/5      \R                  R                  S*S/\I-   \J-   5      SX 5       5       5       rSY r\R                  R                  S*\I\J-   5      SZ 5       r\R                  R                  S*\I\J-   5      S[ 5       r\R                  R                  S*\J\I-   5      S\ 5       r\R                  R                  S*\J\I-   5      S] 5       rS^ rS_ r\R                  R                  S`S-S,/5      \R                  R                  SaS-S,/5      \R                  R                  Sb\R                  R                  SS%5      \	GR                  " SS%ScSd9/5      Se 5       5       5       r\R                  R                  Sf\J5      Sg 5       rSh r\R                  R                  Si/ SjQ5      \R                  R                  Sk/ SlQ5      Sm 5       5       r\R                  R                  Sf\J5      Sn 5       rSo rSp r\R                  R                  Sq\I5      Sr 5       r\R                  R                  Sq\I5      Ss 5       r\R                  R                  Sq\I5      St 5       rSu rSv rSw r\R                  R                  Sq\I5      Sx 5       rSy r\R                  R                  Sq\I5      Sz 5       rS{ rS| r\R                  R                  S}S~S/5      S 5       rS r\R                  R                  Sf\J5      S 5       rS rS rS rS r\R                  R                  S*\I\J-   5      S 5       rS r\R                  R                  Sf\J5      S 5       rS r\R                  R                  Sf\J5      S 5       rS r\R                  R                  S/ SQ5      \R                  R                  Sf\J5      S 5       5       r\R                  R                  S/ SQ5      \R                  R                  S*\H\I-   \K-   5      S 5       5       r\R                  R                  Sf\J5      S 5       r\R                  R                  Sf\J5      S 5       r\R                  R                  S\R                  \/\I-   \J-   5      S 5       r\R                  R                  SG\8" 5       5      S 5       rS rS rS rS rS r\R                  R                  S*\H\I-   \J-   5      S 5       rS r\R                  R                  SSS/5      S 5       r\R                  R                  SSS/5      \R                  R                  SS-S,/5      \R                  R                  Sb\]\Z/5      S 5       5       5       rS rS rS r\R                  R                  Sb\Z\GRx                  " \Z5      \GRx                  " \Z5      * \GRz                  " \ZGR|                  5      /5      S 5       r\R                  R                  SSS/5      S 5       rS rS r\R                  R                  S/ SQ5      S 5       rS rS r\R                  R                  SSS/5      S 5       r\R                  R                  SSS/5      \R                  R                  SS-S,/5      S 5       5       r\R                  R                  SSS/5      \R                  R                  SS-S,/5      S 5       5       r\R                  R                  SSS/5      \R                  R                  SS-S,/5      S 5       5       rS r\R                  R                  S\	R                  " SSSS S9/\J V s/ s H$  n U " \GR                  S\R                  S95      PM&     sn -   5      S 5       r\R                  R                  SSS/5      S 5       rS rS r\R                  R                  S\\\#\$\"\!/5      S 5       r\R                  R                  S\\\#\$\"\!\ \/5      S 5       rS r\R                  R                  SS-S,/5      S 5       r\R                  GR                  \L\" S5      :  SS9S 5       rS rgs  sn f )    N)sparsestats)config_contextdatasets)clone)NotFittedError)parse)linear_kernel)cross_val_predict)Pipeline)	BinarizerKernelCentererMaxAbsScalerMinMaxScaler
NormalizerPowerTransformerQuantileTransformerRobustScalerStandardScaleradd_dummy_featuremaxabs_scaleminmax_scale	normalizepower_transformquantile_transformrobust_scalescale)BOUNDS_THRESHOLD_handle_zeros_in_scale)SVR)gen_batchesshuffle)_convert_to_numpy_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)_get_check_estimator_ids)	_array_api_for_tests_convert_containerassert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equalassert_array_lessskip_if_32bit) check_array_api_input_and_values)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERS
sp_version)mean_variance_axis        size
   c                 H    [        U S5      (       a  U R                  5       n U $ )Ntoarray)hasattrr?   as    X/var/www/html/venv/lib/python3.13/site-packages/sklearn/preprocessing/tests/test_data.pyr?   r?   U   s    q)IIKH    c                 H    [         R                  " U 5      R                  S   $ )Nr   )npasarrayshaperA   s    rC   _check_dim_1axisrI   [   s    ::a=q!!rD   c                 J    X#:w  a  U S-   U-  U:X  d   eg X-  X!-
  -   U:X  d   eg )Nr:    )ibatch_start
batch_stopn
chunk_sizen_samples_seens         rC   assert_correct_incrrR   _   s6    A#~555~!9:nLLLrD   c                  `   SS/n SS/n[        X5       H  u  p#[        R                  X#5      n[        R                  U5      n[        5       n[        R                  US5      S-  n[        R
                  " [        5         UR                  XEUS9  S S S 5        M     g ! , (       d  f       M  = f)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           rC   9test_raises_value_error_if_sample_weights_greater_than_1drg   f   s     QJa&K!$Z!=	IIi,IIi ! "ii	15:]]:&JJq+>J? '& "> '&s    B
B-	)Xwrc   rW   )r:   rT   rU   )                @      ?r:   r   r:   )r   r   r:   rU   array_constructor)array
sparse_csr
sparse_cscc                 2   UR                  S5      (       + n[        X5      n[        X5      n [        R                  " U R                  S   5      n[        US9nUR                  XUS9  [        R                  " UR                  S   5      n[        US9nUR                  X5        / SQ/ SQ/n	[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  U	5      UR                  U	5      5        g )Nr   r   	with_meanrV   )      ?      @      @)rx   g      @g      @)
startswithr(   rF   onesrH   r   r^   r+   mean_var_	transform)
rh   rc   rW   ro   ru   ywscaler_wrd   re   X_tests
             rC   "test_standard_scaler_sample_weightr   x   s    . &00::I10A	B	2B 
!	B	2HLL}L5 	
Ai0F
JJq/Fhnn5X]]3((0(2D2DV2LMrD   c                     [         [        [        [        4 GH  n [        5       nUR	                  U 5      R                  U SS9n[        U [        5      (       a  [        R                  " U 5      n [        U 5      S:X  a  [        UR                  U R                  5       5        [        UR                  [        R                  " [         5      5        [#        UR%                  SS9[        R&                  " [         5      5        [#        UR)                  SS9[        R&                  " [         5      5        O[        UR                  U R%                  5       5        [        UR                  U R)                  5       5        [#        UR%                  SS9[        R&                  " [         5      5        [#        UR%                  SS9S5        [#        UR)                  SS9S5        UR*                  U R,                  S   :X  d   eUR/                  U5      n[#        X05        GM     [        R                  " S5      n [        5       nUR	                  U 5      R                  U SS9n[        UR                  S5        [        UR                  S5        [#        UR%                  SS9S5        [#        UR)                  SS9S5        UR*                  U R,                  S   :X  d   eg 	NTcopyr:   r   axis        rm   rj   r:   )X_1rowX_1colX_list_1rowr   r^   r}   
isinstancelistrF   rp   rI   r+   r{   ravelscale_rz   rb   r,   mean
zeros_likestdn_samples_seen_rH   inverse_transform)rc   re   X_scaledX_scaled_backs       rC   test_standard_scaler_1dr      s   fk;7!::a=**14*8aAA!#aggi8rwwz/BC%hmmm&;R]]:=VW%hlll&:BMM*<UVaffh7quuw7%hmmm&;R]]:=VW%hmmm&;SA%hlll&:C@%%333 00:!-3- 82 	AFzz!}&&qt&4Hc*s+hmmm3S9hlll2C8!!QWWQZ///rD   sparse_containeradd_sample_weightFTc                    [         R                  R                  S5      nSnSnU (       a  [         R                  " U5      nOS nSnUb!  [         R                  [         R
                  /nO/[         R                  [         R
                  [         R                  /nU H  nUR                  X45      R                  U5      n	Ub
  U" U	5      n	Sn[        US9n
U
R                  XS9R                  U	5      nU	R                  UR                  :X  d   eU
R                  R                  [         R                  :X  d   eU
R                  R                  [         R                  :X  a  M   e   g )Nr   r=   rU   TFrt   rV   )rF   randomRandomStaterz   float64float32float16rZ   astyper   r^   r}   dtyper{   r   )r   r   rY   ra   rb   rW   ru   supported_dtyper   rc   re   r   s               rC   test_standard_scaler_dtyper      s    ))


"CIJ	*I# ::rzz2::rzz2::> IIi,33E:' #AI)4::a:=GGJww(..(((||!!RZZ///}}""bjj000 !rD   re   rt   with_centeringr   constant)r   rm         Y@c                 V   [        U [        5      (       a4  U(       a-  [        R                  " U R                  R
                   S35        [        R                  R                  S5      nSnSnU(       a  [        UR                  US9S-  S9nO0 n[        R                  " Xg4XCS9n	Uc  U	OU" U	5      n
U R                  " U
40 UD6R                  U
5      n[        U [        5      (       a6  [        U R                   [        R"                  " U
R$                  S   5      S	S
9  [        U R&                  [        R(                  " U
R$                  S   5      5        XLd   e[+        X5        [        U [        5      (       a-  U(       d%  [-        XR.                  S9nXLd   e[+        X5        g g g )Nz# does not yet support sample_weightr   d   r:   r;   rT   rV   )rH   
fill_valuer   Hz>atolrt   )r   r   r[   skip	__class____name__rF   r   r   dictuniformfullr^   r}   r   r)   r|   zerosrH   r   rz   r*   r   ru   )re   r   r   r   r   rY   ra   rb   
fit_paramsX_arrayrc   r   
X_scaled_2s                rC   &test_standard_scaler_constant_featuresr      sX    &,'',=v''0011TUV
))


"CIJ(Ca(GH

ggY3VG#+1A'1JAzz!*z*44Q7H&.))RXXaggaj%9E FMM2771771:#67 -&.))2C1(8(89
"""$Z3	 3D)rD   ra   )r=   r   i'  average)g|=r:   g    _Bc                 8   Su  pE[         R                  " [        XES-   5       Vs/ s H  nSU-  PM
     snUS9nUR                  S   n[         R                  " X4US9n	X'-   U	S U S-  2S S 24'   X'-
  XS-  S 2S S 24'   Uc  U	OU" U	5      n
[        SS9R                  U
5      n[         R                  " [         R                  5      R                  nX-  US-  -  U S-  US-  -  US-  -  -   nUS-  U:*  n[         R                  " U5      (       d   e[        UR                  U   X   :*  5      (       d   e[        UR                  U   S	5        U	SS S 24   U	S
S S 24   -
  S:g  n[        UR                  [         R                  " U5         S5        [        UR                  [         R                  " U5         S5        [         R                   " US-  U:  U5      n[        UR                  U   [         R"                  " UR                  5      U   5        g s  snf )N)i   r:   r=   r   r   rT   Frt   rm   r9   )rF   rp   rangerH   emptyr   r^   finfor   epsanyallr|   r)   r   logical_notlogical_andsqrt)ra   r   r   r   	scale_min	scale_maxrL   scalesrb   rc   r   re   r   boundswithin_boundsrepresentable_diffcommon_masks                    rC   +test_standard_scaler_near_constant_featuresr     s    #IXXeI1}&EF&Er1u&EFeTFaJ
)(6A$-A	Q$-A1n#+a1A!1DGe,009F ((2::

"
"C _vqy(9a<#q&+@7A:+MMFAI'M 66-     v{{=)V-BBCCCCFMM-0#6 1a41RU8+q0FKK/A BCQGFMM"..1C"DEqI
 ..V!35GHKFMM+.0D[0QRQ Gs   Hc            	          / SQn [         R                  " U 5      nX4 HW  n[        U5      n[        UR	                  5       S5        [        UR                  5       S5        [        [        USSS9U5        MY     g )N)rm         @      @r   r   rm   Fru   with_std)rF   rp   r   r,   r   r   r-   )X_listX_arrrc   r   s       rC   test_scale_1dr   K  s]    !FHHVE_8!(--/37!(,,.#65eeDaH	 rD   c                     [         R                  " S[         R                  " S5      [         R                  S9n [        R
                  " 5          [        R                  " S[        5        [        U 5        S S S 5        [        [        U 5      [         R                  " S5      5        [         R                  " S[         R                  " S5      [         R                  S9n Sn[        R                  " [        US9   [        U 5      nS S S 5        [        W[         R                  " S5      5        [         R                  " SS[         R                  S9n [        R
                  " 5          [        R                  " S[        5        [        U 5      nS S S 5        [        W[         R                  " S5      5        [         R                  " SS	[         R                  S9nS
n[        R                  " [        US9   [        U5      nS S S 5        [        W[         R                  " S5      5        [        XS5        [        R                  " [        US9   [        USS9nS S S 5        [        W[         R                  " S5      5        [        Xc5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN)= f! , (       d  f       N= f! , (       d  f       N= f)N   h㈵>r   errorr=   z:standard deviation of the data is probably very close to 0matchg0.++g}Ô%ITz$Dataset may contain too large valuesFr   )rF   r   logr   warningscatch_warningssimplefilterUserWarningr   r,   r   r[   warns)xwarning_messagex_scaledx_small_scaledx_bigx_big_scaledx_big_centereds          rC   (test_standard_scaler_numerical_stabilityr   W  s   
 	266$<rzz2A 
	 	 	"g{3a 
# eAh4 	BFF4L

3ARO	k	98 
:h5
F"**-A		 	 	"g{3q 
# nbhhrl; GGBRZZ0E<O	k	9U| 
:lBHHRL9l;	k	9uu5 
:nbhhrl;n=9 
#	" 
:	9
 
#	" 
:	9 
:	9s<   'J9J&'J/4KK
J
J,/
J>
K
K c                  N   [         R                  R                  S5      n SnSnU R                  X!5      nSUS S 2S4'   [	        5       nUR                  U5      R                  USS9n[         R                  " [         R                  " U5      5      (       a   eUR                  U:X  d   e[        UR                  SS9US/-  5        [        UR                  SS9/ SQ5        XSLd   eUR                  U5      nXcLd   eXeLd   e[        Xc5        [        US	S
S9n[         R                  " [         R                  " U5      5      (       a   e[        UR                  S	S9US/-  5        [        US	SS9n[         R                  " [         R                  " U5      5      (       a   e[        UR                  S	S9US/-  5        [        UR                  S	S9US/-  5        XSLd   eUR                  U5      R                  US
S9n[         R                  " [         R                  " U5      5      (       a   e[        UR                  SS9US/-  5        [        UR                  SS9/ SQ5        XSL d   eU R                  SS5      nSUS S 2S4'   [	        5       nUR                  U5      R                  USS9n[         R                  " [         R                  " U5      5      (       a   e[        UR                  SS9US/-  5        [        UR                  SS9/ SQ5        XSLd   eg )Nr   rj   ri   r   Tr   r   r   rm   rm   rm   rm   r:   F)r   r   rm   )rF   r   r   rZ   r   r^   r}   r   isnanr   r,   r   r   r   r   )rY   rb   ra   rc   re   r   r   s          rC   test_scaler_2d_arraysr   ~  s   
))


"CJI		)(AAadGFzz!}&&qt&4Hvvbhhx())))!!Y...hmmm3Z3%5GHhlll24MN ,,X6M!!!(((m/QQ/Hvvbhhx())))hmmm3Y#5FGQQ.Hvvbhhx())))hmmm3Y#5FGhlll2I4EFzz!}&&qu&5Hvvbhhx())))hmmm3Z3%5GHhlll24MN==		!QAAadGFzz!}&&qt&4Hvvbhhx())))hmmm3Z3%5GHhlll24MNrD   c                  8   [         R                  R                  S5      n U R                  SSSS/5      R	                  [         R
                  5      n[         R                  " SS9   [        5       R                  U5      nUR                  U5      nS S S 5        [        5       R                  UR	                  [         R                  5      5      n[         R                  " [         R                  " W5      5      (       d   e[        X4SS	9  g ! , (       d  f       N= f)
Nr   rj   r=   i@ r:   raise)overrT   decimal)rF   r   r   r   r   r   errstater   r^   r}   fit_transformr   r   isfiniter,   )rY   rc   re   r   X_scaled_f64s        rC   test_scaler_float16_overflowr     s    
))


"C 	ArFA;'..rzz:A	'	"!%%a(##A& 
#
 "#11!((2::2FGL
 66"++h'((((
 ha@ 
#	"s   &+D
Dc                      [         R                  " / SQ5      n [        U SS9n[        U [         R                  " / SQ5      5        [        U[         R                  " / SQ5      5        g )N)r   gؗҜ<r:   rT   rU   Tr   )r:   r:   r:   rT   rU   )rF   rp   r   r)   )s1s2s     rC   test_handle_zeros_in_scaler     sD    	%	&B		.BB!456B12rD   c                  h   [         n U R                  S   nSSSXS-   4 GH  n[        5       R                  U 5      n[        5       n[	        [
        U5       H  nUR                  X   5      nM     [        UR                  UR                  5        [        UR                  UR                  5        UR                  UR                  :X  d   e[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        SU5      n[        5       R                  X   5      n[        5       R                  X   5      n[        UR                  UR                  5        [        UR                  UR                  5        UR                  UR                  :X  d   e[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        5       R                  U 5      n[        5       n[        [	        [
        U5      5       HD  u  puUR                  X   5      n[!        UUR"                  UR$                  UUUR                  S9  MF     GM     g )Nr   r:   rT   2   *   rM   rN   rO   rP   rQ   )X_2drH   r   r^   r!   ra   partial_fitr,   	data_min_	data_max_r   data_range_r   min_slice	enumeraterR   startstoprc   rO   rP   scaler_batchscaler_incrbatchbatch0rL   s           rC   test_minmax_scaler_partial_fitr    s    	A	
A!RF+
#~))!,"n J7E%11!(;K 8 	","8"8+:O:OP!,"8"8+:O:OP++{/J/JJJJ!,":":K<S<ST!,"5"5{7I7IJ!,"3"3[5E5EF q*%#~))!)4"n00;!,"8"8+:O:OP!,"8"8+:O:OP++{/J/JJJJ!,":":K<S<ST!,"5"5{7I7IJ!,"3"3[5E5EF $~))!,"n!+i"DEHA%11!(;K!KK ::%*:: F= ,rD   c                     [         n U R                  S   nSSSXS-   4 GHa  n[        SS9R                  U 5      n[        SS9n[	        [
        U5       H  nUR                  X   5      nM     [        UR                  UR                  5        UR                  UR                  :X  d   eUR                  UR                  :X  d   e[        SU5      n[        5       R                  X   5      nUS:X  aw  [        [        R                  " [        [        R                  S9UR                  5        [        [        R                   " [        [        R                  S9UR"                  5        OV[        [        R$                  " X   SS	9UR                  5        [        [        R&                  " X   SS	9UR"                  5        [        5       R                  U 5      n[        5       n[)        [	        [
        U5      5       HD  u  puUR                  X   5      n[+        UUR,                  UR.                  UUUR                  S
9  MF     [        UR                  UR                  5        UR                  UR                  :X  a  GMb   e   g )Nr   r:   rT   r   r   Fr   r   r   r  )r  rH   r   r^   r!   ra   r  r,   r{   r|   r   r  rF   r   rb   r   rz   r   varr   r	  rR   r
  r  r  s           rC    test_standard_scaler_partial_fitr    s    	A	
A!RF+
%u599!<$e4 J7E%11!(;K 8!,"4"4k6G6GH  K$4$4444++{/J/JJJJ q*%$&2219=?%2::68H8H &
"**5{7I7I &bffQYQ&?AQAQR%qyq);+=+=
 &'++A.$&!+i"DEHA%11!(;K!KK ::%*:: F 	","3"3[5E5EF++{/J/JJJJU ,rD   c                    [         R                  R                  S5      nSnSnUR                  SSUS9nUR                  SSUS9nUR	                  X25      U-  U-   n[        5       R                  U5      n[        5       nU H$  n	UR                  U	R                  S	U5      5      nM&     S
n
[        UR                  UR                  U
S9  [        UR                  UR                  U
S9  [        UR                  UR                  U
S9  SnSnU " UR                  SSU5      R                  [         R                  5      U-  5      n[        SS9R                  U5      n[        SS9nU H6  n	U	R                   S	:X  a  U	R                  S	S5      n	UR                  U	5      nM8     S
n
UR                  c   e[        UR                  UR                  U
S9  [        UR                  UR                  U
S9  g )Nr   rT   r   g  4&kg  4&kCr;   g     @@    .Ar:   gư>)rtol)r   rU   g@xDFrt   r9   )rF   r   r   r   rZ   r   r^   r  reshaper)   r{   r|   r   randintr   r   ndim)r   rY   rb   ra   offsetsr   rc   r  r  chunktolr<   r   re   s                 rC   4test_standard_scaler_partial_fit_numerical_stabilityr  6  s    ))


"CJIkk%Jk7G[[c
[3F		)(61G;A!#''*L "K!--emmAz.JK  CK%%|'9'9DK$$l&7&7cBK&&(;(;#F
 DEQ4077

CeKLA e,003F 51K::? MM!R(E!--e4  C<<###K$$fkk<K&&C@rD   rW   c                    U" [         R                  " S/S/S/S//5      5      nU (       a"  [        R                  UR                  S   5      n [        SSSS9nUR                  X S9R                  U5      n[        UR                  5       UR                  5       5        UR                  U5      n[        UR                  5       UR                  5       5        [        UR                  5       UR                  5       5        g )	Nrm   r   r   r   FTru   r   r   rV   )rF   rp   rY   randrH   r   r  r}   r-   r?   r   )rW   r   rc   null_transformX_nullX_origs         rC   test_partial_fit_sparse_inputr%  e  s     	C53%#">?@A,#ee$ON'''GQQRSTFv~~'5--f5Fv~~')9:v~~'5rD   c                 
   [         S S2S S 24   nU (       a"  [        R                  UR                  S   5      n [	        5       n[        [        UR                  S   S5      5       GH  u  p4US US-   2S S 24   nUR                  5       nU c-  [	        5       R                  U5      nUR                  X   5      nO1[	        5       R                  XPS US-    S9nUR                  X   X   S9nUR                  U5      n[        Xx5        [        XV5        UR                  U5      n	[        XY5        [        R                  " UR                  S   5      n
[        R                  " [         5      R"                  n[%        XR&                  U-   5        [%        XR(                  U-   5        U c  US-   UR*                  :X  d   eGMZ  [        R,                  " U S US-    5      [.        R0                  " UR*                  5      :X  a  GM   e   g )Nr   r   r:   rV   )r  rY   r!  rH   r   r	  r!   r   r   r  r}   r,   r   rF   r   r   floatr   r.   r|   r   r   sumr[   approx)rW   rc   r  rL   r  X_sofarchunks_copyscaled_batchscaled_incrright_inputzeroepsilons               rC   .test_standard_scaler_trasform_with_partial_fitr1  v  s    	TcT1WA, "Kk!''!*a89Iq1uIqL/lln )+99'BL%11!(;K)+99Wq1u'= : L &11(< 2 K "++G4!,<!'7!33K@!'7xx
#((5/%%$ 0 07 :;$ 2 2W <= Ek9999966-!a%01V]]++6   9 :rD   c            	          [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [        5       nUR	                  U 5        UR                  U 5        g )N)r:   r:   r:   r   r:   r   )r   r   r   r:   r   r   )r:   ri   r:   r:   r   r   )r   r:   r   r   r:   r   )r   ri   r   r:   r   r:   r   )rF   rp   int32r   r^   r   )r   re   s     rC   .test_standard_check_array_of_inverse_transformr4    sW     		
 hh
	A F
JJqM
 QrD   z#array_namespace, device, dtype_name)idscheck	estimator)clipl1norml2maxc                 @    U R                   R                  nU" XPX#US9  g )N)device
dtype_name)r   r   )r7  r6  array_namespacer?  r@  names         rC   'test_preprocessing_array_api_compliancerC    s!    6 ''D	$?jQrD   c                  2   [         R                  n [        5       nUR                  U 5      n[	        UR                  SS9S5        [	        UR                  SS9S5        UR                  U5      n[	        X5        [        SS9nUR                  U 5      n[	        UR                  SS9S5        [	        UR                  SS9S5        UR                  U5      n[	        X5        [        SS9nUR                  U 5      n[	        UR                  SS9S5        [	        UR                  SS9S	5        UR                  U5      n[	        X5        [        S
S9n[        R                  " [        5         UR                  U 5        S S S 5        g ! , (       d  f       g = f)Nr   r   r:   r:   rT   feature_rangerT   )      333333?rH  rI  )rT   r:   )irisdatar   r   r,   minr=  r   r[   r\   r]   r^   )rc   re   X_transX_trans_invs       rC   test_min_max_scaler_irisrO    sO   		A^F""1%Ggkkqk115gkkqk115**73Ka- /F""1%Ggkkqk115gkkqk115**73Ka- 4F""1%Ggkkqk148gkkqk137**73Ka- /F	z	"

1 
#	"	"s   -F
Fc                     / SQ/ SQ/ SQ/n / SQ/ SQ/ SQ/n[        5       nUR                  U 5      n/ SQ/ SQ/ S	Q/n[        X45        UR                  U5      n[        X5        UR	                  U5      n/ SQ/ S
Q/ SQ/n[        XgSS9  [        SS9nUR                  U 5      n/ SQ/ SQ/ SQ/n[        X85        [        U 5      n[        X45        [        U SS9n[        X85        g )Nr   rm         ?r   rm   gr   rm   g?r   rl   rR        rm   r   r   rm   rv   )r   r   rR  r   r   r   r   r   rm   )rW  r   gsh|??)r   r   gS?rT   r   rE  rF  )rm   rm   rv   rm   rm   rm   )rm   rm   rl   )r   r   r,   r   r}   r   )	rc   X_newre   rM  X_expected_0_1rN  X_trans_newX_expected_0_1_newX_expected_1_2s	            rC   *test_min_max_scaler_zero_variance_featuresra    s    	+-=>A/1ABE ^F""1%G%HNg6**73Ka-""5)K,.@BTUkqI /F""1%G%HNg6 1oGg61F3Gg6rD   c                      [         R                  n [        U SS9n[        [        R
                  " USS9S5        [        [        R                  " USS9S5        g )Nr:   r   r   )rJ  rK  r   r,   rF   rL  r=  )rc   rM  s     rC   test_minmax_scale_axis1rc    sA    		A11%GbffW15q9bffW15q9rD   c                  \   [         [        [        [        4 GH7  n [        SS9nUR	                  U 5      R                  U 5      n[        U [        5      (       a  [        R                  " U 5      n [        U 5      S:X  ac  [        UR                  SS9[        R                  " [        5      5        [        UR                  SS9[        R                  " [        5      5        O2[        UR                  SS9S5        [        UR                  SS9S5        UR                   U R"                  S   :X  d   eUR%                  U5      n[        X05        GM:     [        R&                  " S5      n [        5       nUR	                  U 5      R                  U 5      nUR                  5       S:  d   eUR                  5       S::  d   eUR                   U R"                  S   :X  d   e[         R)                  5       nUR                  5       nUR                  5       n[        XE-
  Xe-
  -  [+        USS95        g r   )r   r   r   r   r^   r}   r   r   rF   rp   rI   r,   rL  r   rb   r=  r   rH   r   rz   r   r   )rc   re   r   r   X_1dr  max_s          rC   test_min_max_scaler_1drg    s   fk;74(::a=**1-aAA!#%hlll&:BHHZ<PQ%hlll&:BHHZ<PQ%hlll&:C@%hlll&:C@%%333 00:!-3# 8( 	A^Fzz!}&&q)H<<>S   <<>S   !!QWWQZ/// <<>D88:D88:D	%|Dt'DrD   c                    [         R                  R                  S5      nUR                  SS5      nSUS S 2S4'   U" U5      nU (       a  UR	                  UR
                  S   5      n [        R                  " [        5         [        5       R                  U5        S S S 5        [        SS9R                  X0S9nUR                  US	S
9n[         R                  " [         R                  " U5      5      (       a   e[        SS9R                  X@S9nUR                  US	S
9n[         R                  " [         R                  " UR                  5      5      (       a   e[        UR                   UR                   5        [        UR"                  UR"                  5        [        UR$                  UR$                  5        [        UR&                  UR&                  5        U c7  [        UR)                  SS9/ SQS5        [        UR+                  SS9/ SQ5        [-        US5      u  p[        XR)                  SS95        [        XR/                  SS95        XcLd   eXLd   eUR1                  U5      nXLd   eXLd   e[        X5        UR1                  U5      nXLd   eXLd   e[        UR3                  5       U5        U[4        ;   an  [        SSS	S9nUR7                  U5      n[9        UR                  UR                  5        UR1                  U5      n[9        UR                  UR                  5        g g ! , (       d  f       GN= f)Nr   ri   rj   r   r   Frt   rV   Tr   r   r   g{GzgQ@gffffffֿg(\rT   r   r   )rF   r   r   rZ   r!  rH   r[   r\   r]   r   r^   r}   r   r   rK  r,   r{   r|   r   r   r   r   r6   r  r   r?   r3   r   r-   )rW   r   rY   rc   X_sparsere   r   scaler_sparseX_sparse_scaledX_sparse_scaled_meanX_sparse_scaled_varr   X_sparse_scaled_backr"  r#  r$  s                   rC   test_scaler_without_centeringrp  C  s    ))


#C		!QAAadG"H,	z	"X& 
# e,000PF-Hvvbhhx())))"U377 8 M $--hT-BOvvbhh3345555fllM,?,?@fkk=+=+=>fmm]-A-ABf44m6S6ST!MMqM!#CQ	
 	"(,,A,"68QR0B?TU0V-2MMqM4IJ1<<Q<3GH ***,,X6M!!!(((m/(::?K///6662::<a@>)'%%dS--h76;;611&96;;6 *U 
#	"s   L88
Mru   r   c                    [         R                  " / SQ[         R                  SS/SS[         R                  /SS[         R                  //[         R                  S9nUb  U" U5      n[        R
                  " U5      (       a  U (       a  [        R                  " S	5        [        XS
9nUR                  U5        [        UR                  [         R                  " / SQ5      5        g )Nr   r:   rU   rk   r=   rj   ri   r   r   r   z3'with_mean=True' cannot be used with sparse matrix.r   )rU   ri   rT   )rF   rp   nanr   r   issparser[   r   r   r^   r-   r   )ru   r   r   rc   transformers        rC   #test_scaler_n_samples_seen_with_nanrv    s     		RVVQOaBFF^aBFF^DBJJ	A #QqiIJ 9HKOOA{22BHHY4GHrD   c                    U R                   UR                   s=L a  b   e   eU R                  UR                  s=L a  b   e   eU R                  UR                  s=L a  b   e   eU R                  UR                  :X  d   eg N)r{   r|   r   r   )scaler_1scaler_2s     rC   "_check_identity_scalers_attributesr{    sp    >>X^^33333==HMM11111??hoo55555##x'?'????rD   c                    [         R                  " / SQ/ SQ/ SQ/[         R                  S9nU " U5      n[        SSS9nUR	                  U5      n[        XA5        [        U5      nUR	                  U5      n[        Xb5        [        X55        UR                  U5        UR                  U5        [        X55        UR                  U5        UR                  U5        [        X55        g )Nrr  )rj   rk   r   )r   r   r=   r   Fr   )rF   rp   r   r   r   r)   r   r*   r{  r  r^   )r   X_denserj  transformer_denseX_trans_densetransformer_sparseX_trans_sparses          rC   test_scaler_return_identityr    s     hh	9j9LG(H&G%33G<MM+01'55h?N :&'8M!!'*""8,&'8M'"8$&'8MrD   c                    [         R                  R                  S5      nUR                  SSS9nSUS S 2S4'   U " U5      n[        R
                  " SS9   [        SS	9R                  U5      nUR                  USS
9nS S S 5        [         R                  " [         R                  " W5      5      (       a   e[        R
                  " SS9   [        SS	9R                  U5      nUR                  USS
9nS S S 5        [         R                  " [         R                  " WR                  5      5      (       a   e[        WR                  WR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR!                  SS9/ SQS5        [        UR#                  SS9/ SQ5        [%        UR'                  [(        5      S5      u  p[        XR!                  SS95        [        XR#                  SS95        XRLd   eXsLd   eUR+                  U5      n
XLd   eXLd   e[        X5        UR+                  U5      nXLd   eXLd   e[        UR-                  5       U5        U [.        ;   a  [        SSSS9n[        R
                  " SS9   UR1                  U5      nS S S 5        [3        WR                  UR                  5        UR+                  U5      n[3        UR                  UR                  5        g g ! , (       d  f       GN= f! , (       d  f       GNE= f! , (       d  f       N= f)Nr      ri   rj   r;   r   TrecordFrt   r   r   )r   gX9v?gV-?g      5@gl?rT   r   r   )rF   r   r   r  r   r   r   r^   r}   r   r   rK  r,   r{   r|   r   r   r   r6   r   r'  r   r?   r3   r   r-   )r   rY   rc   rj  re   r   rk  rl  rm  X_sparse_scaled_stdr   ro  r"  r#  r$  s                  rC   test_scaler_intr    s    ))


#CBV$AAadG"H		 	 	-%044Q7##AD#1 
. vvbhhx())))		 	 	-&7;;HE'11(1F 
. vvbhh3345555fllM,?,?@fkk=+=+=>fmm]-A-AB1? hlll24MN0Bu%q1- 2MMqM4IJ1<<Q<3GH ***,,X6M!!!(((m/(::?K///6662::<a@>)'%%dS$$D1#11(;F 26;;611&96;;6 *O 
.	-
 
.	-H 21s$   )L )L23M 
L/2
M
Mc                    [         R                  R                  S5      nUR                  SS5      nSUS S 2S4'   U " U5      nUR	                  5       n[        SS9R                  U5        [        X$5        UR	                  5       n[        SSS9R                  U5        [        UR                  5       UR                  5       5        g )	Nr   ri   rj   r   r   Fr   )ru   r   )	rF   r   r   rZ   r   r   r^   r-   r?   )r   rY   rc   rj  X_copyX_sparse_copys         rC   test_scaler_without_copyr    s     ))


#C		!QAAadG"HVVXF""1%q!MMOMU/33H=x'')=+@+@+BCrD   c                    [         R                  R                  S5      nUR                  SS5      nU " U5      n[        R
                  " [        5         [        USS9  S S S 5        [        R
                  " [        5         [        SS9R                  U5        S S S 5        [        SS9R                  U5      n[        R
                  " [        5         UR                  U5        S S S 5        U " UR                  U5      5      n[        R
                  " [        5         UR                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f! , (       d  f       g = f)Nr   ri   rj   Trt   )rF   r   r   rZ   r[   r\   r]   r   r   r^   r}   r   )r   rY   rc   rj  re   X_transformed_sparses         rC   +test_scale_sparse_with_mean_raise_exceptionr    s   
))


#C		!QA"H 
z	"h$' 
#	z	"&**84 
# d+//2F	z	"" 
# ,F,<,<Q,?@	z	"  !56 
#	" 
#	"	"	"
 
#	" 
#	"s0   D:EEE-:
E
E
E*-
E;c                      [         R                  SSSS//n [        R                  " [        SS9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nrj   rk      r   z,Input contains infinity or a value too larger   )rF   infr[   r\   r]   r   rc   s    rC   &test_scale_input_finiteness_validationr    sD    
&&!Q1	A	H
 	a
 
 
s   A
Ac                      [         R                  " SS5      n [        SS9nSn[        R                  " [
        US9   UR                  U 5        S S S 5        g ! , (       d  f       g = f)Nr8   r=   Tr   zCannot center sparse matricesr   )r   r!  r   r[   r\   r]   r^   )rj  re   err_msgs      rC   test_robust_scaler_error_sparser    sG    {{4$H.F-G	z	1

8 
2	1	1s   A
A%r   with_scalingrc   rR  densityc                    U(       a1  [         R                  " U 5      (       a  [        R                  " S5        [	        XS9nUR                  U 5        U(       a,  [        UR                  [        R                  5      (       d   eOUR                  b   eU(       a,  [        UR                  [        R                  5      (       d   eg UR                  b   eg )Nz(RobustScaler cannot center sparse matrix)r   r  )r   rt  r[   r   r   r^   r   center_rF   ndarrayr   )rc   r   r  re   s       rC   test_robust_scaler_attributesr  %  s    
 &//!,,>?SF
JJqM&.."**5555~~%%%&--4444}}$$$rD   csr_containerc                 ~   [         R                  R                  SS5      nSUS S 2S4'   U " U5      n[        SS9nUR	                  U5        UR
                  S   [        R                  " S5      :X  d   eUR                  U5      n[        US S 2S/4   R                  5       US S 2S/4   R                  5       5        g )Nr=   rj   r   Fr   r:   )rF   r   rZ   r   r^   r   r[   r)  r}   r)   r?   )r  rc   re   rM  s       rC   "test_robust_scaler_col_zero_sparser  :  s     			AAAadGaA/F
JJqM==v}}Q////q!GAa!fI%%'QC)@)@)BCrD   c                  J   [         R                  R                  S5      n U R                  SS5      nSUS S 2S4'   [	        5       nUR                  U5      R                  U5      n[        [         R                  " USS9SS/-  5        [        UR                  SS9S   S5        g )Nr   ri   rj   r   r   )
rF   r   r   rZ   r   r^   r}   r,   medianr   )rY   rc   re   r   s       rC   test_robust_scaler_2d_arraysr  J  s    
))


"C		!QAAadG^Fzz!}&&q)Hbiiq91u9Ehlll215q9rD   r  )r   g?皙?rR  r:   strictly_signed)positivenegativer   Nc                 J   [         R                  " SSU S9R                  5       nUS:X  a&  [        R                  " UR
                  5      Ul        OoUS:X  a'  [        R                  " UR
                  5      * Ul        OBUS:X  a<  [        R                  " UR
                  R                  [        R                  S9Ul        UR                  5       n[        SS	9n[        SS	9nUR                  U5        UR                  U5        [        UR                  UR                  5        g )
Nr8   rj   r  r  r  r   r   Fr   )r   r!  tocscrF   absrK  r   rH   r   r?   r   r^   r)   r   )r  r  rj  r}  rk  scaler_denses         rC   +test_robust_scaler_equivalence_dense_sparser  W  s     {{4G4::<H*$x}}-	J	&..	G	#!4!4BJJG G 6Mu5LhWM((,*=*=>rD   c                    [         R                  R                  S5      nUR                  SS5      n[         R                  " / SQ/5      n[        SS9nUR                  U5      nUR                  U " U5      5      nX4R                  -  n[        UR                  5       U5        UR                  U5      n[        X7R                  5       5        g )Nr   ri   rj   )r  rm   rl   r   rW  Fr   )rF   r   r   rZ   rp   r   r^   r}   r   r,   r?   r   )r  rY   rc   
single_rowre   	row_transrow_expectedrow_scaled_backs           rC   (test_robust_scaler_transform_one_row_csrr  m  s     ))


"C		!QA567J/FZZ]F  z!:;I-Li//1<@..y9Oj*A*A*CDrD   c                  *   [         R                  n [        5       nUR                  U 5      n[	        [
        R                  " USS9S5        UR                  U5      n[	        X5        [
        R                  " USSS9nUS   US   -
  n[	        US5        g )Nr   r      K   qr   r:   	rJ  rK  r   r   r,   rF   r  r   
percentile)rc   re   rM  rN  r  iqrs         rC   test_robust_scaler_irisr  |  s|    		A^F""1%Gbiia8!<**73Ka-
g2A
A$1+Cc1%rD   c                  (   [         R                  n [        SS9nUR                  U 5      n[	        [
        R                  " USS9S5        UR                  U5      n[	        X5        [
        R                  " USSS9nUS   US   -
  n[	        US5        g )N)r=   Z   quantile_ranger   r   r  r:   r  )rc   re   rM  rN  r  q_ranges         rC   !test_robust_scaler_iris_quantilesr    s    		A2F""1%Gbiia8!<**73Ka-
g2AdQqTkGgq)rD   csc_containerc                    [         R                  n[        SS9nUR                  U5      nUR	                  U5      n[        X5        [        SSS9nUR                  U5      nUR	                  U5      n[        X5        U " U5      nUR                  U5      nUR	                  U5      n[        UR                  5       UR                  5       5        g )Nr7   n_quantilesnormal)r  output_distribution)rJ  rK  r   r   r   r,   r?   )r  rc   ru  rM  rN  rj  X_sparse_tranX_sparse_tran_invs           rC   test_quantile_transform_irisr    s    		A%"5K''*G//8Ka-%"(SK''*G//8Ka- QH--h7M#55mDh..02C2K2K2MNrD   c                    [         R                  " / SQ/ SQ/ SQ/5      nU " U5      n[         R                  " / SQ/ SQ/ SQ/5      nU " U5      nSn[        R                  " [        US9   [        SS9R                  U5        S S S 5        [        SS	9nS
n[        R                  " [        US9   UR                  U5        S S S 5        UR                  U5        S
n[        R                  " [        US9   UR                  U5        S S S 5        [         R                  " / SQ/ SQ/5      nSn[        R                  " [        US9   UR                  U5        S S S 5        [        SS	9R                  U5      n[        R                  " [        SS9   UR                  S5        S S S 5        [        SS	9nSn[        R                  " [        US9 nUR                  U5        S S S 5        [        W5      S:X  d   eUR                  UR                  S   :X  d   eg ! , (       d  f       GN= f! , (       d  f       GNr= f! , (       d  f       GN>= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)N)
r   r  r   r   r   r   r  r   r   r   )
rT   ri   r   r   rk   r   r   r=   r   r   )
r   r   @ffffff@r   r   ffffff@r         #@r  )
ri   r   r   rk   r   r   r=   r   r   zmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.r   r=   )	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   )rF   	transposer[   r\   r]   r   r^   r}   r   r   r   lenn_quantiles_rH   )r  rc   X_negr  ru  
X_bad_featwarn_msgr  s           rC   #test_quantile_transform_check_errorr    s   
/+4	
	A 	aALL/,4	
E % E	 
 
z	1b)--a0 
2 &"5KNG	z	1 
2OOANG	z	1e$ 
2 	,.VWJ 	V  
z	1%%j1 
2 &"599!<K	z)V	Wb! 
X &#6K0H	k	2f 
3v;!##qwwqz111? 
2	1
 
2	1 
2	1 
2	1
 
X	W
 
3	2sH   *H/H,5H>II!I2
H),
H;>
I
I!
I/2
J c                    [         R                  " SS/SS/SS/SS/SS//5      nU " U5      n[        SSS9nSn[        R                  " [
        US9   UR                  U5        S S S 5        [         R                  " SS/SS/SS/SS/SS//5      nUR                  U5      n[        XVR                  5       5        [         R                  " / S	Q5      n[         R                  " / S
Q5      n[         R                  " / SQ5      n	U " XyU445      nUR                  U5      n[         R                  " SS/SS/SS/SS/SS/SS/SS/SS/SS//	5      n[        XVR                  5       5        [        SSS9n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n	U " XyU445      nUR                  U5      n[         R                  " SS/SS/SS/SS/SS/SS/SS//5      n[        XVR                  5       5        [        UR                  5       UR                  U5      R                  5       5        [        SSSSS9nUR                  U5      n[        XVR                  5       5        [        UR                  5       UR                  U5      R                  5       5        g ! , (       d  f       GNc= f)Nr   r:   rT   Trj   )ignore_implicit_zerosr  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r   )r   r   r:   r   rT   rT   r:   r   r:   rT   r   )r   r   r:   r:   r:   r:   r:   r:   r:   r:   r:   )r   ri   r   r:   rT   rU   ri   rj   rk   r  r   r   rR  rm   )	r9   r9   r:   r   r   r   r:   r9   r:   )	r   r   r:   r:   r:   r:   r:   r:   r:   )	r   ri   r   r:   rT   rU   ri   rj   rk   g      ?r   )r  r  r  random_state)rF   rp   r   r[   r   r   r^   r   r+   r?   r   )
r  rc   rj  ru  r   
X_expectedrM  X_dataX_colX_rows
             rC   +test_quantile_transform_sparse_ignore_zerosr    s   
1a&1a&1a&1a&1a&9:AQH%DaPK	 
 
k	9 
: Aq6Aq6Aq6Aq6Aq6BCJ''1G
OO$56 XX78FHH67EHH67Efen56H''1G#J#J#J#J#J#J#J#J#J
	
J 
OO$56%DaPKXX45FHH01EHH01Efen56H''1G
Q!UaZ!UaVaVaVLJ 
OO$56K99'BJJL
 &"QQK ''1G
OO$56K99'BJJLc 
:	9s   K
Kc                  *   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n [        SS9nUR                  U 5        UR	                  U 5      n[         R
                  " [         R                  " SS	SS
9S5      R                  n[        [         R                  " USS9U5        [         R                  " / SQ/ SQ/5      n[         R                  " / SQ/ SQ/5      n[        UR                  U5      U5        UR                  U5      n[        X5        g )N)r   rT   r  )r  ri   r  )r   rk   r  )r  r   r  )r   r=   r  rj   r  r   r:   )num)rU   r:   r   )r9   r:   r   )e      r=   )r   r   r   r:   r:   r:   )rF   rp   r   r^   r   tilelinspaceTr+   sortr,   r}   r   )rc   ru  rM  r  r   rN  s         rC   !test_quantile_transform_dense_toyr  %  s    
	lL,O	A &!4KOOA ''*GQq16:<<Ja0*=XX	
F 	
J k33F;ZH//8Ka-rD   c                     Sn Sn[         R                  " [         R                  R                  U S45      SS9nSn/ n[	        U5       H  n[        UUU S-  S9nUR                  U5        [         R                  " SSU5      [         R                  " UR                  5      -
  n[         R                  " [         R                  " U5      5      nUS	:  d   eUR                  U5        M     [        [         R                  " U5      5      [        U5      :X  d   e[        R                   " U SS
SSS9n/ n[	        U5       H  n[        UUU S-  S9nUR                  U5        [         R                  " SSU5      [         R                  " UR                  5      -
  n[         R                  " [         R                  " U5      5      nUS:  d   eUR                  U5        M     [        [         R                  " U5      5      [        U5      :X  d   eg )N@B r8   r:   r   r   rj   r=   )r  r  r  {Gz?gGz?csc)r  formatr  r  )rF   r  r   sampler   r   r^   r  r   
quantiles_r=  r  appendr  uniquer   r!  )	ra   r  rc   ROUNDinf_norm_arrr  ru  diffinf_norms	            rC   #test_quantile_transform_subsamplingr  E  s    IK
		  )Q0q9AELe)%#2o

 	{{1a-9O9O0PP66"&&,'$H% % ryy&'3|+<<<< 	Iq$u1MALe)%#2o

 	{{1a-9O9O0PP66"&&,'$H% % ryy&'3|+<<<<rD   c                     [         R                  R                  S5      R                  SS9n Sn[	        USS9R                  U 5      n[         R                  " SSU5      n[        UR                  U5        [         R                  " U R                  5       U5      n[        UR                  R                  5       U5        g)zCCheck the behaviour of `QuantileTransformer` when `subsample=None`.r   )   r:   r;   rj   N)r  r  r:   )rF   r   r   r  r   r^   r  r)   references_quantiler   r  )rc   r  ru  expected_referencesexpected_quantiless        rC   ,test_quantile_transform_subsampling_disabledr  t  s    
		a ''X'6AK%+NRRSTUK++aK8K++-@AQWWY0CDK**0024FGrD   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/
5      nU " U5      n[        SS9nUR                  U5        UR	                  U5      n[        [         R                  " UR                  5       SS9S5        [        [         R                  " UR                  5       SS9S5        UR                  U5      n[        UR                  5       UR                  5       5        [        SS9R                  UR                  5       5      nUR                  U5      n[        [         R                  " UR                  5       SS9S5        [        [         R                  " UR                  5       SS9S5        UR                  U5      n[        UR                  5       UR                  5       5        g )N)r   rl   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  r=   r  r   r   r   rm   )rF   rp   r   r^   r   r,   rL  r?   r=  r   r}   )r  rc   ru  rM  rN  r~  s         rC   "test_quantile_transform_sparse_toyr    sS   
	
	A 	aA%"5KOOA''*GbffW__%6Q?EbffW__%6Q?E//8Kaiik;+>+>+@A+;??		L))!,GbffW__%6Q?EbffW__%6Q?E#55g>Kaiik;+>+>+@ArD   c                      [         R                  " / SQ/ SQ/ SQ/5      n [        U R                  SSS9n[        U SSS9n[	        XR                  5        g )N)r   r  r   r  r   )rT   ri   rk   r   r=   )r  r  r  r  r  r   rj   )r   r  r:   )rF   rp   r   r  r,   )rc   
X_trans_a0
X_trans_a1s      rC   test_quantile_transform_axis1r	    sF    
&(8:STUA#ACCaQ?J#AA1=Jj,,7rD   c                    [         R                  " SS/SS/SS//5      nU " U5      n[        SSS9R                  U5      n[	        X15        [        SSS9R                  U5      n[	        UR                  5       U5        [	        X4R                  5       5        [         R                  " SS/SS/SS//5      n[         R                  " SS/SS/SS//5      n[        SS9R                  U5      nUR                  U5      n[	        X65        [         R                  R                  S5      n[        5       nUR                  U5        UR                  S	//5      UR                  [         R                  " U5      //5      :X  d   eUR                  S
//5      UR                  [         R                  " U5      //5      :X  d   eUR                  S	//5      UR                  [         R                  " UR                  5      //5      :X  d   eUR                  S
//5      UR                  [         R                  " UR                  5      //5      :X  d   eg )Nr   r:   rU   r  r  rR  r  r  )r8   r:   r=   )rF   rp   r   r   r,   r?   r^   r}   r   rL  r=  r   r  )r  r}  rj  rM  
X_trans_sprc   X1ru  s           rC   test_quantile_transform_boundsr    s!    hhAAA/0GW%H "aa@NNwWGg/$CQQJ j002G<g'9'9';< 	1a&1c(QF+,A	As8aX3x0	1B%!488;K##B'Gg* 			#A%'KOOA  3%)[-B-BRVVAYK=-QQQQ  2$(K,A,ABFF1I;-,PPPP((3%1[5R5R
&&((
)	*+6    ((2$0K4Q4Q
&&((
)	*+5   rD   c            	          [         R                  n [        R                  " S/[        S-  /S/S/S/S/S//5      nX4 H9  n[        SSS	9nUR                  U5      nUR                  U5      n[        X%S
S9  M;     g )Nr   r=   rv   rT   rU   ri   r8   r   r  	   r   )	rJ  rK  rF   rp   r   r   r   r   r,   )X_1X_2rc   ru  rM  rN  s         rC   #test_quantile_transform_and_inverser    s    
))C
((SE,r12SEA3aS1#N
OCZ)dK++A.!33G<!!!<	 rD   c                     [         R                  " [         R                  SSS/[         R                  [         R                  SS/[         R                  SSS//5      n [        SSS9nUR	                  U 5        [         R
                  " UR                  S S 2S4   5      R                  5       (       d   e[         R
                  " UR                  S S 2SS 24   5      R                  5       (       a   eg )Nr   r:   rR  r=   r   r  )	rF   rp   rs  r   r   r   r  r   r   )rc   ru  s     rC   test_quantile_transform_nanr    s    
2661a#bffbffa%=1a?PQRA%"2FKa  88K**1a401557777xx..q!"u56::<<<<<rD   
array_typerp   r   c                 H   [         R                  " / SQS-  5      nSUR                  SS5      -  n[        X5      nSn[	        US9R                  U5      nUR                  S S 2S4   n[        U5      S:X  d   e[        [         R                  " U5      S:  5      (       d   eg )	N)r   r:   r:   rT   rT   rU   rU   ri   rj   rj   r:   r:   r  r  r  r   r   r  r=   r  r9   r:   r   r  r   )
rF   rp   r  r(   r   r^   r  r  r   r  )r  rc   r  qt	quantiless        rC   *test_quantile_transformer_sorted_quantilesr    s     	G"LMAaiiAA1)AK		5	9	9!	<B ad#Iy>S   rwwy!Q&''''rD   c                      S HM  n [        U S9n[        R                  " [        SS9   UR	                  [
        R                  5        S S S 5        MO     g ! , (       d  f       Ma  = f)N))r9   r  )r  )r=   r  )g      Y@r  )r  r   r  zInvalid quantile range: \(r   )r   r[   r\   r]   r^   rJ  rK  )range_re   s     rC    test_robust_scaler_invalid_ranger     sL     V4]]:-JKJJtyy! LK LKs    A
A$	c                    [         R                  R                  S5      nUR                  SS5      nSUS S 2S4'   U " U5      n[	        USS9n[         R
                  " [         R                  " U5      5      (       a   e[	        USS9n[         R
                  " [         R                  " UR                  5      5      (       a   e[	        UR                  5       SS9n[        XFR                  5       5        [        R                  " [        5         [	        USSS	9  S S S 5        [        UR                  SS
9/ SQS5        [        UR                  SS
9/ SQ5        XBLd   e[!        US5      u  px[        XtR                  SS
95        [        XR                  SS
95        [	        USSSS9n[        UR                  5       UR                  5       5        g ! , (       d  f       N= f)Nr   ri   rj   r   r   Frt   r:   )ru   r   r   ri  rT   r   Tr   )rF   r   r   rZ   r   r   r   rK  r  r,   r?   r[   r\   r]   r   r   r6   )	r  rY   rc   X_csrr   X_csr_scaledX_csc_scaledX_csr_scaled_meanX_csr_scaled_stds	            rC   %test_scale_function_without_centeringr&    s   
))


#C		!QAAadG!EQ%(Hvvbhhx())))%0Lvvbhh|0012222 %8Lh(<(<(>? 
z	"eu1- 
# 1? hlll24MN*<\1*M'/A1FG.!0DE %%dKLemmo|/C/C/EF! 
#	"s   G
G c                      [         R                  n [        U SS9n[        [        R
                  " USS9S5        [        R                  " USSS9nUS   US   -
  n[        US5        g )Nr:   r   r   r  r  rJ  rK  r   r,   rF   r  r  rc   rM  r  r  s       rC   test_robust_scale_axis1r*  3  sY    		A11%Gbiia8!<
g2A
A$1+Cc1%rD   c                      [         R                  S S 2S4   n [        U 5      n[        [        R
                  " U5      S5        [        R                  " USS9nUS   US   -
  n[        US5        g )Nr:   r   r  )r  r(  r)  s       rC   test_robust_scale_1d_arrayr,  <  sZ    		!Q$A1oGbii0!4
g*A
A$1+Cc1%rD   c                     / SQ/ SQ/ SQ/n [        5       nUR                  U 5      n/ SQ/ SQ/ SQ/n[        X#5        UR                  U5      n[        X5        / SQ/ SQ/ S	Q/nUR	                  U5      n/ S
Q/ SQ/ SQ/n[        XgSS9  g )NrQ  rS  rT  rY  )r   r   rW  rZ  rU  rV  rX  )r   rm   r   )rW  r   g_)r   r   gіs)?rU   r   )r   r   r,   r   r}   )rc   re   rM  r  rN  r\  r^  X_expected_news           rC   )test_robust_scaler_zero_variance_featuresr/  E  s    	+-=>A^F""1%G #$46FGJg2**73Ka- /1ABE""5)K')>@UVNk1ErD   c                  2   [         R                  R                  S5      n U R                  SS5      n[         R                  " U[         R
                  " S5      S-  [         R
                  " S5      S-  /5      nSn[        USS	9R                  U5      nUR                  U5      nUR                  [        R                  " S
SS9:X  d   eUR                  [        R                  " SSS9:X  d   eUR                  5       [        R                  " SSS9:X  d   eg )Nr   r  r:   )r   r:   r   i)r:   c   T)r  unit_variancer   MbP?)r  r  )rF   r   r   rZ   vstackrz   r   r^   r}   r  r[   r)  r   r   )rY   rc   X_with_outliersr  robust_scalerrM  s         rC    test_robust_scaler_unit_variancer7  ^  s     ))


#C		'1AiiBGGH$5$;RWWX=NQU=U VWON dSWWM %%a(G  FMM!$>>>>6==#====;;=FMM!6666rD   c                 $   / SQ/ SQ/ SQ/ SQ/n[        5       nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/n[        X45        UR                  U5      n[        X5        / SQ/ S	Q/ SQ/nUR	                  U5      n/ S
Q/ S	Q/ SQ/n[        XxSS9  [        U5      n[        X45        U " U5      n	UR                  U	5      n
/ SQ/ SQ/ SQ/ SQ/n[        U
R                  5       U5        UR                  U
5      n[        XR                  5       5        g )NrQ  )r   rm   333333ӿrX  rY  )r   rm   UUUUUU?)r   rm   gɿ)r   rm   rm   rU  rV  )r   rl   r:  rT   r   )r   r   r,   r   r}   r   r?   )r   rc   re   rM  r  rN  r\  r^  r.  rj  r  X_trans_sparse_invs               rC   )test_maxabs_scaler_zero_variance_featuresr<  p  s    
+-=?OPA^F""1%G	J g2**73Ka- /1ABE""5)K,.>@PQNk1E 1oGg2  "H))(3N	J n446
C11.Aa!;!;!=>rD   c                      / SQ/ SQ/ SQ/ SQ/n [        5       nUR                  U 5      n/ SQ/ SQ/ SQ/ SQ/n[        X#5        g )	N)r   rm   rR  rW  )r   rm   r9  rH  )r   rm   g      Yr   )r   r   r   g       )r   rm   g{Gzt?rH  )r   rm   g~jthg      п)r   rm   rW  r   )r   r   r   rW  )r   r   r,   )rc   re   rM  r  s       rC   'test_maxabs_scaler_large_negative_valuer>    sM     			A ^F""1%G!	J g2rD   c                 J   U " / SQ/5      n[        5       nUR                  U5      nUR                  U5      nU " / SQ/5      n[        UR	                  5       UR	                  5       5        UR                  U5      n[        UR	                  5       UR	                  5       5        g )N)rR  rm   rm   r[  )r   r^   r}   r,   r?   r   )r  rc   re   rM  r  r   s         rC   (test_maxabs_scaler_transform_one_row_csrr@    s     	'(A^FZZ]Fq!G01Jgoo/1C1C1EF,,W5Maiik=+@+@+BCrD   c            	         [         [        [        [        4 GH  n [        SS9nUR	                  U 5      R                  U 5      n[        U [        5      (       a  [        R                  " U 5      n [        U 5      S:X  aF  [        [        R                  " UR                  SS95      [        R                  " [        5      5        O-[        [        R                  " UR                  SS95      S5        UR                   U R"                  S   :X  d   eUR%                  U5      n[        X05        GM     [        R                  " S5      n [        5       nUR	                  U 5      R                  U 5      n[        [        R                  " UR                  SS95      S5        UR                   U R"                  S   :X  d   e[         R'                  5       n[        R                  " U5      R                  5       n[        XE-  [)        USS95        g )NTr   r:   r   r   rm   r   )r   r   r   r   r^   r}   r   r   rF   rp   rI   r,   r  r=  rz   rb   r   rH   r   r   r   )rc   re   r   r   re  max_abss         rC   test_maxabs_scaler_1drC    sw   fk;74(::a=**1-aAA!#%bffX\\q\-A&BBGGJDWX%bffX\\q\-A&BCH%%333 00:!-3 8$ 	A^Fzz!}&&q)HbffX\\q\%9:C@!!QWWQZ/// <<>DffTl Gdnl4d.KLrD   c                    [         S S2S S 24   nUR                  S   nSSSX"S-   4 GH  n[        5       R                  U5      n[        5       n[        5       n[        5       n[	        X#5       HL  nUR                  X   5      nU " X   5      n	UR                  U	5      nU " X   5      n
UR                  U
5      nMN     [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        UR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   e[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  U5      UR                  U5      5        [        SU5      n[        5       R                  X   5      n[        5       R                  X   5      n[        UR                  UR                  5        UR                  UR                  :X  d   e[        UR                  UR                  5        [        UR                  U5      UR                  U5      5        [        5       R                  U5      n[        5       n[        [	        X#5      5       HD  u  pUR                  X   5      n[        UUR                  UR                  UUUR                  S9  MF     GM     g )Nr   r   r:   rT   r   r   r  )r  rH   r   r^   r!   r  r,   max_abs_r   r   r}   r  r	  rR   r
  r  )r  rc   rO   rP   r  r  scaler_incr_csrscaler_incr_cscr  r!  X_cscr  rL   s                rC   test_maxabs_scaler_partial_fitrI    s    	TcT1WA	
A!RF+
#~))!,"n&.&. /E%11!(;K!!(+E-99%@O!!(+E-99%@O 0 	","7"79M9MN!,"7"79Q9QR!,"7"79Q9QR++{/J/JJJJ++/N/NNNN++/N/NNNN!,"5"5{7I7IJ!,"5"57M7MN!,"5"57M7MN!,"8"8";[=R=RST=UV q*%#~))!)4"n00;!,"7"79M9MN++{/J/JJJJ!,"5"5{7I7IJ!,"8"8";[=R=RST=UV $~))!,"n!+a"<=HA%11!(;K!KK ::%*:: >M ,rD   c                    U S:X  aS  [         R                  " U5      R                  SS9n[        S5       H  n[	        X#   S5        M     [	        US   S5        g	U S:X  aX  [        S5       H%  n[	        [
        R                  " X   5      S5        M'     [	        [
        R                  " US   5      S5        g	U S:X  aH  [        U5      R                  SS9n[        S5       H  n[	        XC   S5        M     [	        US   S5        g	g	)
zf
Convenient checking function for `test_normalizer_l1_l2_max` and
`test_normalizer_l1_l2_max_non_csr`
r9  r:   r   rU   rm   r   r<  r=  N)rF   r  r(  r   r+   lar;  r=  )r;  X_normrow_sumsrL   row_maxss        rC   check_normalizerrO    s    
 t|66&>%%1%-qAS1 HQK-	qA	 2C8 BGGF1I.4	v;???*qAS1 HQK-	 
rD   r;  r9  r<  r=  c                    [         R                  R                  S5      nUR                  SS5      nU" U5      nSUSS S 24'   UR                  S   nUR                  S   nSUR
                  XV& U" U5      nX7U4 Hp  n[        U SS9n	U	R                  U5      n
XLd   e[        U
5      n
[        U SS9n	U	R                  U5      nXL d   e[        U5      nX4 H  n[        X5        M     Mr     g )	Nr   ri   rj   r   rU   Tr;  r   F)
rF   r   r   rZ   indptrrK  r   r}   r?   rO  )r;  r  rY   r}  X_sparse_unprunedindptr_3indptr_4X_sparse_prunedrc   
normalizerX_norm1X_norm2rL  s                rC   test_normalizer_l1_l2_maxr[  )  s	    ))


"Cii1oG%g. GAqDM !''*H ''*H038- $G,O (9:T5
&&q)'"T6
&&q)||'"(FT* ) ;rD   c                 L   [         R                  R                  S5      nUR                  SS5      nSUSS S 24'   U" U5      n[	        U SS9R                  U5      nXTLd   e[        R                  " U5      (       a  UR                  S:X  d   e[        U5      n[        X5        g )	Nr   ri   rj   r   rU   FrR  csr)rF   r   r   rZ   r   r}   r   rt  r  r?   rO  )r;  r   rY   r}  rc   rL  s         rC   !test_normalizer_l1_l2_max_non_csrr^  K  s    
 ))


"Cii1oG GAqDM!AT.88;F????6""v}}'===V_FT"rD   c           	         [         R                  R                  S5      nUR                  SS5      nSUSS S 24'   US[	        USS S 24   5      R                  5       4==   S-  ss'   [         R                  " U5      * nU " U5      nX#U4 Hk  n[        SS	9nUR                  U5      nXuLd   e[        U5      n[        [         R                  " U5      [         R                  " [        U5      5      5        Mm     g )
Nr   ri   rj   r   rU   rT   r9   r=  r:  )rF   r   r   rZ   r  argmaxr   r}   r?   r-   sign)r  rY   r}  	X_all_negX_all_neg_sparserc   rX  rL  s           rC   test_normalizer_max_signrd  `  s     ))


"Cii1oGGAqDM As71a4=!((**+r1+ I$Y/"23U+
%%a(2776?BGGGAJ,?@ 4rD   c           	      (   [         R                  R                  S5      R                  SS5      n[	        [        USS9[        UR                  SSS9R                  5        [         R                  R                  S5      nUR                  SS	5      nU " U5      n[         R                  " S5      nX44 H  n[         R                  [         R                  4 H  nS
 H  nUR                  U5      n[        XS9nUR                  U:X  d   e[        U5      nUS:X  a$  [         R                  " U5      R                  SS9n	OUS-  n
U
R                  SS9n	[        X5        M     M     M     [         R                   " / SQ/ SQ/ SQ/5      nS H  n[        X7SS9u  pUS:X  a$  [        U[         R                   " / SQ5      5        M9  US:X  a$  [        U[         R                   " / SQ5      5        Mc  [        U[         R                   " / SQ5      5        M     U " U5      nS
 H0  n["        R$                  " [&        5         [        XGSS9  S S S 5        M2     [        USSS9u  p[        U[         R                   " / SQ5      5        g ! , (       d  f       Ms  = f)N%   rU   rT   Fr   r   )r   r   r=   rj   )r9  r<  r:  r9  r:   r   )r   r   r  )rm   r   r   )rl   r   r   rP  T)r;  return_norm)      @rm   r   r<  )r   rm   g1C+@)r  rm   r   r=  )rF   r   r   rZ   r-   r   r  rz   r   r   r   r   r?   r  r(  r,   rp   r[   r\   NotImplementedError)r  rc   rsr}  rj  rz   r   r;  rL  rM  X_norm_squared_normss                rC   test_normalizern  u  s    			b!''1-Ay/133QU1S1U1UV			q	!Bhhr1oGW%H77B=D jj"**-E$HHUO"10||u,,, 4<!vvf~11q19H%+QYN-11q19H)(9 % . !" hhHIG#WTB4<%eRXXo-FGT\%eRXX6L-MN%eRXXo-FG $ W%H]]./ht< 0/  4@HAeRXXo%>? 0/s   ;J
J	constructorc                    [         R                  " / SQ/ SQ/5      nU " UR                  5       5      n[        SSS9n[	        UR                  U5      5      n[         R                  " US:H  5      S:X  d   e[         R                  " US:H  5      S	:X  d   eUR                  U5      n[        R                  " U5      [        R                  " U5      :X  d   e[        SS
9R                  U5      n[	        UR                  U5      5      nXBLd   e[         R                  " US:H  5      S	:X  d   e[         R                  " US:H  5      S:X  d   e[        SS
9nUR                  U5      nXBLd   e[	        U5      n[         R                  " US:H  5      S	:X  d   e[         R                  " US:H  5      S:X  d   e[        SS
9nUR                  U5      nU [        La  XBL d   e[        SS
9n[         R                  " / SQ/ SQ/[         R                  S9nUR                  U5      nU [        La  XEL d   e[	        U5      n[         R                  " US:H  5      S	:X  d   e[         R                  " US:H  5      S:X  d   e[        SSS9nU [         R                  [        4;   a  U " UR                  5       5      n[	        UR                  U5      5      n[         R                  " US:H  5      S:X  d   e[         R                  " US:H  5      S:X  d   eUR                  U5      nU [        ;   a;  [        R                  " [        5         UR                  U " U5      5        S S S 5        g g ! , (       d  f       g = f)N)r:   r   rj   )rT   rU   r9   rl   T)	thresholdr   r   ri   r:   rT   r   Fr   rH  rj   )rF   rp   r   r   r?   r}   r(  r   rt  r^   r   r   r2   r[   r\   r]   )ro  X_rc   	binarizerX_binX_floats         rC   test_binarizerrv    s    
9j)	*BBGGIACd3II''*+E66%1*"""66%1*""""E??1!7777t$((+II''*+E>>66%1*"""66%1*"""t$I"E>>ENE66%1*"""66%1*"""u%I"E$zzu%Ihh	:.bjjAG(E$ENE66%1*"""66%1*"""Dt4Irxx&&	"	++A./vveqj!Q&&&vveqj!Q&&&##A& n$]]:&A/ '& %&&s    M""
M0c                 z   [        X5      nUSS4 H  n[        R                  " [        R                  " / SQUS9S5      nUR                  XQS9n[	        SS9R                  U5      n[        S	S
9   [	        SS9R                  U5      nS S S 5        [        [        WU5      U5        M     g ! , (       d  f       N)= f)Nr3  int64)r   r:   rT   rU   ri   r   )r9   r:   )r?  rw   )rq  T)array_api_dispatch)	r'   rF   r  rG   r   r   r   r-   r#   )	rA  r?  r@  xpdtype_name_X_npX_xpbinarized_npbinarized_xps	            rC   test_binarizer_array_api_intr    s    
 
o	6B"GW5zz"**_KH'Rzz$z. 3/==dCt4$s3AA$GL 5,\2>M 6 54s   0B,,
B:	c                     [         R                  R                  S5      n U R                  S5      n[	        SS9nUR                  U5        UR                  U5      n[         R                  " XR                  5      n[        5       n[         R                  " X3R                  5      nUR                  U5      n[        Xg5        U R                  S5      n[         R                  " XR                  5      n	UR                  U5      n
[         R                  " XR                  5      nUR                  U	5      n[        X5        [         R                  " U5      UR                  S   -  nXMU-  -
  XM-  -
  X-  U-  -   n[        Xn5        [         R                  " U	5      UR                  S   -  nXU-  -
  X-  -
  X-  U-  -   n[        UU5        g )Nr   rj   ri   Fr   )rT   ri   )rF   r   r   random_sampler   r^   r}   dotr  r   r   r,   	ones_likerH   r)   )rY   X_fitre   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                    rC   test_center_kernelr    s    ))


"Cf%EU+F
JJu%%e,NFF5''"E HVVN,<,<=N,,U3On> v&FVVFGG$F&&v.Off_.>.>?O))&1o@ \\% 5;;q>1Fun,u~=QW@WWON4 <<'%++a.8L%%7,:NQW:WW  O%56rD   c                  n   [         R                  R                  S5      n U R                  SS5      U R                  SS5      p!S nU" U5      nU" U5      n[	        SS9nUR                  U5      nUR                  U5      nXDR                  -  n	XTR                  -  n
XwR                  -  nXR                  -  n[        5       nUR                  U	5        [        UR                  U	5      U5        [        UR                  U
5      U5        [         R                  " U	5      U	R                  S   -  nXU	-  -
  X-  -
  X-  U-  -   n[        UR                  U	5      U5        [         R                  " U
5      U	R                  S   -  nU
UU	-  -
  X-  -
  UU	-  U-  -   n[        UR                  U
5      U5        g)	z-Check kernel centering for non-linear kernel.r   r   r   r  c           	          [         R                  " [         R                  " U SSS9[         R                  " U SSS9* /5      $ )zOur mapping function phi.r   N)a_mina_max)rF   r4  r8  r  s    rC   phi2test_kernelcenterer_non_linear_kernel.<locals>.phi  s;    yy$/$a00
 	
rD   Fr   N)rF   r   r   rZ   r   r   r}   r  r   r^   r)   r  rH   )rY   rc   r   r  phi_X
phi_X_testre   phi_X_centerphi_X_test_centerKK_testK_centerK_test_centerkernel_centererr  
K_centeredr  K_test_centereds                     rC   %test_kernelcenterer_non_linear_kernelr    s   
))


"C		#r"CIIb"$5v
 FEVJ U+F''.L((4 	A''!Fnn,H%6M$&OO--a0(;O--f5}E \\!_qwwqz)FaZ!*,vzF/BBJO--a0*= <<'!''!*4L!!FO3lQ6F6OO  O--f5GrD   c                  r   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " S5      nU R                  U R                  5      n[        5       n[        SU4S[        5       4/5      nUR                  5       R                  R                  (       d   e[        XBUSS	9n[        X5        g )
N)rU   r   r   )r   rU   r   )r   r   rU   r  )ri   r  svrrT   )cv)rF   rp   rz   r  r  r   r   r    __sklearn_tags__
input_tagspairwiser   r,   )rc   y_truer  kcentpipeliney_preds         rC   test_cv_pipeline_precomputedr  M  s     	)Y	9=>AWWT]F	acc
AE+U3eSU^DEH $$&11::::
 xFq9Ff-rD   c                  $   [         R                  R                  S5      n U R                  S5      n[	        5       [        5       [        5       4 H?  nUR                  U5      R                  U5      nUR                  U5      n[        X45        MA     g )Nr   r  )rF   r   r   r  r   r   r   r^   r}   r   r-   )rY   rc   objX_transformedX_transformed2s        rC   test_fit_transformr  a  sn    
))


"C&!A *,	<
,,Q/**1-=9 =rD   c                  Z    SS/SS/SS//n [        U 5      n [        U / SQ/ SQ/ SQ/5        g Nr:   r   )r:   r:   r   rn   )r   r-   r  s    rC   test_add_dummy_featurer  j  s5    
Q!Q!Q A!Aq9i;<rD   c                     U " SS/SS/SS//5      nUR                   n[        U5      n[        R                  " U5      (       a  UR                   U:X  d   U5       e[	        UR                  5       / SQ/ SQ/ SQ/5        g r  )r  r   r   rt  r-   r?   )r   rc   desired_formats      rC   test_add_dummy_feature_sparser  p  sp     	1a&1a&1a&12AXXN!A??1!((n"<?a?<qyy{Y	9$EFrD   c                      [         R                  n U S S 2S S24   n[        SSS9[        5       [	        5       /nU H%  nUR                  U 5        UR                  U5        M'     g )NrT   Fr   )rJ  rK  r   r   r   r   )rc   r  scalersre   s       rC   test_fit_cold_startr  {  sc    		AQU8D 	7G Q 	T"	 rD   methodbox-coxyeo-johnsonc                 ^   [        U S9n[        R                  " [        5      n[        R
                  " [        5         UR                  U5        S S S 5        [        R
                  " [        5         UR                  U5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr  )	r   rF   r  r   r[   r\   r   r}   r   )r  ptrc   s      rC    test_power_transformer_notfittedr    sg    		(B
vA	~	&
Q 
'	~	&
Q 
'	& 
'	&	&	&s   B2B
B
B,standardizec                     U S:X  a  [         R                  " U5      OUn[        XS9nUR                  U5      n[	        X#R                  U5      5        g )Nr  r  r  )rF   r  r   r   r+   r   )r  r  rc   r  rM  s        rC   test_power_transformer_inverser    sG     y(q	aA		ABq!G//89rD   c                     [         R                  " [        5      n S GH  n[        SUS9nUR	                  U 5      n[        U SUS9n[        R                  " U R                  5       5      u  pVU(       a  [        U5      n[        UR                  SS5      U5        [        UR                  SS5      U5        [        XR                  U5      5        [        XbR                  S   5        [        UR                  5      U R                  S   :X  d   e[!        UR                  [         R"                  5      (       a  GM    e   g )NTFr  r  r9   r:   r   )rF   r  r   r   r   r   r   boxcoxflattenr   r+   r  r   lambdas_r  rH   r   r  )rc   r  r  rM  X_trans_funcr  lambda_expecteds          rC   test_power_transformer_1dr    s    
vA$YKH""1%&qT&+ll199;&?#
z*JJ..r15w?J..r15|DA33G<=O[[^<2;;1771:---"++rzz2222% %rD   c                     [         R                  " [        5      n S GH,  n[        SUS9nUR	                  U 5      n[        U SUS9nX44 H  n[        UR                  S   5       Hm  n[        R                  " U S S 2U4   R                  5       5      u  pxU(       a  [        U5      n[        US S 2U4   U5        [        XR                  U   5        Mo     UR                  U5      n	[        X5        M     [!        UR                  5      U R                  S   :X  d   e[#        UR                  [         R$                  5      (       a  GM-   e   g )Nr  r  r  r:   )rF   r  r  r   r   r   r   rH   r   r  r  r   r+   r  r   r,   r  r   r  )
rc   r  r  X_trans_classr  rM  jr  lmbdaX_invs
             rC   test_power_transformer_2dr    s   
tA$YKH((+&qT%4G7==+,$)LL1a41B$C!
!&z!2J#GAqDM:>#E;;q>: - ((1E%e/ 5 2;;1771:---"++rzz2222+ %rD   c                  ^   [        SS9n U R                  [        R                  " [        5      5        [        nSn[
        R                  " [        US9   U R                  U5        S S S 5        [
        R                  " [        US9   U R                  U5        S S S 5        [
        R                  " [        US9   [        USS9  S S S 5        [
        R                  " [        US9   U R                  [        R                  " [        R                  5      5        S S S 5        [
        R                  " [        US9   U R                  [        R                  " [        R                  5      5        S S S 5        [
        R                  " [        US9   [        [        R                  " [        R                  5      SS9  S S S 5        g ! , (       d  f       GNg= f! , (       d  f       GNF= f! , (       d  f       GN,= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr  r  zstrictly positiver   )r   r^   rF   r  r  r[   r\   r]   r}   r   r   rH   )r  X_with_negativesnot_positive_messages      rC   9test_power_transformer_boxcox_strictly_positive_exceptionr    sW    
	+BFF266$<.	z)=	>
%& 
? 
z)=	>
  
? 
z)=	>(; 
? 
z)=	>
RXXdjj)* 
? 
z)=	>
rxx

#$ 
? 
z)=	>,Y? 
?	> 
?	> 
?	> 
?	> 
?	> 
?	> 
?	>sH   GG:G*&4G<;4H-H
G
G'*
G9<
H

H
H,c                     [        U SS9  g )Nr  r  )r   r  s    rC   +test_power_transformer_yeojohnson_any_inputr    s     Am,rD   c                    [        U S9n[        R                  " [        5      nUR	                  U5        Sn[
        R                  " [        US9   UR                  US S 2SS24   5        S S S 5        [
        R                  " [        US9   UR                  US S 2SS24   5        S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)Nr  zBX has \d+ features, but PowerTransformer is expecting \d+ featuresr   r   r:   )
r   rF   r  r  r^   r[   r\   r]   r}   r   )r  r  rc   wrong_shape_messages       rC   &test_power_transformer_shape_exceptionr    s    		(B
tAFF1I
 	N  
z)<	=
Qq!A#vY 
> 
z)<	=
Qq!A#vY' 
>	= 
>	= 
>	=s   B0C0
B>
Cc                      [        SSS9n [        R                  " [        5      S S 2SS24   n[        R                  " S/5      U l        U R                  U5      n[        U R                  U5      U5        g )Nr  Fr  r   r:   )	r   rF   r  r  rp   r  r}   r,   r   r  rc   rM  s      rC   "test_power_transformer_lambda_zeror  	  s]    		>B
tQ!VA ((A3-BKll1oGb227;Q?rD   c                      [        SSS9n [        R                  " [        5      S S 2SS24   n[        R                  " S/5      U l        U R                  U5      n[        X!5        g )Nr  Fr  r   r:   )r   rF   r  r  rp   r  r}   r,   r  s      rC   !test_power_transformer_lambda_oner  	  sN    	E	BB
tQ!VA((A3-BKll1oGg)rD   zmethod, lmbda))r  r  )r  rR  )r  r  )r  rR  )r  rm   c                    [         R                  R                  S5      nSnUR                  SSUS4S9nU S:X  a  [         R                  " USU-  S-   S 5      n[        U SS	9nU/Ul        UR                  U5      n[        U SS	9nUR                  U5      n[        S[         R                  R                  XG-
  5      U-  S
S9  [        SUR                  5       SS9  [        SUR                  5       SS9  g )Nr   i N  r:   )locr   r<   r  r9   r   Fr  rT   r   )rF   r   r   r  r8  r   r  r   r   r+   linalgr;  r   r   )r  r  rY   ra   rc   r  r  X_inv_transs           rC   #test_optimization_power_transformerr  	  s    " ))


"CI

qA
7A GGArEzD($/	U	;B'BK  #E	U	;B""5)K299>>!/:YFPQR;++-q9;??,a8rD   c                      [        SSS9n S/U l        U R                  S//5      n[        R                  " U5      (       d   eg )Nr  Fr  rR  g )r   r  r   rF   r   )r  r  s     rC   test_invserse_box_coxr  E	  s=    		>B%BK  4&*E88E???rD   c                      / SQn [         R                  " U 5      R                  SS5      n [        SS9R	                  U 5      R
                  n[         R                  " USSS9(       d   eg )	N)gffffff@g rm   rl   gffffff?g333333@rx   gffffff@g?g@rh  r   g"@g      @g      r9   r:   r  r  gzG?r3  r   )rF   rp   r  r   r^   r  allclose)rc   r  s     rC   test_yeo_johnson_darwin_exampler  M	  sU     	VA
B"AM266q9BBE;;ue$///rD   c                    [         R                  " [        5      n[        U S9nUR	                  U5        UR
                  S   n[         R                  " U[         R                  " U[         R                  5      /5      n[        USS9nUR	                  U5        UR
                  S   n[        X4SS9  UR                  U5      n[        [         R                  " U5      [         R                  " U5      5        g )Nr  r   )r  rj   r   )rF   r  r   r   r^   r  concatenate	full_likers  r"   r+   r}   r-   r   )r  rc   r  lmbda_no_nans
lmbda_nansrM  s         rC   test_power_transformer_nansr  V	  s    
 	vA		(BFF1IKKNM 	2<<266234A"AFF1IQJ1=ll1oGrxx("((1+6rD   c                     [         nU S:X  a  [        R                  " U5      n[        XS9n[	        UR                  U5      R                  U5      UR                  U5      5        g )Nr  )r  )r   rF   r  r   r,   r^   r}   r   )r  r  rc   r  s       rC   $test_power_transformer_fit_transformr  m	  sP     	AFF1I	&	:BbffQi11!4b6F6Fq6IJrD   c                 v   [         nU S:X  a  [        R                  " U5      nUR                  5       nX#Ld   e[	        X#5        [        XSS9nUR                  U5        [	        X#5        UR                  U5      nXRLd   eUR                  U5      n[	        X#5        XRLd   eUR                  U5      nXVLd   eg )Nr  Tr  r   
r   rF   r  r   r,   r   r^   r}   r   r   r  r  rc   
X_originalr  rM  r  s          rC    test_power_transformer_copy_Truer  y	  s    
 	AFF1IJa,	&	EBFF1Ia,ll1oGq!Ga,&&w/K%%%rD   c                    [         nU S:X  a  [        R                  " U5      nUR                  5       nX#Ld   e[	        X#5        [        XSS9nUR                  U5        [	        X#5        UR                  U5      nXRL d   eU S:X  a  [        R                  " U5      nUR                  U5      nXRL d   eUR                  U5      nXVL d   eg )Nr  Fr  r  r  s          rC   !test_power_transformer_copy_Falser  	  s    
 	AFF1IJa,	&	FBFF1Ia,ll1oG<<FF1Iq!G<<&&w/K!!!rD   c                      [         R                  S5      n [        R                  U SS2S4'   Sn[	        SS9n[
        R                  " [        US9   UR                  U 5        SSS5        g! , (       d  f       g= f)ziCheck that box-cox raises informative when a column contains all nans.

Non-regression test for gh-26303
r  Nr   zColumn must not be all nan.r  r  r   )	rY   r  rF   rs  r   r[   r\   r]   r   )rc   r  r  s      rC   1test_power_transformer_box_cox_raise_all_nans_colr  	  s\    
 	&!AffAadG+G		+B	z	1
 
2	1	1s   A,,
A:r  皙?)r  r  )r=   r:   )r   c                     [         R                  " SSSS9n[        SS9nUR                  U5      R	                  U 5        [
        R                  " UR                  S   5      (       d   eg )Nrj   r:   r  r  Frt   r   )r   r   r   r^   r  rF   r   r|   )r  r  re   s      rC   7test_standard_scaler_sparse_partial_fit_finite_variancer  	  sS     --1c
*Ce,F
JJsO$;;v{{1~&&&&rD   rG  )r   r:   )r  r=   c                 H   [         R                  n[        U SS9R                  U5      n[        R
                  " USS9[        R                  " USS9pC[        R                  US S S-
  USS  S-   4   /nUR                  U5      n[        UU S   U S   U S   U S   //5        g )NT)rG  r8  r   r   rT   r=   r:   )
rJ  rK  r   r^   rF   rL  r=  r_r}   r)   )rG  rc   re   X_minX_maxr   r  s          rC   test_minmax_scaler_clipr  	  s     			ADAEEaHF66!!$bffQQ&75eeE"1INE!"IN234F$$V,M

M!,mA.>a@P	QRrD   c                      [        5       R                  [        5      n Sn[        R                  " [
        US9   U R                  [        SS2S4   5        SSS5        g! , (       d  f       g= f)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   r^   r  r[   r\   r]   r   )re   r  s     rC   -test_standard_scaler_raise_error_for_1d_inputr  	  sL     !!$'F7G	z	1  ad, 
2	1	1s   A
A-c                     S[         R                  " / SQS-  / SQ-   [         R                  S9R                  SS5      -  n [	        5       n[
        R                  " 5          [
        R                  " S[        5        UR                  U 5      nS	S	S	5        [         R                  " [         R                  " W5      5      (       a   eUR                  5       [        R                  " S
5      :X  d   eUR                  5       [        R                  " S5      :X  d   eUR!                  5       S:  d   eUR#                  5       S:  d   eg	! , (       d  f       N= f)zCheck 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  )rI  rl   r   r  ri   )r     r        r  U   r  r   r9   r:   r   Nr   rm   r  rT   )rF   rp   r   r  r   r   r   r   RuntimeWarningr   r   r   r   r[   r)  r   rL  r=  )X_non_gaussianr  rM  s      rC   1test_power_transformer_significantly_non_gaussianr  	  s     288q #CC2::gb!nN 
	B		 	 	"g~6"">2 
# vvbhhw'((((<<>V]]3////;;=FMM#....;;=2;;=1 
#	"s    -E
ETransformerc                     U " 5       R                  [        R                  5      nUR                  [        R                  5      n[        U[        R                  5        g)9Check one-to-one transformers give correct feature names.N)r^   rJ  rK  get_feature_names_outfeature_namesr-   )r  tr	names_outs      rC   test_one_to_one_featuresr  
  s@     
		499	%B((););<Iy$"4"45rD   c                 D   [         R                  " S5      nUR                  [        R                  [        R
                  S9nU " 5       R                  U5      nUR                  5       n[        U[        R
                  5        UR                  [        R
                  5      n[        U[        R
                  5        [        R                  " S5      n[         R                  " [        US9   [        S5      nUR                  U5        SSS5        g! , (       d  f       g= f)r  pandas)columnsz0input_features is not equal to feature_names_in_r   abcdN)r[   importorskip	DataFramerJ  rK  r  r^   r  r-   reescaper\   r]   r   )r  pddfr  names_out_df_defaultnames_out_df_valid_inmsginvalid_namess           rC   test_one_to_one_features_pandasr,  
  s     
		X	&B	dii););	<B			2	B335+T-?-?@44T5G5GH,d.@.@A
))F
GC	z	-V
  / 
.	-	-s   +D
Dc                  F   [         R                  R                  S5      n U R                  S5      n[	        U5      n[        5       R                  U5      nUR                  5       nUR                  S   n[        U[        U5       Vs/ s H  nSU 3PM
     sn5        gs  snf )z.Test that kernel centerer `feature_names_out`.r   )rk   ri   r:   kernelcentererN)rF   r   r   r  r
   r   r^   r  rH   r-   r   )rY   rc   
X_pairwiser  r  samples_out2rL   s          rC   &test_kernel_centerer_feature_names_outr1  7
  s     ))


"C&!Aq!J##J/H..0I##A&Ly|AT"UATA^A3#7AT"UV"Us   B
c                 <   / SQ/ SQ/ SQ/n[        SU S9R                  U5      n[        UR                  / SQ5        UR	                  U5      nUR                  U5      nX44 H7  nU (       a"  [        U[        R                  " U5      5        M,  [        XQ5        M9     g)z>Check that PowerTransfomer leaves constant features unchanged.)r  r   rT   r  r  r  N)r   r^   r)   r  r   r}   rF   r   )r  rc   r  XftXtXt_s         rC   'test_power_transformer_constant_featurer6  D
  s|     
Z,A	K	H	L	LQ	OBBKK+


1
C	aByCq!12C#	 rD   z1.12z2scipy version 1.12 required for stable yeo-johnson)reasonc                      [         R                  " / SQ5      n S nU" U R                  SS5      5        U" U SS R                  SS5      5        g)a  Verify that PowerTransformer operates without raising any warnings on valid data.

This test addresses numerical issues with floating point numbers (mostly
overflows) with the Yeo-Johnson transform, see
https://github.com/scikit-learn/scikit-learn/issues/23319#issuecomment-1464933635
)
g     L@g     x@g     4@g     @@     d@r9  g     @g     <@g     \@g     @c                    [         R                  " SS9 n[         R                  " S5        [        SSS9R	                  U 5        SSS5        W(       a    SSR                  S	 U 5       5      -   5       eg! , (       d  f       N6= f)
z0Internal helper to test for unexpected warnings.Tr  alwaysr  r  Nz!Unexpected warnings were raised:

c              3   L   #    U  H  n[        UR                  5      v   M     g 7frx  )strmessage).0ws     rC   	<genexpr>Ptest_power_transformer_no_warnings.<locals>._test_no_warnings.<locals>.<genexpr>w
  s      U
$3qC		NNOs   "$)r   r   r   r   r   join)rK  caught_warningss     rC   _test_no_warnings=test_power_transformer_no_warnings.<locals>._test_no_warningsq
  s{    $$D1_!!(+MtDRRSWX 2 # 	
$H499 U
$3U
 L
 %
 	
"?	 21s   0A55
Br9   r:   Nrj   )rF   rp   r  )r   rF  s     rC   "test_power_transformer_no_warningsrH  W
  sL     		
	A
 aiiA&' aemmB*+rD   c                      [        SS9R                  [        5      n U R                  S   [        R
                  " SSS9:H    g)zFCheck that the results are consistent across different SciPy versions.r  r  r   gd8?r   )relN)r   r^   r   r  r[   r)  )r  s    rC   +test_yeojohnson_for_different_scipy_versionrK  
  s2    		/	3	3F	;BKKNfmmJD99rD   )r$  r   numpyrF   numpy.linalgr  rK  r[   scipyr   r   sklearnr   r   sklearn.baser   sklearn.exceptionsr   $sklearn.externals._packaging.versionr	   parse_versionsklearn.metrics.pairwiser
   sklearn.model_selectionr   sklearn.pipeliner   sklearn.preprocessingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.preprocessing._datar   r   sklearn.svmr    sklearn.utilsr!   r"   sklearn.utils._array_apir#   r$   r%   -sklearn.utils._test_common.instance_generatorr&   sklearn.utils._testingr'   r(   r)   r*   r+   r,   r-   r.   r/   sklearn.utils.estimator_checksr0   sklearn.utils.fixesr1   r2   r3   r4   r5   sklearn.utils.sparsefuncsr6   	load_irisrJ  r   r   rY   rb   ra   r   r  r   rZ   r  r  r   r   tolistr   X_list_1colr?   rI   rR   rg   markparametrizerp   rs  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r%  r1  r4  rC  rO  ra  rc  rg  rp  rv  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/  r7  r<  r>  r@  rC  rI  rO  r[  r^  rd  rn  r   rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rH   r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r,  r1  r6  skipifrH  rK  )r  s   0rC   <module>rg     s   
      ,  - G 2 5 %    & Q  . 
 S
 
 
  9 	iiA
	
++b!*+
-	Q	,
yyJ'&07:	ad		Az	*	ad		Iq	)mmommo"M@$  
Y	)Y	!BS#JO	"	9i8HHaV	
 ^bffbffa01BFFA###	 HHaV		
* ,.STN U+,N,"0J +dVn-D~-UV,udm<1 = W1: 'E* +dVn-D~-UV,udm<2::rzz":;_54 6 < = W4D &78$452::rzz":;+dVn-D~-UV/S W < 6 9/Sd	I #> #>L1hA23-`0Kf +^n-LM+A N+A\ 4,7+^n-LM6 N 86 4,7& 8&R 0 )-/'  
 %&   
 $	 	!  R0R@7>:#L 4,7+^n-LM87 N 887v tUm4dE]3+dVn-D~-UVI W 4 5I @ +^n-LMN NN2 +^n-LM57 N57p +^n-LMD ND  +^n-LM7 N7* )D%=9$7ryyr15v{{2qRU7VWX% Y 8 :%$ .9D :D
: $:;*,ST? U <?( .9E :E	&	* .9O :O( .962 :62r .9> :>B.@,=^
H .9#B :#BL8 .9" :"J=	= ':;( <(&" .9!G :!GH&&F27$ +^n-LM&? N&?R3( .9	D :	DM@ .95 :5p.* !45.9+ : 6+@ !457.H# 6#" .9A :A( .9*@ :*@Z BHHd#n4~E3030l )+T+V	N	N)7X3Hl.(:= 7.HGG#$ I}#=>  ?  I}#=>u6vtn-: . 7 ?:3036@8 tRVVD\BFF4L="((4::BVWX- Y-
 I}#=>( ?($@* 	9	980 I}#=>7 ?7, I}#=>u6K 7 ?K I}#=>u6& 7 ?&4 I}#=>u6" 7 ?"8 	]]2q#A67 ,+M 	bggg"&&g9:+'' 69*=>
 ?
	-0 
6
6 	00&
W u6$ 7$$ v&&?  $,	$,N:{s   (+y3