
    0Ph*v                       d dl Z d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d d
l)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZCmDZD d dlEmFZF  ejG                    ZHejI        J                    d           ZKdZLdZMeKN                    ddeL          ZOeKN                    ddeL          ZPeKQ                    eMeL          ePz  eOz   ZReRd ddf         S                    deL          ZTeRddd f         S                    eMd          ZUeTV                                ZWeUV                                ZXd ZYd ZZd Z[d Z\ej]        ^                    g dg dg dgg dg dg dgd d!gfg d"g d#gg d"g d#g d#g d#g ej_        dd$g          fdej`        dgej`        ej`        dggdej`        dgej`        ej`        dgej`        ej`        dgej`        ej`        dgg ej_        dd$g          fg          ej]        ^                    d%g d&          d'                         Zad( Zbej]        ^                    d)dgeBz   eCz             ej]        ^                    d*d+d,g          d-                         Zcej]        ^                    d. e d+/           ed+0          g          ej]        ^                    d)dgeBz   eCz             ej]        ^                    d*d+d,g          ej]        ^                    d1ejd        eje        g          ej]        ^                    d2g d3          d4                                                             Zfej]        ^                    d5g d6          ej]        ^                    d7g d8          ej]        ^                    d1ejd        eje        g          ej]        ^                    d)dgeBz   eCz             d9                                                 Zgd: Zhe=d;             Zid< Zjd= Zkd> Zld? Zmd@ Znej]        ^                    d)eBeCz             dA             Zoej]        ^                    dBd,dg          ej]        ^                    d)eBeCz             dC                         Zpej]        ^                    dBd,dg          dD             ZqdE Zrej]        ^                    dF e2                      ej]        ^                    dGe?ge4H          ej]        ^                    dI e             e             ed,J           e             edKL           edML           edNL          ge4H          dO                                     ZsdP ZtdQ ZudR ZvdS Zwej]        ^                    dBd,dg          ej]        ^                    d)eBeCz             dT                         Zxej]        ^                    dUd,d+g          ej]        ^                    dVd,d+g          ej]        ^                    d)dgeBz   eCz             dW                                     ZydX Zzej]        ^                    d)eBeCz             dY             Z{ej]        ^                    d)eBeCz             dZ             Z|ej]        ^                    d)eCeBz             d[             Z}ej]        ^                    d)eCeBz             d\             Z~d] Zd^ Zej]        ^                    d_d,d+g          ej]        ^                    d`d,d+g          ej]        ^                    daejI        Q                    dd$           e	j        dd$dbc          g          dd                                     Zej]        ^                    deeC          df             Zdg Zej]        ^                    dhg di          ej]        ^                    djg dk          dl                         Zej]        ^                    deeC          dm             Zdn Zdo Zej]        ^                    dpeB          dq             Zej]        ^                    dpeB          dr             Zej]        ^                    dpeB          ds             Zdt Zdu Zdv Zej]        ^                    dpeB          dw             Zdx Zej]        ^                    dpeB          dy             Zdz Zd{ Zej]        ^                    d|d}d~g          d             Zd Zej]        ^                    deeC          d             Zd Zd Zd Zd Zej]        ^                    d)eBeCz             d             Zd Zej]        ^                    deeC          d             Zd Zej]        ^                    deeC          d             Zd Zej]        ^                    dg d          ej]        ^                    deeC          d                         Zej]        ^                    dg d          ej]        ^                    d)eAeBz   eDz             d                         Zej]        ^                    deeC          d             Zej]        ^                    deeC          d             Zej]        ^                    dej_        egeBz   eCz             d             Zd Zd Zd Zd Zd Zej]        ^                    d)eAeBz   eCz             d             Zd Zej]        ^                    dddg          d             Zej]        ^                    dddg          ej]        ^                    dd,d+g          ej]        ^                    daeUeRg          d                                     Zd Zd Zd Zej]        ^                    daeR ej        eR           ej        eR            ej        eRj                  g          d             Zej]        ^                    dddg          d             Zd Zd Zej]        ^                    dg d          d             Zd Zd Zej]        ^                    dddg          d             Zej]        ^                    dddg          ej]        ^                    dd,d+g          d                         Zej]        ^                    dddg          ej]        ^                    dd,d+g          d                         Zej]        ^                    dddg          ej]        ^                    dd,d+g          d                         Zd Zej]        ^                    d e	jI        dddd           gd eCD             z             d             Zej]        ^                    dddg          d             Zd Zd Zej]        ^                    deeee eeg          d             Zej]        ^                    deeee eeeeg          d             Zd Zej]        ^                    dd,d+g          d             ZdS )    N)sparsestats)datasets)clone)NotFittedError)linear_kernel)cross_val_predict)Pipeline)	BinarizerKernelCentererMaxAbsScalerMinMaxScaler
NormalizerPowerTransformerQuantileTransformerRobustScalerStandardScaleradd_dummy_featuremaxabs_scaleminmax_scale	normalizepower_transformquantile_transformrobust_scalescale)BOUNDS_THRESHOLD_handle_zeros_in_scale)SVR)gen_batchesshuffle))yield_namespace_device_dtype_combinations)_get_check_estimator_ids)_convert_containerassert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equalassert_array_lessskip_if_32bit) check_array_api_input_and_values)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERS)mean_variance_axis        size
   c                 N    t          | d          r|                                 } | S )Ntoarray)hasattrr9   as    e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/preprocessing/tests/test_data.pyr9   r9   P   s&    q) IIKKH    c                 @    t          j        |           j        d         S )Nr   )npasarrayshaper;   s    r=   _check_dim_1axisrC   V   s    :a==q!!r>   c                 T    ||k    r| dz   |z  |k    sJ d S | |z  ||z
  z   |k    sJ d S )Nr4    )ibatch_start
batch_stopn
chunk_sizen_samples_seens         r=   assert_correct_incrrL   Z   sP    QA#~555555:~k!9:nLLLLLLr>   c                     ddg} ddg}t          | |          D ]\  }}t                              ||          }t                              |          }t                      }t                              |d          dz  }t	          j        t                    5  |                    |||           d d d            n# 1 swxY w Y   d S )N      r4   sample_weight)ziprngrandnr   pytestraises
ValueErrorfit)
n_samplessn_featuress	n_samples
n_featuresXyscalersample_weight_notOKs           r=   9test_raises_value_error_if_sample_weights_greater_than_1dra   a   s    QJa&K!$Z!=!= 	@ 	@	:IIi,,IIi  !! "ii	155:]:&& 	@ 	@JJq!+>J???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@	@ 	@s   B==C	C	)Xwr]   rQ   )r4   rN   rO   )                @      ?r4   r   r4   )r   r   r4   rO   array_constructor)array
sparse_csr
sparse_cscc                 n   |                     d           }t          ||          }t          | |          } t          j        | j        d                   }t          |          }|                    | ||           t          j        |j        d                   }t          |          }|                    ||           g dg dg}	t          |j        |j                   t          |j	        |j	                   t          |
                    |	          |
                    |	                     d S )Nr   r   	with_meanrP   )      ?g      @      @)rq   g      @g      @)
startswithr#   r@   onesrB   r   rX   r&   mean_var_	transform)
rb   r]   rQ   ri   ro   ywscaler_wr^   r_   X_tests
             r=   "test_standard_scaler_sample_weightrz   s   s    . &00:::I1/00A	B 1	2	2B 
!		B	222HLLR}L555 	
Ai000F
JJq!oo/Fhn555X]333((00(2D2DV2L2LMMMMMr>   c                     t           t          t          t          fD ]O} t                      }|                    |                               | d          }t          | t                    rt          j	        |           } t          |           dk    rt          |j        |                                            t          |j        t          j        t                                t#          |                    d          t          j        t                                t#          |                    d          t          j        t                                nt          |j        |                                            t          |j        |                                            t#          |                    d          t          j        t                                t#          |                    d          d           t#          |                    d          d           |j        | j        d         k    sJ |                    |          }t#          ||            Qt          j        d          } t                      }|                    |                               | d          }t          |j        d           t          |j        d           t#          |                    d          d           t#          |                    d          d           |j        | j        d         k    sJ d S 	NTcopyr4   r   axis        rg   rd   r4   )X_1rowX_1colX_list_1rowr   rX   rv   
isinstancelistr@   rj   rC   r&   rt   ravelscale_rs   r\   r'   mean
zeros_likestdn_samples_seen_rB   inverse_transform)r]   r_   X_scaledX_scaled_backs       r=   test_standard_scaler_1dr      s   fk;7 4 4!!::a==**14*88a 	AA!##aggii888rwz/B/BCCC%hmmm&;&;R]:=V=VWWW%hlll&:&:BM*<U<UVVVVaffhh777quuww777%hmmm&;&;R]:=V=VWWW%hmmm&;&;SAAA%hlll&:&:C@@@%3333 00::!-3333 	AFzz!}}&&qt&44Hc***s+++hmmm33S999hlll22C888!QWQZ//////r>   sparse_containeradd_sample_weightFTc                    t           j                            d          }d}d}| rt          j        |          }nd }d}|t           j        t           j        g}n#t           j        t           j        t           j        g}|D ]}|                    ||                              |          }	| ||	          }	d}t          |          }
|

                    |	|                              |	          }|	j        |j        k    sJ |
j        j        t           j        k    sJ |
j        j        t           j        k    sJ d S )Nr   r7   rO   TFrn   rP   )r@   randomRandomStaters   float64float32float16rT   astyper   rX   rv   dtypert   r   )r   r   rS   r[   r\   rQ   ro   supported_dtyper   r]   r_   r   s               r=   test_standard_scaler_dtyper      s@    )


"
"CIJ 	**I# :rz2:rz2:>  
1 
1IIi,,33E::'  ##AI)444::a}:==GGJJw(.((((|!RZ////}"bj00000
1 
1r>   r_   rn   with_centeringr   constant)r   rg         Y@c                 V   t          | t                    r#|r!t          j        | j        j         d           t          j                            d          }d}d}|r(t          |
                    |          dz            }ni }t          j        ||f||          }	||	n
 ||	          }
 | j        |
fi |                    |
          }t          | t                    r4t          | j        t          j        |
j        d                   d	
           t          | j        t          j        |
j        d                              ||
usJ t+          ||
           t          | t                    r0|s0t-          |
| j                  }||
usJ t+          ||
           d S d S d S )Nz# does not yet support sample_weightr   d   r4   r5   rN   rP   )rB   
fill_valuer   gHz>atolrn   )r   r   rU   skip	__class____name__r@   r   r   dictuniformfullrX   rv   r   r$   ru   zerosrB   r   rs   r%   r   ro   )r_   r   r   r   r   rS   r[   r\   
fit_paramsX_arrayr]   r   
X_scaled_2s                r=   &test_standard_scaler_constant_featuresr      s    &,'' W,= Wv'0UUUVVV
)


"
"CIJ (C(Ca(GHHH


