
    *YHhր                    F   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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l0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlEmFZF d dlGmHZHmIZImJZJmKZKmLZL d dlMmNZN  ej                         ZPej                  j                  d       ZSdZTdZUeSj                  ddeT      ZWeSj                  ddeT      ZXeSj                  eUeT      eXz  eWz   ZZeZd ddf   j                  deT      Z\eZddd f   j                  eUd      Z]e\j                         Z_e]j                         Z`d Zad Zbd Zcd Zdej                  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                  j                  d&g d'      d(               Zid) Zjej                  j                  d*dgeIz   eJz         ej                  j                  d+d,d-g      d.               Zkej                  j                  d/ e$d,0       e#d,1      g      ej                  j                  d*dgeIz   eJz         ej                  j                  d+d,d-g      ej                  j                  d2ej                  ej                  g      ej                  j                  d3g d4      d5                                    Znej                  j                  d6g d7      ej                  j                  d8g d9      ej                  j                  d2ej                  ej                  g      ej                  j                  d*dgeIz   eJz         d:                             Zod; ZpeDd<        Zqd= Zrd> Zsd? Ztd@ ZudA Zvej                  j                  d*eIeJz         dB        Zwej                  j                  dCd-dg      ej                  j                  d*eIeJz         dD               Zxej                  j                  dCd-dg      dE        ZydF Zzej                  j                  dG e8       e7H      ej                  j                  dIeFge:H      ej                  j                  dJ e        e        ed-K       e        e dLM       e dNM       e dOM       e       ge:H      dP                      Z{dQ Z|dR Z}dS Z~dT Zej                  j                  dCd-dg      ej                  j                  d*eIeJz         dU               Zej                  j                  dVd-d,g      ej                  j                  dWd-d,g      ej                  j                  d*dgeIz   eJz         dX                      ZdY Zej                  j                  d*eIeJz         dZ        Zej                  j                  d*eIeJz         d[        Zej                  j                  d*eJeIz         d\        Zej                  j                  d*eJeIz         d]        Zd^ Zd_ Zej                  j                  d`d-d,g      ej                  j                  dad-d,g      ej                  j                  dbej                  j                  dd%       e	j                  dd%dcd      g      de                      Zej                  j                  dfeJ      dg        Zdh Zej                  j                  dig dj      ej                  j                  dkg dl      dm               Zej                  j                  dfeJ      dn        Zdo Zdp Zej                  j                  dqeI      dr        Zej                  j                  dqeI      ds        Zej                  j                  dqeI      dt        Zdu Zdv Zdw Zej                  j                  dqeI      dx        Zdy Zej                  j                  dqeI      dz        Zd{ Zd| Zej                  j                  d}d~dg      d        Zd Zej                  j                  dfeJ      d        Zd Zd Zd Zd Zej                  j                  d*eIeJz         d        Zd Zej                  j                  dfeJ      d        Zd Zej                  j                  dfeJ      d        Zd Zej                  j                  dg d      ej                  j                  dfeJ      d               Zej                  j                  dg d      ej                  j                  d*eHeIz   eKz         d               Zej                  j                  dfeJ      d        Zej                  j                  dfeJ      d        Zej                  j                  dej                  egeIz   eJz         d        Zej                  j                  dG e8             d        Zd Zd Zd Zd Zd Zej                  j                  d*eHeIz   eJz         d        Zd Zej                  j                  dddg      d        Zej                  j                  dddg      ej                  j                  dd-d,g      ej                  j                  dbe]eZg      d                      Zd Zd Zd Zej                  j                  dbeZ ejx                  eZ       ejx                  eZ        ejz                  eZj|                        g      d        Zej                  j                  dddg      d        Zd Zd Zej                  j                  dg d      d        Zd Zd Zej                  j                  dddg      d        Zej                  j                  dddg      ej                  j                  dd-d,g      d               Zej                  j                  dddg      ej                  j                  dd-d,g      d               Zej                  j                  dddg      ej                  j                  dd-d,g      d               Zd Zej                  j                  d e	j                  dddd       geJD  cg c]'  }  |  ej                  dej                              ) c} z         d        Zej                  j                  dddg      d        Zd Zd Zej                  j                  deee#e$e"e!g      d        Zej                  j                  deee#e$e"e!e eg      d        ZdÄ Zej                  j                  dd-d,g      dĄ        Zej                  j                  eL edū      k  dƬǫ      dȄ        ZdɄ Zyc c} w )    N)sparsestats)config_contextdatasets)clone)NotFittedError)parse)linear_kernel)cross_val_predict)Pipeline)	BinarizerKernelCentererMaxAbsScalerMinMaxScaler
NormalizerPowerTransformerQuantileTransformerRobustScalerStandardScaleradd_dummy_featuremaxabs_scaleminmax_scale	normalizepower_transformquantile_transformrobust_scalescale)BOUNDS_THRESHOLD_handle_zeros_in_scale)SVR)gen_batchesshuffle)_convert_to_numpy_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)_get_check_estimator_ids)	_array_api_for_tests_convert_containerassert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equalassert_array_lessskip_if_32bit) check_array_api_input_and_values)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERS
sp_version)mean_variance_axis        size
   c                 >    t        | d      r| j                         } | S )Ntoarray)hasattrr?   as    ^/var/www/html/planif/env/lib/python3.12/site-packages/sklearn/preprocessing/tests/test_data.pyr?   r?   U   s    q)IIKH    c                 F    t        j                  |       j                  d   S )Nr   )npasarrayshaperA   s    rC   _check_dim_1axisrI   [   s    ::a=q!!rD   c                 J    ||k7  r| dz   |z  |k(  sJ y | |z  ||z
  z   |k(  sJ y )Nr:    )ibatch_start
batch_stopn
chunk_sizen_samples_seens         rC   assert_correct_incrrR   _   s<    QA#~555:~k!9:nLLLrD   c                  \   ddg} ddg}t        | |      D ]  \  }}t        j                  ||      }t        j                  |      }t               }t        j                  |d      dz  }t	        j
                  t              5  |j                  |||       d d d         y # 1 sw Y   xY w)N      r:   sample_weight)ziprngrandnr   pytestraises
ValueErrorfit)
n_samplessn_featuress	n_samples
n_featuresXyscalersample_weight_notOKs           rC   9test_raises_value_error_if_sample_weights_greater_than_1drg   f   s     QJa&K!$Z!= 	@	:IIi,IIi ! "ii	15:]]:& 	@JJq!+>J?	@ 	@	@	@ 	@s   B""B+	)Xwrc   rW   )r:   rT   rU   )                @      ?r:   r   r:   )r   r   r:   rU   array_constructor)array
sparse_csr
sparse_cscc                 @   |j                  d       }t        ||      }t        | |      } t        j                  | j                  d         }t        |      }|j                  | ||       t        j                  |j                  d         }t        |      }|j                  ||       g dg dg}	t        |j                  |j                         t        |j                  |j                         t        |j                  |	      |j                  |	             y )Nr   r   	with_meanrV   )      ?      @      @)rx   g      @g      @)
startswithr(   rF   onesrH   r   r^   r+   mean_var_	transform)
rh   rc   rW   ro   ru   ywscaler_wrd   re   X_tests
             rC   "test_standard_scaler_sample_weightr   x   s    . &00::I1/0A	B 1	2B 
