
    0PhC                     	   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 g dg dg dg dgZej                            d	d
g dg dg d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dg dg dg dg dgg dfdg dg dg dg dgg dfdg dg dg dg dgg dfdg dg dg dg dgg dfdg dg dg dg dgg dfg          d             Zd Zej                            dd
g          d             Zd Zej                            d	d
g dg dg d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dg dg dg dg dgg dfdg dg dg dg dgg df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
g d,g d-g d.fdg d,g d/g d0fdg d1g d/g d2fg          d3             Z!ej                            d4d
g d5g d6g d7g d8gfdg d9g d9g d:g d;gfdg d<g d=g d>g d>gfg          ej                            d?g d@          dA                         Z"ej                            dg d#          dB             Z#dC Z$ej                            dDdg dEfdg dFfg          dG             Z%dH Z&ej                            dIej'        ej(        ej)        g          ej                            dJdej(        ej)        g          ej                            d?g d@          dK                                     Z*ej                            dLej'        ej(        ej)        g          ej                            d?g d@          dM                         Z+dN Z,ej                            dOdPdQ  edR          D             fdSdT  edR          D             fdUdV  edR          D             fg          dW             Z-ej                            dg d#          dX             Z.dY Z/dS )Z    N)clone)KBinsDiscretizerOneHotEncoder)assert_allcloseassert_allclose_dense_sparseassert_array_almost_equalassert_array_equal      ?)r         @      )r   g      @r         ?)   g      @r      z!strategy, expected, sample_weightuniform)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                     t          dd|           }|                    t          |           t          ||                    t                               d S )Nr   ordinaln_binsencodestrategysample_weight)r   fitXr	   	transform)r   expectedr    ests       o/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/preprocessing/tests/test_discretization.pytest_fit_transformr'      sQ    D !I
I
I
ICGGA]G+++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_binsr2   :   s    A,,Q///BHaSMM!,---;;A>>>1%%%))!,,4:bhsmmKKKKKKr(   r   c                    t          j        t          t                              }t	          d|           }d}t          j        t          |          5  |                    t          |           ddd           dS # 1 swxY w Y   dS )z=Check that we raise an error when the wrong strategy is used.)shaper   )r   r   zK`sample_weight` was provided but it cannot be used with strategy='uniform'.matchr   N)	r,   oneslenr"   r   pytestraises
ValueErrorr!   )r   r    r%   err_msgs       r&   1test_kbinsdiscretizer_wrong_strategy_with_weightsr=   @   s     G3q66+++M
!h
7
7
7CU  
z	1	1	1 0 0///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   B  BB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,\).r5   )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   rB   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   r9   r:   r;   r+   r"   )r   r%   r<   s      r&   test_invalid_n_bins_arrayrD   L   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   rA   )r   r   r   r   )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,   r-   r4   
bin_edges_zipr.   )r   r$   r    r%   
n_features	bin_edgesr   s          r&   test_fit_transform_n_bins_arrayrK   r   s    J ||I  	c!=c))  xq!1!1222 !"1%J>J=0000 == 0 0	66A:-/////0 0r(   z&ignore: Bins whose width are too smallc            	      4   t          j        dgdgdgdgdgdgg          } t          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           g      ?r@   N)r,   r-   r   r!   r   rG   r#   r"   r%   s     r&   *test_kbinsdiscretizer_effect_sample_weightrP      s     	2$qcA3v677A "Y
L
L
LCGGA///G000CN1%~~~666CMM!$$usecUSEC53%&PQQQQQr(   c                     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   N)r   r,   r-   float64copyr!   r"   r   )r   r%   r    sample_weight_copys       r&   /test_kbinsdiscretizer_no_mutating_sample_weightrV      so     !I
I
I
ICH\\\<<<M//GGA]G+++M#566666r(   )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.r5   )warningssimplefilterr,   r-   r   r9   warnsUserWarningr!   r.   r#   r	   zerosr4   )r   r"   r%   warning_messageXts        r&   test_same_min_maxr`      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 )Nr?   r   r*   r   r   )	r,   aranger   r9   r:   r;   r!   reshaper#   rO   s     r&   test_transform_1d_behaviorrd      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)r@         @g      @g       @g      $@r   r   )r   r   r   r   r   rM   r   r   r   r   )r,   r-   rc   r   r+   r	   )re   X_initXt_expectedr"   r_   s        r&   test_numeric_stabilityrl      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 )NrF   r   ri   onehot-densec                 6    g | ]}t          j        |          S r1   r,   rb   .0re   s     r&   
<listcomp>z'test_encode_options.<locals>.<listcomp>        ;;;	!;;;r(   F)
categoriessparse_outputonehotc                 6    g | ]}t          j        |          S r1   rp   rq   s     r&   rs   z'test_encode_options.<locals>.<listcomp>   rt   r(   T)
r   r!   r"   r#   spissparser	   r   r+   toarray)r%   Xt_1Xt_2Xt_3s       r&   test_encode_optionsr      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   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   rf   rM   r   r   r   r   r   r   r   r      )r,   r-   rc   r   r+   r	   ravel)r   expected_2binsexpected_3binsexpected_5binsr"   r%   r_   s          r&   test_nonuniform_strategiesr      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)      r@         r   )r         @      r   )r   rh   r   r   )r   rh   r   r   )g      g      @g      g      )g      g      @g      g      ?)g      ?g      @g      g      ?)r   r@   r   g      )r   r   r   rN   )r   rh   r   g      ?r   )r   rw   rn   c                     t          d| |          }|                    t                    }|                    |          }t	          ||           d S )Nr   r   )r   r+   r"   inverse_transformr   )r   r   expected_invkbdr_   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   r?   r   r   r   r   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   ri   r   r   r   )r,   r-   rT   r   r+   r	   r   )r"   X_beforer%   r_   	Xt_beforer   s         r&   test_overwriter   H  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           }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   	subsample'Consider decreasing the number of bins.r5   )r   r9   r[   r\   r!   r   rG   )r   expected_bin_edgesr"   r   r^   s        r&   test_redundant_binsr   V  s     qcA3aS1#&A
!h$
G
G
GC?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   r?   rM   r   r   r   r   r5   r   )r,   r-   rc   r   r9   r[   r\   r!   r   rG   r#   )r"   rJ   r_   r   r^   s        r&   !test_percentile_numeric_stabilityr   b  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 NrR   r   )r   r   r/   )	r,   r-   r"   r   r!   r/   float16rS   r#   )r   r   r   X_inputr   expected_dtyper_   s          r&   test_consistent_dtyper   o  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#   rS   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(   c                     t          j        g d                              dd          } t          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   rM   r   r   r   r   r   )r,   r-   rc   r   r!   r   
set_paramsrH   rG   testingr   r4   )r"   kbd_defaultkbd_without_subsamplingbin_kbd_defaultbin_kbd_with_subsamplings        r&   'test_kbinsdiscretizer_subsample_defaultr     s    
"""##++B22A""YTTTK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Sr(   zencode, expected_namesrw   c           	      \    g | ])}t          d           D ]}d| dt          |           *S r?   feat_rangefloatrr   col_idbin_ids      r&   rs   rs     [       #Ahh   0v//f//   r(   r   rn   c           	      \    g | ])}t          d           D ]}d| dt          |           *S r   r   r   s      r&   rs   rs     r   r(   r   c                     g | ]}d | S r   r1   )rr   r   s     r&   rs   rs     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   r?   r   r?   ri   c                     g | ]}d | S r   r1   rq   s     r&   rs   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_outr4   r	   )r   expected_namesr"   r   r_   input_featuresoutput_namess          r&   *test_kbinsdiscrtizer_get_feature_names_outr     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(   c                    t           j                            |                              d          dz   }t	          | d|          }|                    |           t          |          }|                    d            |                    |           t          |j	        d         |j	        d         d           d S )	N)i r   r   iP  )r   r   random_stater   r   g{Gz?)rtol)
r,   randomRandomStaterandom_sampler   r!   r   r   r   rG   )r   global_random_seedr"   kbd_subsamplingkbd_no_subsamplings        r&   test_kbinsdiscretizer_subsampler     s     		011??LLqPA&U9K  O //!!D!1111 "1%'9'DQ'Gd     r(   c                     t          j        d          d d d f         } t                      }|                    |           } t	          j        t          d          5  |                                 d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    | |            d d d            n# 1 swxY w Y   t          j	        d          5  t          j
        d           |                    |            d d d            n# 1 swxY w Y   t	          j        t          d	          5  |                    | 
           d d d            d S # 1 swxY w Y   d S )NrM   z$Missing required positional argumentr5   z$Cannot use both X and Xt. Use X only)r"   r_   T)recorderrorzXt was renamed X in version 1.5)r_   )r,   rb   r   r+   r9   r:   	TypeErrorr   rY   catch_warningsrZ   r[   FutureWarning)r"   r   s     r&   )test_KBD_inverse_transform_Xt_deprecationr     s`   
	"aaagA


C!A	y(N	O	O	O                                  
y(N	O	O	O ) )a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
	 	-	-	- ! !g&&&a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
m+L	M	M	M $ $###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $sH   A>>BB$CCC(*DD"%D"E((E,/E,)0rY   numpyr,   r9   scipy.sparsesparsery   sklearnr   sklearn.preprocessingr   r   sklearn.utils._testingr   r   r   r	   r"   markparametrizer'   r2   r=   rD   rK   filterwarningsrP   rV   r`   rd   r   rl   r   r   r   r   r   r   r   r   r   rS   r   r   r   r   r   r   r1   r(   r&   <module>r      s                     A A A A A A A A            +++->->->P '	\\\<<<|||LdS	LLL,,,lllKTR	lllLLL,,,MtT\\<<<|||DLL	
 \\<<<|||DLL	
 \\<<<|||DLL	
 \\<<<|||DLL	
 \\<<<|||DLL	
1   B3 3C   B3L L L i[110 0 210# # #L '	\\\<<<|||LdS	LLL,,,lllKTR	lllLLL,,,MtT\\<<<|||DLL	
 \\<<<|||DLL	
& \\<<<|||DLL	
7 # #H
0 
0I# #H
0 DEER R FER h
%;<<7 7 =<7 %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/$T T T"   #eAhh  	
  #eAhh  	
 
<<5588<<<=# ,5 5- ,5  %F%F%FGG  HG*$ $ $ $ $r(   