gY
3PUVVVG#+1A1A'1J1JAvz!**z**44Q77H&.)) FRXagaj%9%9EEEE FM27171:#6#67771 1---&.)) 42C 41(8999
""""$Z33333	4 4 4 4r>   r[   )r7   r   i'  average)g|=r4   g    _Bc                 :   d\  }}t          j        d t          ||dz             D             |          }|j        d         }t          j        | |f|          }||z   |d | dz  d d f<   ||z
  || dz  d d d f<   ||n
 ||          }	t          d                              |	          }
t          j        t           j                  j	        }| |z  |dz  z  | dz  |dz  z  |dz  z  z   }|dz  |k    }t          j
        |          sJ t          |
j        |         ||         k              sJ t          |
j        |         d	           |dd d f         |d
d d f         z
  dk    }t          |
j        t          j        |                   d           t          |
j        t          j        |                   d           t          j        |dz  |k    |          }t          |
j        |         t          j        |
j                  |                    d S )N)i   c                     g | ]}d |z  S )r7   rE   .0rF   s     r=   
<listcomp>z?test_standard_scaler_near_constant_features.<locals>.<listcomp>  s    FFFr1uFFFr>   r4   r   r   rN   Frn   rg   r3   )r@   rj   rangerB   emptyr   rX   finfor   epsanyallru   r$   r   logical_notlogical_andsqrt)r[   r   r   r   	scale_min	scale_maxscalesr\   r]   r   r_   r   boundswithin_boundsrepresentable_diffcommon_masks                   r=   +test_standard_scaler_near_constant_featuresr     sA    #IyXFFeIy1}&E&EFFFeTTTFaJ
)Z(666A$v-A	Q$v-Ai1n#+aa1A1A!1D1DGe,,,0099F (2:


"C _vqy(9a<#q&+@7A:+MMFAI'M 6-      v{=)VM-BBCCCCCFM-0#666 1aaa41RU8+q0FK/A B BCQGGGFM".1C"D"DEqIII
 .V!35GHHKFM+.0D0D[0QRRRRRr>   c                  *   g d} t          j        |           }| |fD ]u}t          |          }t          |                                d           t          |                                d           t          t          |dd          |           vd S )N)rg         @      @r   r   rg   Fro   with_std)r@   rj   r   r'   r   r   r(   )X_listX_arrr]   r   s       r=   test_scale_1dr   F  s    !!!FHVEe_ I I88!(--//3777!(,,..#6665eeDDDaHHHH	I Ir>   c                     t          j        dt          j        d          t           j                  } t	          j                    5  t	          j        dt                     t          |            d d d            n# 1 swxY w Y   t          t          |           t          j
        d                     t          j        dt          j        d          t           j                  } d}t          j        t          |          5  t          |           }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          j        ddt           j                  } t	          j                    5  t	          j        dt                     t          |           }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          j        dd	t           j                  }d
}t          j        t          |          5  t          |          }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          ||           t          j        t          |          5  t          |d          }d d d            n# 1 swxY w Y   t          |t          j
        d                     t          ||           d S )N   h㈵>r   errorr7   z:standard deviation of the data is probably very close to 0matchg0.++g}Ô%ITz$Dataset may contain too large valuesFr   )r@   r   logr   warningscatch_warningssimplefilterUserWarningr   r'   r   rU   warns)xwarning_messagex_scaledx_small_scaledx_bigx_big_scaledx_big_centereds          r=   (test_standard_scaler_numerical_stabilityr   R  s   
 	26$<<rz222A 
	 	"	"  g{333a               eAhh444 	BF4LL
333ARO	k	9	9	9  88              h555
F"*---A		 	"	" " "g{333q" " " " " " " " " " " " " " " nbhrll;;; GBRZ000E<O	k	9	9	9 $ $U||$ $ $ $ $ $ $ $ $ $ $ $ $ $ $lBHRLL999lN;;;	k	9	9	9 6 6uu5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6nbhrll;;;nn=====sZ   *A==BBD##D'*D'*F::F>F>%IIIJ77J;>J;c                  D   t           j                            d          } d}d}|                     ||          }d|d d df<   t	                      }|                    |                              |d          }t          j        t          j        |                    rJ |j	        |k    sJ t          |                    d          |dgz             t          |                    d          g d           ||usJ |                    |          }||usJ ||usJ t          ||           t          |d	d
          }t          j        t          j        |                    rJ t          |                    d	          |dgz             t          |d	d          }t          j        t          j        |                    rJ t          |                    d	          |dgz             t          |                    d	          |dgz             ||usJ |                    |                              |d
          }t          j        t          j        |                    rJ t          |                    d          |dgz             t          |                    d          g d           ||u sJ |                     dd          }d|d d df<   t	                      }|                    |                              |d          }t          j        t          j        |                    rJ t          |                    d          |dgz             t          |                    d          g d           ||usJ d S )Nr   rd   rc   r   Tr}   r   r   rg   rg   rg   rg   r4   F)r   r   rg   )r@   r   r   rT   r   rX   rv   r   isnanr   r'   r   r   r   r   )rS   r\   r[   r]   r_   r   r   s          r=   test_scaler_2d_arraysr   y  s   
)


"
"CJI		)Z((AAaaadGFzz!}}&&qt&44Hvbhx(()))))!Y....hmmm33Z3%5GHHHhlll224M4M4MNNN1 ,,X66M!!!!((((mQ///QQ///Hvbhx(()))))hmmm33Y#5FGGGQQ...Hvbhx(()))))hmmm33Y#5FGGGhlll22I4EFFF1zz!}}&&qu&55Hvbhx(()))))hmmm33Z3%5GHHHhlll224M4M4MNNNq====		!QAAaaadGFzz!}}&&qt&44Hvbhx(()))))hmmm33Z3%5GHHHhlll224M4M4MNNN1r>   c                  f   t           j                            d          } |                     ddddg                              t           j                  }t          j        d          5  t                                          |          }|	                    |          }d d d            n# 1 swxY w Y   t                      
                    |                    t           j                            }t          j        t          j        |                    sJ t          ||d	           d S )
Nr   rd   r7   i@ r4   raise)overrN   decimal)r@   r   r   r   r   r   errstater   rX   rv   fit_transformr   r   isfiniter'   )rS   r]   r_   r   X_scaled_f64s        r=   test_scaler_float16_overflowr     s>   
)


"
"C 	ArFA;''..rz::A	'	"	"	" ' '!!%%a((##A&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '
 "##11!((2:2F2FGGL
 6"+h''(((((
 ha@@@@@@s   +7B..B25B2c                      t          j        g d          } t          | d          }t          | t          j        g d                     t          |t          j        g d                     d S )N)r   gؗҜ<r4   rN   rO   Tr}   )r4   r4   r4   rN   rO   )r@   rj   r   r$   )s1s2s     r=   test_handle_zeros_in_scaler     so    	%%%	&	&B		.	.	.BB!4!4!455666B1122222r>   c            
      H   t           } | j        d         }ddd||dz   fD ]}t                                          |           }t                      }t	          t
          |          D ]}|                    | |                   }t          |j        |j                   t          |j	        |j	                   |j
        |j
        k    sJ t          |j        |j                   t          |j        |j                   t          |j        |j                   t          d|          }t                                          | |                   }t                                          | |                   }t          |j        |j                   t          |j	        |j	                   |j
        |j
        k    sJ t          |j        |j                   t          |j        |j                   t          |j        |j                   t                                          |           }t                      }t          t	          t
          |                    D ]D\  }}|                    | |                   }t!          ||j        |j        |||j
                   Ed S )Nr   r4   rN   2   *   rG   rH   rI   rJ   rK   )X_2drB   r   rX   r   r[   partial_fitr'   	data_min_	data_max_r   data_range_r   min_slice	enumeraterL   startstopr]   rI   rJ   scaler_batchscaler_incrbatchbatch0rF   s           r=   test_minmax_scaler_partial_fitr    sw    	A	
A!RAF+ ' '
#~~))!,,"nn J77 	< 	<E%11!E(;;KK!,"8+:OPPP!,"8+:OPPP+{/JJJJJ!,":K<STTT!,"5{7IJJJ!,"3[5EFFF q*%%#~~))!F)44"nn006;;!,"8+:OPPP!,"8+:OPPP+{/JJJJJ!,":K<STTT!,"5{7IJJJ!,"3[5EFFF $~~))!,,"nn!+i"D"DEE 		 		HAu%11!E(;;K!K :%*:    		=' 'r>   c            
      0   t           } | j        d         }ddd||dz   fD ]u}t          d                              |           }t          d          }t	          t
          |          D ]}|                    | |                   }t          |j        |j                   |j	        |j	        k    sJ |j
        |j
        k    sJ t          d|          }t                                          | |                   }|dk    rqt          t          j        t          t          j                  |j	                   t          t          j        t          t          j                  |j                   n^t          t          j        | |         d	          |j	                   t          t          j        | |         d	          |j                   t                                          |           }t                      }t)          t	          t
          |                    D ]D\  }}|                    | |                   }t+          ||j        |j        |||j
        
           Et          |j	        |j	                   |j
        |j
        k    sJ wd S )Nr   r4   rN   r   r   Fr   r   r   r   )r   rB   r   rX   r   r[   r   r'   rt   ru   r   r  r@   r   r\   r   rs   r   varr   r  rL   r  r  r  s           r=    test_standard_scaler_partial_fitr    s    	A	
A!RAF+ *K *K
%u55599!<<$e444 J77 	< 	<E%11!E(;;KK!,"4k6GHHH K$44444+{/JJJJJ q*%%$&&221V9==??%2:6668H   &
"*555{7I    &bfQvYQ&?&?&?AQRRR%qyq)));+=  
 &''++A..$&&!+i"D"DEE 		 		HAu%11!E(;;K!K :%*:     	","3[5EFFF+{/JJJJJJU*K *Kr>   c                 4   t           j                            d          }d}d}|                    dd|          }|                    dd|          }|                    ||          |z  |z   }t                                          |          }t                      }|D ]+}	|                    |	                    d	|                    },d
}
t          |j
        |j
        |
           t          |j        |j        |
           t          |j        |j        |
           d}d} | |                    dd|                              t           j                  |z            }t          d                              |          }t          d          }|D ]8}	|	j        d	k    r|	                    d	d          }	|                    |	          }9d
}
|j
        J t          |j        |j        |
           t          |j        |j        |
           d S )Nr   rN   r   g  4&kg  4&kCr5   g     @@    .Ar4   gư>)rtol)r   rO   g@xDFrn   r3   )r@   r   r   r   rT   r   rX   r   reshaper$   rt   ru   r   randintr   r   ndim)r   rS   r\   r[   offsetsr   r]   r	  r
  chunktolr6   r   r_   s                 r=   4test_standard_scaler_partial_fit_numerical_stabilityr  1  s"    )


"
"CJIkk%Jk77G[[c
[33F		)Z((61G;A!##''**L ""K L L!--emmAz.J.JKK CK%|'9DDDDK$l&7cBBBBK&(;#FFFF
 DEQ40077
CCeKLLA e,,,0033F 5111K 5 5:?? MM!R((E!--e44 C<###K$fk<<<<K&C@@@@@@r>   rQ   c                 x    |t          j        dgdgdgdgg                    }| r%t                              |j        d                   } t          ddd          }|                    ||                               |          }t          |	                                |	                                           |
                    |          }t          |	                                |	                                           t          |	                                |	                                           d S )	Nrg   r   r   r   FTro   r   r~   rP   )r@   rj   rS   randrB   r   r   rv   r(   r9   r   )rQ   r   r]   null_transformX_nullX_origs         r=   test_partial_fit_sparse_inputr!  `  s
    	C53%#">??@@A -,,#ee$OOON'''GGQQRSTTFv~~''555--f55Fv~~'')9)9:::v~~''55555r>   c                    t           d dd d f         }| r%t                              |j        d                   } t	                      }t          t          |j        d         d                    D ]\  }}|d |dz   d d f         }|                                }| =t	                                          |          }|	                    ||                   }nQt	                                          || d |dz                      }|	                    ||         | |                   }|
                    |          }t          ||           t          ||           |                    |          }	t          ||	           t          j        |j        d                   }
t          j        t                     j        }t%          |
|j        |z              t%          |
|j        |z              | |dz   |j        k    sJ t          j        | d |dz                      t/          j        |j                  k    sJ d S )Nr   r   r4   rP   )r   rS   r  rB   r   r  r   r~   r   r   rv   r'   r   r@   r   r   floatr   r)   ru   r   r   sumrU   approx)rQ   r]   r
  rF   r  X_sofarchunks_copyscaled_batchscaled_incrright_inputzeroepsilons               r=   .test_standard_scaler_trasform_with_partial_fitr-  q  sG    	TcT111WA -,, ""Kk!'!*a8899  5Iq1uIqqqL/llnn )++99'BBL%11!E(;;KK)++99}Wq1uW'= :  L &11%e(< 2  K "++G44!,<<<!';777!33K@@!';777x
##(5//%$ 07 :;;;$ 2W <=== Ek9999996-!a%011V]+6 6     9 r>   c            	          t          j        g dg dg dg dg dg dgt           j                  } t                      }|                    |            |                    |            d S )N)r4   r4   r4   r   r4   r   )r   r   r   r4   r   r   )r4   rc   r4   r4   r   r   )r   r4   r   r   r4   r   )r   rc   r   r4   r   r4   r   )r@   rj   int32r   rX   r   )r   r_   s     r=   .test_standard_check_array_of_inverse_transformr0    s     		
 h
	 
	 
	A F
JJqMMM
 Qr>   z#array_namespace, device, dtype_namecheck)ids	estimator)clipl1norml2maxc                 >    | j         j        } ||| |||           d S )N)device
dtype_name)r   r   )r3  r1  array_namespacer;  r<  names         r=    test_scaler_array_api_compliancer?    s0    0 'D	E$	?6jQQQQQQr>   c                  4   t           j        } t                      }|                    |           }t	          |                    d          d           t	          |                    d          d           |                    |          }t	          | |           t          d          }|                    |           }t	          |                    d          d           t	          |                    d          d           |                    |          }t	          | |           t          d          }|                    |           }t	          |                    d          d           t	          |                    d          d	           |                    |          }t	          | |           t          d
          }t          j	        t                    5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr   r   r4   r4   rN   feature_rangerN   )      333333?rD  rE  )rN   r4   )irisdatar   r   r'   minr9  r   rU   rV   rW   rX   )r]   r_   X_transX_trans_invs       r=   test_min_max_scaler_irisrK    s!   	A^^F""1%%Ggkkqk111555gkkqk111555**733Ka--- ///F""1%%Ggkkqk111555gkkqk111555**733Ka--- 444F""1%%Ggkkqk114888gkkqk113777**733Ka--- ///F	z	"	"  

1                 s   *HHHc                  \   g dg dg dg} g dg dg dg}t                      }|                    |           }g dg dg d	g}t          ||           |                    |          }t          | |           |                    |          }g dg d
g dg}t          ||d           t          d          }|                    |           }g dg dg dg}t          ||           t          |           }t          ||           t          | d          }t          ||           d S )Nr   rg         ?r   rg   gr   rg   g?r   rf   rN        rg   r   r   rg   rp   )r   r   rN  r   r   r   r   r   rg   )rS  r   gsh|??)r   r   gS?rN   r   rA  rB  )rg   rg   rp   rg   rg   rg   )rg   rg   rf   )r   r   r'   r   rv   r   )	r]   X_newr_   rI  X_expected_0_1rJ  X_trans_newX_expected_0_1_newX_expected_1_2s	            r=   *test_min_max_scaler_zero_variance_featuresr]    s   			+++-=-=-=>A///1A1A1ABE ^^F""1%%G%ooHNg~666**733Ka---""5))K,,,.@.@.@BTBTBTUk+=qIIII ///F""1%%G%ooHNg~666 1ooGg~6661F333Gg~66666r>   c                      t           j        } t          | d          }t          t	          j        |d          d           t          t	          j        |d          d           d S )Nr4   r   r   )rF  rG  r   r'   r@   rH  r9  )r]   rI  s     r=   test_minmax_scale_axis1r_    s_    	A11%%%GbfW1555q999bfW1555q99999r>   c                  "   t           t          t          t          fD ]s} t          d          }|                    |                               |           }t          | t                    rt          j	        |           } t          |           dk    rwt          |                    d          t          j        t                               t          |                    d          t          j        t                               nHt          |                    d          d           t          |                    d          d           |j        | j        d         k    sJ |                    |          }t          ||            ut          j        d          } t                      }|                    |                               |           }|                                dk    sJ |                                dk    sJ |j        | j        d         k    sJ t                                           }|                                }|                                }t          ||z
  ||z
  z  t+          |d                     d S r|   )r   r   r   r   rX   rv   r   r   r@   rj   rC   r'   rH  r   r\   r9  r   rB   r   rs   r   r   )r]   r_   r   r   X_1dr  max_s          r=   test_min_max_scaler_1drc    s/   fk;7 4 44(((::a==**1--a 	AA!##%hlll&:&:BHZ<P<PQQQ%hlll&:&:BHZ<P<PQQQQ%hlll&:&:C@@@%hlll&:&:C@@@%3333 00::!-3333 	A^^Fzz!}}&&q))H<<>>S    <<>>S    !QWQZ//// <<>>D88::D88::D	%|Dt'D'D'D    r>   c                 4   t           j                            d          }|                    dd          }d|d d df<    ||          }| r |                    |j        d                   } t          j        t                    5  t                      
                    |           d d d            n# 1 swxY w Y   t          d          
                    ||           }|                    |d	
          }t          j        t          j        |                    rJ t          d          
                    ||           }|                    |d	
          }t          j        t          j        |j                            rJ t          |j        |j                   t          |j        |j                   t          |j        |j                   t          |j        |j                   | Mt          |                    d          g dd           t          |                    d          g d           t-          |d          \  }	}
t          |	|                    d                     t          |
|                    d                     ||usJ ||usJ |                    |          }||usJ ||usJ t          ||           |                    |          }||usJ ||usJ t          |                                |           |t4          v rrt          ddd	          }|                    |          }t9          |j        |j                   |                    |          }t9          |j        |j                   d S d S )Nr   rc   rd   r   r   Frn   rP   Tr}   r   r   g{GzgQ@gffffffֿg(\rN   r   r  )r@   r   r   rT   r  rB   rU   rV   rW   r   rX   rv   r   r   rG  r'   rt   ru   r   r   r   r   r0   r  r   r9   r.   r   r(   )rQ   r   rS   r]   X_sparser_   r   scaler_sparseX_sparse_scaledX_sparse_scaled_meanX_sparse_scaled_varr   X_sparse_scaled_backr  r  r   s                   r=   test_scaler_without_centeringrl  ;  s    )


#
#C		!QAAaaadG""H -,,	z	"	" ' 'X&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' e,,,00-0PPF--Hvbhx(()))))"U33377 8  M $--hT-BBOvbh34455555flM,?@@@fk=+=>>>fm]-ABBBf4m6STTT!MMqM!!#C#C#CQ	
 	
 	
 	"(,,A,"6"68Q8Q8QRRR0B?TU0V0V--2HMMqM4I4IJJJ18<<Q<3G3GHHH 1(****,,X66M!!!!((((mQ///(::?KKx////66662::<<a@@@>))'%%dSSS--h776;66611&996;66666 *)s   "B33B7:B7ro   r   c                    t          j        g dt           j        ddgddt           j        gddt           j        ggt           j                  }| ||          }t	          j        |          r| rt          j        d	           t          | |
          }|	                    |           t          |j        t          j        g d                     d S )Nr   r4   rO   re   r7   rd   rc   r   r   r   z3'with_mean=True' cannot be used with sparse matrix.r   )rO   rc   rN   )r@   rj   nanr   r   issparserU   r   r   rX   r(   r   )ro   r   r   r]   transformers        r=   #test_scaler_n_samples_seen_with_nanrr  x  s     		RVQOaBF^aBF^DBJ	 	 	A #Qq Ki KIJJJ 9xHHHKOOA{2BHYYY4G4GHHHHHr>   c                     | j         |j         cxu rn J | j        |j        cxu rn J | j        |j        cxu rn J | j        |j        k    sJ d S )N)rt   ru   r   r   )scaler_1scaler_2s     r=   "_check_identity_scalers_attributesrv    s    >X^333333333=HM111111111?ho555555555#x'???????r>   c                 J   t          j        g dg dg dgt           j                  } | |          }t          dd          }|                    |          }t          ||           t          |          }|                    |          }t          ||           t          ||           |	                    |           |	                    |           t          ||           |
                    |           |
                    |           t          ||           d S )Nrn  )rd   re   r   )r   r   r7   r   Fr   )r@   rj   r   r   r   r$   r   r%   rv  r   rX   )r   X_denserf  transformer_denseX_trans_densetransformer_sparseX_trans_sparses          r=   test_scaler_return_identityr}    s1    h			999jjj9LLLG((H&GGG%33G<<MM7+++011'55h??N :::&'8:LMMM!!'***""8,,,&'8:LMMM'"""8$$$&'8:LMMMMMr>   c                 L   t           j                            d          }|                    dd          }d|d d df<    | |          }t	          j        d          5  t          d	                              |          }|                    |d
          }d d d            n# 1 swxY w Y   t          j	        t          j
        |                    rJ t	          j        d          5  t          d	                              |          }|                    |d
          }d d d            n# 1 swxY w Y   t          j	        t          j
        |j                            rJ t          |j        |j                   t          |j        |j                   t          |j        |j                   t          |                    d          g dd           t          |                    d          g d           t%          |                    t(                    d          \  }}	t          ||                    d                     t          |	|                    d                     ||usJ ||usJ |                    |          }