!	B	2HLLR}L5 	
Ai0F
JJq!/Fhnn5X]]3((0(2D2DV2LMrD   c                     t         t        t        t        fD ]  } t               }|j	                  |       j                  | d      }t        | t              rt        j                  |       } t        |       dk(  rt        |j                  | j                                t        |j                  t        j                  t                      t#        |j%                  d      t        j&                  t                      t#        |j)                  d      t        j&                  t                      nt        |j                  | j%                                t        |j                  | j)                                t#        |j%                  d      t        j&                  t                      t#        |j%                  d      d       t#        |j)                  d      d       |j*                  | j,                  d   k(  sJ |j/                  |      }t#        ||         t        j                  d      } t               }|j	                  |       j                  | d      }t        |j                  d       t        |j                  d       t#        |j%                  d      d       t#        |j)                  d      d       |j*                  | j,                  d   k(  sJ y 	NTcopyr:   r   axis        rm   rj   r:   )X_1rowX_1colX_list_1rowr   r^   r}   
isinstancelistrF   rp   rI   r+   r{   ravelscale_rz   rb   r,   mean
zeros_likestdn_samples_seen_rH   inverse_transform)rc   re   X_scaledX_scaled_backs       rC   test_standard_scaler_1dr      s   fk;7 4!::a=**14*8aAA!#aggi8rwwz/BC%hmmm&;R]]:=VW%hlll&:BMM*<UVaffh7quuw7%hmmm&;R]]:=VW%hmmm&;SA%hlll&:C@%%333 00:!-3-42 	AFzz!}&&qt&4Hc*s+hmmm3S9hlll2C8!!QWWQZ///rD   sparse_containeradd_sample_weightFTc                    t         j                  j                  d      }d}d}| rt        j                  |      }nd }d}|!t         j                  t         j
                  g}n/t         j                  t         j
                  t         j                  g}|D ]  }|j                  ||      j                  |      }	|
 ||	      }	d}t        |      }
|
j                  |	|      j                  |	      }|	j                  |j                  k(  sJ |
j                  j                  t         j                  k(  sJ |
j                  j                  t         j                  k(  rJ  y )Nr   r=   rU   TFrt   rV   )rF   randomRandomStaterz   float64float32float16rZ   astyper   r^   r}   dtyper{   r   )r   r   rY   ra   rb   rW   ru   supported_dtyper   rc   re   r   s               rC   test_standard_scaler_dtyper      s#    ))


"CIJ	*I# ::rzz2::rzz2::>  
1IIi,33E:' #AI)4::a}:=GGJww(..(((||!!RZZ///}}""bjj000
1rD   re   rt   with_centeringr   constant)r   rm         Y@c                 8   t        | t              r.|r,t        j                  | j                  j
                   d       t        j                  j                  d      }d}d}|r t        |j                  |      dz        }ni }t        j                  ||f||      }	||	n ||	      }
 | j                  |
fi |j                  |
      }t        | t              r8t        | j                   t        j"                  |
j$                  d         d	
       t        | j&                  t        j(                  |
j$                  d                ||
usJ t+        ||
       t        | t              r-|s*t-        |
| j.                        }||
usJ t+        ||
       y y y )Nz# does not yet support sample_weightr   d   r:   r;   rT   rV   )rH   
