
    /ii+U                     
   d dl Z d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlmZmZmZmZmZ g dg dg dg dgZej                            d	d
dg dg dg dg dgdfddg dg dg dg dgdfddg dg dg dg dgdfd
dg dg dg dg dgg dfd
dg dg dg dg dgg dfddg dg dg dg dgg dfddg dg dg dg dgg dfddg dg dg dg dgg dfddg dg dg dg dgg dfddg dg dg dg dgg dfg
          d             Zd Zd Zej                            d	d
dg dg dg dg dgdfddg dg dg dg dgdfddg dg dg dg dgdfddg dg dg dg dgdfddg dg dg dg dgg dfddg dg dg dg dgg dfddg dg dg dg dgg dfddg dg dg dg dgg dfg          d              Zej                            d!          d"             Zej                            d#ddg          d$             Zej                            d#g d%          d&             Zd' Zej                            d( ed)d*                    d+             Zd, Z ej                            d-d
dg d.g d/g d0fddg d.g d1g d2fddg d3g d1g d4fg          d5             Z!ej                            d6d
g d7g d8g d9g d:gdfdg d;g d;g d<g d=gdfdg d>g d?g d@g d@gdfg          ej                            dAg dB          dC                         Z"ej                            d#g d%          dD             Z#dE Z$ej                            dFdg dGdfdg dGdfg          dH             Z%dI Z&ej                            dJej'        ej(        ej)        g          ej                            dKdej(        ej)        g          ej                            dAg dB          dL                                     Z*ej                            dMej'        ej(        ej)        g          ej                            dAg dB          dN                         Z+dO Z,ej                            dPdQdR  edS          D             fdTdU  edS          D             fdVdW  edS          D             fg          dX             Z-ej                            d#g d%          dY             Z.dZ Z/d[ Z0dS )\    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                    t          dd| |          }t          t                    5  |                    t          |           d d d            n# 1 swxY w Y   t          |                    t                    |           d S )Nr   ordinaln_binsencodestrategyquantile_method)categorysample_weight)r   r
   UserWarningfitXr	   	transform)r!   r"   expectedr%   ests        u/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/preprocessing/tests/test_discretization.pytest_fit_transformr-      s    D X  C 
+	.	.	. 0 0///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s}}Q''22222s   AAAc                  |   t          dd                              t                     t          t          j        dg          d         d                              t                     t          dd                              t                    j        j        t          j        t                    k    sJ d S )Nr   r   r   r"   r   )	r   fit_transformr(   nparrayr'   n_bins_dtypeint     r,   test_valid_n_binsr8   _   s    A/FGGGUUVWXXXx}}Q1H  mA16MNNNRR	 erx}}% % % % % %r7   c                  J   t          j        dd          } t          | d          }d}t          j        t
          |          5  |                    t                     d d d            n# 1 swxY w Y   g d} t          | d          }d}t          j        t
          |          5  |                    t                     d d d            n# 1 swxY w Y   g d} t          | d          }d	}t          j        t
          |          5  |                    t                     d d d            n# 1 swxY w Y   g d
} t          | d          }d}t          j        t
          |          5  |                    t                     d d d            d S # 1 swxY w Y   d S )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   WVS!!F
&:Q
R
R
RCKG	z	1	1	1  !               YYF
&:Q
R
R
RCKG	z	1	1	1  !               \\F
&:Q
R
R
RC	 
 
z	1	1	1  !               F
&:Q
R
R
RC	 
 
z	1	1	1  !                 sH   A++A/2A/(CCCD33D7:D70FFF)r   r   r   r   r>   )r   r   r   r   linear)r   r   r   r   )r   r   r   r   c                    t          g dd| |                              t          |          }t          |                    t                    |           t          j        t                    j        d         }|j        j        |fk    sJ t          |j        |j
                  D ]\  }}|j        |dz   fk    sJ d S )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22 !"1%J>J=0000 == 0 0	66A:-/////0 0r7   z&ignore: Bins whose width are too smallc            	      6   t          j        dgdgdgdgdgdgg          } t          ddd	d
          }|                    | g d           t	          |j        d         g d           t	          |                    |           dgdgdgdgdgdgg           dS )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77A /	  C GGA///G000CN1%'8'8'8999CMM!$$usecUSEC53%&PQQQQQr7   r!   c                 "   | dk    rt          dd| d          }nt          dd|           }t          j        g dt          j                  }t          j        |          }|                    t          |	           t          ||           d