|
|usJ |
|usJ t          |
|           |                    |          }||usJ ||usJ t          |                                |           | t.          v rt          ddd          }t	          j        d          5  |                    |          }d d d            n# 1 swxY w Y   t3          |j        |j                   |                    |          }t3          |j        |j                   d S d S )Nr      rc   rd   r5   r   T)recordFrn   r}   r   )r   gX9v?gV-?g      5@gl?rN   r   r  )r@   r   r   r  r   r   r   rX   rv   r   r   rG  r'   rt   ru   r   r   r   r0   r   r#  r   r9   r.   r   r(   )r   rS   r]   rf  r_   r   rg  rh  ri  X_sparse_scaled_stdr   rk  r  r  r   s                  r=   test_scaler_intr    s    )


#
#CBV$$AAaaadG""H		 	-	-	- 2 2%00044Q77##AD#112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 vbhx(()))))		 	-	-	- G G&777;;HEE'11(1FFG G G G G G G G G G G G G G G vbh34455555flM,?@@@fk=+=>>>fm]-ABBB1???   hlll224M4M4MNNN0Bu%%q1 1-- 2HMMqM4I4IJJJ18<<Q<3G3GHHH 1(****,,X66M!!!!((((mQ///(::?KKx////66662::<<a@@@>))'%%dSSS$D111 	< 	<#11(;;F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<6;66611&996;66666 *)s6    ;B''B+.B+/;D66D:=D:,MMMc                    t           j                            d          }|                    dd          }d|d d df<    | |          }|                                }t          d                              |           t          ||           |                                }t          dd                              |           t          |                                |                                           d S )	Nr   rc   rd   r   r   Fr}   )ro   r~   )	r@   r   r   rT   r~   r   rX   r(   r9   )r   rS   r]   rf  X_copyX_sparse_copys         r=   test_scaler_without_copyr    s     )


