
    MpjK                        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	Q/ S
QS9\R0                  R3                  SS5      \R0                  R3                  S\5      S 5       5       5       5       r\R0                  R3                  S\5      \R0                  R3                  S/ S	Q/ S
QS9\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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      \R0                  R3                  SS5      S 5       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      \R0                  R3                  SS5      S! 5       5       5       5       5       r&g)"    N)make_classificationmake_regression)ExtraTreesClassifierExtraTreesRegressorRandomForestClassifierRandomForestRegressor)DecisionTreeClassifierDecisionTreeRegressorExtraTreeClassifierExtraTreeRegressor)assert_allclose)CSC_CONTAINERSTreeClassifierzsparse_splitter, with_missing))FFTF)FT)zdense-without-missingzsparse-without-missingzdense-with-missing)idsdepth_first_builderr   csc_containerc           	      <   SnSn[        USSSSUS9u  pUS U U	S U pXS  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                  US9  [        US5      (       a  UR                  SS9  U(       a]  [        R                  R                  US9nUR                  SU
R                  S9R                  [        5      n[        R                  U
U'   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   r   n_estimatorsr&   seedsize        g      ?z-Probability should always be in [0, 1] range.)axis)r   npcopyzerosshapehasattr
set_paramsrandomdefault_rngchoiceastypeboolnanfitpredict_probalogical_andallr   sum)r   sparse_splitterr   with_missing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	generatormask
proba_tests                          b/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/tree/tests/test_monotonic_tree.py*test_monotonic_constraints_classificationsrR       s   ( IO'DA )/*A.>,?W"#Q'7%8A!#"''&/,!#"''&/,LA"A"A"A"HHQWWQZ(MM!M!t=I'*

 sN##$67sN##A&II))/A)B	6==dC(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                 V   SnSn[        USSUS9u  p[        R                  " U5      n[        R                  " X5      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S9  U(       a]  [        R                  R                  US9nUR                  SUR
                  S9R                  [        5      n[        R                  UU'   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#   rU      )r"   r#   rU   r$   r   r%   r&   r'   r(   r   r*   )r   r.   aranger/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   predictr=   )rT   r?   r   r@   rU   rA   r   r   rB   rC   rD   traintestrE   rF   rG   X_test_incrX_test_decrr#   rM   rN   rO   y_incry_decrs                           rQ   &test_monotonic_constraints_regressionsrb   n   s   , IO'	DA IIo&E99_0DhGhGWWQWF''&/K''&/K11HHQWWQZ(MM!M!'
 '*	
 sN##$67sN##A&II))/A)B	6==dC(GGGFA[[%F66&A+ [[%F66&A+rS   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.   r0   r1   pytestraises
ValueErrorr:   )r   rC   rD   r#   rM   msgs         rQ   test_multiclass_raisesrm      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   re      r   )      rY   	   r   r    r   r    r   r    r!   r    r   rf   z?Monotonicity constraints are not supported with multiple outputrg   r.   arrayri   rj   rk   r:   )r   rC   rD   rM   rl   s        rQ   test_multiple_output_raisesrv      sb    	*+A	/*A
bhhAw&7aC LC	z	- 
.	-	-s   
A%%
A3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   re   ro   r   rp   rq   rY   rr   r   rs   z>monotonic_cst has shape 3 but the input data X has 2 features.)r!   r    r   r   rf   rg   z:monotonic_cst must be None or an array-like of -1, 0 or 1.r!   皙?z(.*)0.8]rt   )r   rC   rD   rl   rM   s        rQ   test_bad_monotonic_cst_raisesrz      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	            rQ   -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)%)====- %rS   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    rq   r   r   r"   r   )r.   linspacereshapesinpiravelr
   r:   ri   rj   AssertionErrorr   r   rC   rD   regs      rQ   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   r[   diffr=   )clfr   min_xmax_xn_stepsX_gridy_pred_grids          rQ   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 
rS   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 )	Nrx   r   r   r!   r    )r#   r   r,   )r.   r   r   r   r:   r   r~   r|   )rT   rC   rD   r   s       rQ   &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$$$rS   r@   r   )r!   r    c                 N   [         R                  R                  U5      nSnSnUR                  Xx5      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(       a_  [         R                  R	                  US9nUR                  SU	R                  SS/S	9R                  [        5      n[         R                  X'   UR                  X5        [        UR                  U5        [         R                  " U	5      [         R                  " U	5      p[        XXS
5        g )Nr   r    r#   rU   r   r#   r$   rU   r   r(   r   ry   皙?r+   prd   )r.   r4   RandomStaterandr5   r6   r1   r7   r8   r9   r:   r   r   nanminnanmaxr   )rT   r@   r   r   rU   rA   rngr   r   rC   rD   r   rN   rO   r   r   s                   rQ   test_1d_tree_nodes_valuesr   8  s   < ))

 2
3CIJ'AA)*+
 )*$+	
 II))/A)B	C:>EEdK&&GGAM1#))^L99Q<15CsCrS   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.   fullr~   infr}   r   r|   float32r   r   rk   )
r   r#   upper_boundlower_boundr   r   
node_valuer   r   middle_values
             rQ   -assert_nd_reg_tree_children_monotonic_boundedr   v  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 %rS   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   re   )r.   r   r   r   r   r   r
   r:   ri   rj   r   r   r   r   s      rQ   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                  Xx5      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(       a_  [         R                  R	                  US9nUR                  SU
R                  SS/S	9R                  [        5      n[         R                  X'   UR                  X5        [        UR                  U	5        g )
Nr   r   r   r   r   r(   ry   r   r   )r.   r4   r   r   r5   r6   r1   r7   r8   r9   r:   r   r   )rT   r@   r   r   rU   rA   r   r   r   r#   rC   rD   r   rN   rO   s                  rQ   test_nd_tree_nodes_valuesr     s    B ))

 2
3CIJ#Q'M'AA'+
 '$+	
 II))/A)B	C:>EEdK&&GGAM1#))]KrS   )'numpyr.   ri   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parametrizerR   rb   rm   rv   rz   r   r   r   r   r   r   r   r    rS   rQ   <module>r      s     A   3 .13FG /1CD  7; !   69    )+HI#
 	R   .>.9?M : ? J?MD *FG#
 	R   .>&IJ.9@ : K ? H@F )+HI J )+HI	 J	 )+HI J2>6
E3 *@A% B%" *@A7)73.>&IJ6D K ? 4 8 B
6DrCSLF@ *@A7)73.>&IJ7L K ? 4 8 B
7LrS   