
    -i+U                     
   S SK r S SKrS SKrS SKJr  S SKJr  S SK	J
r
Jr  S SKJrJrJrJrJr  / SQ/ SQ/ SQ/ SQ/r\R&                  R)                  S	S
S/ SQ/ SQ/ SQ/ SQ/S4SS/ SQ/ SQ/ SQ/ SQ/S4SS/ SQ/ SQ/ SQ/ SQ/S4S
S/ SQ/ SQ/ SQ/ SQ// SQ4S
S/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4/
5      S 5       rS rS r\R&                  R)                  S	S
S/ SQ/ SQ/ SQ/ SQ/S4SS/ SQ/ SQ/ SQ/ SQ/S4SS/ SQ/ SQ/ SQ/ SQ/S4SS/ SQ/ SQ/ SQ/ SQ/S4SS/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4SS/ SQ/ SQ/ SQ/ SQ// SQ4/5      S  5       r\R&                  R3                  S!5      S" 5       r\R&                  R)                  S#SS/5      S$ 5       r\R&                  R)                  S#/ S%Q5      S& 5       rS' r\R&                  R)                  S(\" S)S*5      5      S+ 5       rS, r \R&                  R)                  S-S
S/ S.Q/ S/Q/ S0Q4SS/ S.Q/ S1Q/ S2Q4SS/ S3Q/ S1Q/ S4Q4/5      S5 5       r!\R&                  R)                  S6S
/ S7Q/ S8Q/ S9Q/ S:Q/S4S/ S;Q/ S;Q/ S<Q/ S=Q/S4S/ S>Q/ S?Q/ S@Q/ S@Q/S4/5      \R&                  R)                  SA/ SBQ5      SC 5       5       r"\R&                  R)                  S#/ S%Q5      SD 5       r#SE r$\R&                  R)                  SFS/ SGQS4S/ SGQS4/5      SH 5       r%SI r&\R&                  R)                  SJ\RN                  \RP                  \RR                  /5      \R&                  R)                  SKS\RP                  \RR                  /5      \R&                  R)                  SA/ SBQ5      SL 5       5       5       r*\R&                  R)                  SM\RN                  \RP                  \RR                  /5      \R&                  R)                  SA/ SBQ5      SN 5       5       r+SO r,\R&                  R)                  SPSQ\" SR5       V Vs/ s H!  n \" SS5        H  nSTU  SU\-" U5       3PM     M#     snn 4SV\" SR5       V Vs/ s H!  n \" SS5        H  nSTU  SU\-" U5       3PM     M#     snn 4SW\" SR5       V s/ s H  n STU  3PM
     sn 4/5      SX 5       r.\R&                  R)                  S#/ S%Q5      SY 5       r/SZ r0S[ r1gs  snn f s  snn f s  sn f )\    N)clone)KBinsDiscretizerOneHotEncoder)assert_allcloseassert_allclose_dense_sparseassert_array_almost_equalassert_array_equalignore_warnings      ?)r         @      )r   g      @r         ?)   g      @r      z2strategy, quantile_method, expected, sample_weightuniformwarn)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   kmeans)r   r   r   r   quantileaveraged_inverted_cdf)r   r   r   r   )r   r   r   r   )r   r      r   c                     [        SSXS9n[        [        S9   UR                  [        US9  S S S 5        [        UR                  [        5      U5        g ! , (       d  f       N.= f)Nr   ordinaln_binsencodestrategyquantile_method)categorysample_weight)r   r
   UserWarningfitXr	   	transform)r!   r"   expectedr%   ests        b/var/www/html/venv/lib/python3.13/site-packages/sklearn/preprocessing/tests/test_discretization.pytest_fit_transformr-      sS    D XC 
