
    MpjR                     
   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/ S/Q4SS/ S-Q/ S0Q/ S1Q4SS/ S2Q/ S0Q/ S3Q4/5      S4 5       r!\R&                  R)                  S5S
/ S6Q/ S7Q/ S8Q/ S9Q/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)                  S@/ SAQ5      SB 5       5       r"\R&                  R)                  S"/ S$Q5      SC 5       r#SD r$\R&                  R)                  SES/ SFQS4S/ SFQS4/5      SG 5       r%SH r&\R&                  R)                  SI\RN                  \RP                  \RR                  /5      \R&                  R)                  SJS\RP                  \RR                  /5      \R&                  R)                  S@/ SAQ5      SK 5       5       5       r*\R&                  R)                  SL\RN                  \RP                  \RR                  /5      \R&                  R)                  S@/ SAQ5      SM 5       5       r+SN r,\R&                  R)                  SOSP\" SQ5       V Vs/ s H!  n \" SR5        H  nSSU  ST\-" U5       3PM     M#     snn 4SU\" SQ5       V Vs/ s H!  n \" SR5        H  nSSU  ST\-" U5       3PM     M#     snn 4SV\" SQ5       V s/ s H  n SSU  3PM
     sn 4/5      SW 5       r.\R&                  R)                  S"/ S$Q5      SX 5       r/SY r0gs  snn f s  snn f s  sn f )Z    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averaged_inverted_cdf)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   kmeans)r   r   r   r   quantile)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        k/var/www/html/pdf-tiff/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_binsr7   _   s{    A/FGUUVWXxx}Q1HmA16MNRR	geerxx}% % %r6   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.)r0   fullr   pytestraises
ValueErrorr/   r'   )r   r*   err_msgs      r+   test_invalid_n_bins_arrayrD   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(   r0   r1   shape
bin_edges_zipr2   )r    r!   r)   r$   r*   
n_features	bin_edgesr   s           r+   test_fit_transform_n_bins_arrayrM      s    l '	
 
c!=c)  s}}Q'2 !""1%J>>J=000 =	6A:-/// >r6   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)r0   r1   r   r&   r   rI   r(   r'   r*   s     r+   *test_kbinsdiscretizer_effect_sample_weightrS      s     	2$qcA3v67A /	C GGA/G0CNN1%'89CMM!$usecUSEC53%&PQr6   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   r3   r#   N)r   r0   r1   float64copyr&   r'   r   )r    r*   r$   sample_weight_copys       r+   /test_kbinsdiscretizer_no_mutating_sample_weightrY      sm     :3	
 a	HMHH\<M/GGA]G+M6r6   )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simplefilterr0   r1   r   r@   warnsr%   r&   r2   r(   r	   zerosrH   )r    r'   r*   warning_messageXts        r+   test_same_min_maxrb      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)Nr9   r   r   r.   r   r   )	r0   aranger   r@   rA   rB   r&   reshaper(   rR   s     r+   test_transform_1d_behaviorrf     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   rO   r   r   r   r   r   r!   )r0   r1   re   r   r/   r	   )rg   X_initXt_expectedr'   ra   s        r+   test_numeric_stabilityrn     sq    XX0199"a@F((?+33B:K 	QA	4K
mA  {'r6   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 )
NrG   r   r   rk   onehot-denseF)
categoriessparse_outputonehotT)r   r&   r'   r(   spissparser	   r   r0   rd   r/   toarray)r*   Xt_1Xt_2rg   Xt_3s        r+   test_encode_optionsrz   '  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   r9   r9   )r   r   r   r   r   r   )r   r   r   r   r   r9   )r   r   r   r   r   r   )r   r   r   r   r9   r9   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   rh   rO   r   r   r   r   r   r    r!   r   r      )r0   r1   re   r   r/   r	   ravel)r    r!   expected_2binsexpected_3binsexpected_5binsr'   r*   ra   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2r6   z&strategy, expected_inv,quantile_method)      r:         r   )r   rQ         r   )r   rj   r   r   )r   rj   r   r   )g      g      @g      g      )g      g      @g      g      ?)g      ?g      @g      g      ?)r   r:   r   g      )r   rQ   r   rP   )r   rj   r   g      ?r   )r   rs   rp   c                 |    [        SXUS9nUR                  [        5      nUR                  U5      n[	        X&5        g )Nr   r|   )r   r/   r'   inverse_transformr   )r    r   expected_invr!   kbdra   Xinvs          r+   test_inverse_transformr   }  s@    J 8VC 
		1	B  $Dl1r6   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   r9   r   r   )r   r    r   r!   )r   r    r   r   r}   r   )axisr   )	r0   r1   r   r&   r(   r	   maxr2   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,r6   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   )r0   r1   rW   r   r/   r	   r   )r'   X_beforer*   ra   	Xt_beforer   s         r+   test_overwriter     s    
q$w'AvvxH
"9)C 
		1	Bq#	I  $Dr%tRXXusecUSE&BCDr6   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   r@   r^   r%   r&   r   rI   )r    expected_bin_edgesr!   r'   r   r`   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   r9   rO   r   r   rE   r   r   r;   r   )r0   r1   re   r   r@   r^   r%   r&   r   rI   r(   )r'   rL   ra   r   r`   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 NrU   r   r   )r   r   r!   r3   )	r0   r1   r'   r   r&   r3   float16rV   r(   )r   r   r   X_inputr   expected_dtypera   s          r+   test_consistent_dtyper     s     hhq)G
/	C GGG "		w}}

: 	w	B88~%%%r6   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   )	r0   r1   r'   r   float32r&   r(   rV   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 .r6   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   rO   r   r   r   r   r   r   )r0   r1   re   r   r&   r   
set_paramsrJ   rI   testingr   rH   )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Sr6   zencode, expected_namesrs   r   r9   feat_rp   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   r9   r   r9   r   rk   r   r   r   r   N)r   r&   r(   rangeget_feature_names_outrH   r	   )r   expected_namesr'   r   ra   rg   input_featuresoutput_namess           r+   *test_kbinsdiscrtizer_get_feature_names_outr   D  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)
r0   randomRandomStaterandom_sampler   r&   r   r   r   rI   )r    global_random_seedr'   kbd_subsamplingkbd_no_subsamplings        r+   test_kbinsdiscretizer_subsampler   l  s     			01??LqPA:*+3	
 +=O
 /!!D!11 ""1%'9'D'DQ'Gdr6   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   rE   )r    r!   )r   r   r   r   r#   )r@   rA   rB   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)1r\   numpyr0   r@   scipy.sparsesparsert   sklearnr   sklearn.preprocessingr   r   sklearn.utils._testingr   r   r   r	   r
   r'   markparametrizer,   r7   rD   rM   filterwarningsrS   rY   rb   rf   r   rn   rz   r   r   r   r   r   r   r   r   rV   r   r   r   floatr   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 #	
 #	
 #	
435436 , ''%%	 $		
 00/*	 $		
 (&&&	 $		
+"F #HI2 JG"H2 %FG- H-(E  3	["9:	; 78	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
A =s   (U(U
U