
     h46                        d dl Z d dlZd dlmZ d dl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 g dg dg dg d	gZe j                            d
dg dg dg dg dgfdg dg dg dg dgfdg dg dg dg dgfg          d             Zd Zd Ze j                            d
dg dg dg dg dgfdg dg dg dg dgfdg dg dg dg dgf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g d%g d&g d'fdg d%g d(g d)fdg d*g d(g d+fg          d,             Ze j                            d-dg d.g d/g d0g d1gfdg d2g d2g d3g d4gfdg d5g d6g d7g d7gfg          e j                            d8g d9          d:                         Ze j                            dg d          d;             Zd< Ze j                            d=dg d>fdg d?fg          d@             Z dA Z!e j                            dBej"        ej#        ej$        g          e j                            dCdej#        ej$        g          e j                            d8g d9          dD                                     Z%e j                            dEej"        ej#        ej$        g          e j                            d8g d9          dF                         Z&e j        '                    dG          e j                            dHddIg          dJ                         Z(dK Z)dL Z*dM Z+e j                            dNdOdP  edQ          D             fdRdS  edQ          D             fdTdU  edQ          D             fg          dV             Z,dS )W    N)clone)KBinsDiscretizer)OneHotEncoder)assert_array_almost_equalassert_array_equalassert_allclose_dense_sparse      ?)r         @      )r   g      @r
         ?)   g      @r      zstrategy, expecteduniform)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   kmeans)r   r   r   r   quantilec                     t          dd|           }|                    t                     t          ||                    t                               d S )N   ordinaln_binsencodestrategy)r   fitXr   	transform)r   expectedests      k/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/preprocessing/tests/test_discretization.pytest_fit_transformr$      sI     !I
I
I
ICGGAJJJxq!1!122222    c                  v   t          d                              t                     t          t          j        dg          d                                       t                     t          d                              t                    j        j        t          j        t                    k    sJ d S )Nr   r   r   )	r   fit_transformr   nparrayr   n_bins_dtypeint r%   r#   test_valid_n_binsr/       s    A,,Q///BHaSMM!,---;;A>>>1%%%))!,,4:bhsmmKKKKKKr%   c                  B   t          j        dd          } t          |           }d}t          j        t
          |          5  |                    t                     d d d            n# 1 swxY w Y   g d} t          |           }d}t          j        t
          |          5  |                    t                     d d d            n# 1 swxY w Y   g d} t          |           }d}t          j        t
          |          5  |                    t                     d d d            n# 1 swxY w Y   g d	} t          |           }d
}t          j        t
          |          5  |                    t                     d d d            d S # 1 swxY w Y   d S )N)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   r6   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.)r)   fullr   pytestraises
ValueErrorr(   r   )r   r"   err_msgs      r#   test_invalid_n_bins_arrayr<   &   s   WVS!!F
&
)
)
)CKG	z	1	1	1  !               YYF
&
)
)
)CKG	z	1	1	1  !               \\F
&
)
)
)C	 
 
z	1	1	1  !               F
&
)
)
)C	 
 
z	1	1	1  !                 sH   A**A.1A.&CCC	D00D47D4,FFF)r   r   r   r   r5   )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)   r*   shape
bin_edges_zipr+   )r   r!   r"   
n_features	bin_edgesr   s         r#   test_fit_transform_n_bins_arrayrD   L   s     ||I  	c!ff  xq!1!1222 !"1%J>J=0000 == 0 0	66A:-/////0 0r%   r   )r   r   r   c                    t          j        d           t          j        ddgddgddgddgg          }t	          | dd          }d	}t          j        t          |
          5  |                    |           d d d            n# 1 swxY w Y   |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   z2Feature 0 is constant and will be replaced with 0.r3   )warningssimplefilterr)   r*   r   r8   warnsUserWarningr   r+   r    r   zerosr?   )r   r   r"   warning_messageXts        r#   test_same_min_maxrN   a   s'   (###
1b'Ar7QFQF344A
HQy
I
I
IC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          }t          j        t
                    5  |                    |            d d d            n# 1 swxY w Y   t          d          }|                    |                     dd                     t          j        t
                    5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr1   r   r'   r   r   )	r)   aranger   r8   r9   r:   r   reshaper    )r   r"   s     r#   test_transform_1d_behaviorrR   o   sK   
	!A
!
$
$
$C	z	"	"  


               !
$
$
$C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                              |          }t          ||           d S )	N)r2         @g      @g       @g      $@r   r   )r   r   r   r   r   
   r   r   r   r   )r)   r*   rQ   r   r(   r   )rS   X_initXt_expectedr   rM   s        r#   test_numeric_stabilityr[   {   s    X0001199"a@@F(???++33B::K 	QA	9	5	5	5	C	CA	F	FB{B'''''r%   c                  4   t          g dd                              t                    } |                     t                    }t          g dd                              t                    } |                     t                    }t	          j        |          rJ t          t          d dD             d                              |          |           t          g dd                              t                    } |                     t                    }t	          j        |          sJ t          t          d	 dD             d
                              |          	                                |	                                           d S )Nr>   r   rX   onehot-densec                 6    g | ]}t          j        |          S r.   r)   rP   .0rS   s     r#   