#
#C		!QAAaaadG""HVVXXF""1%%%q&!!!MMOOMU///33H===x''))=+@+@+B+BCCCCCr>   c                 N   t           j                            d          }|                    dd          } | |          }t	          j        t                    5  t          |d           d d d            n# 1 swxY w Y   t	          j        t                    5  t          d          	                    |           d d d            n# 1 swxY w Y   t          d          	                    |          }t	          j        t                    5  |
                    |           d d d            n# 1 swxY w Y    | |
                    |                    }t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   rc   rd   Trn   )r@   r   r   rT   rU   rV   rW   r   r   rX   rv   r   )r   rS   r]   rf  r_   X_transformed_sparses         r=   +test_scale_sparse_with_mean_raise_exceptionr    sy   
)


#
#C		!QA""H 
z	"	" ( (h$''''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	z	"	" 5 5&&&**84445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 d+++//22F	z	"	" # #"""# # # # # # # # # # # # # # # ,+F,<,<Q,?,?@@	z	"	" 7 7  !56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7sH   A88A<?A<$CCCD55D9<D97FF!Fc                      t           j        ddddgg} t          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nrd   re      r   z,Input contains infinity or a value too larger   )r@   infrU   rV   rW   r   r]   s    r=   &test_scale_input_finiteness_validationr    s    
&!Q1	A	H
 
 
   	a                 s   AAAc                      t          j        dd          } t          d          }d}t          j        t
          |          5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr2   r7   Tr   zCannot center sparse matricesr   )r   r  r   rU   rV   rW   rX   )rf  r_   err_msgs      r=   test_robust_scaler_error_sparser    s    {4$$H...F-G	z	1	1	1  

8                 s   A&&A*-A*r   with_scalingr]   rN  densityc                 \   |r(t          j        |           rt          j        d           t	          ||          }|                    |            |r"t          |j        t          j	                  sJ n	|j        J |r#t          |j
        t          j	                  sJ d S |j
        J d S )Nz(RobustScaler cannot center sparse matrix)r   r  )r   rp  rU   r   r   rX   r   center_r@   ndarrayr   )r]   r   r  r_   s       r=   test_robust_scaler_attributesr    s    
  @&/!,, @>???lSSSF
JJqMMM &&."*555555~%%% %&-4444444}$$$$$r>   csr_containerc                    t           j                            dd          }d|d d df<    | |          }t          d          }|                    |           |j        d         t          j        d          k    sJ |                    |          }t          |d d dgf         
                                |d d dgf         
                                           d S )Nr7   rd   r   Fr   r4   )r@   r   rT   r   rX   r   rU   r%  rv   r$   r9   )r  r]   r_   rI  s       r=   "test_robust_scaler_col_zero_sparser  2  s     		AAAaaadGaA///F
JJqMMM=v}Q//////q!!GAaaa!fI%%''QC)@)@)B)BCCCCCr>   c                     t           j                            d          } |                     dd          }d|d d df<   t	                      }|                    |                              |          }t          t          j        |d          ddgz             t          |	                    d          d         d           d S )Nr   rc   rd   r   r   )
r@   r   r   rT   r   rX   rv   r'   medianr   )rS   r]   r_   r   s       r=   test_robust_scaler_2d_arraysr  B  s    
)


"
"C		!QAAaaadG^^Fzz!}}&&q))Hbiq9991u9EEEhlll2215q99999r>   r  )r   g?皙?rN  r4   strictly_signed)positivenegativer   Nc                 H   t          j        dd|                                           }|dk    rt          j        |j                  |_        n[|dk    r t          j        |j                   |_        n5|dk    r/t          j        |j        j        t          j                  |_        |	                                }t          d	          }t          d	          }|                    |           |                    |           t          |j        |j                   d S )
Nr2   rd   r  r  r  r   r   Fr   )r   r  tocscr@   absrG  r   rB   r   r9   r   rX   r$   r   )r  r  rf  rx  rg  scaler_denses         r=   +test_robust_scaler_equivalence_dense_sparser  O  s    {4G444::<<H*$$x}--	J	&	&...	G	#	#!4BJGGG  G 666Mu555LhWM(,*=>>>>>r>   c                    t           j                            d          }|                    dd          }t          j        g dg          }t          d          }|                    |          }|                     | |                    }||j        z  }t          |
                                |           |                    |          }t          ||
                                           d S )Nr   rc   rd   )r  rg   rf   r   rS  Fr   )r@   r   r   rT   rj   r   rX   rv   r   r'   r9   r   )r  rS   r]   
single_rowr_   	row_transrow_expectedrow_scaled_backs           r=   (test_robust_scaler_transform_one_row_csrr  e  s     )


"
"C		!QA555677J///FZZ]]F  z!:!:;;I-Li//11<@@@..y99Oj/*A*A*C*CDDDDDr>   c                  f   t           j        } t                      }|                    |           }t	          t          j        |d          d           |                    |          }t	          | |           t          j        |dd          }|d         |d         z
  }t	          |d           d S )Nr   r      K   qr   r4   	rF  rG  r   r   r'   r@   r  r   
percentile)r]   r_   rI  rJ  r  iqrs         r=   test_robust_scaler_irisr  t  s    	A^^F""1%%Gbia888!<<<**733Ka---
g222A
A$1+Cc1%%%%%r>   c                  j   t           j        } t          d          }|                    |           }t	          t          j        |d          d           |                    |          }t	          | |           t          j        |dd          }|d         |d         z
  }t	          |d           d S )N)r7   Z   quantile_ranger   r   r  r4   r  )r]   r_   rI  rJ  r  q_ranges         r=   !test_robust_scaler_iris_quantilesr    s    	A222F""1%%Gbia888!<<<**733Ka---
g222AdQqTkGgq)))))r>   csc_containerc                    t           j        }t          d          }|                    |          }|                    |          }t          ||           t          dd          }|                    |          }|                    |          }t          ||            | |          }|                    |          }|                    |          }t          |                                |                                           d S )Nr1   n_quantilesnormal)r  output_distribution)rF  rG  r   r   r   r'   r9   )r  r]   rq  rI  rJ  rf  X_sparse_tranX_sparse_tran_invs           r=   test_quantile_transform_irisr    s    	A%"555K''**G//88Ka---%"(SSSK''**G//88Ka--- }QH--h77M#55mDDh..002C2K2K2M2MNNNNNr>   c                 t   t          j        g dg dg dg          } | |          }t          j        g dg dg dg          } | |          }d}t          j        t          |          5  t          d                              |           d d d            n# 1 swxY w Y   t          d	          }d
}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   |                    |           d
}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   t          j        g dg dg          }d}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   t          d	                              |          }t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          d	          }d}t          j	        t          |          5 }|                    |           d d d            n# 1 swxY w Y   t          |          dk    sJ |j        |j        d         k    sJ d S )N)
r   r  r   r   r   r   r  r   r   r   )
rN   rc   r   r   re   r   r   r7   r   r   )
r   r   @ffffff@r   r   ffffff@r         #@r  )
rc   r   r   re   r   r   r7   r   r   zmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.r   r7   )	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_samplesr4   r   )r@   	transposerU   rV   rW   r   rX   rv   r   r   r   lenn_quantiles_rB   )r  r]   X_negr  rq  
X_bad_featwarn_msgr  s           r=   #test_quantile_transform_check_errorr    s\   
///+++444	
	 	A 	aAL///,,,444	
 E M%  E	 
 
z	1	1	1 1 1b)))--a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 &"555KNG	z	1	1	1                OOANG	z	1	1	1 % %e$$$% % % % % % % % % % % % % % % 	,	,	,.V.V.VW J 	V  
z	1	1	1 2 2%%j1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &"55599!<<K	z)V	W	W	W " "b!!!" " " " " " " " " " " " " " " &#666K0H	k	2	2	2 f              v;;!#qwqz111111sl   .$BB"%B"C88C<?C<5EEEF;;F?F?H&&H*-H*J  JJc                 n   t          j        ddgddgddgddgddgg          } | |          }t          dd          }d}t          j        t
          |          5  |                    |           d d d            n# 1 swxY w Y   t          j        ddgddgddgddgddgg          }|                    |          }t          ||	                                           t          j        g d	          }t          j        g d
          }t          j        g d          }	 | ||	|ff          }|                    |          }t          j        ddgddgddgddgddgddgddgddgddgg	          }t          ||	                                           t          dd          }t          j        g d          }t          j        g d          }t          j        g d          }	 | ||	|ff          }|                    |          }t          j        ddgddgddgddgddgddgddgg          }t          ||	                                           t          |	                                |
                    |          	                                           t          dddd          }|                    |          }t          ||	                                           t          |	                                |
                    |          	                                           d S )Nr   r4   rN   Trd   )ignore_implicit_zerosr  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r   )r   r   r4   r   rN   rN   r4   r   r4   rN   r   )r   r   r4   r4   r4   r4   r4   r4   r4   r4   r4   )r   rc   r   r4   rN   rO   rc   rd   re   r  r   r   rN  rg   )	r3   r3   r4   r   r   r   r4   r3   r4   )	r   r   r4   r4   r4   r4   r4   r4   r4   )	r   rc   r   r4   rN   rO   rc   rd   re   g      ?r   )r  r  r  random_state)r@   rj   r   rU   r   r   rX   r   r&   r9   r   )
r  r]   rf  rq  r   
X_expectedrI  X_dataX_colX_rows
             r=   +test_quantile_transform_sparse_ignore_zerosr    s   
1a&1a&1a&1a&1a&9::A}QH%DaPPPK	 
 
k	9	9	9                 Aq6Aq6Aq6Aq6Aq6BCCJ''11G
GOO$5$5666 X77788FH66677EH66677E}fuen566H''11G#J#J#J#J#J#J#J#J#J
	
 J 
GOO$5$5666%DaPPPKX44455FH00011EH00011E}fuen566H''11G
Q!UaZ!UaVaVaVL J 
GOO$5$5666K99'BBJJLL  
 &"QQ  K ''11G
GOO$5$5666K99'BBJJLL    s   A??BBc                  ^   t          j        g dg dg dg dg dg          } t          d          }|                    |            |                    |           }t          j        t          j        dd	d
          d          j        }t          t          j	        |d          |           t          j        g dg dg          }t          j        g dg dg          }t          |                    |          |           |                    |          }t          | |           d S )N)r   rN   r  )r  rc   r  )r   re   r  )r  r   r  )r   r7   r  rd   r  r   r4   )num)rO   r4   r   )r3   r4   r   )e      r7   )r   r   r   r4   r4   r4   )r@   rj   r   rX   r   tilelinspaceTr&   sortr'   rv   r   )r]   rq  rI  r  ry   rJ  s         r=   !test_quantile_transform_dense_toyr    sE   
	lllLLL,,,O	 	A &!444KOOA ''**GQq1116::<Ja000*===XJJMM	
 F IIII	
 J k33F;;ZHHH//88Ka-----r>   c                  B   d} d}t          j        t           j                            | df          d          }d}g }t	          |          D ]}t          ||| dz            }|                    |           t          j        dd|          t          j        |j	                  z
  }t          j
        t          j        |                    }|d	k     sJ |                    |           t          t          j        |                    t          |          k    sJ t          j        | dd
dd          }g }t	          |          D ]}t          ||| dz            }|                    |           t          j        dd|          t          j        |j	                  z
  }t          j
        t          j        |                    }|dk     sJ |                    |           t          t          j        |                    t          |          k    sJ d S )N@B r2   r4   r   r   rd   r7   )r  r  r  {Gz?gGz?csc)r  formatr  r  )r@   r  r   sampler   r   rX   r  r   
quantiles_r9  r  appendr  uniquer   r  )	r[   r  r]   ROUNDinf_norm_arrr  rq  diffinf_norms	            r=   #test_quantile_transform_subsamplingr  =  s    IK
	  )Q00q999AELe 
& 
&)%#2o
 
 

 	{1a--9O0P0PP6"&,,''$H%%%% ry&&''3|+<+<<<<< 	Iq$u1MMMALe 
& 
&)%#2o
 
 

 	{1a--9O0P0PP6"&,,''$H%%%% ry&&''3|+<+<<<<<<<r>   c                     t           j                            d                              d          } d}t	          |d                              |           }t          j        dd|          }t          |j        |           t          j	        | 
                                |          }t          |j        
                                |           dS )zCCheck the behaviour of `QuantileTransformer` when `subsample=None`.r   )   r4   r5   rd   N)r  r  r4   )r@   r   r   r  r   rX   r  r$   references_quantiler   r  )r]   r  rq  expected_referencesexpected_quantiless        r=   ,test_quantile_transform_subsampling_disabledr  l  s    
	a  ''X'66AK%+NNNRRSTUUK+aK88K+-@AAAQWWYY0CDDK*00224FGGGGGr>   c                 \   t          j        g dg dg dg dg dg dg dg dg d	g d
g
          } | |          }t          d          }|                    |           |                    |          }t          t          j        |                                d          d           t          t          j        |                                d          d           |	                    |          }t          |                                |                                           t          d                              |                                          }|
                    |          }t          t          j        |                                d          d           t          t          j        |                                d          d           |	                    |          }t          |                                |                                           d S )N)r   rf   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  r7   r  r   r   r   rg   )r@   rj   r   rX   r   r'   rH  r9   r9  r   rv   )r  r]   rq  rI  rJ  ry  s         r=   "test_quantile_transform_sparse_toyr  y  s    
OOOOOOOOOO	
	 	A 	aA%"555KOOA''**GbfW__%6%6Q???EEEbfW__%6%6Q???EEE//88Kaiikk;+>+>+@+@AAA+;;;??		LL))!,,GbfW__%6%6Q???EEEbfW__%6%6Q???EEE#55g>>Kaiikk;+>+>+@+@AAAAAr>   c                      t          j        g dg dg dg          } t          | j        dd          }t          | dd          }t	          ||j                   d S )N)r   r  r   r  r   )rN   rc   re   r   r7   )r  r  r  r  r  r   rd   )r   r  r4   )r@   rj   r   r  r'   )r]   
X_trans_a0
X_trans_a1s      r=   test_quantile_transform_axis1r    so    
&&&(8(8(8:S:S:STUUA#ACaQ???J#AA1===Jj*,77777r>   c                 J   t          j        ddgddgddgg          } | |          }t          dd                              |          }t	          ||           t          dd                              |          }t	          |                                |           t	          ||                                           t          j        ddgddgddgg          }t          j        ddgddgddgg          }t          d                              |          }|                    |          }t	          ||           t           j                            d          }t                      }|                    |           |                    d	gg          |                    t          j	        |          gg          k    sJ |                    d
gg          |                    t          j
        |          gg          k    sJ |                    d	gg          |                    t          j	        |j                  gg          k    sJ |                    d
gg          |                    t          j
        |j                  gg          k    sJ d S )Nr   r4   rO   r  r  rN  r  r  )r2   r4   r7   )r@   rj   r   r   r'   r9   rX   rv   r   rH  r9  r   r  )r  rx  rf  rI  
X_trans_spr]   X1rq  s           r=   test_quantile_transform_boundsr	    s    hAAA/00G}W%%H "aa@@@NNwWWGgw///$CCCQQ J j0022G<<<gz'9'9';';<<< 	1a&1c(QF+,,A	As8aX3x0	1	1B%!44488;;K##B''Ggr*** 		##A%''KOOA  3%))[-B-BRVAYYK=-Q-QQQQQ  2$((K,A,ABF1II;-,P,PPPPP((3%11[5R5R
&(
)
)	*+6 6     ((2$00K4Q4Q
&(
)
)	*+5 5      r>   c            	         t           j        } t          j        dgt          dz  gdgdgdgdgdgg          }| |fD ]O}t          dd	          }|                    |          }|                    |          }t          ||d
           Pd S )Nr   r7   rp   rN   rO   rc   r2   r   r  	   r   )	rF  rG  r@   rj   r   r   r   r   r'   )X_1X_2r]   rq  rI  rJ  s         r=   #test_quantile_transform_and_inverser    s    
)C
(SE,r12SEA3aS1#N
O
OC3Z = =)dKKK++A..!33G<<!![!<<<<<	= =r>   c                     t          j        t           j        dddgt           j        t           j        ddgt           j        dddgg          } t          dd          }|                    |            t          j        |j        d d df                                                   sJ t          j        |j        d d dd f                                                   rJ d S )Nr   r4   rN  r7   r   r  )	r@   rj   ro  r   r   r   r  r   r   )r]   rq  s     r=   test_quantile_transform_nanr    s    
261a#bfbfa%=1a?PQRRA%"2FFFKa    8K*111a40115577777x.qqq!""u566::<<<<<<<r>   
array_typerj   r   c                 n   t          j        g ddz            }d|                    dd          z  }t          ||           }d}t	          |                              |          }|j        d d df         }t          |          dk    sJ t          t          j	        |          dk              sJ d S )	N)r   r4   r4   rN   rN   rO   rO   rc   rd   rd   r4   r4   r  r  r  r   r   r  r7   r  r3   r4   r   r  r   )
r@   rj   r  r#   r   rX   r  r  r   r  )r  r]   r  qt	quantiless        r=   *test_quantile_transformer_sorted_quantilesr    s     	GGG"LMMAaiiAA1j))AK		5	5	5	9	9!	<	<B aaad#Iy>>S    rwy!!Q&'''''''r>   c                      dD ]d} t          |           }t          j        t          d          5  |                    t
          j                   d d d            n# 1 swxY w Y   ed S )N))r3   r  )r  )r7   r  )g      Y@r  )r  r   r  zInvalid quantile range: \(r   )r   rU   rV   rW   rX   rF  rG  )range_r_   s     r=    test_robust_scaler_invalid_ranger    s     
" 
" V444]:-JKKK 	" 	"JJty!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
" 
"s    AA 	#A 	c                    t           j                            d          }|                    dd          }d|d d df<    | |          }t	          |d          }t          j        t          j        |                    rJ t	          |d          }t          j        t          j        |j                            rJ t	          |                                d          }t          ||
                                           t          j        t                    5  t	          |dd	           d d d            n# 1 swxY w Y   t          |                    d
          g dd           t          |                    d
          g d           ||usJ t!          |d          \  }}t          ||                    d
                     t          ||                    d
                     t	          |ddd          }t          |
                                |
                                           d S )Nr   rc   rd   r   r   Frn   r4   )ro   r   r   re  rN   r   Tr  )r@   r   r   rT   r   r   r   rG  r  r'   r9   rU   rV   rW   r   r   r0   )	r  rS   r]   X_csrr   X_csr_scaledX_csc_scaledX_csr_scaled_meanX_csr_scaled_stds	            r=   %test_scale_function_without_centeringr     sa   
)


#
#C		!QAAaaadGM!EQ%(((Hvbhx(()))))%000Lvbh|01122222 %888Lh(<(<(>(>??? 
z	"	" . .eu1----. . . . . . . . . . . . . . . 1???   hlll224M4M4MNNN1*<\1*M*M''/A1F1FGGG.!0D0DEEE %%dKKKLemmoo|/C/C/E/EFFFFFs   D>>EEc                      t           j        } t          | d          }t          t	          j        |d          d           t	          j        |dd          }|d         |d         z
  }t          |d           d S )Nr4   r   r   r  r  rF  rG  r   r'   r@   r  r  r]   rI  r  r  s       r=   test_robust_scale_axis1r$  +  sw    	A11%%%Gbia888!<<<
g222A
A$1+Cc1%%%%%r>   c                     t           j        d d df         } t          |           }t          t	          j        |          d           t	          j        |d          }|d         |d         z
  }t          |d           d S )Nr4   r   r  )r  r"  r#  s       r=   test_robust_scale_1d_arrayr&  4  su    	!!!Q$A1ooGbi00!444
g***A
A$1+Cc1%%%%%r>   c                  \   g dg dg dg} t                      }|                    |           }g dg dg dg}t          ||           |                    |          }t          | |           g dg dg d	g}|                    |          }g d
g dg dg}t          ||d           d S )NrM  rO  rP  rU  )r   r   rS  rV  rQ  rR  rT  )r   rg   r   )rS  r   g_)r   r   gіs)?rO   r   )r   r   r'   r   rv   )r]   r_   rI  r  rJ  rX  rZ  X_expected_news           r=   )test_robust_scaler_zero_variance_featuresr)  =  s   			+++-=-=-=>A^^F""1%%G #""$4$4$46F6F6FGJgz222**733Ka--- ///1A1A1ABE""5))K''')>)>)>@U@U@UVNk>1EEEEEEr>   c                  H   t           j                            d          } |                     dd          }t          j        |t          j        d          dz  t          j        d          dz  g          }d}t          |d	                              |          }|                    |          }|j	        t          j        d
d          k    sJ |j        t          j        dd          k    sJ |                                t          j        dd          k    sJ d S )Nr   r  r4   )r   r4   r   i)r4   c   T)r  unit_variancer   MbP?)r  r  )r@   r   r   rT   vstackrs   r   rX   rv   r  rU   r%  r   r   )rS   r]   X_with_outliersr  robust_scalerrI  s         r=    test_robust_scaler_unit_variancer1  V  s    )