fill_valuer   Hz>atolrt   )r   r   r[   skip	__class____name__rF   r   r   dictuniformfullr^   r}   r   r)   r|   zerosrH   r   rz   r*   r   ru   )re   r   r   r   r   rY   ra   rb   
fit_paramsX_arrayrc   r   
X_scaled_2s                rC   &test_standard_scaler_constant_featuresr      s`    &,',=v''0011TUV
))


"CIJ(Ca(GH

ggY
3PUVG#+1A'1JAvzz!*z*44Q7H&.)RXXaggaj%9E FMM2771771:#671 1-&.)2C1(8(89
"""$Z3	 3D)rD   ra   )r=   r   i'  average)g|=r:   g    _Bc                 .   d\  }}t        j                  t        ||dz         D cg c]  }d|z  	 c}|      }|j                  d   }t        j                  | |f|      }	||z   |	d | dz  d d f<   ||z
  |	| dz  d d d f<   ||	n ||	      }
t        d      j                  |
      }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k7  }t        |j                  t        j                  |         d       t        |j                  t        j                  |         d       t        j                   |dz  |kD  |      }t        |j                  |   t        j"                  |j                        |          y c c}w )N)i   r:   r=   r   r   rT   Frt   rm   r9   )rF   rp   rangerH   emptyr   r^   finfor   epsanyallr|   r)   r   logical_notlogical_andsqrt)ra   r   r   r   	scale_min	scale_maxrL   scalesrb   rc   r   re   r   boundswithin_boundsrepresentable_diffcommon_masks                    rC   +test_standard_scaler_near_constant_featuresr     s    #IyXXeIy1}&EFr1uFeTFaJ
)Z(6A$v-A	Q$v-Ai1n#+a1A!1DGe,009F ((2::

"
"C _vqy(9a<#q&+@7A:+MMFAI'M 66-    v{{=)VM-BBCCCFMM-0#6 1a41RU8+q0FKK/A BCQGFMM"..1C"DEqI
 ..V!35GHKFMM+.0D[0QRQ Gs   Hc                      g d} t        j                  |       }| |fD ]Y  }t        |      }t        |j	                         d       t        |j                         d       t        t        |dd      |       [ y )N)rm         @      @r   r   rm   Fru   with_std)rF   rp   r   r,   r   r   r-   )X_listX_arrrc   r   s       rC   test_scale_1dr   K  sf    !FHHVEe_ I8!(--/37!(,,.#65eeDaH	IrD   c                     t        j                  dt        j                  d      t         j                        } t	        j
                         5  t	        j                  dt               t        |        d d d        t        t        |       t        j                  d             t        j                  dt        j                  d      t         j                        } d}t        j                  t        |      5  t        |       }d d d        t        t        j                  d             t        j                  ddt         j                        } t	        j
                         5  t	        j                  dt               t        |       }d d d        t        t        j                  d             t        j                  dd	t         j                        }d
}t        j                  t        |      5  t        |      }d d d        t        t        j                  d             t        ||       t        j                  t        |      5  t        |d      }d d d        t        t        j                  d             t        ||       y # 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   "xY w# 1 sw Y   xY w# 1 sw Y   hxY w)N   h㈵>r   errorr=   z:standard deviation of the data is probably very close to 0matchg0.++g}Ô%ITz$Dataset may contain too large valuesFr   )rF   r   logr   warningscatch_warningssimplefilterUserWarningr   r,   r   r[   warns)xwarning_messagex_scaledx_small_scaledx_bigx_big_scaledx_big_centereds          rC   (test_standard_scaler_numerical_stabilityr   W  s   
 	266$<rzz2A 
	 	 	" g{3a eAh4 	BFF4L

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

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

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

8  s    AA$r   with_scalingrc   rR  densityc                 r   |r*t        j                  |       rt        j                  d       t	        ||      }|j                  |        |r&t        |j                  t        j                        sJ |j                  J |r't        |j                  t        j                        sJ y |j                  J y )Nz(RobustScaler cannot center sparse matrix)r   r  )r   rt  r[   r   r   r^   r   center_rF   ndarrayr   )rc   r   r  re   s       rC   test_robust_scaler_attributesr  %  s    
 &//!,>?lSF
JJqM&.."**555~~%%%&--444}}$$$rD   csr_containerc                    t         j                  j                  dd      }d|d d df<    | |      }t        d      }|j	                  |       |j
                  d   t        j                  d      k(  sJ |j                  |      }t        |d d dgf   j                         |d d dgf   j                                y )Nr=   rj   r   Fr   r:   )rF   r   rZ   r   r^   r   r[   r)  r}   r)   r?   )r  rc   re   rM  s       rC   "test_robust_scaler_col_zero_sparser  :  s     			AAAadGaA/F
JJqM==v}}Q////q!GAa!fI%%'QC)@)@)BCrD   c                  T   t         j                  j                  d      } | j                  dd      }d|d d df<   t	               }|j                  |      j                  |      }t        t        j                  |d      ddgz         t        |j                  d      d   d       y )Nr   ri   rj   r   r   )
rF   r   r   rZ   r   r^   r}   r,   medianr   )rY   rc   re   r   s       rC   test_robust_scaler_2d_arraysr  J  s    
))


"C		!QAAadG^Fzz!}&&q)Hbiiq91u9Ehlll215q9rD   r  )r   g?皙?rR  r:   strictly_signed)positivenegativer   Nc                 T   t        j                  dd|       j                         }|dk(  r%t        j                  |j
                        |_        nn|dk(  r&t        j                  |j
                         |_        nC|dk(  r>t        j                  |j
                  j                  t        j                        |_        |j                         }t        d	      }t        d	      }|j                  |       |j                  |       t        |j                  |j                         y )
Nr8   rj   r  r  r  r   r   Fr   )r   r!  tocscrF   absrK  r   rH   r   r?   r   r^   r)   r   )r  r  rj  r}  rk  scaler_denses         rC   +test_robust_scaler_equivalence_dense_sparser  W  s     {{4G4::<H*$x}}-	J	&..	G	#!4!4BJJG G 6Mu5LhWM((,*=*=>rD   c                    t         j                  j                  d      }|j                  dd      }t        j                  g dg      }t        d      }|j                  |      }|j                   | |            }||j                  z  }t        |j                         |       |j                  |      }t        ||j                                y )Nr   ri   rj   )r  rm   rl   r   rW  Fr   )rF   r   r   rZ   rp   r   r^   r}   r   r,   r?   r   )r  rY   rc   
single_rowre   	row_transrow_expectedrow_scaled_backs           rC   (test_robust_scaler_transform_one_row_csrr  m  s     ))


"C		!QA567J/FZZ]F  z!:;I-Li//1<@..y9Oj/*A*A*CDrD   c                  4   t         j                  } t               }|j                  |       }t	        t        j                  |d      d       |j                  |      }t	        | |       t        j                  |dd      }|d   |d   z
  }t	        |d       y )Nr   r      K   qr   r:   	rJ  rK  r   r   r,   rF   r  r   
percentile)rc   re   rM  rN  r  iqrs         rC   test_robust_scaler_irisr  |  s~    		A^F""1%Gbiia8!<**73Ka-
g2A
A$1+Cc1%rD   c                  8   t         j                  } t        d      }|j                  |       }t	        t        j                  |d      d       |j                  |      }t	        | |       t        j                  |dd      }|d   |d   z
  }t	        |d       y )N)r=   Z   quantile_ranger   r   r  r:   r  )rc   re   rM  rN  r  q_ranges         rC   !test_robust_scaler_iris_quantilesr    s    		A2F""1%Gbiia8!<**73Ka-
g2AdQqTkGgq)rD   csc_containerc                    t         j                  }t        d      }|j                  |      }|j	                  |      }t        ||       t        dd      }|j                  |      }|j	                  |      }t        ||        | |      }|j                  |      }|j	                  |      }t        |j                         |j                                y )Nr7   n_quantilesnormal)r  output_distribution)rJ  rK  r   r   r   r,   r?   )r  rc   ru  rM  rN  rj  X_sparse_tranX_sparse_tran_invs           rC   test_quantile_transform_irisr    s    		A%"5K''*G//8Ka-%"(SK''*G//8Ka- QH--h7M#55mDh..02C2K2K2MNrD   c                    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      j                  |       d d d        t        d	      }d
}t        j                  t        |      5  |j                  |       d d d        |j                  |       d
}t        j                  t        |      5  |j                  |       d d d        t        j                  g dg dg      }d}t        j                  t        |      5  |j                  |       d d d        t        d	      j                  |      }t        j                  t        d      5  |j                  d       d d d        t        d	      }d}t        j                  t        |      5 }|j                  |       d d d        t              dk(  sJ |j                  |j                  d   k(  sJ y # 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   8xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w)N)
r   r  r   r   r   r   r  r   r   r   )
rT   ri   r   r   rk   r   r   r=   r   r   )
r   r   @ffffff@r   r   ffffff@r         #@r  )
ri   r   r   rk   r   r   r=   r   r   zmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.r   r=   )	subsampler  z>QuantileTransformer only accepts non-negative sparse matrices.zKX has 2 features, but QuantileTransformer is expecting 3 features as input.z+Expected 2D array, got scalar array insteadr   zn_quantiles is set to n_samplesr:   r   )rF   	transposer[   r\   r]   r   r^   r}   r   r   r   lenn_quantiles_rH   )r  rc   X_negr  ru  
X_bad_featwarn_msgr  s           rC   #test_quantile_transform_check_errorr    s&   
/+4	
	A 	aALL/,4	
E % E	 
 
z	1 1b)--a01 &"5KNG	z	1 OOANG	z	1 %e$% 	,.VWJ 	V  
z	1 2%%j12 &"599!<K	z)V	W "b!" &#6K0H	k	2 fv;!##qwwqz111?1 1
 % %2 2
" "
 sH   *H-7H:?II!I $I,-H7:III I),I5c                    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  |j                  |       d d d        t        j                  ddgddgddgddgddgg      }|j                  |      }t        ||j                                t        j                  g d	      }t        j                  g d
      }t        j                  g d      }	 | ||	|ff      }|j                  |      }t        j                  ddgddgddgddgddgddgddgddgddgg	      }t        ||j                                t        dd      }t        j                  g d      }t        j                  g d      }t        j                  g d      }	 | ||	|ff      }|j                  |      }t        j                  ddgddgddgddgddgddgddgg      }t        ||j                                t        |j                         |j                  |      j                                t        dddd      }|j                  |      }t        ||j                                t        |j                         |j                  |      j                                y # 1 sw Y   axY w)Nr   r:   rT   Trj   )ignore_implicit_zerosr  z['ignore_implicit_zeros' takes effect only with sparse matrix. This parameter has no effect.r   )r   r   r:   r   rT   rT   r:   r   r:   rT   r   )r   r   r:   r:   r:   r:   r:   r:   r:   r:   r:   )r   ri   r   r:   rT   rU   ri   rj   rk   r  r   r   rR  rm   )	r9   r9   r:   r   r   r   r:   r9   r:   )	r   r   r:   r:   r:   r:   r:   r:   r:   )	r   ri   r   r:   rT   rU   ri   rj   rk   g      ?r   )r  r  r  random_state)rF   rp   r   r[   r   r   r^   r   r+   r?   r   )
r  rc   rj  ru  r   
X_expectedrM  X_dataX_colX_rows
             rC   +test_quantile_transform_sparse_ignore_zerosr    s   
1a&1a&1a&1a&1a&9:AQH%DaPK	 
 
k	9  Aq6Aq6Aq6Aq6Aq6BCJ''1G
GOO$56 XX78FHH67EHH67Efuen56H''1G#J#J#J#J#J#J#J#J#J
	
J 
GOO$56%DaPKXX45FHH01EHH01Efuen56H''1G
Q!UaZ!UaVaVaVLJ 
GOO$56K99'BJJL
 &"QQK ''1G
GOO$56K99'BJJLc s   KKc                  2   t        j                  g dg dg dg dg dg      } t        d      }|j                  |        |j	                  |       }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        |j                  |      |       |j                  |      }t        | |       y )N)r   rT   r  )r  ri   r  )r   rk   r  )r  r   r  )r   r=   r  rj   r  r   r:   )num)rU   r:   r   )r9   r:   r   )e      r=   )r   r   r   r:   r:   r:   )rF   rp   r   r^   r   tilelinspaceTr+   sortr,   r}   r   )rc   ru  rM  r  r   rN  s         rC   !test_quantile_transform_dense_toyr  %  s    
	lL,O	A &!4KOOA ''*GQq16:<<Ja0*=XX	
F 	
J k33F;ZH//8Ka-rD   c                     d} d}t        j                  t         j                  j                  | df      d      }d}g }t	        |      D ]  }t        ||| dz        }|j                  |       t        j                  dd|      t        j                  |j                        z
  }t        j                  t        j                  |            }|d	k  sJ |j                  |        t        t        j                  |            t        |      k(  sJ t        j                   | dd
dd      }g }t	        |      D ]  }t        ||| dz        }|j                  |       t        j                  dd|      t        j                  |j                        z
  }t        j                  t        j                  |            }|dk  sJ |j                  |        t        t        j                  |            t        |      k(  sJ y )N@B r8   r:   r   r   rj   r=   )r  r  r  {Gz?gGz?csc)r  formatr  r  )rF   r  r   sampler   r   r^   r  r   
quantiles_r=  r  appendr  uniquer   r!  )	ra   r  rc   ROUNDinf_norm_arrr  ru  diffinf_norms	            rC   #test_quantile_transform_subsamplingr  E  s    IK
		  )Q0q9AELe 
&)%#2o

 	{{1a-9O9O0PP66"&&,'$H%
& ryy&'3|+<<<< 	Iq$u1MALe 
&)%#2o

 	{{1a-9O9O0PP66"&&,'$H%
& ryy&'3|+<<<<rD   c                     t         j                  j                  d      j                  d      } d}t	        |d      j                  |       }t        j                  dd|      }t        |j                  |       t        j                  | j                         |      }t        |j                  j                         |       y)zCCheck the behaviour of `QuantileTransformer` when `subsample=None`.r   )   r:   r;   rj   N)r  r  r:   )rF   r   r   r  r   r^   r  r)   references_quantiler   r  )rc   r  ru  expected_referencesexpected_quantiless        rC   ,test_quantile_transform_subsampling_disabledr  t  s    
		a ''X'6AK%+NRRSTUK++aK8K++-@AQWWY0CDK**0024FGrD   c                    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      }|j                  |       |j	                  |      }t        t        j                  |j                         d      d       t        t        j                  |j                         d      d       |j                  |      }t        |j                         |j                                t        d      j                  |j                               }|j                  |      }t        t        j                  |j                         d      d       t        t        j                  |j                         d      d       |j                  |      }t        |j                         |j                                y )N)r   rl   r   )g      9@      @r   )g      I@r   r  )r   r   r  )r   g      @r   )r   g       @r   )g     R@r   r  )r   g      $@r   )r   r   r  )r   r   r  r=   r  r   r   r   rm   )rF   rp   r   r^   r   r,   rL  r?   r=  r   r}   )r  rc   ru  rM  rN  r~  s         rC   "test_quantile_transform_sparse_toyr    sS   
	
	A 	aA%"5KOOA''*GbffW__%6Q?EbffW__%6Q?E//8Kaiik;+>+>+@A+;??		L))!,GbffW__%6Q?EbffW__%6Q?E#55g>Kaiik;+>+>+@ArD   c                      t        j                  g dg dg dg      } t        | j                  dd      }t        | dd      }t	        ||j                         y )N)r   r  r   r  r   )rT   ri   rk   r   r=   )r  r  r  r  r  r   rj   )r   r  r:   )rF   rp   r   r  r,   )rc   
X_trans_a0
X_trans_a1s      rC   test_quantile_transform_axis1r	    sH    
&(8:STUA#ACCaQ?J#AA1=Jj*,,7rD   c                    t        j                  ddgddgddgg      } | |      }t        dd      j                  |      }t	        ||       t        dd      j                  |      }t	        |j                         |       t	        ||j                                t        j                  ddgddgddgg      }t        j                  ddgddgddgg      }t        d      j                  |      }|j                  |      }t	        ||       t         j                  j                  d      }t               }|j                  |       |j                  d	gg      |j                  t        j                  |      gg      k(  sJ |j                  d
gg      |j                  t        j                  |      gg      k(  sJ |j                  d	gg      |j                  t        j                  |j                        gg      k(  sJ |j                  d
gg      |j                  t        j                  |j                        gg      k(  sJ y )Nr   r:   rU   r  r  rR  r  r  )r8   r:   r=   )rF   rp   r   r   r,   r?   r^   r}   r   rL  r=  r   r  )r  r}  rj  rM  
X_trans_sprc   X1ru  s           rC   test_quantile_transform_boundsr    s'    hhAAA/0GW%H "aa@NNwWGgw/$CQQJ j002G<gz'9'9';< 	1a&1c(QF+,A	As8aX3x0	1B%!488;K##B'Ggr* 			#A%'KOOA  3%)[-B-BRVVAYK=-QQQQ  2$(K,A,ABFF1I;-,PPPP((3%1[5R5R
&&((
)	*+6    ((2$0K4Q4Q
&&((
)	*+5   rD   c            	         t         j                  } t        j                  dgt        dz  gdgdgdgdgdgg      }| |fD ]?  }t        dd	      }|j                  |      }|j                  |      }t        ||d
       A y )Nr   r=   rv   rT   rU   ri   r8   r   r  	   r   )	rJ  rK  rF   rp   r   r   r   r   r,   )X_1X_2rc   ru  rM  rN  s         rC   #test_quantile_transform_and_inverser    s    
))C
((SE,r12SEA3aS1#N
OC3Z =)dK++A.!33G<!![!<	=rD   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      }|j	                  |        t        j
                  |j                  d d df         j                         sJ t        j
                  |j                  d d dd f         j                         rJ y )Nr   r:   rR  r=   r   r  )	rF   rp   rs  r   r   r   r  r   r   )rc   ru  s     rC   test_quantile_transform_nanr    s    
2661a#bffbffa%=1a?PQRA%"2FKa  88K**1a40155777xx..q!"u56::<<<<rD   
array_typerp   r   c                 @   t        j                  g ddz        }d|j                  dd      z  }t        ||       }d}t	        |      j                  |      }|j                  d d df   }t        |      dk(  sJ t        t        j                  |      dk\        sJ y )	N)r   r:   r:   rT   rT   rU   rU   ri   rj   rj   r:   r:   r  r  r  r   r   r  r=   r  r9   r:   r   r  r   )
rF   rp   r  r(   r   r^   r  r  r   r  )r  rc   r  qt	quantiless        rC   *test_quantile_transformer_sorted_quantilesr    s     	G"LMAaiiAA1j)AK		5	9	9!	<B ad#Iy>S   rwwy!Q&'''rD   c                      dD ]Q  } t        |       }t        j                  t        d      5  |j	                  t
        j                         d d d        S y # 1 sw Y   ^xY w)N))r9   r  )r  )r=   r  )g      Y@r  )r  r   r  zInvalid quantile range: \(r   )r   r[   r\   r]   r^   rJ  rK  )range_re   s     rC    test_robust_scaler_invalid_ranger     sX     
" V4]]:-JK 	"JJtyy!	" 	"
"	" 	"s    AA!	c                    t         j                  j                  d      }|j                  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	        |j                         d      }t        ||j                                t        j                  t              5  t	        |dd	       d d d        t        |j                  d
      g dd       t        |j                  d
      g d       ||usJ t!        |d      \  }}t        ||j                  d
             t        ||j                  d
             t	        |ddd      }t        |j                         |j                                y # 1 sw Y   xY w)Nr   ri   rj   r   r   Frt   r:   )ru   r   r   ri  rT   r   Tr   )rF   r   r   rZ   r   r   r   rK  r  r,   r?   r[   r\   r]   r   r   r6   )	r  rY   rc   X_csrr   X_csr_scaledX_csc_scaledX_csr_scaled_meanX_csr_scaled_stds	            rC   %test_scale_function_without_centeringr&    s   
))


#C		!QAAadG!EQ%(Hvvbhhx()))%0Lvvbhh|001222 %8Lh(<(<(>? 
z	" .eu1-. 1? hlll24MN1*<\1*M''/A1FG.!0DE %%dKLemmo|/C/C/EF!. .s   	G""G+c                      t         j                  } t        | d      }t        t	        j
                  |d      d       t	        j                  |dd      }|d   |d   z
  }t        |d       y )Nr:   r   r   r  r  rJ  rK  r   r,   rF   r  r  rc   rM  r  r  s       rC   test_robust_scale_axis1r*  3  sY    		A11%Gbiia8!<
g2A
A$1+Cc1%rD   c                      t         j                  d d df   } t        |       }t        t	        j
                  |      d       t	        j                  |d      }|d   |d   z
  }t        |d       y )Nr:   r   r  )r  r(  r)  s       rC   test_robust_scale_1d_arrayr,  <  sZ    		!Q$A1oGbii0!4
g*A
A$1+Cc1%rD   c                  "   g dg dg dg} t               }|j                  |       }g dg dg dg}t        ||       |j                  |      }t        | |       g dg dg d	g}|j	                  |      }g d
g dg dg}t        ||d       y )NrQ  rS  rT  rY  )r   r   rW  rZ  rU  rV  rX  )r   rm   r   )rW  r   g_)r   r   gіs)?rU   r   )r   r   r,   r   r}   )rc   re   rM  r  rN  r\  r^  X_expected_news           rC   )test_robust_scaler_zero_variance_featuresr/  E  s    	+-=>A^F""1%G #$46FGJgz2**73Ka- /1ABE""5)K')>@UVNk>1ErD   c                  8   t         j                  j                  d      } | j                  dd      }t        j                  |t        j
                  d      dz  t        j
                  d      dz  g      }d}t        |d	      j                  |      }|j                  |      }|j                  t        j                  d
d      k(  sJ |j                  t        j                  dd      k(  sJ |j                         t        j                  dd      k(  sJ y )Nr   r  r:   )r   r:   r   i)r:   c   T)r  unit_variancer   MbP?)r  r  )rF   r   r   rZ   vstackrz   r   r^   r}   r  r[   r)  r   r   )rY   rc   X_with_outliersr  robust_scalerrM  s         rC    test_robust_scaler_unit_variancer7  ^  s     ))


#C		'1AiiBGGH$5$;RWWX=NQU=U VWON dSWWM %%a(G  FMM!$>>>>6==#====;;=FMM!6666rD   c                 4   g dg dg dg dg}t               }|j                  |      }g dg dg dg dg}t        ||       |j                  |      }t        ||       g dg d	g dg}|j	                  |      }g d
g d	g dg}t        ||d       t        |      }t        ||        | |      }	|j                  |	      }
g dg dg dg dg}t        |
j                         |       |j                  |
      }t        ||j                                y )NrQ  )r   rm   333333ӿrX  rY  )r   rm   UUUUUU?)r   rm   gɿ)r   rm   rm   rU  rV  )r   rl   r:  rT   r   )r   r   r,   r   r}   r   r?   )r   rc   re   rM  r  rN  r\  r^  r.  rj  r  X_trans_sparse_invs               rC   )test_maxabs_scaler_zero_variance_featuresr<  p  s    
+-=?OPA^F""1%G	J gz2**73Ka- /1ABE""5)K,.>@PQNk>1E 1oGgz2  "H))(3N	J n446
C11.Aa!3!;!;!=>rD   c                      g dg dg dg dg} t               }|j                  |       }g dg dg dg dg}t        ||       y )	N)r   rm   rR  rW  )r   rm   r9  rH  )r   rm   g      Yr   )r   r   r   g       )r   rm   g{Gzt?rH  )r   rm   g~jthg      п)r   rm   rW  r   )r   r   r   rW  )r   r   r,   )rc   re   rM  r  s       rC   'test_maxabs_scaler_large_negative_valuer>    sO     			A ^F""1%G!	J gz2rD   c                 J    | g dg      }t               }|j                  |      }|j                  |      } | g dg      }t        |j	                         |j	                                |j                  |      }t        |j	                         |j	                                y )N)rR  rm   rm   r[  )r   r^   r}   r,   r?   r   )r  rc   re   rM  r  r   s         rC   (test_maxabs_scaler_transform_one_row_csrr@    s     	'(A^FZZ]Fq!G01Jgoo/1C1C1EF,,W5Maiik=+@+@+BCrD   c                     t         t        t        t        fD ]  } t        d      }|j	                  |       j                  |       }t        | t              rt        j                  |       } t        |       dk(  rGt        t        j                  |j                  d            t        j                  t                     n/t        t        j                  |j                  d            d       |j                   | j"                  d   k(  sJ |j%                  |      }t        ||         t        j                  d      } t               }|j	                  |       j                  |       }t        t        j                  |j                  d            d       |j                   | j"                  d   k(  sJ t         j'                         }t        j                  |      j                         }t        ||z  t)        |d             y )NTr   r:   r   r   rm   r   )r   r   r   r   r^   r}   r   r   rF   rp   rI   r,   r  r=  rz   rb   r   rH   r   r   r   )rc   re   r   r   re  max_abss         rC   test_maxabs_scaler_1drC    s}   fk;7 44(::a=**1-aAA!#%bffX\\q\-A&BBGGJDWX%bffX\\q\-A&BCH%%333 00:!-34$ 	A^Fzz!}&&q)HbffX\\q\%9:C@!!QWWQZ/// <<>DffTl GdWnl4d.KLrD   c           
         t         d dd d f   }|j                  d   }ddd||dz   fD ]  }t               j                  |      }t               }t               }t               }t	        ||      D ]N  }|j                  ||         } | ||         }	|j                  |	      } | ||         }
|j                  |
      }P t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  |      |j                  |             t        d|      }t               j                  ||         }t               j                  ||         }t        |j                  |j                         |j                  |j                  k(  sJ t        |j                  |j                         t        |j                  |      |j                  |             t               j                  |      }t               }t        t	        ||            D ]H  \  }}|j                  ||         }t        ||j                  |j                  |||j                         J ! y )Nr   r   r:   rT   r   r   r  )r  rH   r   r^   r!   r  r,   max_abs_r   r   r}   r  r	  rR   r
  r  )r  rc   rO   rP   r  r  scaler_incr_csrscaler_incr_cscr  r!  X_cscr  rL   s                rC   test_maxabs_scaler_partial_fitrI    s    	TcT1WA	
A!RAF+ /
#~))!,"n&.&. J/ 	AE%11!E(;K!!E(+E-99%@O!!E(+E-99%@O	A 	","7"79M9MN!,"7"79Q9QR!,"7"79Q9QR++{/J/JJJJ++/N/NNNN++/N/NNNN!,"5"5{7I7IJ!,"5"57M7MN!,"5"57M7MN!,"8"8";[=R=RST=UV q*%#~))!F)4"n006;!,"7"79M9MN++{/J/JJJJ!,"5"5{7I7IJ!,"8"8";[=R=RST=UV $~))!,"n!+a"<= 		HAu%11!E(;K!KK ::%*::		M/rD   c                    | dk(  rTt        j                  |      j                  d      }t        d      D ]  }t	        ||   d        t	        |d   d       y	| dk(  rUt        d      D ]$  }t	        t        j                  ||         d       & t	        t        j                  |d         d       y	| dk(  rJt        |      j                  d      }t        d      D ]  }t	        ||   d        t	        |d   d       y	y	)
zr
    Convenient checking function for `test_normalizer_l1_l2_max` and
    `test_normalizer_l1_l2_max_non_csr`
    r9  r:   r   rU   rm   r   r<  r=  N)rF   r  r(  r   r+   lar;  r=  )r;  X_normrow_sumsrL   row_maxss        rC   check_normalizerrO    s    
 t|66&>%%1%-q 	2AS1	2HQK-	q 	9Aq	 2C8	9BGGF1I.4	v;???*q 	2AS1	2HQK-	 
rD   r;  r9  r<  r=  c                    t         j                  j                  d      }|j                  dd      } ||      }d|dd d f<   |j                  d   }|j                  d   }d|j
                  ||  ||      }|||fD ]u  }t        | d      }	|	j                  |      }
|
|usJ t        |
      }
t        | d      }	|	j                  |      }||u sJ t        |      }|
|fD ]  }t        | |        w y )	Nr   ri   rj   r   rU   Tr;  r   F)
rF   r   r   rZ   indptrrK  r   r}   r?   rO  )r;  r  rY   r}  X_sparse_unprunedindptr_3indptr_4X_sparse_prunedrc   
normalizerX_norm1X_norm2rL  s                rC   test_normalizer_l1_l2_maxr[  )  s    ))


"Cii1oG%g. GAqDM !''*H ''*H038H- $G,O (9: +T5
&&q)a'"T6
&&q)!||'"( 	+FT6*	++rD   c                 F   t         j                  j                  d      }|j                  dd      }d|dd d f<    ||      }t	        | d      j                  |      }||usJ t        j                  |      r|j                  dk(  sJ t        |      }t        | |       y )	Nr   ri   rj   r   rU   FrR  csr)rF   r   r   rZ   r   r}   r   rt  r  r?   rO  )r;  r   rY   r}  rc   rL  s         rC   !test_normalizer_l1_l2_max_non_csrr^  K  s    
 ))


"Cii1oG GAqDM!AT.88;F????6"v}}'===V_FT6"rD   c           	         t         j                  j                  d      }|j                  dd      }d|dd d f<   |dt	        |dd d f         j                         fxx   dz  cc<   t        j                  |       } | |      }|||fD ]k  }t        d	      }|j                  |      }||usJ t        |      }t        t        j                  |      t        j                  t        |                   m y )
Nr   ri   rj   r   rU   rT   r9   r=  r:  )rF   r   r   rZ   r  argmaxr   r}   r?   r-   sign)r  rY   r}  	X_all_negX_all_neg_sparserc   rX  rL  s           rC   test_normalizer_max_signrd  `  s     ))