<listcomp>z'test_encode_options.<locals>.<listcomp>        ;;;	!;;;r%   F)
categoriessparse_outputonehotc                 6    g | ]}t          j        |          S r.   r_   r`   s     r#   rb   z'test_encode_options.<locals>.<listcomp>   rc   r%   T)
r   r   r   r    spissparser   r   r(   toarray)r"   Xt_1Xt_2Xt_3s       r#   test_encode_optionsrn      sz   
,,,y
A
A
A
E
Ea
H
HC==D
,,,~
F
F
F
J
J1
M
MC==D{4     ;;l;;;5	
 	
 	

-

	   ,,,x
@
@
@
D
DQ
G
GC==D;t;;l;;;4	
 	
 	
 
t			    r%   z8strategy, expected_2bins, expected_3bins, expected_5bins)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r1   r1   )r   r   r   r   r   r   )r   r   r   r   r   r1   )r   r   r   r   r   r   )r   r   r   r   r1   r1   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   rT   rW   r   r   r   r   r   r   r   r      )r)   r*   rQ   r   r(   r   ravel)r   expected_2binsexpected_3binsexpected_5binsr   r"   rM   s          r#   test_nonuniform_strategiesrv      s     	&&&''//A66A !hy
I
I
IC			1		B~rxxzz222 !hy
I
I
IC			1		B~rxxzz222 !hy
I
I
IC			1		B~rxxzz22222r%   zstrategy, expected_inv)      r2         r   )r         @      r   )r   rV   rw   r   )r   rV   rw   r   )g      g      @g      g      )g      g      @g      g      ?)g      ?g      @g      g      ?)rw   r2   rx   g      )r   ry   rz   g        )r   rV   rw   g      ?r   )r   rf   r]   c                     t          d| |          }|                    t                    }|                    |          }t	          ||           d S )Nr   rp   )r   r(   r   inverse_transformr   )r   r   expected_invkbdrM   Xinvs         r#   test_inverse_transformr      sU    D !hv
F
F
FC			1		B  $$DlD11111r%   c                    t          j        g d          d d d f         }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   r1   r   rp   r
   rq   r   )axisr   )	r)   r*   r   r   r    r   maxr+   min)r   r   r~   X2X2ts        r#    test_transform_outside_fit_ranger      s    
qqq$w'A
!hy
I
I
ICGGAJJJ	2q'		111d7	#B
--

CswwAw*CK888swwAw,,,,,r%   c            	         t          j        g d          d d d f         } |                                 }t          dd          }|                    |           }t          | |           |                                }|                    |          }t          ||           t          |t          j        dgdgdgdgg                     d S )Nr   r   r   rX   r   r   r   )r)   r*   copyr   r(   r   r|   )r   X_beforer"   rM   	Xt_beforer   s         r#   test_overwriter      s    
qqq$w'AvvxxH
!I
6
6
6C			1		Bq(###		I  $$Dr9%%%tRXusecUSE&BCCDDDDDr%   zstrategy, expected_bin_edges)r   r   r   )r   r   r   c                    dgdgdgdgdgdgg}t          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   'Consider decreasing the number of bins.r3   )r   r8   rI   rJ   r   r   r@   )r   expected_bin_edgesr   r~   rL   s        r#   test_redundant_binsr      s     qcA3aS1#&A
!h
7
7
7C?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
}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   r1   rW   r   r   r   r   r3   r   )r)   r*   rQ   r   r8   rI   rJ   r   r   r@   r    )r   rC   rM   r~   rL   s        r#   !test_percentile_numeric_stabilityr   
  s.   
###$$,,R33A===>>I	)))			$	$R	+	+B
"Y
L
L
LC?O	k	9	9	9  


               cnQ/;;;cmmA..33333s   B<<C C in_dtype	out_dtypec                 .   t          j        t          |           }t          d||          }|                    |           ||}n+|"|j        t           j        k    rt           j        }n|j        }|                    |          }|j        |k    sJ d S N)r,   r   )r   r   r,   )	r)   r*   r   r   r   r,   float16float64r    )r   r   r   X_inputr~   expected_dtyperM   s          r#   test_consistent_dtyper     s     hq)))G
!F)
D
D
DCGGG "		w}
:: 	w		B8~%%%%%%r%   input_dtypec                 t   t          j        t          |           }t          d|t           j                  }|                    |           |                    |          }t          d|t           j                  }|                    |           |                    |          }t          ||           d S r   )	r)   r*   r   r   float32r   r    r   r   )r   r   r   kbd_32Xt_32kbd_64Xt_64s          r#   test_32_equal_64r   +  s    
 hq,,,G QvRZHHHF
JJwW%%E QvRZHHHF
JJwW%%E .....r%   z,ignore:In version 1.3 onwards, subsample=2e5	subsamplewarnc                    t          j        g d                              dd          }t          ddd          }|                    |           t          |          }|                    |            |                    |           t          |j        d	         |j        d	                   D ]%\  }}t           j	        
                    ||           &|j        j        |j        j        k    sJ d S )
Nr	   r   r   rW   r   r   r   r   r   )r)   r*   rQ   r   r   r   
set_paramsrA   r@   testingassert_allcloser?   )r   r   kbd_defaultkbd_with_subsamplingbin_kbd_defaultbin_kbd_with_subsamplings         r#   'test_kbinsdiscretizer_subsample_defaultr   @  s    	"""##++B22A""YTTTKOOA --##i#888Q58q!#7#B1#E6 6 N N11 	
""?4LMMMM!'+?+J+PPPPPPPr%   c                     t          j        g d                              dd          } t          d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   rW   r   r   r   )r   r   r   r   z4`subsample` must be used with `strategy="quantile"`.r3   )r)   r*   rQ   r   r8   r9   r:   r   )r   r~   r;   s      r#   0test_kbinsdiscretizer_subsample_invalid_strategyr   S  s    
"""##++B22A
"YVW
X
X
XCDG	z	1	1	1  


                 s   A>>BBc                  (   t           j                            dd                              dd          } t	          ddd          }d}t          j        t          |	          5  |                    |            d d d            d S # 1 swxY w Y   d S )
NiA r   r   d   r   r   r   >In version 1.3 onwards, subsample=2e5 will be used by default.r3   )	r)   randomrandrQ   r   r8   rI   FutureWarningr   )r   r~   msgs      r#   $test_kbinsdiscretizer_subsample_warnr   ]  s    
	vq!!))"a00A
#i*
M
M
MC
JC	m3	/	/	/  


                 s   $BBBc                  L   t           j                            dd                              dd          } t	          ddd          }t          |          }|                    t          d          	           d
}t          j	        t          |          5  |                    |            d d d            n# 1 swxY w Y   |                    |            t          j        |j        d         |j        d         k              rJ |j        j        |j        j        k    sJ d S )Ni`[ r   r   rW   r   r   r   g     jAr   r   r3   r   )r)   r   r   rQ   r   r   r   r-   r8   rI   r   r   allr@   r?   )r   r   r   r   s       r#   &test_kbinsdiscretizer_subsample_valuesr   g  sN   
	vq!!))"a00A""YTTTK --##c#hh#777