#
#C		'1AiBGH$5$5$;RWX=N=NQU=U VWWON dSSSWW M %%a((G FM!$>$>$>>>>>6=#=#=#=====;;==FM!666666666r>   c                    g dg dg dg dg}t                      }|                    |          }g dg dg dg dg}t          ||           |                    |          }t          ||           g dg d	g dg}|                    |          }g d
g d	g dg}t          ||d           t          |          }t          ||            | |          }	|                    |	          }
g dg dg dg dg}t          |
                                |           |                    |
          }t          ||                                           d S )NrM  )r   rg   333333ӿrT  rU  )r   rg   UUUUUU?)r   rg   gɿ)r   rg   rg   rQ  rR  )r   rf   r4  rN   r   )r   r   r'   r   rv   r   r9   )r   r]   r_   rI  r  rJ  rX  rZ  r(  rf  r|  X_trans_sparse_invs               r=   )test_maxabs_scaler_zero_variance_featuresr6  h  s    
		+++-=-=-=?O?O?OPA^^F""1%%G	J gz222**733Ka--- ///1A1A1ABE""5))K,,,.>.>.>@P@P@PQNk>1EEEE 1ooGgz222  ""H))(33N	J n4466
CCC11.AAa!3!;!;!=!=>>>>>r>   c                      g dg dg dg dg} t                      }|                    |           }g dg dg dg dg}t          ||           d S )	N)r   rg   rN  rS  )r   rg   r3  rD  )r   rg   g      Yr   )r   r   r   g       )r   rg   g{Gzt?rD  )r   rg   g~jthg      п)r   rg   rS  r   )r   r   r   rS  )r   r   r'   )r]   r_   rI  r  s       r=   'test_maxabs_scaler_large_negative_valuer8    s     			A ^^F""1%%G!!!	J gz22222r>   c                     | g dg          }t                      }|                    |          }|                    |          } | g dg          }t          |                                |                                           |                    |          }t          |                                |                                           d S )N)rN  rg   rg   rW  )r   rX   rv   r'   r9   r   )r  r]   r_   rI  r  r   s         r=   (test_maxabs_scaler_transform_one_row_csrr:    s     	'((A^^FZZ]]Fq!!G011Jgoo//1C1C1E1EFFF,,W55Maiikk=+@+@+B+BCCCCCr>   c                     t           t          t          t          fD ]8} t          d          }|                    |                               |           }t          | t                    rt          j	        |           } t          |           dk    rNt          t          j        |                    d                    t          j        t                               n6t          t          j        |                    d                    d           |j        | j        d         k    sJ |                    |          }t          ||            :t          j        d          } t                      }|                    |                               |           }t          t          j        |                    d                    d           |j        | j        d         k    sJ t                                           }t          j        |                                          }t          ||z  t)          |d                     d S )NTr}   r4   r   r   rg   r   )r   r   r   r   rX   rv   r   r   r@   rj   rC   r'   r  r9  rs   r\   r   rB   r   r   r   )r]   r_   r   r   ra  max_abss         r=   test_maxabs_scaler_1dr=    s   fk;7 4 44(((::a==**1--a 	AA!##%bfX\\q\-A-A&B&BBGJDWDWXXXX%bfX\\q\-A-A&B&BCHHH%3333 00::!-3333 	A^^Fzz!}}&&q))HbfX\\q\%9%9::C@@@!QWQZ//// <<>>DfTll  GdWnl4d.K.K.KLLLLLr>   c           
         t           d dd d f         }|j        d         }ddd||dz   fD ];}t                                          |          }t                      }t                      }t                      }t	          ||          D ]i}|                    ||                   } | ||                   }	|                    |	          } | ||                   }