+	./ 
/ s}}Q'2 
/	.s   A
A$c                  F   [        SSS9R                  [        5        [        [        R                  " S/5      S   SS9R                  [        5        [        SSS9R                  [        5      R                  R                  [        R                  " [        5      :X  d   eg )Nr   r   r   r"   r   )	r   fit_transformr(   nparrayr'   n_bins_dtypeint     r,   test_valid_n_binsr8   _   s{    A/FGUUVWXxx}Q1HmA16MNRR	geerxx}% % %r7   c                     [         R                  " SS5      n [        U SS9nSn[        R                  " [
        US9   UR                  [        5        S S S 5        / SQn [        U SS9nSn[        R                  " [
        US9   UR                  [        5        S S S 5        / SQn [        U SS9nS	n[        R                  " [
        US9   UR                  [        5        S S S 5        / S
Qn [        U SS9nSn[        R                  " [
        US9   UR                  [        5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nx= f! , (       d  f       g = f)N)r             @r   r/   z:n_bins must be a scalar or array of shape \(n_features,\).match)r   r   r   r   r   r   r   z{KBinsDiscretizer received an invalid number of bins at indices 0, 3. Number of bins must be at least 2, and must be an int.) @r   r?   r   z{KBinsDiscretizer received an invalid number of bins at indices 0, 2. Number of bins must be at least 2, and must be an int.)r1   fullr   pytestraises
ValueErrorr0   r(   )r   r+   err_msgs      r,   test_invalid_n_bins_arrayrE   i   s(   WWVS!F
&:Q
RCKG	z	1! 
2 F
&:Q
RCKG	z	1! 
2 F
&:Q
RC	 
 
z	1! 
2 F
&:Q
RC	 
 
z	1! 
2	1; 
2	1 
2	1 
2	1 
2	1s/   D1EEE$1
D?
E
E!$
E2)r   r   r   r   r>   )r   r   r   r   linear)r   r   r   r   )r   r   r   r   c                    [        / SQSU US9R                  [        US9n[        UR	                  [        5      U5        [
        R                  " [        5      R                  S   nUR                  R                  U4:X  d   e[        UR                  UR                  5       H  u  pgUR                  US-   4:X  a  M   e   g )Nr   r   r   r   r   r   r$   r   )r   r'   r(   r	   r)   r1   r2   shape
bin_edges_zipr3   )r!   r"   r*   r%   r+   
n_features	bin_edgesr   s           r,   test_fit_transform_n_bins_arrayrN      s    l '	
 
c!=c)  s}}Q'2 !""1%J>>J=000 =	6A:-/// >r7   z&ignore: Bins whose width are too smallc            	         [         R                  " S/S/S/S/S/S//5      n [        SSS	S
S9nUR                  U / SQS9  [	        UR
                  S   / SQ5        [	        UR                  U 5      S/S/S/S/S/S//5        g)z;Check the impact of `sample_weight` one computed quantiles.r   r   r   r   i  i  
   r   r   r   r   )r   r   r   r   r   r   r$   r   )r   r   r   r   r           g      ?      @N)r1   r2   r   r'   r   rJ   r)   r(   r+   s     r,   *test_kbinsdiscretizer_effect_sample_weightrT      s     	2$qcA3v67A /	C GGA/G0CNN1%'89CMM!$usecUSEC53%&PQr7   r!   c                     U S:X  a  [        SSU SS9nO[        SSU S9n[        R                  " / SQ[        R                  S9n[        R                  " U5      nUR                  [        US	9  [        X#5        g
)z7Make sure that `sample_weight` is not changed in place.r   r   r   r   r   )r   r    r!   )r   r   r   r   r4   r$   N)r   r1   r2   float64copyr'   r(   r   )r!   r+   r%   sample_weight_copys       r,   /test_kbinsdiscretizer_no_mutating_sample_weightrZ      sm     :3	
 a	HMHH\<M/GGA]G+M6r7   )r   r   r   c                    [         R                  " S5        [        R                  " SS/SS/SS/SS//5      nU S:X  a  [	        U SSS	S
9nO[	        U SSS9nSn[
        R                  " [        US9   UR                  U5        S S S 5        UR                  S   S:X  d   eUR                  U5      n[        US S 2S4   [        R                  " UR                  S   5      5        g ! , (       d  f       Ni= f)Nalwaysr   r   r   r   r   r   r   r   )r!   r   r    r"   )r!   r   r    z2Feature 0 is constant and will be replaced with 0.r<   )warningssimplefilterr1   r2   r   rA   warnsr&   r'   r3   r)   r	   zerosrI   )r!   r(   r+   warning_messageXts        r,   test_same_min_maxrc      s    (#
1b'Ar7QFQF34A:3	
 9MJO	k	9
 
:;;q>Q	q	Br!Q$x!''!*!56 
:	9s   2C''
C5c                     [         R                  " S5      n [        SSS9n[        R                  " [
        5         UR                  U 5        S S S 5        [        SSS9nUR                  U R                  SS5      5        [        R                  " [
        5         UR                  U 5        S S S 5        g ! , (       d  f       Nn= f! , (       d  f       g = f)Nr:   r   r   r/   r   r   )	r1   aranger   rA   rB   rC   r'   reshaper)   rS   s     r,   test_transform_1d_behaviorrg     s    
		!A
!5L
MC	z	"
 
# !5L
MCGGAIIb!	z	"a 
#	" 
#	"
 
#	"s   B5C5
C
Cir   	   c                     [         R                  " / SQ5      R                  SS5      n[         R                  " / SQ5      R                  SS5      nUSU -  -  n[        SSSS	9R	                  U5      n[        X$5        g )
N)r;         @g      @g       @g      $@r   r   )r   r   r   r   r   rP   r   r   r   r   r    r"   )r1   r2   rf   r   r0   r	   )rh   X_initXt_expectedr(   rb   s        r,   test_numeric_stabilityro     sq    XX0199"a@F((?+33B:K 	QA	4K
mA  {'r7   c            
      "   [        / SQSSS9R                  [        5      n U R                  [        5      n[        / SQSSS9R                  [        5      n U R                  [        5      n[        R
                  " U5      (       a   e[        [        S Vs/ s H  n[        R                  " U5      PM     snSS9R                  U5      U5        [        / SQSSS9R                  [        5      n U R                  [        5      n[        R
                  " U5      (       d   e[        [        S Vs/ s H  n[        R                  " U5      PM     snS	S9R                  U5      R                  5       UR                  5       5        g s  snf s  snf )
NrH   r   r   rl   onehot-denseF)
categoriessparse_outputonehotT)r   r'   r(   r)   spissparser	   r   r1   re   r0   toarray)r+   Xt_1Xt_2rh   Xt_3s        r,   test_encode_optionsr{   '  sF   
I?V	c!f  ==D
/ 
c!f	 
 ==D{{4    .:;l		!l;5	

-
	 H>U	c!f  ==D;;t.:;l		!l;4	
 
t		 < <s    F0 FzIstrategy, quantile_method, expected_2bins, expected_3bins, expected_5bins)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r:   r:   )r   r   r   r   r   r   )r   r   r   r   r   r:   )r   r   r   r   r   r   )r   r   r   r   r:   r:   c                    [         R                  " / SQ5      R                  SS5      n[        SXSS9nUR	                  U5      n[        X'R                  5       5        [        SXSS9nUR	                  U5      n[        X7R                  5       5        [        SXSS9nUR	                  U5      n[        XGR                  5       5        g )	N)r   r   r   r   ri   rP   r   r   r   r   r   r!   r"   r    r      )r1   r2   rf   r   r0   r	   ravel)r!   r"   expected_2binsexpected_3binsexpected_5binsr(   r+   rb   s           r,   test_nonuniform_strategiesr   H  s    " 	&'//A6A 8YC 
		1	B~xxz2 8YC 
		1	B~xxz2 8YC 
		1	B~xxz2r7   z&strategy, expected_inv,quantile_method)      r;         r   )r   rR         r   )r   rk   r   r   )r   rk   r   r   )g      g      @g      g      )g      g      @g      g      ?)g      ?g      @g      g      ?)r   r;   r   g      )r   rR   r   rQ   )r   rk   r   g      ?r    )r   rt   rq   c                 |    [        SXUS9nUR                  [        5      nUR                  U5      n[	        X&5        g )Nr   r}   )r   r0   r(   inverse_transformr   )r!   r    expected_invr"   kbdrb   Xinvs          r,   test_inverse_transformr   q  s@    J 8VC 
		1	B  $Dl1r7   c                    [         R                  " / SQ5      S S 2S 4   nU S:X  a  [        SU SSS9nO[        SU SS9nUR                  U5        [         R                  " SS	/5      S S 2S 4   nUR	                  U5      n[        UR                  S
S9S-   UR                  5        [        UR                  S
S9S
/5        g )Nr   r   r   r   r   r:   r   r   )r   r!   r    r"   )r   r!   r    r   r~   r   )axisr   )	r1   r2   r   r'   r)   r	   maxr3   min)r!   r(   r   X2X2ts        r,    test_transform_outside_fit_ranger     s    
q$w'A:3	
 a(9MGGAJ	2q'	1d7	#B
--
CswwAw*CKK8swwAw,r7   c            	      X   [         R                  " / SQ5      S S 2S 4   n U R                  5       n[        SSSS9nUR	                  U 5      n[        X5        UR                  5       nUR                  U5      n[        X45        [        U[         R                  " S/S/S/S//5      5        g )	Nr   r   r   r   )r   r"   r    r   r   r   )r1   r2   rX   r   r0   r	   r   )r(   X_beforer+   rb   	Xt_beforer   s         r,   test_overwriter     s    
q$w'AvvxH
"9)C 
		1	Bq#	I  $Dr%tRXXusecUSE&BCDr7   z-strategy, expected_bin_edges, quantile_method)r   r   r   c                     S/S/S/S/S/S//n[        SXS S9nSn[        R                  " [        US9   UR	                  U5        S S S 5        [        UR                  S   U5        g ! , (       d  f       N(= f)Nr   r   )r   r!   r"   	subsample'Consider decreasing the number of bins.r<   )r   rA   r_   r&   r'   r   rJ   )r!   expected_bin_edgesr"   r(   r   ra   s         r,   test_redundant_binsr     sy     qcA3aS1#&A
8PTC @O	k	9
 
: cnnQ/1CD 
:	9s   A))
A7c                     [         R                  " / SQ5      R                  SS5      n [         R                  " / SQ5      n[         R                  " / SQ5      R                  SS5      n[        SSSS	S
9nSn[        R
                  " [        US9   UR                  U 5        S S S 5        [        UR                  S   U5        [        UR                  U 5      U5        g ! , (       d  f       NC= f)N)皙?r   ffffff?r   r   )r   gq=
ףp?g=
ףp=?gzG?gp=
ף?r   )r   r   r:   rP   r   r   rF   r   r   r<   r   )r1   r2   rf   r   rA   r_   r&   r'   r   rJ   r)   )r(   rM   rb   r   ra   s        r,   !test_percentile_numeric_stabilityr     s    
#$,,R3A=>I	)		$	$R	+B
 	C @O	k	9
 
: cnnQ/;cmmA.3	 
:	9s   C
C-in_dtype	out_dtypec                 >   [         R                  " [        U S9n[        SUSUS9nUR	                  U5        Ub  UnO>Uc/  UR
                  [         R                  :X  a  [         R                  nOUR
                  nUR                  U5      nUR
                  U:X  d   eg NrV   r   r   )r   r    r"   r4   )	r1   r2   r(   r   r'   r4   float16rW   r)   )r   r   r    X_inputr   expected_dtyperb   s          r,   test_consistent_dtyper     s     hhq)G
/	C GGG "		w}}

: 	w	B88~%%%r7   input_dtypec                 <   [         R                  " [        U S9n[        SUS[         R                  S9nUR                  U5        UR                  U5      n[        SUS[         R                  S9nUR                  U5        UR                  U5      n[        XF5        g r   )	r1   r2   r(   r   float32r'   r)   rW   r   )r   r    r   kbd_32Xt_32kbd_64Xt_64s          r,   test_32_equal_64r     s    
 hhq,G /jj	F JJwW%E /jj	F JJwW%E .r7   c                     [         R                  " / SQ5      R                  SS5      n [        SSSSS9nUR	                  U 5        [        U5      nUR                  S S	9  UR	                  U 5        [        UR                  S
   UR                  S
   5       H$  u  p4[         R                  R                  X45        M&     UR                  R                  UR                  R                  :X  d   eg )Nr   r   r   rP   r   r   r   r   r   r   )r1   r2   rf   r   r'   r   
set_paramsrK   rJ   testingr   rI   )r(   kbd_defaultkbd_without_subsamplingbin_kbd_defaultbin_kbd_with_subsamplings        r,   'test_kbinsdiscretizer_subsample_defaultr   "  s    
"#++B2A"/	K OOA#K0&&&6"58q!#:#E#Ea#H61 	

""?M6 !!''+B+M+M+S+SSSSr7   zencode, expected_namesrt   r   r:   feat_rq   r   c                 8   / SQ/ SQ/ SQ/ SQ/n[        SU SS9R                  U5      nUR                  U5      n[        S5       Vs/ s H  nS	U 3PM
     nnUR	                  U5      nUR
                  S
   UR
                  S   :X  d   e[        Xq5        gs  snf )zSCheck get_feature_names_out for different settings.
Non-regression test for #22731
r   r   r   r   r   r   r   r   r   r   r:   r   r:   r   rl   r   r   r   r   N)r   r'   r)   rangeget_feature_names_outrI   r	   )r    expected_namesr(   r   rb   rh   input_featuresoutput_namess           r,   *test_kbinsdiscrtizer_get_feature_names_outr   8  s    4 
k:z:A
1H	c!f  
q	B*/(3(QQCj(N3,,^<L88A;,,,Q////|4	 4s   Bc                 d   [         R                  R                  U5      R                  S5      S-   nU S:X  a  [	        U SUSS9nO[	        U SUS9nUR                  U5        [        U5      nUR                  S S9  UR                  U5        [        UR                  S	   UR                  S	   S
S9  g )N)i r   r   r   iP  r   )r!   r   random_stater"   )r!   r   r   r   r   g{Gz?)rtol)
r1   randomRandomStaterandom_sampler   r'   r   r   r   rJ   )r!   global_random_seedr(   kbd_subsamplingkbd_no_subsamplings        r,   test_kbinsdiscretizer_subsampler   `  s     			01??LqPA:*+3	
 +=O
 /!!D!11 ""1%'9'D'DQ'Gdr7   c                      / SQ/ SQ/ SQ/ SQ/n [         R                  " [        SS9   [        SS9R	                  U 5        S S S 5        g ! , (       d  f       g = f)	Nr   r   r   r   a%  The current default behavior, quantile_method='linear', will be changed to quantile_method='averaged_inverted_cdf' in scikit-learn version 1.9 to naturally support sample weight equivalence properties by default. Pass quantile_method='averaged_inverted_cdf' explicitly to silence this warning.r<   r   )r!   )rA   r_   FutureWarningr   r'   )r(   s    r,   $test_quantile_method_future_warningsr   }  sI    	k:z:A	
 	*-11!4
 
 
s   A


Ac                      / SQ/ SQ/ SQ/ SQ/n Sn[         R                  " [        US9   [        SSS	9R	                  U / S
QS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   zWhen fitting with strategy='quantile' and sample weights, quantile_method should either be set to 'averaged_inverted_cdf' or 'inverted_cdf', got quantile_method='linear' instead.r<   r   rF   )r!   r"   )r   r   r   r   r$   )rA   rB   rC   r   r'   )r(   expected_msgs     r,   /test_invalid_quantile_method_with_sample_weightr     sb    	k:z:A	@ 
 

 	*hGKK& 	L 	
	
 
 
s   A
A)2r]   numpyr1   rA   scipy.sparsesparseru   sklearnr   sklearn.preprocessingr   r   sklearn.utils._testingr   r   r   r	   r
   r(   markparametrizer-   r8   rE   rN   filterwarningsrT   rZ   rc   rg   r   ro   r{   r   r   r   r   r   r   r   r   rW   r   r   r   floatr   r   r   r   )col_idbin_ids   00r,   <module>r      s        A  +->P 8 <|D		
 <|D		
 #<|D		
 <|D		
 <|D		
 #<|D		
 #<|D		
 #<|D		
 <|D		
 <|D		
o=@B3C@B3%#L 8 <|D		
 <|D		
 <|D		
 #<|D		
 #<|D		
 #<|D		
 #<|D		
 <|D		
W14j0k4j0  DER FR  h
%;<7 =7$ %FG7 H7*	 eAqk*	( +	(B O	F.0BDVW	6-/ACUV#	

336 , ''%%	 		
 00/*	 		
 (&&&	 $		
+"F #HI2 JG"H2 %FG- H-(E  3	["9:	;'	E	E4* bjj"**bjj%IJtRZZ&DE#HI& J F K&, RZZ(LM#HI/ J N/8T,   $Ah&F#AhF vhaf/& 0&	
  $Ah&F#AhF vhaf/& 0&	
 
58<8tF8_8<=#,5-,5$ %FG H85
] =s   (U(U
U