JC	m3	/	/	/                 Qvk,Q/3G3RST3UUVVVVV!'+?+J+PPPPPPPs   B88B<?B<zencode, expected_namesrf   c           	      \    g | ])}t          d           D ]}d| dt          |           *S r1   feat_rangefloatra   col_idbin_ids      r#   rb   rb   |  [       #Ahh   0v//f//   r%   r   r]   c           	      \    g | ])}t          d           D ]}d| dt          |           *S r   r   r   s      r#   rb   rb     r   r%   r   c                     g | ]}d | S r   r.   )ra   r   s     r#   rb   rb     s    <<<_F__<<<r%   c                 L   g dg dg dg dg}t          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   r1   r   r1   rX   c                     g | ]}d | S r   r.   r`   s     r#   rb   z>test_kbinsdiscrtizer_get_feature_names_out.<locals>.<listcomp>  s    333QjQjj333r%   r   r   r   N)r   r   r    r   get_feature_names_outr?   r   )r   expected_namesr   r~   rM   input_featuresoutput_namess          r#   *test_kbinsdiscrtizer_get_feature_names_outr   w  s    4 
kkk:::zzz:A
!F
3
3
3
7
7
:
:C	q		B33%((333N,,^<<L8A;,,Q/////|^44444r%   )-r8   numpyr)   scipy.sparsesparserh   rG   sklearnr   sklearn.preprocessingr   r   sklearn.utils._testingr   r   r   r   markparametrizer$   r/   r<   rD   rN   rR   r   r[   rn   rv   r   r   r   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r.   r%   r#   <module>r      s                     2 2 2 2 2 2 / / / / / /          +++->->->P 	\\\<<<|||LM	LLL,,,lllKL	lllLLL,,,MN 3 3 3L L L# # #L 	\\\<<<|||LM	LLL,,,lllKL	lllLLL,,,MN 
0 
0 
0 %F%F%FGG
7 
7 HG
7	 	 	 eeAqkk**( ( +*(  2 >	&&&(:(:(:<N<N<NO	%%%'9'9'9;M;M;MN	''');););=O=O=OP 3 3 3*  ''''''%%%%%%		
 000000///***		
 (((&&&&&&&&&		
' @ #H#H#HII2 2 JIA B2 %F%F%FGG- - HG-E E E "j)))%<x>U$V 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/& JKKtVn55Q Q 65 LKQ"    Q Q Q    #eAhh  	
  #eAhh  	
 
<<5588<<<=# ,5 5- ,5 5 5r%   