|                    |
          }jt          |j        |j                   t          |j        |j                   t          |j        |j                   |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ t          |j	        |j	                   t          |j	        |j	                   t          |j	        |j	                   t          |
                    |          |
                    |                     t          d|          }t                                          ||                   }t                                          ||                   }t          |j        |j                   |j        |j        k    sJ t          |j	        |j	                   t          |
                    |          |
                    |                     t                                          |          }t                      }t          t	          ||                    D ]D\  }}|                    ||                   }t          ||j        |j        |||j                   E=d S )Nr   r   r4   rN   r   r   r   )r   rB   r   rX   r   r   r'   max_abs_r   r   rv   r  r  rL   r  r  )r  r]   rI   rJ   r	  r
  scaler_incr_csrscaler_incr_cscr  r  X_cscr  rF   s                r=   test_maxabs_scaler_partial_fitrC    sD    	TcT111WA	
A!RAF+ / /
#~~))!,,"nn&..&.. J// 	A 	AE%11!E(;;K!M!E(++E-99%@@O!M!E(++E-99%@@OO!,"79MNNN!,"79QRRR!,"79QRRR+{/JJJJJ+/NNNNN+/NNNNN!,"5{7IJJJ!,"57MNNN!,"57MNNN!,"8"8";";[=R=RST=U=UVVV q*%%#~~))!F)44"nn006;;!,"79MNNN+{/JJJJJ!,"5{7IJJJ!,"8"8";";[=R=RST=U=UVVV $~~))!,,"nn!+a"<"<== 		 		HAu%11!E(;;K!K :%*:    		M/ /r>   c                    | dk    rht          j        |                              d          }t          d          D ]}t	          ||         d           t	          |d         d           d	S | dk    rdt          d          D ]*}t	          t          j        ||                   d           +t	          t          j        |d                   d           d	S | dk    rct          |                              d          }t          d          D ]}t	          ||         d           t	          |d         d           d	S d	S )
zr
    Convenient checking function for `test_normalizer_l1_l2_max` and
    `test_normalizer_l1_l2_max_non_csr`
    r5  r4   r   rO   rg   r   r8  r9  N)r@   r  r$  r   r&   lar7  r9  )r7  X_normrow_sumsrF   row_maxss        r=   check_normalizerrI    sC   
 t||6&>>%%1%--q 	2 	2AS1111HQK-----	q 	9 	9Aq	 2 2C8888BGF1I..44444	v;;???**q 	2 	2AS1111HQK-----	 
r>   r7  r5  r8  r9  c                 $   t           j                            d          }|                    dd          } ||          }d|dd d f<   |j        d         }|j        d         }d|j        ||<    ||          }|||fD ]}t          | d          }	|	                    |          }
|
|usJ t          |
          }
t          | d          }	|	                    |          }||u sJ t          |          }|
|fD ]}t          | |           d S )	Nr   rc   rd   r   rO   Tr7  r~   F)
r@   r   r   rT   indptrrG  r   rv   r9   rI  )r7  r  rS   rx  X_sparse_unprunedindptr_3indptr_4X_sparse_prunedr]   
normalizerX_norm1X_norm2rF  s                r=   test_normalizer_l1_l2_maxrU  !  s^    )


"
"Cii1ooG%g.. GAqqqDM !'*H '*H038H,- $mG,,O (9: + +T555
&&q))a'""T666
&&q))!||||'""( 	+ 	+FT6****	++ +r>   c                 l   t           j                            d          }|                    dd          }d|dd d f<    ||          }t	          | d                              |          }||usJ t          j        |          r|j        dk    sJ t          |          }t          | |           d S )	Nr   rc   rd   r   rO   FrL  csr)r@   r   r   rT   r   rv   r   rp  r  r9   rI  )r7  r   rS   rx  r]   rF  s         r=   !test_normalizer_l1_l2_max_non_csrrX  C  s    
 )


