
    Mpj@!              	          S SK Jr  S SKJr  S SKJr  S SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJr  S S	KJrJrJrJr  S S
KJr  SrSr\\S.r\\S.r\ " S S5      5       rS r\R<                  R?                  S5      \R<                  RA                  S/ \" \RC                  5       \5      Q\" \RC                  5       \5      Q5      \R<                  RA                  S/ SQ/ SQS9S 5       5       5       r"g)    )	dataclass)product)
itemgetterN)assert_allclose)	csc_array)xlogy)mean_poisson_deviance)DecisionTreeClassifierDecisionTreeRegressorExtraTreeClassifierExtraTreeRegressor)_weighted_percentile)ginilog_loss)squared_errorabsolute_errorpoisson)r
   r   )r   r   c                   V    \ rS rSr% \\S'   Sr\\S'   S rSS jr	 SS jr
S	 rS
 rSrg)NaiveSplitter#   	criterionr   	n_classesc                    [         R                  " U5      nUS:  a   [         R                  [         R                  4$ U R                  S;   a  [         R
                  " XU R                  S9U-  nU R                  S:X  a  S[         R                  " US-  5      -
  nGO)[         R                  " [        XD5      5      * [         R                  " S5      -  nOU R                  S:X  a/  [         R                  " XS9n[         R                  " X-
  S-  US9nOU R                  S	:X  a7  [        XS
SS9n[         R                  " [         R                  " X-
  5      US9nOkU R                  S:X  aC  [         R                  " XS9n[        U[         R                  " XAR                  5      US9nUS-  nO[        SU R                   35      eXEU-  4$ )NgHz>)r   entropyr   )weights	minlengthr   g      ?   r   )r   r   2   T)percentile_rankaverager   sample_weight      ?zUnknown criterion: )npsumnaninfr   bincountr   r   logr    r   absr	   repeatsize