"Cii1oGGAqDM As71a4=!((**+r1+ I$Y/y"23 AU+
%%a(Q2776?BGGGAJ,?@ArD   c                 *   t         j                  j                  d      j                  dd      }t	        t        |d      t        |j                  dd      j                         t         j                  j                  d      }|j                  dd	      } | |      }t        j                  d      }||fD ]  }t         j                  t         j                  fD ]  }d
D ]  }|j                  |      }t        ||      }|j                  |k(  sJ t        |      }|dk(  r&t        j                  |      j                  d      }	n|dz  }
|
j                  d      }	t        |	|          t        j                   g dg dg dg      }dD ]  }t        ||d      \  }}|dk(  r"t        |t        j                   g d             ;|dk(  r"t        |t        j                   g d             bt        |t        j                   g d               | |      }d
D ]2  }t#        j$                  t&              5  t        ||d       d d d        4 t        |dd      \  }}t        |t        j                   g d             y # 1 sw Y   qxY w)N%   rU   rT   Fr   r   )r   r   r=   rj   )r9  r<  r:  r9  r:   r   )r   r   r  )rm   r   r   )rl   r   r   rP  T)r;  return_norm)      @rm   r   r<  )r   rm   g1C+@)r  rm   r   r=  )rF   r   r   rZ   r-   r   r  rz   r   r   r   r   r?   r  r(  r,   rp   r[   r\   NotImplementedError)r  rc   rsr}  rj  rz   r   r;  rL  rM  X_norm_squared_normss                rC   test_normalizern  u  s5    			b!''1-Ay/133QU1S1U1UV			q	!Bhhr1oGW%H77B=Dx  :jj"**- 	:E$ :HHUO"140||u,,, 4<!vvf~11q19H%+QYN-11q19H)(D9:	::" hhHIG# HW4TB54<%eRXXo-FGT\%eRXX6L-MN%eRXXo-FGH W%H =]]./ 	=hTt<	= 	== 4@HAueRXXo%>?	= 	=s   =J		J	constructorc                    t        j                  g dg dg      } | |j                               }t        dd      }t	        |j                  |            }t        j                  |dk(        dk(  sJ t        j                  |dk(        d	k(  sJ |j                  |      }t        j                  |      t        j                  |      k(  sJ t        d
      j                  |      }t	        |j                  |            }||usJ t        j                  |dk(        d	k(  sJ t        j                  |dk(        dk(  sJ t        d
      }|j                  |      }||usJ t	        |      }t        j                  |dk(        d	k(  sJ t        j                  |dk(        dk(  sJ t        d
      }|j                  |      }| t        ur||u sJ t        d
      }t        j                  g dg dgt         j                        }|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{ | |j                               }t	        |j                  |            }t        j                  |dk(        dk(  sJ t        j                  |dk(        dk(  sJ |j                  |      }| t        v r:t        j                  t              5  |j                   | |             d d d        y y # 1 sw Y   y xY w)N)r:   r   rj   )rT   rU   r9   rl   T)	thresholdr   r   ri   r:   rT   r   Fr   rH  rj   )rF   rp   r   r   r?   r}   r(  r   rt  r^   r   r   r2   r[   r\   r]   )ro  X_rc   	binarizerX_binX_floats         rC   test_binarizerrv    s    
9j)	*BBGGIACd3II''*+E66%1*"""66%1*""""E??1!7777t$((+II''*+E>>66%1*"""66%1*"""t$I"E>>ENE66%1*"""66%1*"""u%I"E$zzu%Ihh	:.bjjAG(E$ENE66%1*"""66%1*"""Dt4Irxx&&	"	++A./vveqj!Q&&&vveqj!Q&&&##A& n$]]:& 	0A/	0 	0 %	0 	0s   5MM c                    t        | |      }|ddfD ]  }t        j                  t        j                  g d|      d      }|j                  ||      }t	        d      j                  |      }t        d	
      5  t	        d      j                  |      }d d d        t        t        |      |        y # 1 sw Y   "xY w)Nr3  int64)r   r:   rT   rU   ri   r   )r9   r:   )r?  rw   )rq  T)array_api_dispatch)	r'   rF   r  rG   r   r   r   r-   r#   )	rA  r?  r@  xpdtype_name_X_npX_xpbinarized_npbinarized_xps	            rC   test_binarizer_array_api_intr    s    
 
ov	6B"GW5 Nzz"**_KH'Rzz$vz. 3/==dCt4 	H$s3AA$GL	H,\2>MN	H 	Hs   <B99C	c                     t         j                  j                  d      } | j                  d      }t	        d      }|j                  |       |j                  |      }t        j                  ||j                        }t               }t        j                  ||j                        }|j                  |      }t        ||       | j                  d      }t        j                  ||j                        }	|j                  |      }
t        j                  |
|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        ||       y )Nr   rj   ri   Fr   )rT   ri   )rF   r   r   random_sampler   r^   r}   dotr  r   r   r,   	ones_likerH   r)   )rY   X_fitre   X_fit_centeredK_fitcentererK_fit_centeredK_fit_centered2X_predK_predX_pred_centeredK_pred_centeredK_pred_centered2ones_MK_fit_centered3ones_prime_MK_pred_centered3s                    rC   test_center_kernelr    s    ))


"Cf%EU+F
JJu%%e,NFF5%''"E HVVNN,<,<=N,,U3Ono> v&FVVFEGG$F&&v.Off_n.>.>?O))&1o/?@ \\% 5;;q>1Ffun,uv~=QW@WWONO4 <<'%++a.8L%%7,:NQW:WW  O%56rD   c                     t         j                  j                  d      } | j                  dd      | j                  dd      }}d } ||      } ||      }t	        d      }|j                  |      }|j                  |      }||j                  z  }	||j                  z  }
||j                  z  }||j                  z  }t               }|j                  |	       t        |j                  |	      |       t        |j                  |
      |       t        j                  |	      |	j                  d   z  }|	||	z  z
  |	|z  z
  ||	z  |z  z   }t        |j                  |	      |       t        j                  |
      |	j                  d   z  }|
||	z  z
  |
|z  z
  ||	z  |z  z   }t        |j                  |
      |       y)	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)rF   r4  r8  r  s    rC   phiz2test_kernelcenterer_non_linear_kernel.<locals>.phi  s;    yy$/$a00
 	
rD   Fr   N)rF   r   r   rZ   r   r   r}   r  r   r^   r)   r  rH   )rY   rc   r   r  phi_X
phi_X_testre   phi_X_centerphi_X_test_centerKK_testK_centerK_test_centerkernel_centererr  
K_centeredr  K_test_centereds                     rC   %test_kernelcenterer_non_linear_kernelr    s   
))


"C		#r"CIIb"$5vA
 FEVJ U+F''.L((4 	A%''!Flnn,H%6M$&OO--a0(;O--f5}E \\!_qwwqz)FVaZ!f*,vzF/BBJO--a0*= <<'!''!*4L!!FVO3lQ6F6OO  O--f5GrD   c                  n   t        j                  g dg dg dg dg      } t        j                  d      }| j                  | j                        }t               }t        d|fdt               fg      }|j                         j                  j                  sJ t        |||d	      }t        ||       y )
N)rU   r   r   )r   rU   r   )r   r   rU   r  )ri   r  svrrT   )cv)rF   rp   rz   r  r  r   r   r    __sklearn_tags__
input_tagspairwiser   r,   )rc   y_truer  kcentpipeliney_preds         rC   test_cv_pipeline_precomputedr  M  s     	)Y	9=>AWWT]F	acc
AE+U3eSU^DEH $$&11::::
 xFq9Fff-rD   c                  "   t         j                  j                  d      } | j                  d      }t	               t               t               fD ]?  }|j                  |      j                  |      }|j                  |      }t        ||       A y )Nr   r  )rF   r   r   r  r   r   r   r^   r}   r   r-   )rY   rc   objX_transformedX_transformed2s        rC   test_fit_transformr  a  su    
))


"C&!A *,	< :
,,Q/**1-=.9:rD   c                  Z    ddgddgddgg} t        |       } t        | g dg dg dg       y Nr:   r   )r:   r:   r   rn   )r   r-   r  s    rC   test_add_dummy_featurer  j  s5    
Q!Q!Q A!Aq9i;<rD   c                      | ddgddgddgg      }|j                   }t        |      }t        j                  |      r|j                   |k(  sJ |       t	        |j                         g dg dg dg       y r  )r  r   r   rt  r-   r?   )r   rc   desired_formats      rC   test_add_dummy_feature_sparser  p  sm     	1a&1a&1a&12AXXN!A??1!((n"<?a?<qyy{Y	9$EFrD   c                      t         j                  } | d d d df   }t        dd      t               t	               g}|D ]$  }|j                  |        |j                  |       & y )NrT   Fr   )rJ  rK  r   r   r   r   )rc   r  scalersre   s       rC   test_fit_cold_startr  {  sh    		AQU8D 	7G  #Q 	T"	#rD   methodbox-coxyeo-johnsonc                 J   t        |       }t        j                  t              }t	        j
                  t              5  |j                  |       d d d        t	        j
                  t              5  |j                  |       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)Nr  )	r   rF   r  r   r[   r\   r   r}   r   )r  ptrc   s      rC    test_power_transformer_notfittedr    sy    		(B
vA	~	& 
Q	~	&  
Q       s   B2BBB"standardizec                     | dk(  rt        j                  |      n|}t        | |      }|j                  |      }t	        ||j                  |             y )Nr  r  r  )rF   r  r   r   r+   r   )r  r  rc   r  rM  s        rC   test_power_transformer_inverser    sK     y(q	aA	[	ABq!G2//89rD   c                  x   t        j                  t              } dD ]  }t        d|      }|j	                  |       }t        | d|      }t        j                  | j                               \  }}|rt        |      }t        |j                  dd      |       t        |j                  dd      |       t        | |j                  |             t        ||j                  d          t        |j                        | j                  d   k(  sJ t!        |j                  t         j"                        rJ  y )NTFr  r  r9   r:   r   )rF   r  r   r   r   r   r   boxcoxflattenr   r+   r  r   lambdas_r  rH   r   r  )rc   r  r  rM  X_trans_funcr  lambda_expecteds          rC   test_power_transformer_1dr    s    
vA$ 3YKH""1%&qT&+ll199;&?#
Oz*JJ..r15w?J..r15|DAr33G<=OR[[^<2;;1771:---"++rzz222%3rD   c                     t        j                  t              } dD ]%  }t        d|      }|j	                  |       }t        | d|      }||fD ]  }t        |j                  d         D ]h  }t        j                  | d d |f   j                               \  }}|rt        |      }t        |d d |f   |       t        ||j                  |          j |j                  |      }	t        |	|         t!        |j                        | j                  d   k(  sJ t#        |j                  t         j$                        r&J  y )Nr  r  r  r:   )rF   r  r  r   r   r   r   rH   r   r  r  r   r+   r  r   r,   r  r   r  )
rc   r  r  X_trans_classr  rM  jr  lmbdaX_invs
             rC   test_power_transformer_2dr    s!   
tA$ 3YKH((+&qT%|4 	0G7==+, ;$)LL1a41B$C!
E!&z!2J#GAqDM:>#E2;;q>:; ((1E%eQ/	0 2;;1771:---"++rzz222+3rD   c                  D   t        d      } | j                  t        j                  t                     t        }d}t        j                  t        |      5  | j                  |       d d d        t        j                  t        |      5  | j                  |       d d d        t        j                  t        |      5  t        |d       d d d        t        j                  t        |      5  | j                  t        j                  t        j                               d d d        t        j                  t        |      5  | j                  t        j                  t        j                               d d d        t        j                  t        |      5  t        t        j                  t        j                        d       d d d        y # 1 sw Y   oxY w# 1 sw Y   GxY w# 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  zstrictly positiver   )r   r^   rF   r  r  r[   r\   r]   r}   r   r   rH   )r  X_with_negativesnot_positive_messages      rC   9test_power_transformer_boxcox_strictly_positive_exceptionr    s    
	+BFF266$<.	z)=	> '
%&' 
z)=	> !
 ! 
z)=	> <(;< 
z)=	> +
RXXdjj)*+ 
z)=	> %
rxx

#$% 
z)=	> @,Y?@ @' '! !< <+ +% %@ @sH   GG$G133G>	3H
/HG!$G.1G;>H
HHc                     t        | d       y )Nr  r  )r   r  s    rC   +test_power_transformer_yeojohnson_any_inputr    s     Am,rD   c                    t        |       }t        j                  t              }|j	                  |       d}t        j                  t        |      5  |j                  |d d ddf          d d d        t        j                  t        |      5  |j                  |d d ddf          d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)Nr  zBX has \d+ features, but PowerTransformer is expecting \d+ featuresr   r   r:   )
r   rF   r  r  r^   r[   r\   r]   r}   r   )r  r  rc   wrong_shape_messages       rC   &test_power_transformer_shape_exceptionr    s    		(B
tAFF1I
 	N  
z)<	=  
Qq!A#vY  
z)<	= (
Qq!A#vY'( (   ( (s   B6C6B?Cc                      t        dd      } t        j                  t              d d ddf   }t        j                  dg      | _        | j                  |      }t        | j                  |      |       y )Nr  Fr  r   r:   )	r   rF   r  r  rp   r  r}   r,   r   r  rc   rM  s      rC   "test_power_transformer_lambda_zeror  	  s]    		>B
tQ!VA ((A3-BKll1oGb227;Q?rD   c                      t        dd      } t        j                  t              d d ddf   }t        j                  dg      | _        | j                  |      }t        ||       y )Nr  Fr  r   r:   )r   rF   r  r  rp   r  r}   r,   r  s      rC   !test_power_transformer_lambda_oner  	  sP    	E	BB
tQ!VA((A3-BKll1oGgq)rD   zmethod, lmbda))r  r  )r  rR  )r  r  )r  rR  )r  rm   c                    t         j                  j                  d      }d}|j                  dd|df      }| dk(  rt        j                  |d|z  dz   d       }t        | d	      }|g|_        |j                  |      }t        | d	      }|j                  |      }t        dt         j                  j                  ||z
        |z  d
       t        d|j                         d       t        d|j                         d       y )Nr   i N  r:   )locr   r<   r  r9   r   Fr  rT   r   )rF   r   r   r  r8  r   r  r   r   r+   linalgr;  r   r   )r  r  rY   ra   rc   r  r  X_inv_transs           rC   #test_optimization_power_transformerr  	  s    " ))


"CI

qA
7A GGArEzD($/	U	;B'BK  #E	U	;B""5)K299>>!k/:YFPQR;++-q9;??,a8rD   c                      t        dd      } dg| _        | j                  dgg      }t        j                  |      sJ y )Nr  Fr  rR  g )r   r  r   rF   r   )r  r  s     rC   test_invserse_box_coxr  E	  s;    		>B%BK  4&*E88E??rD   c                      g d} t        j                  |       j                  dd      } t        d      j	                  |       j
                  }t        j                  |dd      sJ y )	N)gffffff@g rm   rl   gffffff?g333333@rx   gffffff@g?g@rh  r   g"@g      @g      r9   r:   r  r  gzG?r3  r   )rF   rp   r  r   r^   r  allclose)rc   r  s     rC   test_yeo_johnson_darwin_exampler  M	  sU     	VA
B"AM266q9BBE;;ue$///rD   c                    t        j                  t              }t        |       }|j	                  |       |j
                  d   }t        j                  |t        j                  |t         j                        g      }t        |d      }|j	                  |       |j
                  d   }t        ||d       |j                  |      }t        t        j                  |      t        j                  |             y )Nr  r   )r  rj   r   )rF   r  r   r   r^   r  concatenate	full_likers  r"   r+   r}   r-   r   )r  rc   r  lmbda_no_nans
lmbda_nansrM  s         rC   test_power_transformer_nansr  V	  s    
 	vA		(BFF1IKKNM 	2<<266234A"AFF1IQJz1=ll1oGrxx("((1+6rD   c                     t         }| dk(  rt        j                  |      }t        | |      }t	        |j                  |      j                  |      |j                  |             y )Nr  )r  )r   rF   r  r   r,   r^   r}   r   )r  r  rc   r  s       rC   $test_power_transformer_fit_transformr  m	  sR     	AFF1I	&k	:BbffQi11!4b6F6Fq6IJrD   c                    t         }| dk(  rt        j                  |      }|j                         }||usJ t	        ||       t        | |d      }|j                  |       t	        ||       |j                  |      }||usJ |j                  |      }t	        ||       ||usJ |j                  |      }||usJ y )Nr  Tr  r   
r   rF   r  r   r,   r   r^   r}   r   r   r  r  rc   
X_originalr  rM  r  s          rC    test_power_transformer_copy_Truer  y	  s    
 	AFF1IJJa,	&k	EBFF1Ia,ll1oG!q!Ga,!&&w/K+%%%rD   c                    t         }| dk(  rt        j                  |      }|j                         }||usJ t	        ||       t        | |d      }|j                  |       t	        ||       |j                  |      }||u sJ | dk(  rt        j                  |      }|j                  |      }||u sJ |j                  |      }||u sJ y )Nr  Fr  r  r  s          rC   !test_power_transformer_copy_Falser   	  s    
 	AFF1IJJa,	&k	FBFF1Ia,ll1oGa<<FF1Iq!Ga<<&&w/Kk!!!rD   c                      t         j                  d      } t        j                  | dddf<   d}t	        d      }t        j                  t        |      5  |j                  |        ddd       y# 1 sw Y   yxY w)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   )	rY   r  rF   rs  r   r[   r\   r]   r   )rc   r  r  s      rC   1test_power_transformer_box_cox_raise_all_nans_colr  	  se    
 	&!AffAadG+G		+B	z	1 
  s   A11A:r  皙?)r  r  )r=   r:   )r   c                     t        j                  ddd      }t        d      }|j                  |      j	                  |        t        j                  |j                  d         sJ y )Nrj   r:   r  r  Frt   r   )r   r   r   r^   r  rF   r   r|   )r  r  re   s      rC   7test_standard_scaler_sparse_partial_fit_finite_variancer  	  sP     --1c
*Ce,F
JJsO$;;v{{1~&&&rD   rG  )r   r:   )r  r=   c                 X   t         j                  }t        | d      j                  |      }t	        j
                  |d      t	        j                  |d      }}t        j                  |d d dz
  |dd  dz   f   g}|j                  |      }t        || d   | d   | d   | d   gg       y )NT)rG  r8  r   r   rT   r=   r:   )
rJ  rK  r   r^   rF   rL  r=  r_r}   r)   )rG  rc   re   X_minX_maxr   r  s          rC   test_minmax_scaler_clipr
  	  s     			ADAEEaHF66!!$bffQQ&75EeeE"1INE!"IN234F$$V,M

M!,mA.>a@P	QRrD   c                      t               j                  t              } d}t        j                  t
        |      5  | j                  t        dddf          ddd       y# 1 sw Y   yxY w)zCheck that `inverse_transform` from `StandardScaler` raises an error
    with 1D array.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/19518
    z'Expected 2D array, got 1D array insteadr   Nr   )r   r^   r  r[   r\   r]   r   )re   r  s     rC   -test_standard_scaler_raise_error_for_1d_inputr  	  sU     !!$'F7G	z	1 -  ad,- - -s   A!!A*c                     dt        j                  g ddz  g dz   t         j                        j                  dd      z  } t	               }t        j                         5  t        j                  dt               |j                  |       }d	d	d	       t        j                  t        j                              rJ |j                         t        j                  d
      k(  sJ |j                         t        j                  d      k(  sJ |j!                         dkD  sJ |j#                         dk  sJ y	# 1 sw Y   xY w)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  )rI  rl   r   r  ri   )r     r        r  U   r  r   r9   r:   r   Nr   rm   r  rT   )rF   rp   r   r  r   r   r   r   RuntimeWarningr   r   r   r   r[   r)  r   rL  r=  )X_non_gaussianr  rM  s      rC   1test_power_transformer_significantly_non_gaussianr  	  s    288q #CC2::gb!nN 
	B		 	 	" 3g~6"">23 vvbhhw'(((<<>V]]3////;;=FMM#....;;=2;;=13 3s   !,D::ETransformerc                      |        j                  t        j                        }|j                  t        j                        }t        |t        j                         y)9Check one-to-one transformers give correct feature names.N)r^   rJ  rK  get_feature_names_outfeature_namesr-   )r  tr	names_outs      rC   test_one_to_one_featuresr  
  s@     
		499	%B((););<Iy$"4"45rD   c                 @   t        j                  d      }|j                  t        j                  t        j
                        } |        j                  |      }|j                         }t        |t        j
                         |j                  t        j
                        }t        |t        j
                         t        j                  d      }t        j                  t        |      5  t        d      }|j                  |       ddd       y# 1 sw Y   yxY w)r  pandas)columnsz0input_features is not equal to feature_names_in_r   abcdN)r[   importorskip	DataFramerJ  rK  r  r^   r  r-   reescaper\   r]   r   )r  pddfr  names_out_df_defaultnames_out_df_valid_inmsginvalid_namess           rC   test_one_to_one_features_pandasr+  
  s     
		X	&B	dii););	<B			2	B335+T-?-?@44T5G5GH,d.@.@A
))F
GC	z	- 0V
  /0 0 0s   .DDc                  @   t         j                  j                  d      } | j                  d      }t	        |      }t               j                  |      }|j                         }|j                  d   }t        |t        |      D cg c]  }d| 	 c}       yc c}w )z.Test that kernel centerer `feature_names_out`.r   )rk   ri   r:   kernelcentererN)rF   r   r   r  r
   r   r^   r  rH   r-   r   )rY   rc   
X_pairwiser  r  samples_out2rL   s          rC   &test_kernel_centerer_feature_names_outr0  7
  s     ))


"C&!Aq!J##J/H..0I##A&Ly|AT"UA^A3#7"UV"Us   B
c                 4   g dg dg dg}t        d|       j                  |      }t        |j                  g d       |j	                  |      }|j                  |      }||fD ]0  }| r t        |t        j                  |             %t        ||       2 y)z>Check that PowerTransfomer leaves constant features unchanged.)r  r   rT   r  r  r  N)r   r^   r)   r  r   r}   rF   r   )r  rc   r  XftXtXt_s         rC   'test_power_transformer_constant_featurer5  D
  s     
Z,A	K	H	L	LQ	OBBKK+


1
C	aBRy $Cq!12C#	$rD   z1.12z2scipy version 1.12 required for stable yeo-johnson)reasonc                      t        j                  g d      } d } || j                  dd              || dd j                  dd             y)a-  Verify that PowerTransformer operates without raising any warnings on valid data.

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