
    -iH                     H   S SK rS SKrS SKJrJr  S SKJrJrJ	r	J
r
  S SKJrJrJrJr  S SKJr  S SKJr  \\/r\\/r\\	\/-   r\\
\/-   r\R0                  R3                  S\5      \R0                  R3                  SS	5      \R0                  R3                  S
S	5      \R0                  R3                  S\5      S 5       5       5       5       r\R0                  R3                  S\5      \R0                  R3                  SS	5      \R0                  R3                  S
S	5      \R0                  R3                  SS5      \R0                  R3                  S\5      S 5       5       5       5       5       r\R0                  R3                  S\5      S 5       r\R0                  R3                  S\5      S 5       r\R0                  R3                  S\\\\/5      S 5       r\R0                  R3                  S\5      S 5       rS r S r!S r"\R0                  R3                  S\5      S 5       r#\R0                  R3                  S\5      \R0                  R3                  SS5      \R0                  R3                  SS	5      \R0                  R3                  SS5      S 5       5       5       5       r$S r%S r&\R0                  R3                  S\5      \R0                  R3                  SS5      \R0                  R3                  SS	5      \R0                  R3                  SS5      S 5       5       5       5       r'g)     N)make_classificationmake_regression)ExtraTreesClassifierExtraTreesRegressorRandomForestClassifierRandomForestRegressor)DecisionTreeClassifierDecisionTreeRegressorExtraTreeClassifierExtraTreeRegressor)assert_allclose)CSC_CONTAINERSTreeClassifierdepth_first_builder)TFsparse_splittercsc_containerc           	         SnSn[        USSSSUS9u  pxUS U US U pXvS  XS  p[        R                  " U5      [        R                  " U5      p[        R                  " U5      [        R                  " U5      nnUS S 2S4==   S-  ss'   US S 2S4==   S-  ss'   US S 2S4==   S-  ss'   US S 2S4==   S-  ss'   [        R                  " UR                  S   5      nSUS'   S	US'   U(       a  U " S US
9nOU " S UUS9n[        US5      (       a  UR                  " S0 SU0D6  [        US5      (       a  UR                  " S0 SS0D6  U(       a  U" U	5      n	UR                  X5        UR                  U5      n[        R                  " US:  US:*  5      R                  5       (       d   S5       e[        UR                  SS9S5        [        R                  " UR                  U5      S S 2S4   US S 2S4   :  5      (       d   e[        R                  " UR                  U5      S S 2S4   US S 2S4   :*  5      (       d   e[        R                  " UR                  U5      S S 2S4   US S 2S4   :*  5      (       d   e[        R                  " UR                  U5      S S 2S4   US S 2S4   :  5      (       d   eg )N          r   )	n_samples	n_classes
n_featuresn_informativen_redundantrandom_state
      )	max_depthmonotonic_cst)r!   r"   max_leaf_nodesr   n_estimators        g      ?z-Probability should always be in [0, 1] range.)axis )r   npcopyzerosshapehasattr
set_paramsfitpredict_probalogical_andallr   sum)r   r   r   global_random_seedr   r   n_samples_trainXyX_trainy_trainX_test_X_test_0incrX_test_0decrX_test_1incrX_test_1decrr"   est
proba_tests                       Y/var/www/html/venv/lib/python3.13/site-packages/sklearn/tree/tests/test_monotonic_tree.py*test_monotonic_constraints_classificationsrB       s    IO'DA )/*A.>,?W"#Q'7%8A!#"''&/,!#"''&/,LA"A"A"A"HHQWWQZ(MM!M!t=I'*

 sN##>.*<=>sN##-.!,-(GGG""6*J>>*+Z3->?CCEE 7E JNNN*C0 66###L1!Q$7:ad;KKLLLL66###L1!Q$7:ad;KKLLLL 66###L1!Q$7:ad;KKLLLL66###L1!Q$7:ad;KKLLLL    TreeRegressor	criterion)absolute_errorsquared_errorc                    SnSn[        USSUS9u  p[        R                  " U5      n
[        R                  " Xv5      nX   nX   n[        R                  " X   5      n[        R                  " U5      n[        R                  " U5      nUS S 2S4==   S-  ss'   US S 2S4==   S-  ss'   [        R                  " UR
                  S   5      nSUS'   SUS'   U(       a	  U " S UUS	9nO	U " S
UUUS9n[        US5      (       a  UR                  US9  [        US5      (       a  UR                  " S0 SS0D6  U(       a  U" U5      nUR                  X5        UR                  U5      n	UR                  U5      n[        R                  " UU	:  5      (       d   eUR                  U5      n[        R                  " UU	:*  5      (       d   eg )Nr   r   r   )r   r   r   r   r   r   r   r    )r!   r"   rE      )r!   r"   rE   r#   r   )r   r$   r'   )r   r(   aranger)   r*   r+   r,   r-   r.   predictr1   )rD   r   r   rE   r3   r   r   r4   r5   r6   traintestr7   r8   r9   X_test_incrX_test_decrr"   r?   y_incry_decrs                        rA   &test_monotonic_constraints_regressionsrR   a   s    IO'	DA IIo&E99_0DhGhGWWQWF''&/K''&/K11HHQWWQZ(MM!M!'
 '*	
 sN##$67sN##-.!,-(GGGFA[[%F66&A+ [[%F66&A+rC   c                 "   [        SSSSSS9u  pSUS'   [        R                  " UR                  S   5      nSUS'   SUS'   U " S USS9nS	n[        R
                  " [        US
9   UR                  X5        S S S 5        g ! , (       d  f       g = f)Nd   r      r   r   r   r   r   r   r   r    r!   r"   r   zIMonotonicity constraints are not supported with multiclass classificationmatch)r   r(   r*   r+   pytestraises
ValueErrorr.   )r   r5   r6   r"   r?   msgs         rA   test_multiclass_raisesr^      s    !qPQDA AaDHHQWWQZ(MM!M!
4}ST
UC
UC	z	- 
.	-	-s   %B  
Bc                     / SQ/ SQ/n/ SQ/ SQ/nU " S [         R                  " SS/5      SS9nSn[        R                  " [        US	9   UR                  X5        S S S 5        g ! , (       d  f       g = f)
N)r   r   rU      r   )      rI   	   r   r   r   r   r   r   r    r   r   rW   z?Monotonicity constraints are not supported with multiple outputrX   r(   arrayrZ   r[   r\   r.   )r   r5   r6   r?   r]   s        rA   test_multiple_output_raisesrg      sb    	*+A	/*A
bhhAw&7aC LC	z	- 
.	-	-s   
A%%
A3Treec                 4   [        SSSSSS9u  p[        R                  US'   [        R                  " UR                  S   5      nSUS'   U " S USS	9nS
n[
        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)NrT   r   r   rU   r   rV   )r   r   r   rW   zInput X contains NaNrX   )	r   r(   nanr*   r+   rZ   r[   r\   r.   )rh   r5   r6   r"   r?   r]   s         rA   test_missing_values_raisesrk      s     !qPQDA ffAdGHHQWWQZ(MM!
]
KC
 C	z	- 
.	-	-s   .B		
Bc                    SS/SS/SS/SS/S	S
//n/ SQnSnU " S [         R                  " / SQ5      SS9n[        R                  " [        US9   UR                  X5        S S S 5        SnU " S [         R                  " SS/5      SS9n[        R                  " [        US9   UR                  X5        S S S 5        U " S [         R                  " SS/5      SS9n[        R                  " [        US-   S9   UR                  X5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nt= f! , (       d  f       g = f)Nr   r   rU   r`   r   ra   rb   rI   rc   r   rd   z>monotonic_cst has shape 3 but the input data X has 2 features.)r    r   r   r   rW   rX   z:monotonic_cst must be None or an array-like of -1, 0 or 1.r    g?z(.*)0.8]re   )r   r5   r6   r]   r?   s        rA   test_bad_monotonic_cst_raisesrn      s   
Q!Q!Q!Q!R1AA
JC
bhhz&:C 
z	- 
. GC
bhhAw&7aC 
z	- 
. bhhCy&9C 
zz)9	: 
;	: 
.	- 
.	- 
;	:s$   D"D"6D3
D"
D03
Ec                 `   U R                   n[        U R                  5       GH  nU R                  U   U:  d  M  U R                  U   U:  d  M.  U R                  U   nU R                  U   nUS:X  a  X$   X%   ::  d   eOUS:X  a  X$   X%   :  d   eX$   X%   -   S-  nU R
                  U   S:  a0  U R                  U   nUS:X  a  X'   U::  d   eOUS:X  a
  X'   U:  d   eU R
                  U   S:  d  M  U R                  U   nUS:X  a  XbU   ::  d   eM  US:X  d  M  XbU   :  a  GM	   e   g )Nr   r    r   r   )valuerange
node_countchildren_leftchildren_rightfeature)	tree_monotonic_signvaluesii_lefti_right
val_middlei_left_righti_right_lefts	            rA   -assert_1d_reg_tree_children_monotonic_boundedr      sR   [[F5##$q!A%%*>*>q*AA*E((+F**1-G"~8882%~888 .6?:a?J}}V$)$33F;!Q&!/:===#r)!/:===}}W%*$227;!Q&%)====#r)%)====- %rC   c                     [         R                  " SSS5      R                  SS5      n [         R                  " S[         R                  -  U R                  5       -  5      n[        S SS9R                  X5      n[        R                  " [        5         [        UR                  S5        S S S 5        [        R                  " [        5         [        UR                  S5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = f)Nr    r   rb   r   r   r!   r   )r(   linspacereshapesinpiravelr
   r.   rZ   r[   AssertionErrorr   rv   r5   r6   regs      rA   2test_assert_1d_reg_tree_children_monotonic_boundedr     s    
B1%%b!,A
q255y1779$%A
$Q
?
C
CA
IC	~	&5ciiC 
' 
~	&5ciiD 
'	& 
'	& 
'	&s   C-C>-
C;>
Dc                 H   [         R                  " X#U5      R                  SS5      nU R                  U5      nUS:X  a/  [         R                  " U5      S:  R                  5       (       d   eg US:X  a/  [         R                  " U5      S:*  R                  5       (       d   eg g )Nr    r   r%   )r(   r   r   rK   diffr1   )clfrw   min_xmax_xn_stepsX_gridy_pred_grids          rA   assert_1d_reg_monotonicr     s    [[w/77A>F++f%K$+002222	2	$+002222 
rC   c                    [         R                  " SSS5      R                  SS5      nUR                  5       nU " S/S9nUR	                  X5        UR
                  R                  S:X  d   eUR
                  R                  S   S:X  d   eU " S/S9nUR	                  X* 5        UR
                  R                  S:X  d   eUR
                  R                  S   S:X  d   eg )	Nrm   r   r   r    r   )r"   r   r%   )r(   r   r   r   r.   rv   rr   rp   )rD   r5   r6   r   s       rA   &test_1d_opposite_monotonicity_cst_datar   #  s     	B2&&r1-A		A
rd
+CGGAM991$$$99??1$$$ qc
*CGGArN991$$$99??1$$$rC   rw   )r    r   c                 ~   [         R                  R                  U5      nSnSnUR                  Xg5      nUR                  U5      n	U(       a
  U " U/UUS9n
O
U " U/UUUS9n
U
R	                  X5        [        U
R                  U5        [        X[         R                  " U5      [         R                  " U5      S5        g )Nr   r   r"   rE   r   r"   r#   rE   r   rT   )
r(   randomRandomStaterandr.   r   rv   r   minmax)rD   rw   r   rE   r3   rngr   r   r5   r6   r   s              rA   test_1d_tree_nodes_valuesr   5  s    0 ))

 2
3CIJ'AA)*+
 )*$+	
 GGAM1#))^LCBFF1IsKrC   c                     [         R                  " U R                  [         R                  5      n[         R                  " U R                  [         R                  * 5      n[	        U R                  5       GH  nU R
                  U   nU R                  U   S   S   n[         R                  " U5      [         R                  " X$   5      ::  d   e[         R                  " U5      [         R                  " X4   5      :  d   eUS:  a  M  U R                  U   nU R                  U   nU R                  U   S   S   U R                  U   S   S   -   S-  n	X   S:X  a  X4   X7'   X$   X''   X4   X8'   X$   X('   GM  X   S:X  a9  U R                  U   U R                  U   ::  d   eX4   X7'   XU'   XU'   X$   X('   GMD  X   S:X  a9  U R                  U   U R                  U   :  d   eXU'   X$   X''   X4   X8'   XU'   GM  [        SU SX    35      e   g )Nr   r   r   r    zmonotonic_cst[z]=)r(   fullrr   infrq   ru   rp   float32rs   rt   r\   )
rv   r"   upper_boundlower_boundry   ru   
node_valuerz   r{   middle_values
             rA   -assert_nd_reg_tree_children_monotonic_boundedr   h  s   ''%**BFF3K''%**RVVG4K5##$--"[[^A&q)
 zz*%KN)CCCCzz*%KN)CCCCQ; $$Q'&&q)F+A.q1EKK4H4KA4NNRSS!Q&  #..K"-.K#.>K #.>K #q(;;v&%++g*>>>> #..K".#/ #.>K #r);;v&%++g*>>>> #/"-.K#.>K #/  ~gYb9O8PQRRA %rC   c                  V   [         R                  " SS[         R                  -  S5      R                  SS5      n [         R                  " U 5      R                  5       n[        S SS9R                  X5      n[        R                  " [        5         [        UR                  S/5        S S S 5        [        R                  " [        5         [        UR                  S/5        S S S 5        [        UR                  S/5        [         R                  " SSS5      R                  SS5      n U R                  5       S	-  n[        S SS9R                  X5      n[        R                  " [        5         [        UR                  S/5        S S S 5        [        S SS9R                  X* 5      n[        R                  " [        5         [        UR                  S/5        S S S 5        g ! , (       d  f       GNC= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)
Nr   r      r    r   r   r   rU   )r(   r   r   r   r   r   r
   r.   rZ   r[   r   r   rv   r   s      rA   2test_assert_nd_reg_tree_children_monotonic_boundedr     sw    	Aq255y"%--b!4A
q	A
$Q
?
C
CA
IC	~	&5cii!E 
' 
~	&5cii"F 
' 2#))aSA
 	B1%%b!,A		QA
$Q
?
C
CA
IC	~	&5cii"F 
'  $Q
?
C
CAr
JC	~	&5cii!E 
'	&+ 
'	& 
'	& 
'	& 
'	&s0   G%G70H	H%
G47
H	
H
H(c                    [         R                  R                  U5      nSnSnUS/nUR                  Xg5      n	UR                  U5      n
U(       a	  U " UUUS9nO	U " UUUUS9nUR	                  X5        [        UR                  U5        g )Nr   r   r   r   r   )r(   r   r   r   r.   r   rv   )rD   rw   r   rE   r3   r   r   r   r"   r5   r6   r   s               rA   test_nd_tree_nodes_valuesr     s    6 ))

 2
3CIJ#Q'M'AA'+
 '$+	
 GGAM1#))]KrC   )(numpyr(   rZ   sklearn.datasetsr   r   sklearn.ensembler   r   r   r   sklearn.treer	   r
   r   r   sklearn.utils._testingr   sklearn.utils.fixesr   TREE_CLASSIFIER_CLASSESTREE_REGRESSOR_CLASSESTREE_BASED_CLASSIFIER_CLASSESTREE_BASED_REGRESSOR_CLASSESmarkparametrizerB   rR   r^   rg   rk   rn   r   r   r   r   r   r   r   r   r'   rC   rA   <module>r      s^     A   3 .13FG /1CD  7; !   69    )+HI.>*M:.9:M : ; ? J:Mz *FG.>*M:&IJ.9; : K ; ? H
;| )+HI J )+HI	 J	 
	 )+HI J2>6
E3 *@A% B%" *@A)73.>&IJ,L K ? 4 B,L^CSLF@ *@A)73.>&IJ.L K ? 4 B.LrC   