ValueError)selfywsum_weightspredlosss         Y/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/tree/tests/test_split.pycompute_node_value_and_impurity-NaiveSplitter.compute_node_value_and_impurity(   sa   ffQi66266>!>><<;;qt~~FTD~~'RVVD!G_, uT011BFF1I=^^.::a+D::qxAoq9D^^//'b$OD::bffQX.:D^^y(::a+D(BIIdFF,CSTUDEMD24>>2BCDDK'''    Nc                     US S 2U4   nXu:*  nU(       a  U[         R                  " U5      -  nU R                  X(   X8   5      U R                  X()    X8)    5      4$ N)r$   isnanr5   )	r.   Xr/   r0   feature	thresholdmissing_leftxgo_lefts	            r4   compute_split_nodes!NaiveSplitter.compute_split_nodesB   sa    ajM.rxx{"G00QZH008akJ
 	
r7   c                 B    U R                  XX4XV5      nUu  u  pu  pX-   $ r9   )rA   )r.   r;   r/   r0   r<   r=   r>   nodes_left_impurityright_impuritys              r4   compute_split_impurity$NaiveSplitter.compute_split_impurityL   s1     ((q9S27//Q--r7   c              #   R  #    [        UR                  S   5       H  nUS S 2U4   n[        R                  " U5      n[        R                  " X4)    5      nU H  nUUSS.v   M     UR                  5       (       d  Mc  / UQ[        R                  * P H  nUUSS.v   M     M     g 7f)N   Fr<   r=   r>   T)rangeshaper$   r:   uniqueanyr'   )r.   r;   fr?   nan_mask
thresholdsths          r4   _generate_all_splits"NaiveSplitter._generate_all_splitsS   s     qwwqz"A!Q$Axx{H1Y<0J  !#$)  ! <<>>,
,RVVG,  !!#$(  - #s   B%B'c                     [        U R                  U5      5      n[        U5      S:X  a  [        R                  S 4$ U Vs/ s H  oPR
                  " XU40 UD6PM     nn[        [        Xd5      [        S5      S9$ s  snf )Nr   )key)	listrU   lenr$   r'   rH   minzipr   )r.   r;   r/   r0   splitssplitsplit_impuritiess          r4   best_split_naiveNaiveSplitter.best_split_naiveh   s    d//23v;!FFD>! HN
GMe''a959v 	 
 3'0jmDD	
s    A; )NF)__name__
__module____qualname____firstlineno__str__annotations__r   intr5   rA   rH   rU   r`   __static_attributes__rb   r7   r4   r   r   #   s1    NIs(4
 >C.*	Er7   r   c                 .   UR                  X45      nUR                  U 5      UR                  SS9-   nUR                  5       S:  a  UR                  SSU S9OUR                  U 5      n	UR                  S5      S:H  n
U
(       a  UR	                  U S:  a  SOS5      nU(       aB  UR                  S	S
5      nUR                  UR
                  5      U:  n[        R                  X|'   U(       aE  UR                  S	S5      nUS-  nUR                  UR
                  5      U:  nSX|'   [        U5      nOUnU(       aG  [        R                  " SSUS-   S9SS n[        R                  " [        R                  " X5      U5      nUR                  S5      XU	4$ )NrK   )axisr#   r      )r,   r   r   g?g?gGz?)numfloat32)randomr%   uniformintegersroundrN   r$   r&   r   linspacesearchsortedquantileastype)nd	with_nans	is_sparseis_clfr   rngX_denser/   r0   with_duplicatesnan_densitymaskdensityr;   qs                   r4   make_simple_datasetr   t   sV    jj! G

1++A&)kkmc&9Q"szz!}All1o*O--QV3kk$,zz'--(;6++dD)3zz'--(72gKK1)a-026OOBKK-q1 >>)$aA--r7   z%ignore:.*friedman_mse.*:FutureWarningzTree, criterionzsparse, missing_values))FF)TF)FT)zdense-without_missingzsparse-without_missingzdense-with_missing)idsc           
      (   U[         ;   n[        R                  R                  U5      nS/S-  S/S-  -   / SQ-   n[	        U5       GHH  u  pUR                  SS5      n
UR                  SS5      n[        XX2X[U5      u  pp[        X5      nU " USUS9nUR                  XUS9  UR                  R                  UR                  R                  -  nUR                  R                  S S 2S	4   nUR                  X5      u  nn[        UUS	   S
S9  [        UUS	   S
S9  UR                  R                  S:X  aB  SU R                   ;   d/  US
:  d)  UR#                  XU5      S	   [        R$                  :X  d   eGM4  ['        UR                  R(                  S	   5      UR                  R*                  S	   [-        UR                  R.                  S	   5      S.nUR0                  " XU40 UD6nUu  u  nnu  nn[        UUS   S
S9  [        UUS   S
S9  [        UUS   S
S9  [        UUS   S
S9  SU R                   ;   a  GM  UR#                  XU5      u  nnUSS  R3                  5       n[        R4                  " UU5      (       a  GMB   UU45       e   g )Nrm   
   )      r   d   rK      r   )r   	max_depthrandom_stater!   r   g-q=)atolExtrarL   )CLF_CRITERIONSr$   rq   default_rng	enumeraters   r   r   fittree_impurityweighted_n_node_samplesvaluer5   r   
node_countrc   r`   r'   ri   r<   r=   boolmissing_go_to_leftrA   r%   isclose)Treer   sparsemissing_valuesglobal_random_seedr}   r~   nsitry   rz   r   r   r;   r/   r0   naive_splittertreeactual_impurityactual_valueroot_valroot_impurityactual_splitrD   left_valrF   	right_valrG   best_impurity
best_splitactual_split_impuritys                                  r4   test_split_impurityr      s    .(F
))

 2
3C
qB4!8	/	/B2LLALLA&	..&S
A 'y<+

 	Q'**--

0R0RRzz''1- #1"P"PQR"V-q'9F,q/>::  A% 4==( 5(!227qA!DN	O
  4::--a01--a0 !>!>q!AB

 227qQLQAF>!=#>I~q'9F(:G,q/>	<??dmm#
  %3$C$CGPQ$R!z / 3 7 7 9zz-)>?? 	
B
 	
?{ r7   )#dataclassesr   	itertoolsr   operatorr   numpyr$   pytestnumpy.testingr   scipy.sparser   scipy.specialr   sklearn.metricsr	   sklearn.treer
   r   r   r   sklearn.utils.statsr   r   REG_CRITERIONS	CLF_TREES	REG_TREESr   r   markfilterwarningsparametrizevaluesr   rb   r7   r4   <module>r      s   !     ) "  1  5%? 5.	 3,	 ME ME ME`#.L CD	!!#^	4	!!#^	4 2Q  
G
 EG
r7   