"
"Cii1ooG GAqqqDM!!AT...88;;F?????6""=v}'='='='=V__FT6"""""r>   c           	      >   t           j                            d          }|                    dd          }d|dd d f<   |dt	          |dd d f                                                   fxx         dz  cc<   t          j        |           } | |          }|||fD ]}}t          d	          }|                    |          }||usJ t          |          }t          t          j
        |          t          j
        t          |                               ~d S )
Nr   rc   rd   r   rO   rN   r3   r9  r6  )r@   r   r   rT   r  argmaxr   rv   r9   r(   sign)r  rS   rx  	X_all_negX_all_neg_sparser]   rR  rF  s           r=   test_normalizer_max_signr^  X  s)    )


"
"Cii1ooGGAqqqDM As71aaa4=!!((***+++r1+++ I$}Y//y"23 A AU+++
%%a((Q276??BGGAJJ,?,?@@@@A Ar>   c                    t           j                            d                              dd          }t	          t          |d          t          |j        dd          j                   t           j                            d          }|                    dd	          } | |          }t          j        d          }||fD ]}t           j        t           j	        fD ]}d
D ]}|
                    |          }t          ||          }|j        |k    sJ t          |          }|dk    r)t          j        |                              d          }	n|dz  }
|
                    d          }	t          |	|           t          j        g dg dg dg          }dD ]}t          ||d          \  }}|dk    r%t          |t          j        g d                     B|dk    r%t          |t          j        g d                     mt          |t          j        g d                      | |          }d
D ]E}t#          j        t&                    5  t          ||d           d d d            n# 1 swxY w Y   Ft          |dd          \  }}t          |t          j        g d                     d S )N%   rO   rN   Fr}   r   )r   r~   r7   rd   )r5  r8  r6  r5  r4   r   )r   r   r  )rg   r   r   )rf   r   r   rJ  T)r7  return_norm)      @rg   r   r8  )r   rg   g1C+@)r  rg   r   r9  )r@   r   r   rT   r(   r   r  rs   r   r   r   r   r9   r  r$  r'   rj   rU   rV   NotImplementedError)r  r]   rsrx  rf  rs   r   r7  rF  rG  X_norm_squared_normss                r=   test_normalizerh  m  s    		b!!''1--Ay///13QU1S1S1S1UVVV			q	!	!Bhhr1ooG}W%%H7B==Dx  : :j"*- 	: 	:E$ : :HHUOO"14000|u,,,, 4<<!vf~~11q199HH%+QYN-11q199H)(D9999:	:  hHIIG# H HW4TBBB54<<%eRXooo-F-FGGGGT\\%eRX6L6L6L-M-MNNNN%eRXooo-F-FGGGG}W%%H = =].// 	= 	=hTt<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=4@@@HAueRXooo%>%>?????s   I<<J 	J 	constructorc                    t          j        g dg dg          } | |                                          }t          dd          }t	          |                    |                    }t          j        |dk              dk    sJ t          j        |dk              d	k    sJ |                    |          }t          j        |          t          j        |          k    sJ t          d
          	                    |          }t	          |                    |                    }||usJ t          j        |dk              d	k    sJ t          j        |dk              dk    sJ t          d
          }|                    |          }||usJ t	          |          }t          j        |dk              d	k    sJ t          j        |dk              dk    sJ t          d
          }|                    |          }| t          ur||u sJ t          d
          }t          j        g dg dgt           j                  }|                    |          }| t          ur||u sJ t	          |          }t          j        |dk              d	k    sJ t          j        |dk              dk    sJ t          dd          }| t           j        t          fv r | |                                          }t	          |                    |                    }t          j        |dk              dk    sJ t          j        |dk              dk    sJ |                    |          }| t          v rRt          j        t                    5  |                     | |                     d d d            d S # 1 swxY w Y   d S d S )N)r4   r   rd   )rN   rO   r3   rf   T)	thresholdr~   r   rc   r4   rN   r}   Fr   rD  rd   )r@   rj   r~   r   r9   rv   r$  r   rp  rX   r   r   r-   rU   rV   rW   )ri  X_r]   	binarizerX_binX_floats         r=   test_binarizerrp    s	    
999jjj)	*	*BBGGIIACd333II''**++E6%1*""""6%1*""""""E?1!7!77777t$$$((++II''**++E>>>>6%1*""""6%1*""""t$$$I""E>>>>ENNE6%1*""""6%1*""""u%%%I""E$zzzzu%%%Ih			:::.bjAAAG((E$ENNE6%1*""""6%1*""""Dt444Irx&&&K		""	++A..//veqj!!Q&&&&veqj!!Q&&&&##A&& n$$]:&& 	0 	0A///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 %$s   OO	Oc                     t           j                            d          } |                     d          }t	          d          }|                    |           |                    |          }t          j        ||j                  }t                      }t          j        ||j                  }|
                    |          }t          ||           |                     d          }t          j        ||j                  }	|                    |          }
t          j        |
|j                  }|                    |	          }t          ||           t          j        |          |j        d         z  }|||z  z
  ||z  z
  ||z  |z  z   }t          ||           t          j        |	          |j        d         z  }|	||z  z
  |	|z  z
  ||z  |z  z   }t          ||           d S )Nr   rd   rc   Fr   )rN   rc   )r@   r   r   random_sampler   rX   rv   dotr  r   r   r'   	ones_likerB   r$   )rS   X_fitr_   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                    r=   test_center_kernelr    s    )


"
"Cf%%EU+++F
JJu%%e,,NF5%'""E HVNN,<==N,,U33Ono>>> v&&FVFEG$$F&&v..Of_n.>??O))&11o/?@@@ \%  5;q>1Ffun,uv~=QW@WWONO444 <''%+a.8L%%7,:NQW:WW  O%566666r>   c                     t           j                            d          } |                     dd          |                     dd          }}d } ||          } ||          }t	          d          }|                    |          }|                    |          }||j        z  }	||j        z  }
||j        z  }||j        z  }t                      }|	                    |	           t          |                    |	          |           t          |                    |
          |           t          j        |	          |	j        d         z  }|	||	z  z
  |	|z  z
  ||	z  |z  z   }t          |                    |	          |           t          j        |
          |	j        d         z  }|
||	z  z
  |
|z  z
  ||	z  |z  z   }t          |                    |
          |           dS )	z-Check kernel centering for non-linear kernel.r   r   r   r  c                     t          j        t          j        | dd          t          j        | dd           g          S )zOur mapping function phi.r   N)a_mina_max)r@   r.  r4  r  s    r=   phiz2test_kernelcenterer_non_linear_kernel.<locals>.phi  sF    y$///$a0000
 
 	
r>   Fr   N)r@   r   r   rT   r   r   rv   r  r   rX   r$   ru  rB   )rS   r]   ry   r  phi_X
phi_X_testr_   phi_X_centerphi_X_test_centerKK_testK_centerK_test_centerkernel_centererr  
K_centeredr  K_test_centereds                     r=   %test_kernelcenterer_non_linear_kernelr     s   
)


"
"C		#r""CIIb"$5$5vA
 
 
 CFFEVJ U+++F''..L((44 	A%'!Fln,H%6M$&&OO--a00(;;;O--f55}EEE \!__qwqz)FVaZ!f*,vzF/BBJO--a00*=== <''!'!*4L!!FVO3lQ6F6OO  O--f55GGGGGr>   c                     t          j        g dg dg dg dg          } t          j        d          }|                     | j                  }t                      }t          d|fdt                      fg          }|                                j	        j
        sJ t          |||d	          }t          ||           d S )
N)rO   r   r   )r   rO   r   )r   r   rO   r  )rc   r  svrrN   )cv)r@   rj   rs   rt  r  r   r
   r   __sklearn_tags__
input_tagspairwiser	   r'   )r]   y_truer  kcentpipeliney_preds         r=   test_cv_pipeline_precomputedr  6  s     	)))YYY			999=>>AWT]]F	ac

AE+U3eSUU^DEEH $$&&1::::
 xFq999Fff-----r>   c                  `   t           j                            d          } |                     d          }t	                      t                      t                      fD ]O}|                    |                              |          }|	                    |          }t          ||           Pd S )Nr   rr  )r@   r   r   rs  r   r   r   rX   rv   r   r(   )rS   r]   objX_transformedX_transformed2s        r=   test_fit_transformr  J  s    
)


"
"C&!!A  *,,	< : :

,,Q//**1--=.9999: :r>   c                  l    ddgddgddgg} t          |           } t          | g dg dg dg           d S Nr4   r   )r4   r4   r   rh   )r   r(   r  s    r=   test_add_dummy_featurer  S  sP    
Q!Q!Q A!Aq999iii;<<<<<r>   c                     | ddgddgddgg          }|j         }t          |          }t          j        |          r|j         |k    s
J |            t	          |                                g dg dg dg           d S r  )r  r   r   rp  r(   r9   )r   r]   desired_formats      r=   test_add_dummy_feature_sparser  Y  s     	1a&1a&1a&122AXN!A?1?!(n"<"<"<a"<"<"<qyy{{YYY			999$EFFFFFr>   c                      t           j        } | d d d df         }t          dd          t                      t	                      g}|D ],}|                    |            |                    |           -d S )NrN   Fr   )rF  rG  r   r   r   r   )r]   r   scalersr_   s       r=   test_fit_cold_startr  d  s    	AQQQU8D 	777G  # #Q 	T""""	# #r>   methodbox-coxyeo-johnsonc                 r   t          |           }t          j        t                    }t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr  )	r   r@   r  r   rU   rV   r   rv   r   )r  ptr]   s      r=    test_power_transformer_notfittedr  v  s   		(	(	(B
vA	~	&	&  
Q              	~	&	&    
Q                                   s$   A%%A),A)	B,,B03B0standardizec                     | dk    rt          j        |          n|}t          | |          }|                    |          }t	          ||                    |                     d S )Nr  r  r  )r@   r  r   r   r&   r   )r  r  r]   r  rI  s        r=   test_power_transformer_inverser    sh     y((q			aA	[	A	A	ABq!!G2//8899999r>   c                     t          j        t                    } dD ]A}t          d|          }|                    |           }t          | d|          }t          j        |                                           \  }}|rt          |          }t          |                    dd          |           t          |                    dd          |           t          | |                    |                     t          ||j        d                    t          |j                  | j        d         k    sJ t!          |j        t           j                  sJ Cd S )NTFr  r  r3   r4   r   )r@   r  r   r   r   r   r   boxcoxflattenr   r&   r  r   lambdas_r  rB   r   r  )r]   r  r  rI  X_trans_funcr  lambda_expecteds          r=   test_power_transformer_1dr    sD   
vA$ 3 3YKHHH""1%%&qTTT&+l199;;&?&?#
O 	+z**JJ..r155w???J..r155|DDDAr33G<<===OR[^<<<2;171:----"+rz222222%3 3r>   c                     t          j        t                    } dD ]C}t          d|          }|                    |           }t          | d|          }||fD ]}t          |j        d                   D ]{}t          j	        | d d |f         
                                          \  }}|rt          |          }t          |d d |f         |           t          ||j        |                    ||                    |          }	t          |	|            t!          |j                  | j        d         k    sJ t#          |j        t           j                  sJ Ed S )Nr  r  r  r4   )r@   r  r   r   r   r   r   rB   r   r  r  r   r&   r  r   r'   r  r   r  )
r]   r  r  X_trans_classr  rI  jr  lmbdaX_invs
             r=   test_power_transformer_2dr    sm   
tA$ 3 3YKHHH((++&qTTT%|4 	0 	0G7=+,, ; ;$)L111a41B1B$C$C!
E 3!&z!2!2J#GAAAqDM:>>>#E2;q>:::: ((11E%eQ////2;171:----"+rz222222+3 3r>   c                     t          d          } |                     t          j        t                               t          }d}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     t          j
        t          j                             d d d            n# 1 swxY w Y   t          j        t          |          5  |                     t          j
        t          j                             d d d            n# 1 swxY w Y   t          j        t          |          5  t          t          j
        t          j                  d           d d d            d S # 1 swxY w Y   d S )Nr  r  zstrictly positiver   )r   rX   r@   r  r   rU   rV   rW   rv   r   r   rB   )r  X_with_negativesnot_positive_messages      r=   9test_power_transformer_boxcox_strictly_positive_exceptionr    s~    
	+	+	+BFF26$<<.	z)=	>	>	> ' '
%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
z)=	>	>	> ! !
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z)=	>	>	> < <(;;;;< < < < < < < < < < < < < < < 
z)=	>	>	> + +
RXdj))***+ + + + + + + + + + + + + + + 
z)=	>	>	> % %
rx
##$$$% % % % % % % % % % % % % % % 
z)=	>	>	> @ @,,Y????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @sl   !BB
B)CCC1DDD52E33E7:E72GGG=.H88H<?H<c                 (    t          | d           d S )Nr  r  )r   r  s    r=   +test_power_transformer_yeojohnson_any_inputr    s     Am,,,,,,r>   c                    t          |           }t          j        t                    }|                    |           d}t          j        t          |          5  |                    |d d ddf                    d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    |d d ddf                    d d d            d S # 1 swxY w Y   d S )Nr  zBX has \d+ features, but PowerTransformer is expecting \d+ featuresr   r   r4   )
r   r@   r  r   rX   rU   rV   rW   rv   r   )r  r  r]   wrong_shape_messages       r=   &test_power_transformer_shape_exceptionr    sh   		(	(	(B
tAFF1III
 	R  
z)<	=	=	=    
Qqqq!A#vY                              
z)<	=	=	= ( (
Qqqq!A#vY'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s$   "B

BB0"CC#&C#c                     t          dd          } t          j        t                    d d ddf         }t          j        dg          | _        |                     |          }t          |                     |          |           d S )Nr  Fr  r   r4   )	r   r@   r  r   rj   r  rv   r'   r   r  r]   rI  s      r=   "test_power_transformer_lambda_zeror    sx    		>	>	>B
tQQQ!VA (A3--BKll1ooGb227;;Q?????r>   c                      t          dd          } t          j        t                    d d ddf         }t          j        dg          | _        |                     |          }t          ||           d S )Nr  Fr  r   r4   )r   r@   r  r   rj   r  rv   r'   r  s      r=   !test_power_transformer_lambda_oner    sh    	E	B	B	BB
tQQQ!VA(A3--BKll1ooGgq)))))r>   zmethod, lmbda))r  r  )r  rN  )r  r  )r  rN  )r  rg   c                 b   t           j                            d          }d}|                    dd|df          }| dk    rt          j        |d|z  dz   d           }t          | d	          }|g|_        |                    |          }t          | d	          }|                    |          }t          dt           j
                            ||z
            |z  d
           t          d|                                d           t          d|                                d           d S )Nr   i N  r4   )locr   r6   r  r3   r   Fr  rN   r   )r@   r   r   r  r4  r   r  r   r   r&   linalgr7  r   r   )r  r  rS   r[   r]   r  r  X_inv_transs           r=   #test_optimization_power_transformerr  	  s(   " )


"
"CI