S )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      s     :3	
 
 
 a	HMMMH\\\<<<M//GGA]G+++M#566666r7   )r   r   r   c                    t          j        d           t          j        ddgddgddgddgg          }| dk    rt	          | ddd	
          }nt	          | dd          }d}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   |j	        d         dk    sJ |
                    |          }t          |d d df         t          j        |j        d                              d S )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      sV   (###
1b'Ar7QFQF344A:3	
 
 
 9MMMJO	k	9	9	9  


              ;q>Q	q		Br!!!Q$x!'!*!5!566666s   >B  B$'B$c                     t          j        d          } t          dd          }t          j        t
                    5  |                    |            d d d            n# 1 swxY w Y   t          dd          }|                    |                     dd                     t          j        t
                    5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr:   r   r   r/   r   r   )	r1   aranger   rA   rB   rC   r'   reshaper)   rS   s     r,   test_transform_1d_behaviorrg     sQ   
	!A
!5L
M
M
MC	z	"	"  


               !5L
M
M
MCGGAIIb!	z	"	"  a                 s#   A!!A%(A%?C""C&)C&ir   	   c                 (   t          j        g d                              dd          }t          j        g d                              dd          }|d| z  z  }t          ddd	                              |          }t          ||           d S )
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     s    X0001199"a@@F(???++33B::K 	QA	4K
 
 
mA  {B'''''r7   c                  :   t          g ddd                              t                    } |                     t                    }t          g ddd                              t                    } |                     t                    }t	          j        |          rJ t          t          d dD             d                              |          |           t          g dd	d                              t                    } |                     t                    }t	          j        |          sJ t          t          d
 dD             d                              |          	                                |	                                           d S )NrH   r   r   rl   onehot-densec                 6    g | ]}t          j        |          S r6   r1   re   .0rh   s     r,   
<listcomp>z'test_encode_options.<locals>.<listcomp>5       ;;;	!;;;r7   F)
categoriessparse_outputonehotc                 6    g | ]}t          j        |          S r6   rs   rt   s     r,   rv   z'test_encode_options.<locals>.<listcomp>@  rw   r7   T)
r   r'   r(   r)   spissparser	   r   r0   toarray)r+   Xt_1Xt_2Xt_3s       r,   test_encode_optionsr   '  s   
||I?V  	c!ff  ==D
||/   
c!ff	 
 ==D{4     ;;l;;;5	
 	
 	

-

	   ||H>U  	c!ff  ==D;t;;l;;;4	
 	
 	
 
t			    r7   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                    t          j        g d                              dd          }t          d| |d          }|                    |          }t          ||                                           t          d| |d          }|                    |          }t          ||                                           t          d| |d          }|                    |          }t          ||                                           d S )	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66A 8_Y  C 
		1		B~rxxzz222 8_Y  C 
		1		B~rxxzz222 8_Y  C 
		1		B~rxxzz2222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   rz   rq   c                     t          d| ||          }|                    t                    }|                    |          }t	          ||           d S )Nr   r   )r   r0   r(   inverse_transformr   )r!   r    expected_invr"   kbdrb   Xinvs          r,   test_inverse_transformr   q  s`    J 8_V  C 
		1		B  $$DlD11111r7   c                    t          j        g d          d d d f         }| dk    rt          d| dd          }nt          d| d          }|                    |           t          j        dd	g          d d d f         }|                    |          }t          |                    d
          dz   |j                   t          |                    d
          d
g           d S )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    
qqq$w'A:3	
 
 
 a(9MMMGGAJJJ	2q'		111d7	#B
--

CswwAw*CK888swwAw,,,,,r7   c            	         t          j        g d          d d d f         } |                                 }t          ddd          }|                    |           }t          | |           |                                }|                    |          }t          ||           t          |t          j        dgdgdgdgg                     d S )	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    
qqq$w'AvvxxH
"9)  C 
		1		Bq(###		I  $$Dr9%%%tRXusecUSE&BCCDDDDDr7   z-strategy, expected_bin_edges, quantile_method)r   r   r   c                    dgdgdgdgdgdgg}t          d| |d           }d}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   t          |j        d         |           d S )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     s     qcA3aS1#&A
8_PT  C @O	k	9	9	9  


               cnQ/1CDDDDDs   A!!A%(A%c                     t          j        g d                              dd          } t          j        g d          }t          j        g d                              dd          }t          dddd	
          }d}t	          j        t          |          5  |                    |            d d d            n# 1 swxY w Y   t          |j	        d         |           t          |
                    |           |           d S )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33A===>>I	)))			$	$R	+	+B
 	  C @O	k	9	9	9  


               cnQ/;;;cmmA..33333s   B==CCin_dtype	out_dtypec                 0   t          j        t          |           }t          d|d|          }|                    |           ||}n+|"|j        t           j        k    rt           j        }n|j        }|                    |          }|j        |k    sJ d S 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     hq)))G
/	  C GGG "		w}
:: 	w		B8~%%%%%%r7   input_dtypec                 x   t          j        t          |           }t          d|dt           j                  }|                    |           |                    |          }t          d|dt           j                  }|                    |           |                    |          }t          ||           d S 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    
 hq,,,G /j	  F JJwW%%E /j	  F JJwW%%E .....r7   c                     t          j        g d                              dd          } t          dddd          }|                    |            t          |          }|                    d 	           |                    |            t          |j        d
         |j        d
                   D ]%\  }}t           j	        
                    ||           &|j        j        |j        j        k    sJ d S )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22A"/	  K OOA#K00&&&666"""58q!#:#Ea#H6 6 N N11 	
""?4LMMMM!'+B+M+SSSSSSSr7   zencode, expected_namesrz   c           	      \    g | ])}t          d           D ]}d| dt          |           *S r:   feat_rangefloatru   col_idbin_ids      r,   rv   rv   =  [       #Ahh   0v//f//   r7   r   rq   c           	      \    g | ])}t          d           D ]}d| dt          |           *S r   r   r   s      r,   rv   rv   E  r   r7   r   c                     g | ]}d | S r   r6   )ru   r   s     r,   rv   rv   K  s    <<<_F__<<<r7   c                 N   g dg dg dg dg}t          d| d                              |          }|                    |          }d t          d	          D             }|                    |          }|j        d
         |j        d         k    sJ t          ||           dS )z[Check 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   c                     g | ]}d | S r   r6   rt   s     r,   rv   z>test_kbinsdiscrtizer_get_feature_names_out.<locals>.<listcomp>Y  s    333QjQjj333r7   r   r   r   N)r   r'   r)   r   get_feature_names_outrI   r	   )r    expected_namesr(   r   rb   input_featuresoutput_namess          r,   *test_kbinsdiscrtizer_get_feature_names_outr   8  s    4 
kkk:::zzz:A
1H  	c!ff  
q		B33%((333N,,^<<L8A;,,Q/////|^44444r7   c                    t           j                            |                              d          dz   }| dk    rt	          | d|d          }nt	          | d|          }|                    |           t          |          }|                    d            |                    |           t          |j	        d	         |j	        d	         d
           d S )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1??LLqPA:*+3	
 
 
 +=O
 
 
 //!!D!1111 "1%'9'DQ'Gd     r7   c                      g dg dg dg dg} t          j        t          d          5  t          d                              |            d d d            d S # 1 swxY w Y   d S )	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   }  s    	kkk:::zzz:A	
 
 
 	5 	5 	*---11!444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   $AA"Ac                      g dg dg dg dg} d}t          j        t          |          5  t          dd	                              | g d
           d d d            d S # 1 swxY w Y   d S )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     s    	kkk:::zzz:A	@ 
 

 
 
 
 
 	*hGGGKK&,, 	L 	
 	
 	
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   )A""A&)A&)1r]   numpyr1   rA   scipy.sparsesparser|   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   r   r   r   r   r6   r7   r,   <module>r      s

                     A A A A A A A A              +++->->->P 8 \\<<<|||D		
 \\<<<|||D		
 #\\<<<|||D		
 \\<<<|||DLL		
 \\<<<|||DLL		
 #\\<<<|||DLL		
 #\\<<<|||DLL		
 #\\<<<|||DLL		
 \\<<<|||DLL		
 \\<<<|||DLL		
o=@ @B3 3C@ @B3% % %# # #L 8 \\<<<|||D		
 \\<<<|||D		
 \\<<<|||D		
 #\\<<<|||D		
 #\\<<<|||DLL		
 #\\<<<|||DLL		
 #\\<<<|||DLL		
 \\<<<|||DLL		
W14 4j0 0k4 4j0  DEER R FER  h
%;<<7 7 =<7$ %F%F%FGG7 7 HG7*	 	 	 eeAqkk**	( 	( +*	(  B O	F...0B0B0BDVDVDVW	6---/A/A/ACUCUCUV#	

 3 3 36 , ''''''%%%%%%	 		
 000000///***	 		
 (((&&&&&&&&&	 $		
+" "F #H#H#HII2 2 JIG" "H2 %F%F%FGG- - HG-(E E E  3	[[["9:	;;;' 	E 	E 	E4 4 4* bj"*bj%IJJtRZ&DEE#H#H#HII& & JI FE KJ&, RZ(LMM#H#H#HII/ / JI NM/8T T T,   #eAhh  	
  #eAhh  	
 
<<5588<<<=# ,5 5- ,5$ %F%F%FGG  HG85 5 5
 
 
 
 
r7   