qA
77A GArEzD($//	U	;	;	;B'BK  ##E	U	;	;	;B""5))K29>>!k/::YFPQRRRR;++--q9999;??,,a888888r>   c                      t          dd          } dg| _        |                     dgg          }t          j        |          sJ d S )Nr  Fr  rN  g )r   r  r   r@   r   )r  r  s     r=   test_invserse_box_coxr  .	  sN    		>	>	>B%BK  4&**E8E??r>   c                      g d} t          j        |                               dd          } t          d                              |           j        }t          j        |dd          sJ d S )	N)gffffff@g rg   rf   gffffff?g333333@rq   gffffff@g?g@rb  r   g"@g      @g      r3   r4   r  r  gzG?r-  r   )r@   rj   r  r   rX   r  allclose)r]   r  s     r=   test_yeo_johnson_darwin_exampler  6	  sq     	VUUA
B""AM22266q99BE;ue$////////r>   c                    t          j        t                    }t          |           }|                    |           |j        d         }t          j        |t          j        |t           j                  g          }t          |d          }|                    |           |j        d         }t          ||d           |                    |          }t          t          j        |          t          j        |                     d S )Nr  r   )r  rd   r   )r@   r  r   r   rX   r  concatenate	full_likero  r    r&   rv   r(   r   )r  r]   r  lmbda_no_nans
lmbda_nansrI  s         r=   test_power_transformer_nansr  ?	  s    
 	vA		(	(	(BFF1IIIKNM 	2<2622344A"""AFF1IIIQJz1====ll1ooGrx(("(1++66666r>   c                     t           }| dk    rt          j        |          }t          | |          }t	          |                    |                              |          |                    |                     d S )Nr  )r  )r   r@   r  r   r'   rX   rv   r   )r  r  r]   r  s       r=   $test_power_transformer_fit_transformr  V	  so     	AF1II	&k	:	:	:BbffQii11!44b6F6Fq6I6IJJJJJr>   c                    t           }| dk    rt          j        |          }|                                }||usJ t	          ||           t          | |d          }|                    |           t	          ||           |                    |          }||usJ |                    |          }t	          ||           ||usJ |	                    |          }||usJ d S )Nr  Tr  r~   
r   r@   r  r~   r'   r   rX   rv   r   r   r  r  r]   
X_originalr  rI  r  s          r=    test_power_transformer_copy_Truer  b	  s    
 	AF1IIJJa,,,	&k	E	E	EBFF1IIIa,,,ll1ooG!q!!Ga,,,!&&w//K+%%%%%%r>   c                    t           }| dk    rt          j        |          }|                                }||usJ t	          ||           t          | |d          }|                    |           t	          ||           |                    |          }||u sJ | dk    rt          j        |          }|                    |          }||u sJ |	                    |          }||u sJ d S )Nr  Fr  r  r  s          r=   !test_power_transformer_copy_Falser  ~	  s    
 	AF1IIJJa,,,	&k	F	F	FBFF1IIIa,,,ll1ooGa<<<<F1IIq!!Ga<<<<&&w//Kk!!!!!!r>   c                     t                               d          } t          j        | dddf<   d}t	          d          }t          j        t          |          5  |                    |            ddd           dS # 1 swxY w Y   dS )zqCheck that box-cox raises informative when a column contains all nans.

    Non-regression test for gh-26303
    r  Nr   zColumn must not be all nan.r  r  r   )	rS   rs  r@   ro  r   rU   rV   rW   r   )r]   r  r  s      r=   1test_power_transformer_box_cox_raise_all_nans_colr  	  s    
 	&!!AfAaaadG+G		+	+	+B	z	1	1	1  
                 s   A>>BBr  皙?)r  r  c                 `    g | ]+} |t          j        d t           j                            ,S ))r7   r4   )r   )r@   r   ro  )r   r  s     r=   r   r   	  sC        	bgg"&999::  r>   c                     t          j        ddd          }t          d          }|                    |                              |            t          j        |j        d                   sJ d S )Nrd   r4   r  r  Frn   r   )r   r   r   rX   r   r@   r   ru   )r  r  r_   s      r=   7test_standard_scaler_sparse_partial_fit_finite_variancer  	  sj     -1c
*
*
*Ce,,,F
JJsOO$$$;v{1~&&&&&&&r>   rC  )r   r4   )r  r7   c                    t           j        }t          | d                              |          }t	          j        |d          t	          j        |d          }}t          j        |d d         dz
  |dd          dz   f         g}|                    |          }t          || d         | d         | d         | d         gg           d S )NT)rC  r4  r   r   rN   r7   r4   )
rF  rG  r   rX   r@   rH  r9  r_rv   r$   )rC  r]   r_   X_minX_maxry   r  s          r=   test_minmax_scaler_clipr  	  s     		ADAAAEEaHHF6!!$$$bfQQ&7&7&75EeE"1"INE!""IN234F$$V,,M

M!,mA.>a@P	QR    r>   c                     t                                          t                    } d}t          j        t
          |          5  |                     t          dddf                    ddd           dS # 1 swxY w Y   dS )zCheck that `inverse_transform` from `StandardScaler` raises an error
    with 1D array.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/19518
    z'Expected 2D array, got 1D array insteadr   Nr   )r   rX   r   rU   rV   rW   r   )r_   r  s     r=   -test_standard_scaler_raise_error_for_1d_inputr  	  s     !!$''F7G	z	1	1	1 - -  aaad,,,- - - - - - - - - - - - - - - - - -s   %A66A:=A:c                     dt          j        g ddz  g dz   t           j                                      dd          z  } t	                      }t          j                    5  t          j        dt                     |	                    |           }d	d	d	           n# 1 swxY w Y   t          j
        t          j        |                    rJ |                                t          j        d
          k    sJ |                                t          j        d          k    sJ |                                dk    sJ |                                dk     sJ d	S )a  Check that significantly non-Gaussian data before transforms correctly.

    For some explored lambdas, the transformed data may be constant and will
    be rejected. Non-regression test for
    https://github.com/scikit-learn/scikit-learn/issues/14959
    r  )rE  rf   r   r  rc   )r     r        r  U   r  r   r3   r4   r   Nr   rg   r  rN   )r@   rj   r   r  r   r   r   r   RuntimeWarningr   r   r   r   rU   r%  r   rH  r9  )X_non_gaussianr  rI  s      r=   1test_power_transformer_significantly_non_gaussianr  	  s    28q #C#C#CC2:  gb!nnN 
		B		 	"	" 3 3g~666"">223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 vbhw''(((((<<>>V]3//////;;==FM#......;;==2;;==1s   #0BB#&B#Transformerc                      |                                  t          j                  }|                    t          j                  }t          |t          j                   dS )9Check one-to-one transformers give correct feature names.N)rX   rF  rG  get_feature_names_outfeature_namesr(   )r  tr	names_outs      r=   test_one_to_one_featuresr  	  sN     
		49	%	%B(();<<Iy$"455555r>   c                 d   t          j        d          }|                    t          j        t          j                  } |                                 |          }|                                }t          |t          j                   |                    t          j                  }t          |t          j                   t          j
        d          }t          j        t          |          5  t          d          }|                    |           ddd           dS # 1 swxY w Y   dS )r  pandas)columnsz0input_features is not equal to feature_names_in_r   abcdN)rU   importorskip	DataFramerF  rG  r
  rX   r	  r(   reescaperV   rW   r   )r  pddfr  names_out_df_defaultnames_out_df_valid_inmsginvalid_namess           r=   test_one_to_one_features_pandasr   
  s@    
	X	&	&B	di);	<	<B			2		B3355+T-?@@@44T5GHH,d.@AAA
)F
G
GC	z	-	-	- 0 0V
  ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   3%D%%D),D)c                  ^   t           j                            d          } |                     d          }t	          |          }t                                          |          }|                                }|j        d         }t          |d t          |          D                        dS )z.Test that kernel centerer `feature_names_out`.r   )re   rc   r4   c                     g | ]}d | S )kernelcentererrE   r   s     r=   r   z:test_kernel_centerer_feature_names_out.<locals>.<listcomp>*
  s!    "U"U"UA#7A#7#7"U"U"Ur>   N)r@   r   r   rs  r   r   rX   r	  rB   r(   r   )rS   r]   
X_pairwisery  r  samples_out2s         r=   &test_kernel_centerer_feature_names_outr"   
  s     )


"
"C&!!Aq!!J##J//H..00I#A&Ly"U"U|ATAT"U"U"UVVVVVr>   c                 ^   g dg dg dg}t          d|                               |          }t          |j        g d           |                    |          }|                    |          }||fD ]7}| r#t          |t          j        |                     't          ||           8dS )z>Check that PowerTransfomer leaves constant features unchanged.)r  r   rN   r  r  r  N)r   rX   r$   r  r   rv   r@   r   )r  r]   r  XftXtXt_s         r=   'test_power_transformer_constant_featurer'  -
  s     
ZZZ,A	K	H	H	H	L	LQ	O	OBBK+++


1

C	aBRy $ $ 	$Cq!1!12222C####	$ $r>   )r  r   numpyr@   numpy.linalgr  rE  rU   scipyr   r   sklearnr   sklearn.baser   sklearn.exceptionsr   sklearn.metrics.pairwiser   sklearn.model_selectionr	   sklearn.pipeliner
   sklearn.preprocessingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.preprocessing._datar   r   sklearn.svmr   sklearn.utilsr   r    sklearn.utils._array_apir!   -sklearn.utils._test_common.instance_generatorr"   sklearn.utils._testingr#   r$   r%   r&   r'   r(   r)   r*   sklearn.utils.estimator_checksr+   sklearn.utils.fixesr,   r-   r.   r/   sklearn.utils.sparsefuncsr0   	load_irisrF  r   r   rS   r\   r[   r   r  r   rT   r   r  r   r   tolistr   X_list_1colr9   rC   rL   ra   markparametrizerj   ro  rz   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r-  r0  r?  rK  r]  r_  rc  rl  rr  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)  r1  r6  r8  r:  r=  rC  rI  rU  rX  r^  rh  r   rp  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rB   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r'  rE   r>   r=   <module>r@     s   
			                                 - - - - - - 2 2 2 2 2 2 5 5 5 5 5 5 % % % % % %                                     & Q P P P P P P P       . . . . . . . .      S R R R R R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 9 8 8 8 8 8x 	iA
	
++b!*+
-
-	Q	,	,
yyJ''&07:	ad		Az	*	*	aaad		Iq	)	)mmoommoo  " " "M M M@ @ @$    
))YYY	)))YYY			!BS#JOYY			"YY			999iii8BHaV	
 ^bfbfa01BFA###	 BHaV		
 * ,.S.S.STTN N UT+ ,N,"0 "0 "0J +dVn-D~-UVV,udm<<1 1 =< WV1: '''E***  +dVn-D~-UVV,udm<<2:rz":;;___554 4 65 <; =< WV 4D &7&7&788$4$4$4552:rz":;;+dVn-D~-UVV/S /S WV <; 65 98/Sd	I 	I 	I #> #> #>L1 1 1hA A A23 3 3- - -`0K 0K 0Kf +^n-LMM+A +A NM+A\ 4,77+^n-LMM6 6 NM 876 4,77& & 87&R     0 )+T+T+V+V  %&    
 $


 	!   R R   *R  @7 7 7>: : :# # #L 4,77+^n-LMM87 87 NM 8787v tUm44dE]33+dVn-D~-UVVI I WV 43 54I @ @ @ +^n-LMMN N NMN2 +^n-LMM57 57 NM57p +^n-LMMD D NMD  +^n-LMM7 7 NM7*     )D%=99$77ryr155{v{2qRU7V7V7VWXX% % YX 87 :9%$ .99D D :9D
: 
: 
: $:$:$:;;*,S,S,STT? ? UT <;?( .99E E :9E	& 	& 	&	* 	* 	* .99O O :9O( .9962 62 :962r .99> > :9>B. . .@,= ,= ,=^
H 
H 
H .99#B #B :9#BL8 8 8 .99" " :9"J= = =	= 	= 	= ':;;( ( <;(&" " " .99!G !G :9!GH& & && & &F F F27 7 7$ +^n-LMM&? &? NM&?R3 3 3( .99	D 	D :9	DM M M@ .995 5 :95p. . .* !4!4!455.99+ + :9 65+@ !4!4!4557.H # #  65#" .99A A :9A( .99*@ *@ :9*@Z BHd#n4~E 30 30 30l)7 )7 )7X3H 3H 3Hl. . .(: : := = = 7.H G G G# # #$ I}#=>>    ?>  I}#=>>u66vtn--: : .- 76 ?>:3 3 303 3 36@ @ @8 tVRVD\\FBF4LL=("(4:BVBVWXX- - YX-
 I}#=>>( ( ?>($@ @ @* * *   	 	9 9	 	98  0 0 0 I}#=>>7 7 ?>7, I}#=>>u66K K 76 ?>K I}#=>>u66& & 76 ?>&4 I}#=>>u66" " 76 ?>"8   	V]2q#A6667 +   ' ' ' 69*=>>
 
 ?>
	- 	- 	-  0 
 
6 6
 
6 	 0 0 0&
W 
W 
W u66$ $ 76$ $ $r>   