Ë
    ÜÍ:j¥ ã                   ó¾%  — U d Z ddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
 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m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 m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< ddl5m=Z> ddl?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZFmGZGmHZH ddlImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQ dZRdZSe*e,dœZTe+e-dœZU eV«       ZWeVeXd<   eWj³                  eT«       eWj³                  eU«       g d¢ZZ ej¶                  g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d2¢g d3¢g d4¢g«      Z\g d5¢Z]g d6¢Z^d7d8gd8d8gd8d7gd9d9gd9d:gd:d9ggZ_g d;¢Z`d8d8gd:d:gd<d:ggZag d=¢Zb ejÆ                  «       ZdejÊ                  jÍ                  d9«      ZgegjÑ                  edjÒ                  jÔ                  «      ZkedjØ                  ek   ed_l        edjÒ                  ek   ed_i         ejÚ                  «       ZnegjÑ                  enjÒ                  jÔ                  «      ZkenjØ                  ek   en_l        enjÒ                  ek   en_i         ejÞ                  «       ZpegjÑ                  epjÒ                  jÔ                  «      ZkepjØ                  ek   ep_l        epjÒ                  ek   ep_i         eQd«      Zq ejä                  dd>d?¬@«      \  ZsZteqjë                  dA¬B«      ZvdCevevdDk  <   eqjï                  ddEdF¬B«      Zx e(dGd?dHd¬I«      jó                  «       ZzedjØ                  edjÒ                  dJœenjØ                  enjÒ                  dJœepjØ                  epjÒ                  dJœe_e`dJœe\e]dJœe\e^dJœesetdJœevexdJœev exdJœezexdJœ ejö                  dK«      exdJœdLœZ|dM„ Z}dN„ Z~dO„ Ze�j                   �j                  dP«      e�j                   �j                  dQeU�j                  «       «      e�j                   �j                  dReS«      dS„ «       «       «       Z„dT„ Z…dU„ Z†e�j                   �j                  dP«      e�j                   �j                  dVeU�j                  «       «      e�j                   �j                  dReS«      dW„ «       «       «       Zˆe�j                   �j                  dP«      e�j                   �j                  dQeU�j                  «       «      e�j                   �j                  dXdYe!fdZefd[e!fd\e fg«      d]„ «       «       «       Z‰d^„ ZŠd_„ Z‹d`„ ZŒda„ Z�db„ ZŽdc„ Z�dd„ Z�de„ Z‘df„ Z’dg„ Z“dh„ Z”dñdi„Z•e�j                   �j                  djeW«      dk„ «       Z–e�j                   �j                  djeZ«      e�j                   �j                  dleL«      dm„ «       «       Z—	 dñdn„Z˜e�j                   �j                  djeW«      do„ «       Z™e�j                   �j                  djeZ«      e�j                   �j                  dleL«      dp„ «       «       Zše�j                   �j                  dP«      e�j                   �j                  dqg  e
eU�j                  «       eS«      ¢ e
eT�j                  «       eR«      ¢«      dr„ «       «       Z›ds„ Zœe�j                   �j                  dP«      e�j                   �j                  dtg  e
eU�j                  «       eS«      ¢ e
eT�j                  «       eR«      ¢«      du„ «       «       Z�dv„ Zždw„ ZŸdx„ Z dy„ Z¡dz„ Z¢e�j                   �j                  djeT«      d{„ «       Z£e�j                   �j                  djeT«      d|„ «       Z¤d}„ Z¥d~„ Z¦d„ Z§d€„ Z¨e�j                   �j                  d�eW�j                  «       «      d‚„ «       Z©dƒ„ Zªd„„ Z«d…„ Z¬d†„ Z­d‡„ Z®dñdˆ„Z¯e�j                   �j                  d‰eZ«      e�j                   �j                  dŠd‹«      dŒ„ «       «       Z°e�j                   �j                  d‰ e± e²eZ«      �jg                  eU«      «      «      e�j                   �j                  dŠd�dŽg«      d�„ «       «       Z´e�j                   �j                  d‰eZ«      e�j                   �j                  dŠg d�¢«      e�j                   �j                  dleL«      d‘„ «       «       «       Zµe�j                   �j                  dP«      e�j                   �j                  d’ e¶ e
eZD � cg c]	  } | eUv sŒ| ‘Œ c} eS«      «       e¶ e
eZD � cg c]	  } | eTv sŒ| ‘Œ c} eR«      «      z   «      e�j                   �j                  dŠg d�¢«      e�j                   �j                  dleL«      d“„ «       «       «       «       Z·e�j                   �j                  d‰eZ«      e�j                   �j                  d” e¸eLeM«      «      d•„ «       «       Z¹d–„ Zºe�j                   �j                  djeW«      d—„ «       Z»e�j                   �j                  djeW«      e�j                   �j                  d˜dgeLz   «      d™„ «       «       Z¼e�j                   �j                  djeW«      dš„ «       Z½e�j                   �j                  djeZ«      e�j                   �j                  d›eM«      dœ„ «       «       Z¾d�„ Z¿e�j                   �j                  djeW«      dž„ «       ZÀe�j                   �j                  djeW«      e�j                   �j                  d›eM«      dŸ„ «       «       ZÁd „ ZÂd¡„ ZÃe�j                   �j                  d˜dgeLz   «      d¢„ «       ZÄe�j                   �j                  dŠ e± e²e|�j‹                  «       «      dŽd�hz
  «      «      e�j                   �j                  d�e*e,g«      d£„ «       «       ZÆe�j                   �j                  dŠe|�j‹                  «       «      e�j                   �j                  d�e+e-g«      d¤„ «       «       ZÇd¥„ ZÈd¦„ ZÉd§„ ZÊe�j                   �j                  djeW«      e�j                   �j                  d¨d©dªg«      e�j                   �j                  d˜dgeLz   eMz   «      d«„ «       «       «       ZËe�j                   �j                  dP«      e�j                   �j                  dRg d¬¢«      e�j                   �j                  dQeU�j                  «       «      d­„ «       «       «       ZÌe�j                   �j                  d® eÍd<«      «      d¯„ «       ZÎd°„ ZÏe�j                   �j                  dQe*e,g«      e�j                   �j                  d±d:dEg«      d²„ «       «       ZÐd³„ ZÑd´„ ZÒdµ„ ZÓd¶„ ZÔd·„ ZÕd¸„ ZÖd¹„ Z×dº„ ZØd»„ ZÙd¼„ ZÚe�j                   �j                  d½ e e1�j                  «        e2�j                  «       «      «      d¾„ «       ZÛd¿„ ZÜe�j                   �j                  dQeW�j                  «       «      dÀ„ «       ZÝe�j                   �j                  dP«      e�j                   �j                  dReS«      dÁ„ «       «       ZÞe�j                   �j                  dP«      e�j                   �j                  d® eÍd<«      «      e�j                   �j                  dReS«      dÂ„ «       «       «       Zße�j                   �j                  dRdÃdÄg«      dÅ„ «       Zàe�j                   �j                  dRdÃdÄg«      dÆ„ «       Záe�j                   �j                  dRdÃdÄg«      dÇ„ «       Zâe�j                   �j                  dRdÃdÄg«      dÈ„ «       Zãe�j                   �j                  d˜eM«      e�j                   �j                  dÉ e+«        e-«       g«      dÊ„ «       «       Zäe�j                   �j                  dQeU�j                  «       «      dË„ «       ZådÌ„ Zæe�j                   �j                  dÍe�jÎ                  e+dfe�jÎ                  e-dÎfeæe*dÏfeæe,dÐfg«      e�j                   �j                  dÑddÒg«      dÓ„ «       «       Zèe�j                   �j                  dÔ e¸eT�j                  «       dÕdÖg«      «      d×„ «       Zée�j                   �j                  dØe�jÔ                  e+fe�jÖ                  e*fg«      dÙ„ «       ZìdÚ„ Zíe�j                   �j                  dP«      e�j                   �j                  dQe+e-g«      e�j                   �j                  dÛ ej¶                  e�jÜ                  d:e�jÜ                  dEdÜdÝg«       ej¶                  e�jÜ                  e�jÜ                  d<dEdÜdÝg«       ej¶                  d9d:d<dEe�jÜ                  e�jÜ                  g«       ej¶                  d9d:d<e�jÜ                  dÝe�jÜ                  g«      g«      e�j                   �j                  dReS«      dÞ„ «       «       «       «       Zïdß„ Zðdà„ Zñdá„ Zòdâ„ Zódã„ Zôdä„ Zõdå„ Zödæ„ Z÷dç„ Zøe�j                   �j                  dè ej¶                  e�jÜ                  gdCgdégdêgg«       ej¶                  g dë¢«      f ej¶                  e�jÜ                  gdége�jÜ                  gg«       ej¶                  g dì¢«      fgdídîg¬ï«      dð„ «       Zùyc c} w c c} w )òz-
Testing for the tree module (sklearn.tree).
é    N)ÚchainÚpairwiseÚproduct)ÚNumpyPickler)Úassert_allclose)ÚcloneÚdatasetsÚtree)ÚDummyRegressor)ÚNotFittedError)ÚSimpleImputer)Úaccuracy_scoreÚmean_absolute_errorÚmean_poisson_devianceÚmean_squared_error)Úcross_val_scoreÚtrain_test_split)Úmake_pipeline)Ú_sparse_random_matrix)ÚDecisionTreeClassifierÚDecisionTreeRegressorÚExtraTreeClassifierÚExtraTreeRegressor)ÚCRITERIA_CLFÚCRITERIA_REGÚDENSE_SPLITTERSÚSPARSE_SPLITTERS)Ú_py_precompute_absolute_errors)Ú
NODE_DTYPEÚ	TREE_LEAFÚTREE_UNDEFINEDÚ_build_pruned_tree_pyÚ_check_n_classesÚ_check_node_ndarrayÚ_check_value_ndarray)ÚTree)Úcompute_sample_weight)Úxpx)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚcreate_memmap_backed_dataÚignore_warnings)Ú	_IS_32BITÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERS)Ú_weighted_percentile)Úcheck_random_state)ÚginiÚlog_loss)Úsquared_errorÚabsolute_errorÚfriedman_mseÚpoisson)r   r   )r   r   Ú	ALL_TREES)r   r   é   r   r   r   é   iòÿÿÿr   éüÿÿÿr   r   r   r   )r   r   é   é   r   r=   r   r   r<   éûÿÿÿçš™™™™™É?r   r;   r<   )éÿÿÿÿrB   r   r   ç      Àr   r   çÍÌÌÌÌÌ @r<   r   r   rC   r   r<   )rB   rB   r   g333333ó¿r   r   r   r   r   r   rA   r   r   r<   )rB   rB   r   r   r   r   r   r?   r   r   r   r   r   r<   )rB   éþÿÿÿr   r;   éýÿÿÿé
   r;   r   çš™™™™™	Àr   r;   r?   r=   r<   )çáz®Gá @r   éúÿÿÿç      à¿r   é   r   r   rH   é   ç      à?r   rF   r<   )rI   r   rJ   rK   r   rL   r   r   rH   rM   r   r   rE   r<   )rI   é   rJ   rK   r   rL   r   r   rH   rM   r   r   rE   r<   )rI   rO   rJ   rK   r   rL   r   r   rH   rM   rN   r   rB   r   )é   rO   r>   r<   rN   r=   rG   r   r<   r@   r?   r   rP   r   )rP   r   r<   r<   r<   rB   r<   r   r   rE   r?   r   r<   r   )rP   r   r<   rP   r?   rB   rG   rP   r   rB   r<   rP   rP   r   )r<   r<   r   rP   rP   rB   r<   rP   r   r@   r<   rP   r?   r   )r?   r<   r   r?   r   r=   rG   r   r<   r@   r?   r   r?   r<   )rI   rO   rJ   rK   r   r<   r   r   rH   rM   rN   r   rF   r<   )rI   rO   rJ   rK   r   r<   r   r   rH   rM   ç      ø?r<   rB   rB   )rI   rO   rJ   rK   r   rG   r   r   rH   rM   rN   r   rB   rB   )rP   r   r>   r<   rN   rE   rG   r   r<   r@   r?   r<   r   rB   )rP   r   r<   r<   r<   rE   r<   r   r   rE   r   r   r   r<   )rP   r<   r<   r<   rP   rB   rG   rP   r   rB   r   rP   r<   r<   )r<   r<   r   r   r<   rF   r<   rP   r   r@   r<   rP   r<   r<   )r?   r<   r   r<   r   r=   r<   r   r<   rE   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   )ç      ð?rD   ç333333ó?çš™™™™™©?rG   g333333@çÍÌÌÌÌÌ@g)\�Âõ(ð?ç{®Gáz„?g×£p=
×@rU   gš™™™™™ñ?ç        rS   rP   rL   r   r   ç      @gî|?5^ºÉ?gö(\�Âõð?çÍÌÌÌÌÌì?r   rE   rB   r<   rP   )rB   rB   rB   r<   r<   r<   r?   )rB   r<   r<   é   rG   )Úrandom_stateÚ	n_samplesÚ
n_features)é   r>   ©ÚsizerW   gš™™™™™é?r;   )r^   r^   ç      Ð?)Údensityr[   ©ÚXÚy)r^   r?   )ÚirisÚdiabetesÚdigitsÚtoyÚ	clf_smallÚ	reg_smallÚ
multilabelú
sparse-posú
sparse-negú
sparse-mixÚzerosc                 ó~  — |j                   | j                   k(  s,J dj                  ||j                   | j                   «      «       ‚t        | j                  |j                  |dz   «       t        | j                  |j                  |dz   «       | j                  t
        k(  }t        j                  |«      }t        | j                  |   |j                  |   |dz   «       t        | j                  |   |j                  |   |dz   «       t        | j                  j                  «       |j                  j                  «       |dz   «       t        | j                  |j                  |dz   «       t        | j                  |j                  |dz   ¬	«       t        | j                  |   |j                  |   |d
z   ¬	«       y )Nz({0}: inequal number of node ({1} != {2})z: inequal children_rightz: inequal children_leftz: inequal featuresz: inequal thresholdz: inequal sum(n_node_samples)z: inequal n_node_samplesz: inequal impurity©Úerr_msgz: inequal value)Ú
node_countÚformatr+   Úchildren_rightÚchildren_leftr    ÚnpÚlogical_notÚfeatureÚ	thresholdÚn_node_samplesÚsumr)   Úimpurityr*   Úvalue)ÚdÚsÚmessageÚexternalÚinternals        úq/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/tree/tests/test_tree.pyÚassert_tree_equalr†   Î   s‹  € Ø�<‰<˜1Ÿ<™<Ò'ð Ø2×9Ñ9Ø�Q—\‘\ 1§<¡<ó	
óÐ'ô Ø	×Ñ˜!×*Ñ*¨GÐ6PÑ,Pôô Ø	�‰˜Ÿ™¨'Ð4MÑ*Môð ×Ñ¤9Ñ,€HÜ�~‰~˜hÓ'€HäØ	�	‰	�(Ñ˜QŸY™Y xÑ0°'Ð<PÑ2Pôô Ø	�‰�HÑ˜qŸ{™{¨8Ñ4°gÐ@UÑ6Uôô Ø	×Ñ×ÑÓØ	×Ñ×ÑÓØÐ1Ñ1ôô
 Ø	×Ñ˜!×*Ñ*¨GÐ6PÑ,Pôô ˜Ÿ
™
 A§J¡J¸ÐBVÑ8VÕWäØ	�‰�Ñ˜1Ÿ7™7 8Ñ,°gÐ@QÑ6Qöó    c                  ó–  — t         j                  «       D ]²  \  } } |d¬«      }|j                  t        t        «       t        |j                  t        «      t        dj                  | «      «        |dd¬«      }|j                  t        t        «       t        |j                  t        «      t        dj                  | «      «       Œ´ y )Nr   ©r[   úFailed with {0}r<   )Úmax_featuresr[   )
Ú	CLF_TREESÚitemsÚfitrd   re   r+   ÚpredictÚTÚtrue_resultru   ©Únamer&   Úclfs      r…   Útest_classification_toyr•   õ   s�   € ä—o‘oÓ'ò X‰
ˆˆdÙ Ô"ˆØ�‰””1ŒÜ˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÔWá °Ô2ˆØ�‰””1ŒÜ˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÕWñXr‡   c            
      ó  — t         j                  «       D ]í  \  } } |d¬«      }|j                  t        t        t        j                  t        t        «      «      ¬«       t        |j                  t        «      t        dj                  | «      «       |j                  t        t        t        j                  t        t        «      d«      ¬«       t        |j                  t        «      t        dj                  | «      «       Œï y )Nr   r‰   ©Úsample_weightrŠ   rN   )rŒ   r�   rŽ   rd   re   rx   ÚonesÚlenr+   r�   r�   r‘   ru   Úfullr’   s      r…   Ú test_weighted_classification_toyrœ     s©   € ä—o‘oÓ'ò X‰
ˆˆdÙ Ô"ˆà�‰””1¤B§G¡G¬C´«F£OˆÔ4Ü˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÔWà�‰””1¤B§G¡G¬C´«F°CÓ$8ˆÔ9Ü˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÕWñXr‡   z%ignore:.*friedman_mse.*:FutureWarningr&   Ú	criterionc                 óô  — |dk(  rht        j                  t        j                  t        «      «      dz   }t        j                  t        «      |z   }t        j                  t
        «      |z   }nt        }t
        } | |d¬«      }|j                  t        |«       t        |j                  t        «      |«        | |dd¬«      }|j                  t        |«       t        |j                  t        «      |«       y )Nr9   r<   ©r�   r[   ©r�   r‹   r[   )rx   ÚabsÚminre   Úarrayr‘   rŽ   rd   r   r�   r�   )r&   r�   ÚaÚy_trainÚy_testÚregr”   s          r…   Útest_regression_toyr¨     s±   € ð
 �IÒô �F‰F”2—6‘6œ!“9Ó Ñ!ˆÜ—(‘(œ1“+ ‘/ˆÜ—‘œ+Ó&¨Ñ*‰äˆÜˆá
˜°Ô
3€CØ‡G�GŒAˆwÔÜ�C—K‘K¤“N FÔ+á
˜°ÀÔ
C€CØ‡G�GŒAˆwÔÜ�C—K‘K¤“N FÕ+r‡   c                  óŠ  — t        j                  d«      } d| d d…d d…f<   d| dd …dd …f<   t        j                  | j                  «      \  }}t        j                  |j                  «       |j                  «       g«      j                  }| j                  «       } t        j                  «       D ]’  \  }} |d¬«      }|j                  || «       |j                  || «      dk(  sJ dj                  |«      «       ‚ |dd¬«      }|j                  || «       |j                  || «      dk(  rŒ~J dj                  |«      «       ‚ y )	N)rG   rG   r<   r>   r   r‰   rR   rŠ   ©r[   r‹   )rx   rp   ÚindicesÚshapeÚvstackÚravelr�   rŒ   r�   rŽ   Úscoreru   )re   ÚgridxÚgridyrd   r“   r&   r”   s          r…   Útest_xorr²   &  s  € ä
�‰�Ó€AØ€A€b€q€bˆ"ˆ1ˆ"€f�IØ€A€a�bˆ!‰"€f�Iä—:‘:˜aŸg™gÓ&�L€Eˆ5ä
�	‰	�5—;‘;“= %§+¡+£-Ð0Ó1×3Ñ3€AØ	�‰‹	€Aä—o‘oÓ'ò F‰
ˆˆdÙ Ô"ˆØ�‰��1ŒØ�y‰y˜˜A‹ #Ò%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%á °Ô2ˆØ�‰��1ŒØ�y‰y˜˜A‹ #Ó%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%ñFr‡   c                  ó”  — t        t        j                  «       t        «      D �]"  \  \  } }} ||d¬«      }|j	                  t
        j                  t
        j                  «       t        |j                  t
        j                  «      t
        j                  «      }|dkD  sJ dj                  | ||«      «       ‚ ||dd¬«      }|j	                  t
        j                  t
        j                  «       t        |j                  t
        j                  «      t
        j                  «      }|dkD  r�ŒJ dj                  | ||«      «       ‚ y )Nr   rŸ   rY   z0Failed with {0}, criterion = {1} and score = {2}rP   r    rN   )r   rŒ   r�   ÚCLF_CRITERIONSrŽ   rf   ÚdataÚtargetr   r�   ru   )r“   r&   r�   r”   r¯   s        r…   Ú	test_irisr·   ;  sú   € ä#*¬9¯?©?Ó+<¼nÓ#Mó 
Ñ‰ˆˆt�iÙ˜Y°QÔ7ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü˜sŸ{™{¬4¯9©9Ó5´t·{±{ÓCˆØ�sŠ{ð 	
ÐN×UÑUØ�)˜Uó
ó 	
ˆ{ñ ˜Y°QÀQÔGˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü˜sŸ{™{¬4¯9©9Ó5´t·{±{ÓCˆØ�sŒ{ð 	
ÐN×UÑUØ�)˜Uó
ó 	
ˆ{ñ
r‡   z
name, Treec                 ó2  —  ||d¬«      }|j                  t        j                  t        j                  «       t	        t        j                  |j                  t        j                  «      «      }|t        j                  d«      k(  sJ d| › d|› d|› �«       ‚y )Nr   rŸ   zFailed with z, criterion = z and score = )rŽ   rg   rµ   r¶   r   r�   ÚpytestÚapprox)r“   r&   r�   r§   r¯   s        r…   Útest_diabetes_overfitr»   N  sw   € ñ ˜°Ô
3€CØ‡G�GŒH�M‰Mœ8Ÿ?™?Ô+ÜœxŸ™°·±¼H¿M¹MÓ0JÓK€EØ”F—M‘M !Ó$Ò$ð Ø
�t�f˜N¨9¨+°]À5À'ÐJóÑ$r‡   zcriterion, metricr6   r7   r8   r9   c           	      óÆ  — t        |d|¬«      }t        j                  t        j                  }} || | di |¤ddi¤Žj	                  ||«      j                  |«      «      } || | di |¤ddi¤Žj	                  ||«      j                  |«      «      } || | di |¤ddi¤Žj	                  ||«      j                  |«      «      }	d|	cxk  r|cxk  r|k  sn J |	||f«       ‚y )	NrM   r    Ú	max_depthr<   r;   é   r   © )Údictrg   rµ   r¶   rŽ   r�   )
r&   r�   ÚmetricÚglobal_random_seedÚkwargsrd   re   Úloss1Úloss4Úloss7s
             r…   Útest_diabetes_underfitrÇ   ]  sÝ   € ô ˜I°AÐDVÔW€FÜ�=‰=œ(Ÿ/™/€q€AÙ�1‘dÑ1˜VÑ1¨qÒ1×5Ñ5°a¸Ó;×CÑCÀAÓFÓG€EÙ�1‘dÑ1˜VÑ1¨qÒ1×5Ñ5°a¸Ó;×CÑCÀAÓFÓG€EÙ�1‘dÑ1˜VÑ1¨qÒ1×5Ñ5°a¸Ó;×CÑCÀAÓFÓG€Eð ˆuÔ$�uÔ$˜uÔ$Ð; u¨e°UÐ&;Ó;Ñ$r‡   c            	      ó   — t         j                  «       D �]v  \  } } |ddd¬«      }|j                  t        j                  t        j
                  «       |j                  t        j                  «      }t        t        j                  |d«      t        j                  t        j                  j                  d   «      dj                  | «      ¬«       t        t        j                  |d«      |j                  t        j                  «      dj                  | «      ¬«       t!        |j                  t        j                  «      t        j"                  |j%                  t        j                  «      «      ddj                  | «      ¬«       �Œy y )Nr<   é*   ©r½   r‹   r[   r   rŠ   rr   rO   )rŒ   r�   rŽ   rf   rµ   r¶   Úpredict_probar*   rx   r}   r™   r¬   ru   r+   Úargmaxr�   r)   ÚexpÚpredict_log_proba)r“   r&   r”   Úprob_predicts       r…   Útest_probabilityrÐ   u  s  € ô  —o‘oÓ'ó 
‰
ˆˆdÙ˜Q¨Q¸RÔ@ˆØ�‰”—	‘	œ4Ÿ;™;Ô'à×(Ñ(¬¯©Ó3ˆÜ!Ü�F‰F�< Ó#Ü�G‰G”D—I‘I—O‘O AÑ&Ó'Ø%×,Ñ,¨TÓ2õ	
ô
 	Ü�I‰I�l AÓ&Ø�K‰KœŸ	™	Ó"Ø%×,Ñ,¨TÓ2õ	
ô
 	Ø×ÑœdŸi™iÓ(Ü�F‰F�3×(Ñ(¬¯©Ó3Ó4ØØ%×,Ñ,¨TÓ2÷		
ñ
r‡   c                  óò   — t        j                  d«      d d …t         j                  f   } t        j                  d«      }t        j	                  «       D ]!  \  }} |d d¬«      }|j                  | |«       Œ# y )Ni'  r   ©r½   r[   )rx   ÚarangeÚnewaxisÚ	REG_TREESr�   rŽ   ©rd   re   r“   r&   r§   s        r…   Útest_arrayreprr×   �  s`   € ô 	�	‰	�%ÓšœBŸJ™J˜Ñ'€AÜ
�	‰	�%Ó€Aä—o‘oÓ'ò ‰
ˆˆdÙ˜T°Ô2ˆØ�‰��1�ñr‡   c                  óÀ  — ddgddgddgddgddgddgg} g d¢}t         j                  «       D ]L  \  }} |d¬«      }|j                  | |«       t        |j	                  | «      |dj                  |«      ¬	«       ŒN t        j                  «       D ]L  \  }} |d¬«      }|j                  | |«       t        |j	                  | «      |dj                  |«      ¬	«       ŒN y )
NrE   rB   r<   rP   )r<   r<   r<   r<   r<   r<   r   r‰   rŠ   rr   )rŒ   r�   rŽ   r+   r�   ru   rÕ   r)   )rd   re   r“   ÚTreeClassifierr”   ÚTreeRegressorr§   s          r…   Útest_pure_setrÛ   š  sÜ   € à
ˆbˆ�B˜�8˜b "˜X¨¨1 v°°1¨v¸¸1°vÐ>€AÚ€Aä )§¡Ó 1ò VÑˆˆnÙ¨!Ô,ˆØ�‰��1ŒÜ˜3Ÿ;™; q›>¨1Ð6G×6NÑ6NÈtÓ6TÖUðVô
  )Ÿ™Ó0ò WÑˆˆmÙ¨Ô+ˆØ�‰��1ŒÜ˜CŸK™K¨›N¨AÐ7H×7OÑ7OÐPTÓ7UÖVñWr‡   c            
      óÀ  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      } t        j                  g d¢«      }t        j                  d	¬
«      5  t        j	                  «       D ]Z  \  }} |d¬«      }|j                  | |«       |j                  | | «       |j                  |  |«       |j                  |  | «       Œ\ 	 d d d «       y # 1 sw Y   y xY w)N)gsþ_—c@çdÀ	�a@ç±› `8`@çëÆý?õüc@)gŒÁý_9Ða@gþ 8ú`@g-Výßu]@g    @Xd@)gSW jÒ_@rÝ   rÞ   rß   )gÓ Ù‹`@ç4Tÿÿ÷a@ç	£þlKa@çÁ{ýÿ»c@)gç|@�ÆY@g~G`÷a@gwIÿ?lKa@g/"þ»c@)gƒ÷úÿ�í_@rà   rá   râ   )g®û¿‘:^@rÝ   rÞ   rß   )rR   g¿½A‹wæ?gtúQ?5?á?rW   g7G€¶í?g”�ÞÛº¼Þ?g™¥b'Âß?Úraise)Úallr   r‰   )rx   r£   ÚerrstaterÕ   r�   rŽ   rÖ   s        r…   Útest_numerical_stabilityræ   ª  s¼   € ä
�‰âDÚDÚDÚDÚDÚDÚDð	
ó
	€Aô 	�‰ÒWÓX€Aä	�‰˜Ô	!ñ Ü#Ÿ/™/Ó+ò 	‰JˆD�$Ù AÔ&ˆCØ�G‰G�A�qŒMØ�G‰G�A˜�rŒNØ�G‰G�Q�B˜ŒNØ�G‰G�Q�B˜˜�Oñ	÷÷ ñ ús   ÁA2CÃCc            	      óÖ  — t        j                  ddddddd¬«      \  } }t        j                  «       D ]‡  \  }} |d¬«      }|j	                  | |«       |j
                  }t        j                  |dkD  «      }|j                  d   dk(  sJ d	j                  |«      «       ‚|dk(  rŒsJ d	j                  |«      «       ‚ t        d¬«      }|j	                  t        j                  t        j                  «       t        dt        t        j                  «      ¬
«      }|j	                  t        j                  t        j                  «       t        |j
                  |j
                  «       y )Néˆ  rG   r?   r   F©r\   r]   Ún_informativeÚn_redundantÚ
n_repeatedÚshuffler[   r‰   çš™™™™™¹?rŠ   ©r[   Úmax_leaf_nodes)r	   Úmake_classificationrŒ   r�   rŽ   Úfeature_importances_rx   r}   r¬   ru   r   rf   rµ   r¶   rš   r+   )rd   re   r“   r&   r”   ÚimportancesÚn_importantÚclf2s           r…   Útest_importancesrö   Ã  s)  € ä×'Ñ'ØØØØØØØô�D€A€qô  —o‘oÓ'ò @‰
ˆˆdÙ Ô"ˆà�‰��1ŒØ×.Ñ.ˆÜ—f‘f˜[¨3Ñ.Ó/ˆà× Ñ  Ñ# rÒ)ÐIÐ+<×+CÑ+CÀDÓ+IÓIÐ)Ø˜aÓÐ?Ð!2×!9Ñ!9¸$Ó!?Ó?Ðð@ô !¨aÔ
0€CØ‡G�GŒD�I‰I”t—{‘{Ô#Ü!¨qÄÄTÇYÁYÃÔP€DØ‡H�HŒT�Y‰YœŸ™Ô$ä�s×/Ñ/°×1JÑ1JÕKr‡   c                  óŒ   — t        «       } t        j                  t        «      5  t	        | d«       d d d «       y # 1 sw Y   y xY w)Nrò   )r   r¹   ÚraisesÚ
ValueErrorÚgetattr)r”   s    r…   Útest_importances_raisesrû   â  s6   € ä
 Ó
"€CÜ	�‰”zÓ	"ñ -Ü�Ð+Ô,÷-÷ -ñ -ús	   ¤:ºAc            	      óš  — t        j                  ddddddd¬«      \  } }t        ddd¬	«      j                  | |«      }t	        d
dd¬	«      j                  | |«      }t        |j                  |j                  «       t        |j                  j                  |j                  j                  «       t        |j                  j                  |j                  j                  «       t        |j                  j                  |j                  j                  «       t        |j                  j                  |j                  j                  «       y )NiÐ  rG   r?   r   Fré   r4   r>   )r�   r½   r[   r6   )r	   rñ   r   rŽ   r   r)   rò   r+   Útree_rz   rw   rv   r|   )rd   re   r”   r§   s       r…   Ú)test_importances_gini_equal_squared_errorrþ   é  sþ   € ô ×'Ñ'ØØØØØØØô�D€A€qô !¨6¸QÈQÔ
O×
SÑ
SØ	ˆ1ó€Cô  Ø!¨Q¸Qôç	�cˆ!ˆQƒið ô ˜×0Ñ0°#×2JÑ2JÔKÜ�s—y‘y×(Ñ(¨#¯)©)×*;Ñ*;Ô<Ü�s—y‘y×.Ñ.°·	±	×0GÑ0GÔHÜ�s—y‘y×/Ñ/°·±×1IÑ1IÔJÜ�s—y‘y×/Ñ/°·±×1IÑ1IÕJr‡   c                  óV  — t         j                  «       D �]  \  } } |d¬«      }|j                  t        j                  t        j
                  «       |j                  t        t        j                  t        j                  j                  d   «      «      k(  sJ ‚ |d¬«      }|j                  t        j                  t        j
                  «       |j                  t        t        j                  t        j                  j                  d   «      «      k(  sJ ‚ |d¬«      }|j                  t        j                  t        j
                  «       |j                  dk(  sJ ‚ |d¬«      }|j                  t        j                  t        j
                  «       |j                  dk(  sJ ‚ |d¬«      }|j                  t        j                  t        j
                  «       |j                  dk(  sJ ‚ |d¬«      }|j                  t        j                  t        j
                  «       |j                  t        dt        j                  j                  d   z  «      k(  sJ ‚ |d¬«      }|j                  t        j                  t        j
                  «       |j                  t        j                  j                  d   k(  sJ ‚ |d ¬«      }|j                  t        j                  t        j
                  «       |j                  t        j                  j                  d   k(  r�ŒJ ‚ y )	NÚsqrt)r‹   r<   Úlog2r?   rV   rN   rR   )r:   r�   rŽ   rf   rµ   r¶   Úmax_features_Úintrx   r   r¬   r  )r“   ÚTreeEstimatorÚests      r…   Útest_max_featuresr    s$  € ä(Ÿ™Ó0ó 7ÑˆˆmÙ¨Ô0ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤C¬¯©´·	±	·±ÀÑ0BÓ(CÓ$DÒDÐDÐDá¨Ô0ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤C¬¯©´·	±	·±ÀÑ0BÓ(CÓ$DÒDÐDÐDá¨Ô+ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ  AÒ%Ð%Ð%á¨Ô+ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ  AÒ%Ð%Ð%á¨Ô.ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ  AÒ%Ð%Ð%á¨Ô-ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤C¨¬d¯i©i¯o©o¸aÑ.@Ñ(@Ó$AÒAÐAÐAá¨Ô-ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤D§I¡I§O¡O°AÑ$6Ò6Ð6Ð6á¨Ô.ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤D§I¡I§O¡O°AÑ$6Ô6Ð6Ð6ñ?7r‡   c                  óJ	  — t         j                  «       D �]o  \  } } |«       }t        j                  t        «      5  |j                  t        «       d d d «       |j                  t        t        «       g d¢g}t        j                  t        «      5  |j                  |«       d d d «        |«       }t        d d }t        j                  t        «      5  |j                  t        |«       d d d «       t        j                  t        «      } |«       }|j                  |t        «       t        |j                  t        «      t        «        |«       }t        j                  t        «      5  |j                  t        «       d d d «       |j                  t        t        «       t        j                   t        «      }t        j                  t        «      5  |j                  |d d …dd …f   «       d d d «       t        j"                  t        «      j                  } |«       }|j                  t        j$                  t        |«      t        «       t        j                  t        «      5  |j                  t        «       d d d «       t        j                  t        «      5  |j'                  t        «       d d d «        |«       }|j                  t        t        «       t        j                  t        «      5  |j                  |«       d d d «       t        j                  t        «      5  |j'                  |«       d d d «        |«       }t        j                  t        «      5  |j'                  t        «       d d d «       �Œr t)        d¬«      }t        j                  t        d¬«      5  |j                  g d¢gg d	¢«       d d d «       t        j                  t        d
¬«      5  |j                  g d¢gg d¢«       d d d «       y # 1 sw Y   �Œ»xY w# 1 sw Y   �ŒvxY w# 1 sw Y   �Œ;xY w# 1 sw Y   �Œ±xY w# 1 sw Y   �ŒOxY w# 1 sw Y   �ŒÍxY w# 1 sw Y   �Œ£xY w# 1 sw Y   �Œ\xY w# 1 sw Y   �Œ6xY w# 1 sw Y   �ŒuxY w# 1 sw Y   ŒÇxY w# 1 sw Y   y xY w)N)rE   rB   r<   rB   r<   r9   ©r�   zy is not positive.*Poisson©Úmatch©r   r<   rP   )r   r   r   zSome.*y are negative.*Poisson)r>   gš™™™™™¹¿rP   )rŒ   r�   r¹   rø   r   rË   rd   rŽ   re   rù   rx   Úasfortranarrayr)   r�   r�   r‘   Úasarrayr£   ÚdotÚapplyr   )	r“   r  r  ÚX2Úy2ÚXfÚtÚXtr”   s	            r…   Ú
test_errorr  +  sH  € ä(Ÿ™Ó0ó 6Ñˆˆmá‹oˆÜ�]‰]œ>Ó*ñ 	!Ø×ÑœaÔ ÷	!ð 	�‰””1ŒÚˆ]ˆÜ�]‰]œ:Ó&ñ 	"Ø×Ñ˜bÔ!÷	"ñ ‹oˆÜˆs�ˆVˆÜ�]‰]œ:Ó&ñ 	Ø�G‰G”A�rŒN÷	ô ×ÑœqÓ!ˆÙ‹oˆØ�‰�”AŒÜ˜CŸK™K¬›N¬KÔ8ñ ‹oˆÜ�]‰]œ>Ó*ñ 	Ø�K‰KœŒN÷	ð 	�‰””1ŒÜ�J‰J”q‹MˆÜ�]‰]œ:Ó&ñ 	"Ø�K‰K˜š!˜Q™R˜%™Ô!÷	"ô �X‰X”a‹[�]‰]ˆá‹oˆØ�‰”—‘”q˜"“œqÔ!Ü�]‰]œ:Ó&ñ 	Ø�K‰KœŒN÷	ä�]‰]œ:Ó&ñ 	Ø�I‰I”aŒL÷	ñ ‹oˆØ�‰””1ŒÜ�]‰]œ:Ó&ñ 	Ø�K‰K˜ŒO÷	ä�]‰]œ:Ó&ñ 	Ø�I‰I�bŒM÷	ñ ‹oˆÜ�]‰]œ>Ó*ñ 	Ø�I‰I”aŒL÷	ñ 	ðk6ôr  ¨)Ô
4€CÜ	�‰”zÐ)EÔ	Fñ (Ø�‰’�šYÔ'÷(ä	�‰”zÐ)HÔ	Iñ +Ø�‰’�š\Ô*÷+ð +÷s	!ñ 	!ú÷
	"ñ 	"ú÷	ñ 	ú÷	ñ 	ú÷	"ñ 	"ú÷	ñ 	ú÷	ñ 	ú÷
	ñ 	ú÷	ñ 	ú÷
	ñ 	ú÷
(ð (ú÷+ð +ús�   ¼PÂPÃP%Å-P2ÇP?É+QÊ"QË:Q&Ì-Q3Í'R Î/RÏ*RÐP	ÐP"	Ð%P/	Ð2P<	Ð?Q		ÑQ	ÑQ#	Ñ&Q0	Ñ3Q=	Ò R
	ÒRÒR"c                  óÖ  — t        j                  t        j                  t         j                  ¬«      } t        j
                  }t        dt        j                  «       «      D �]  \  }}t        |   } |d|d¬«      }|j                  | |«       |j                  j                  |j                  j                  dk7     }t        j                  |«      dkD  sJ dj                  |«      «       ‚ |d	|d¬«      }|j                  | |«       |j                  j                  |j                  j                  dk7     }t        j                  |«      dkD  rŒñJ dj                  |«      «       ‚ y
)z Test min_samples_split parameter©Údtype©Néè  rG   r   )Úmin_samples_splitrð   r[   rB   é	   rŠ   rA   N)rx   r  rf   rµ   Úfloat32r¶   r   r:   ÚkeysrŽ   rý   r|   rw   r¢   ru   )rd   re   rð   r“   r  r  Únode_sampless          r…   Útest_min_samples_splitr   m  s.  € ä
×Ñœ$Ÿ)™)¬2¯:©:Ô6€AÜ�‰€Aô !(¨´i·n±nÓ6FÓ Gó HÑˆ˜Ü! $™ˆñ Ø °Èaô
ˆð 	�‰��1Œà—y‘y×/Ñ/°·	±	×0GÑ0GÈ2Ñ0MÑNˆä�v‰v�lÓ# aÒ'ÐGÐ):×)AÑ)AÀ$Ó)GÓGÐ'ñ Ø!°.Èqô
ˆð 	�‰��1Œà—y‘y×/Ñ/°·	±	×0GÑ0GÈ2Ñ0MÑNˆä�v‰v�lÓ# aÓ'ÐGÐ):×)AÑ)AÀ$Ó)GÓGÐ'ñ+Hr‡   c                  óø  — t        j                  t        j                  t         j                  ¬«      } t        j
                  }t        dt        j                  «       «      D �]  \  }}t        |   } |d|d¬«      }|j                  | |«       |j                  j                  | «      }t        j                  |«      }||dk7     }t        j                  |«      dkD  sJ dj                  |«      «       ‚ |d|d¬«      }|j                  | |«       |j                  j                  | «      }t        j                  |«      }||dk7     }t        j                  |«      dkD  r�ŒJ dj                  |«      «       ‚ y )	Nr  r  r>   r   )Úmin_samples_leafrð   r[   r;   rŠ   rî   )rx   r  rf   rµ   r  r¶   r   r:   r  rŽ   rý   r  Úbincountr¢   ru   )	rd   re   rð   r“   r  r  ÚoutÚnode_countsÚ
leaf_counts	            r…   Útest_min_samples_leafr'  Œ  sF  € ä
×Ñœ$Ÿ)™)¬2¯:©:Ô6€AÜ�‰€Aô !(¨´i·n±nÓ6FÓ Gó FÑˆ˜Ü! $™ˆñ Ø¨~ÈAô
ˆð 	�‰��1ŒØ�i‰i�o‰o˜aÓ ˆÜ—k‘k #Ó&ˆà  °Ñ!1Ñ2ˆ
Ü�v‰v�jÓ! AÒ%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%ñ Ø °Èaô
ˆð 	�‰��1ŒØ�i‰i�o‰o˜aÓ ˆÜ—k‘k #Ó&ˆà  °Ñ!1Ñ2ˆ
Ü�v‰v�jÓ! AÔ%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%ñ/Fr‡   c                 óè  — t         |   d   j                  t        j                  «      }|� ||«      }t         |   d   }t        j                  |j                  d   «      }t        j                  |«      }t        |    }t        dt        j                  ddd«      «      D ]Ð  \  }}	 ||	|d¬«      }
|
j                  |||¬	«       |�*|
j                  j                  |j                  «       «      }n|
j                  j                  |«      }t        j                  ||¬
«      }||dk7     }t        j                   |«      ||
j"                  z  k\  rŒ±J dj%                  | |
j"                  «      «       ‚ |j                  d   }t        dt        j                  ddd«      «      D ]Ì  \  }}	 ||	|d¬«      }
|
j                  ||«       |�*|
j                  j                  |j                  «       «      }n|
j                  j                  |«      }t        j                  |«      }||dk7     }t        j                   |«      ||
j"                  z  k\  rŒ­J dj%                  | |
j"                  «      «       ‚ y)zPTest if leaves contain at least min_weight_fraction_leaf of the
    training setrd   Nre   r   r  rN   rM   )Úmin_weight_fraction_leafrð   r[   r—   )Úweightsz,Failed with {0} min_weight_fraction_leaf={1})ÚDATASETSÚastyperx   r  ÚrngÚrandr¬   r}   r:   r   ÚlinspacerŽ   rý   r  Útocsrr#  r¢   r)  ru   )r“   r	   Úsparse_containerrd   re   r*  Útotal_weightr  rð   Úfracr  r$  Únode_weightsÚleaf_weightss                 r…   Úcheck_min_weight_fraction_leafr6  ­  s5  € ô 	�Ñ˜3Ñ×&Ñ&¤r§z¡zÓ2€AØÐ#Ù˜QÓˆÜ�Ñ˜3Ñ€Aä�h‰h�q—w‘w˜q‘zÓ"€GÜ—6‘6˜'“?€Lä˜d‘O€Mô !(¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜ÙØ%)¸.ÐWXô
ˆð 	�‰��1 GˆÔ,àÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3°Ô8ˆà# L°AÑ$5Ñ6ˆÜ�v‰v�lÓ# |°c×6RÑ6RÑ'RÓRð 	
Ø:×AÑAØ�c×2Ñ2óó	
ÐRð
ð* —7‘7˜1‘:€Lä '¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜ÙØ%)¸.ÐWXô
ˆð 	�‰��1ŒàÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3Ó'ˆà# L°AÑ$5Ñ6ˆÜ�v‰v�lÓ# |°c×6RÑ6RÑ'RÓRð 	
Ø:×AÑAØ�c×2Ñ2óó	
ÐRñ
r‡   r“   c                 ó   — t        | d«       y ©Nrf   ©r6  ©r“   s    r…   Ú,test_min_weight_fraction_leaf_on_dense_inputr;  è  s   € ä" 4¨Õ0r‡   Úcsc_containerc                 ó    — t        | d|¬«       y ©Nrl   )r1  r9  ©r“   r<  s     r…   Ú-test_min_weight_fraction_leaf_on_sparse_inputr@  í  s   € ô # 4¨ÈÖVr‡   c                 óä  — t         |   d   j                  t        j                  «      }|� ||«      }t         |   d   }|j                  d   }t
        |    }t        dt        j                  ddd«      «      D ]â  \  }} |||dd¬	«      }	|	j                  ||«       |�*|	j                  j                  |j                  «       «      }
n|	j                  j                  |«      }
t        j                  |
«      }||dk7     }t        j                  |«      t        ||	j                  z  d«      k\  rŒ¸J d
j!                  | |	j                  |	j"                  «      «       ‚ t        dt        j                  ddd«      «      D ]ï  \  }} |||dd¬	«      }	|	j                  ||«       |�*|	j                  j                  |j                  «       «      }
n|	j                  j                  |«      }
t        j                  |
«      }||dk7     }t        j                  |«      t        ||	j                  z  ||	j"                  z  «      k\  rŒÅJ d
j!                  | |	j                  |	j"                  «      «       ‚ y)zzTest the interaction between min_weight_fraction_leaf and
    min_samples_leaf when sample_weights is not provided in fit.rd   Nre   r   r  rN   r?   r>   )r)  rð   r"  r[   zBFailed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}rî   )r+  r,  rx   r  r¬   r:   r   r/  rŽ   rý   r  r0  r#  r¢   Úmaxr)  ru   r"  )r“   r	   r1  rd   re   r2  r  rð   r3  r  r$  r4  r5  s                r…   Ú4check_min_weight_fraction_leaf_with_min_samples_leafrC  ó  sL  € ô
 	�Ñ˜3Ñ×&Ñ&¤r§z¡zÓ2€AØÐ#Ù˜QÓˆÜ�Ñ˜3Ñ€Aà—7‘7˜1‘:€LÜ˜d‘O€MÜ '¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜áØ%)Ø)ØØô	
ˆð 	�‰��1ŒàÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3Ó'ˆà# L°AÑ$5Ñ6ˆÜ�v‰v�lÓ#¤sØ˜C×8Ñ8Ñ8¸1ó(
ó 
ð 	
àO×VÑVØ�#×.Ñ.°×0DÑ0Dó
ó	
ð 
ð%
ô. !(¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜áØ%)Ø)Ø Øô	
ˆð 	�‰��1ŒàÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3Ó'ˆà# L°AÑ$5Ñ6ˆÜ�v‰v�lÓ#¤sØ˜C×8Ñ8Ñ8Ø˜C×0Ñ0Ñ0ó(
ó 
ð 	
ð P×VÑVØ�#×.Ñ.°×0DÑ0Dó
ó	
ð 
ñ%
r‡   c                 ó   — t        | d«       y r8  ©rC  r:  s    r…   ÚBtest_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_inputrF  0  s   € ä8¸¸vÕFr‡   c                 ó    — t        | d|¬«       y r>  rE  r?  s     r…   ÚCtest_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_inputrH  5  s   € ô
 9Øˆl¨]ör‡   zTreeEstimator, criterionc                 óÎ  — t        j                  d|¬«      \  }}dD ]Æ  }dD ]¿  } | ||||¬«      }|j                  ||«       |j                  }|j                  |j
                  z  |j                  d   z  }	t        |j                  «      D ]R  }
|j                  |
   t        k7  sŒ|j                  |
   }|j                  |
   }|	|
   |	|   |	|   z   z
  }||dz
  kD  rŒRJ ‚ ŒÁ ŒÈ y )Néd   ©r\   r[   r  )rT   g-Cëâ6?rî   )r�   rð   Úmin_impurity_decreaser[   r   g»½×Ùß|Û=)r	   rñ   rŽ   rý   r~   Úweighted_n_node_samplesr¬   Úrangert   rw   r    rv   )r  r�   rÂ   rd   re   rð   Úexpected_decreaser  r
   Úweighted_impurityÚnodeÚleftÚrightÚactual_decreases                 r…   Útest_min_impurity_decreaserU  @  s  € ô ×'Ñ'°#ÐDVÔW�D€A€qð 'ò GˆØ!4ò 	GÐÙØ#Ø-Ø&7Ø/ô	ˆCð �G‰G�A�qŒMØ—9‘9ˆDà—‘ × <Ñ <Ñ<¸q¿w¹wÀq¹zÑIð ô ˜dŸo™oÓ.ò G�ð ×%Ñ% dÑ+¬yÓ8Ø×-Ñ-¨dÑ3�DØ ×/Ñ/°Ñ5�Eà&7¸Ñ&=Ø)¨$Ñ/Ð2CÀEÑ2JÑJñ'�Oð
 +Ð->ÀÑ-FÓFÐFÐFñGñ	GñGr‡   c            
      óÄ  — t         j                  «       D �]C  \  } }d| v r!t        j                  t        j                  }}n t
        j                  t
        j                  }} |d¬«      }|j                  ||«       |j                  ||«      }g d¢}|D �ci c]  }|t        |j                  |«      “Œ }}t        j                  |«      }	t        j                  |	«      }
t        |
«      |j                  k(  sJ ‚|
j                  ||«      }||k(  sJ dj                  | «      «       ‚|D ]-  }t!        t        |
j                  |«      ||   d|› d| › �¬«       Œ/ �ŒF y	c c}w )
z8Test pickling preserves Tree properties and performance.Ú
Classifierr   r‰   )r½   rt   ÚcapacityÚ	n_classesrw   rv   Ún_leavesrz   r{   r~   r|   rM  r   z6Failed to generate same score  after pickling with {0}z"Failed to generate same attribute z after pickling with rr   N)r:   r�   rf   rµ   r¶   rg   rŽ   r¯   rú   rý   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__ru   r+   )r“   r  rd   re   r  r¯   Ú
attributesÚ	attributeÚfitted_attributeÚserialized_objectÚest2Úscore2s               r…   Útest_picklerf  l  sV  € ä(Ÿ™Ó0ó .ÑˆˆmØ˜4ÑÜ—9‘9œdŸk™kˆq‰Aä—=‘=¤(§/¡/ˆqˆAá¨Ô+ˆØ�‰��1ŒØ—	‘	˜!˜Q“ˆò
ˆ
ð  GQö
Ø9BˆI”w˜sŸy™y¨)Ó4Ñ4ð
Ðð 
ô #ŸL™L¨Ó-ÐÜ�|‰|Ð-Ó.ˆÜ�D‹z˜SŸ]™]Ò*Ð*Ð*à—‘˜A˜qÓ!ˆØ˜Šð 	
ØD×KÑKÈDÓQó	
ˆð *ò 	ˆIÜÜ˜Ÿ
™
 IÓ.Ø  Ñ+à8¸¸ð DØ�vðö	ò	ñM.ùò4
s   ÂEzTree, criterionc                 óÄ  — ddgddgddgddgddgddgddgddgddgddgddgddgg}t        j                  ddgddgddgddgddgddgddgddgddgddgddgddgg«      }ddgddgddgddgg}t        j                  ddgddgddgddgg«      }|t        v }|dk(  r ||dk  xx   dz  cc<   ||dk  xx   dz  cc<   |rÛ | d|¬	«      }|j                  ||«      j	                  |«      }t        ||«       |j                  d
k(  sJ ‚|j                  |«      }	t        |	«      dk(  sJ ‚|	d   j                  d
k(  sJ ‚|	d   j                  dk(  sJ ‚|j                  |«      }
t        |
«      dk(  sJ ‚|
d   j                  d
k(  sJ ‚|
d   j                  dk(  sJ ‚y  | d|¬	«      }|j                  ||«      j	                  |«      }t        ||«       |j                  d
k(  sJ ‚y )NrE   rB   r<   rP   r   r?   r9   r;   )r[   r�   ©r;   rP   )r;   r;   )rx   r£   r´   rŽ   r�   r+   r¬   rË   rš   rÎ   r)   )r&   r�   rd   re   r�   Úy_trueÚis_clfr”   Úy_hatÚprobaÚ	log_probar§   s               r…   Útest_multioutputrn     sm  € ð 
ˆRˆØ	ˆRˆØ	ˆRˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆBˆØ	
ˆBˆØ	
ˆBˆð	€Aô 	�‰à�ˆGØ�ˆGØ�ˆGØ�ˆFØ�ˆFØ�ˆFØ�ˆGØ�ˆGØ�ˆGØ�ˆFØ�ˆFØ�ˆFð	
ó	€Að" ˆbˆ�A�q�6˜B ˜7 Q¨ GÐ,€AÜ�X‰X˜˜A�w  A ¨¨Q¨°!°Q°Ð8Ó9€Fàœ.Ð(€FØ�IÒà	ˆ!ˆq‰&‹	�Q‰‹	Øˆv˜‰{Ó˜qÑ Óáá ¨YÔ7ˆØ—‘˜˜1“×%Ñ% aÓ(ˆÜ˜5 &Ô)Ø�{‰{˜fÒ$Ð$Ð$à×!Ñ! !Ó$ˆÜ�5‹z˜QŠÐˆØ�Q‰x�~‰~ Ò'Ð'Ð'Ø�Q‰x�~‰~ Ò'Ð'Ð'à×)Ñ)¨!Ó,ˆ	Ü�9‹~ Ò"Ð"Ð"Ø˜‰|×!Ñ! VÒ+Ð+Ð+Ø˜‰|×!Ñ! VÒ+Ð+Ñ+ñ  ¨YÔ7ˆØ—‘˜˜1“×%Ñ% aÓ(ˆÜ˜E 6Ô*Ø�{‰{˜fÒ$Ð$Ñ$r‡   c                  ód  — t         j                  «       D �]  \  } } |d¬«      }|j                  t        t        «       |j
                  dk(  sJ ‚t        |j                  ddg«       t        j                  t        t        j                  t        «      dz  f«      j                  } |d¬«      }|j                  t        |«       t        |j
                  «      dk(  sJ ‚t        |j                  «      dk(  sJ ‚t        |j
                  ddg«       t        |j                  ddgddgg«       �Œ y )Nr   r‰   rP   rB   r<   rE   )rŒ   r�   rŽ   rd   re   Ú
n_classes_r+   Úclasses_rx   r­   r£   r�   rš   )r“   rÙ   r”   Ú_ys       r…   Útest_classes_shapers  ë  sñ   € ä )§¡Ó 1ó =Ñˆˆná¨!Ô,ˆØ�‰””1Œà�~‰~ Ò"Ð"Ð"Ü˜3Ÿ<™<¨"¨a¨Ô1ô �Y‰Yœœ2Ÿ8™8¤A›;¨™?Ð+Ó,×.Ñ.ˆÙ¨!Ô,ˆØ�‰”�2ŒÜ�3—>‘>Ó" aÒ'Ð'Ð'Ü�3—<‘<Ó  AÒ%Ð%Ð%Ü˜3Ÿ>™>¨A¨q¨6Ô2Ü˜3Ÿ<™<¨2¨q¨'°B¸°7Ð);Ö<ñ=r‡   c                  ó  — t         j                  d d } t         j                  d d }t        d|«      }t        j                  «       D ]=  \  }} |d¬«      }|j                  | ||¬«       t        |j                  | «      |«       Œ? y )Né}   Úbalancedr   r‰   r—   )	rf   rµ   r¶   r'   rŒ   r�   rŽ   r)   r�   )Úunbalanced_XÚunbalanced_yr˜   r“   rÙ   r”   s         r…   Útest_unbalanced_irisry  ÿ  sy   € ä—9‘9˜T˜c�?€LÜ—;‘;˜t Ð$€LÜ)¨*°lÓC€Mä )§¡Ó 1ò EÑˆˆnÙ¨!Ô,ˆØ�‰�˜l¸-ˆÔHÜ˜CŸK™K¨Ó5°|ÕDñEr‡   c                  óü  — t        t        j                  «       t        j                  t        j
                  g«      D �]¼  \  \  } }} |d¬«      }t        j                  t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        j                  t        j                  d|¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        j                  t        j                  d|¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        j                  t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        D ]U  } |t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       ŒW t        D ]U  } |t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       ŒW t        j                  t        j                  d d d…   |¬«      }t        j                  d d d…   }t        |j                  ||«      j                  |«      |«       �Œ¿ y )Nr   r‰   r  ÚC)Úorderr  ÚFr?   )r   r:   r�   rx   Úfloat64r  r  rf   rµ   r¶   r+   rŽ   r�   Úascontiguousarrayr1   r0   )r“   r  r  r  rd   re   Úcsr_containerr<  s           r…   Útest_memory_layoutr�    s%  € ä(/Ü�‰ÓœBŸJ™J¬¯
©
Ð3ó)ó (8Ñ$Ñˆˆ}˜uñ ¨Ô+ˆô �J‰J”t—y‘y¨Ô.ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô �J‰J”t—y‘y¨°5Ô9ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô �J‰J”t—y‘y¨°5Ô9ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô × Ñ ¤§¡°%Ô8ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô ,ò 	<ˆMÙœdŸi™i¨uÔ5ˆAÜ—‘ˆAÜ˜sŸw™w q¨!›}×4Ñ4°QÓ7¸Õ;ð	<ô ,ò 	<ˆMÙœdŸi™i¨uÔ5ˆAÜ—‘ˆAÜ˜sŸw™w q¨!›}×4Ñ4°QÓ7¸Õ;ð	<ô �J‰J”t—y‘y¡ 1 ‘~¨UÔ3ˆÜ�K‰K™˜!˜ÑˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÖ7ñQ(8r‡   c                  óz  — t        j                  d«      d d …t         j                  f   } t        j                  d«      }d|d d t        j                  d«      }d||dk(  <   t	        d¬«      }|j                  | ||¬«       t        |j                  | «      t        j                  d«      «       t        j                  d«      d d …t         j                  f   } t        j                  d«      }d|dd d	|dd d| dd…df<   t        j                  d«      }d
||d	k(  <   t	        dd¬«      }|j                  | ||¬«       |j                  j                  d   dk(  sJ ‚d||d	k(  <   t	        dd¬«      }|j                  | ||¬«       |j                  j                  d   dk(  sJ ‚t        j                  } t        j                  }t        j                  d| j                   d   d«      }t	        d¬«      }|j                  | |   ||   «       t        j"                  || j                   d   ¬«      }t	        d¬«      }|j                  | ||¬«       |j                  j$                  t&        j(                  j*                  k7  }t-        |j                  j                  |   |j                  j                  |   «       y )NrJ  rW   é2   r   r‰   r—   éÈ   r<   rP   gR¸…ëQà?rÒ   g     °b@rN   g     ÀH@)Ú	minlength)rx   rÓ   rÔ   r™   r   rŽ   r+   r�   rp   rý   r{   rf   rµ   r¶   r-  Úrandintr¬   r#  rw   r
   Ú_treer    r*   )rd   re   r˜   r”   Ú
duplicatesrõ   r„   s          r…   Útest_sample_weightr‰  8  sA  € ô 	�	‰	�#‹’qœ"Ÿ*™*�}Ñ%€AÜ
�‰�‹€AØ€A€c€r€Fä—G‘G˜C“L€MØ€M�!�q‘&Ñä
 ¨aÔ
0€CØ‡G�GˆAˆq €GÔ.Ü�s—{‘{ 1“~¤r§w¡w¨s£|Ô4ô 	�	‰	�#‹’qœ"Ÿ*™*�}Ñ%€AÜ
�‰�‹€AØ€A€bˆ€IØ€A€cˆ#€JØ€A€cˆ#€gˆq€j�Mä—G‘G˜C“L€Mà €M�!�q‘&ÑÜ
 ¨1¸1Ô
=€CØ‡G�GˆAˆq €GÔ.Ø�9‰9×Ñ˜qÑ! UÒ*Ð*Ð*à€M�!�q‘&ÑÜ
 ¨1¸1Ô
=€CØ‡G�GˆAˆq €GÔ.Ø�9‰9×Ñ˜qÑ! TÒ)Ð)Ð)ô 	�	‰	€AÜ�‰€Aä—‘˜Q §¡¨¡
¨CÓ0€Jä
 ¨aÔ
0€CØ‡G�GˆAˆj‰M˜1˜Z™=Ô)ä—K‘K 
°a·g±g¸a±jÔA€MÜ!¨qÔ1€DØ‡H�HˆQ� €HÔ/à�y‰y×&Ñ&¬$¯*©*×*>Ñ*>Ñ>€HÜØ�	‰	×Ñ˜HÑ% t§z¡z×';Ñ';¸HÑ'Eõr‡   c                  óD  — t        j                  d«      d d …t         j                  f   } t        j                  d«      }d|d d t	        d¬«      }t         j
                  j                  dd«      }t        j                  t        «      5  |j                  | ||¬«       d d d «       t        j                  d«      }t        j                  d«      }t        j                  t        |¬	«      5  |j                  | ||¬«       d d d «       y # 1 sw Y   ŒlxY w# 1 sw Y   y xY w)
NrJ  rW   rƒ  r   r‰   r<   r—   zgInput should have at least 1 dimension i.e. satisfy `len(x.shape) > 0`, got scalar `array(0.)` instead.r	  )rx   rÓ   rÔ   r™   r   Úrandomr.  r¹   rø   rù   rŽ   r£   ÚreÚescapeÚ	TypeError)rd   re   r”   r˜   Úexpected_errs        r…   Útest_sample_weight_invalidr�  l  sä   € ä
�	‰	�#‹’qœ"Ÿ*™*�}Ñ%€AÜ
�‰�‹€AØ€A€c€r€Fä
 ¨aÔ
0€Cä—I‘I—N‘N 3¨Ó*€MÜ	�‰”zÓ	"ñ 3Ø�‰��1 MˆÔ2÷3ô —H‘H˜Q“K€Mä—9‘9ðBó€Lô 
�‰”y¨Ô	5ñ 3Ø�‰��1 MˆÔ2÷3ð 3÷3ð 3ú÷3ð 3ús   Â
D
Ã,DÄ
DÄDc                 óü  — t         |    } |d¬«      }|j                  t        j                  t        j                  «        |dd¬«      }|j                  t        j                  t        j                  «       t        |j                  |j                  «       t        j                  t        j                  t        j                  t        j                  f«      j                  } |ddddœddddœddddœgd¬«      }|j                  t        j                  |«       t        |j                  |j                  «        |dd¬«      }|j                  t        j                  |«       t        |j                  |j                  «       t        j                  t        j                  j                  «      }|t        j                  dk(  xx   d	z  cc<   dd
ddœ} |d¬«      }|j                  t        j                  t        j                  |«        ||d¬«      }|j                  t        j                  t        j                  «       t        |j                  |j                  «        |d¬«      }|j                  t        j                  t        j                  |dz  «        ||d¬«      }|j                  t        j                  t        j                  |«       t        |j                  |j                  «       y )Nr   r‰   rv  ©Úclass_weightr[   ç       @rR   r  r<   rJ  g      Y@rP   )rŒ   rŽ   rf   rµ   r¶   r)   rò   rx   r­   r�   r™   r¬   )	r“   rÙ   Úclf1rõ   Ú
iris_multiÚclf3Úclf4r˜   r“  s	            r…   Útest_class_weightsr™  „  s  € ô ˜t‘_€Nñ  qÔ)€DØ‡H�HŒT�Y‰YœŸ™Ô$Ù zÀÔB€DØ‡H�HŒT�Y‰YœŸ™Ô$Ü˜×1Ñ1°4×3LÑ3LÔMô —‘œDŸK™K¬¯©´d·k±kÐBÓC×EÑE€Jáà˜ Ñ$Ø˜ Ñ$Ø˜ Ñ$ð
ð
 ô€Dð 	‡H�HŒT�Y‰Y˜
Ô#Ü˜×1Ñ1°4×3LÑ3LÔMá zÀÔB€DØ‡H�HŒT�Y‰Y˜
Ô#Ü˜×1Ñ1°4×3LÑ3LÔMô —G‘GœDŸK™K×-Ñ-Ó.€MØ”$—+‘+ Ñ"Ó# sÑ*Ó#Ø˜u¨Ñ-€LÙ qÔ)€DØ‡H�HŒT�Y‰YœŸ™ ]Ô3Ù |À!ÔD€DØ‡H�HŒT�Y‰YœŸ™Ô$Ü˜×1Ñ1°4×3LÑ3LÔMñ  qÔ)€DØ‡H�HŒT�Y‰YœŸ™ ]°AÑ%5Ô6Ù |À!ÔD€DØ‡H�HŒT�Y‰YœŸ™ ]Ô3Ü˜×1Ñ1°4×3LÑ3LÕMr‡   c                 ó@  — t         |    }t        j                  t        t        j                  t        «      dz  f«      j
                  } |dddœgd¬«      }d}t        j                  t        |¬«      5  |j                  t        |«       d d d «       y # 1 sw Y   y xY w)	NrP   rN   rR   ©rB   r<   r   r’  zBnumber of elements in class_weight should match number of outputs.r	  )rŒ   rx   r­   re   r£   r�   r¹   rø   rù   rŽ   rd   )r“   rÙ   rr  r”   rs   s        r…   Útest_class_weight_errorsrœ  ´  s}   € ô ˜t‘_€NÜ	�‰”A”r—x‘x¤“{ Q‘Ð'Ó	(×	*Ñ	*€Bñ ¨C°CÑ'8Ð&9ÈÔ
J€CØR€GÜ	�‰”z¨Ô	1ñ Ø�‰”�2Œ÷÷ ñ ús   Á4BÂBc                  óÞ   — t        j                  dd¬«      \  } }d}t        j                  «       D ]:  \  }} |d |dz   ¬«      j	                  | |«      }|j                  «       |dz   k(  rŒ:J ‚ y ©NrJ  r<   rK  r;   )r½   rð   )r	   Úmake_hastie_10_2r:   r�   rŽ   Úget_n_leaves©rd   re   Úkr“   r  r  s         r…   Útest_max_leaf_nodesr£  Á  sp   € ä×$Ñ$¨sÀÔC�D€A€qØ	€AÜ(Ÿ™Ó0ò +ÑˆˆmÙ d¸1¸q¹5ÔA×EÑEÀaÈÓKˆØ×ÑÓ! Q¨¡UÓ*Ð*Ð*ñ+r‡   c                  óÒ   — t        j                  dd¬«      \  } }d}t        j                  «       D ]4  \  }} |d|¬«      j	                  | |«      }|j                  «       dk(  rŒ4J ‚ y rž  )r	   rŸ  r:   r�   rŽ   Ú	get_depthr¡  s         r…   Útest_max_leaf_nodes_max_depthr¦  Ê  se   € ä×$Ñ$¨sÀÔC�D€A€qØ	€AÜ(Ÿ™Ó0ò $ÑˆˆmÙ a¸Ô:×>Ñ>¸qÀ!ÓDˆØ�}‰}‹ !Ó#Ð#Ð#ñ$r‡   c                  óÈ   — dD ]]  } t        t        «       j                  dgdggddg«      j                  | «      }d|j                  d   cxk  rdk  rŒPJ d«       ‚ J d«       ‚ y )N)rY  r   rw   rv   r{   r~   rz   r|   r   r<   rF   r?   z Array points to arbitrary memory)rú   r   rŽ   rý   Úflat)Úattrr   s     r…   Útest_arrays_persistrª  Ó  st   € ð	ò Kˆô Ô.Ó0×4Ñ4°q°c¸A¸3°ZÀ!ÀQÀÓH×NÑNÐPTÓUˆà�U—Z‘Z ‘]Ô& QÓ&ÐJÐ(JÓJÑ&ÐJÐ(JÓJÐ&ñKr‡   c                  ó  — t        d«      } t        j                  d«      }| j                  ddd«      }t        j                  «       D ];  \  }} |d¬«      }|j                  ||«       |j                  j                  dk(  rŒ;J ‚ y )Nr   )rG   r^   rP   ©rG   r‰   )	r3   rx   rp   r†  r:   r�   rŽ   rý   r½   )r[   rd   re   r“   r  r  s         r…   Útest_only_constant_featuresr­  å  sx   € Ü% aÓ(€LÜ
�‰�Ó€AØ×Ñ˜Q  5Ó)€AÜ(Ÿ™Ó0ò (ÑˆˆmÙ¨Ô+ˆØ�‰��1ŒØ�y‰y×"Ñ" aÓ'Ð'Ð'ñ(r‡   Útree_clsc                 ó  — t        d«      }|j                  dd«      }d}|d d …dfxx   |z  cc<   |j                  ddd«      } | d¬«      }|j                  ||«       |j                  d   dk(  sJ ‚|j                  d   dkD  sJ ‚y )Nr   rG   rP   gH¯¼šò×z>r¬  r‰   r<   )r3   r.  r†  rŽ   rò   )r®  r[   rd   Úfeature_thresholdre   r  s         r…   Útest_almost_constant_featurer±  ï  s˜   € ô
 & aÓ(€LØ×Ñ˜"˜aÓ €Að ÐØ‚aˆ€dƒGÐ Ñ ƒGØ×Ñ˜Q  5Ó)€Aá
 Ô
"€CØ‡G�GˆAˆq„Mà×#Ñ# AÑ&¨!Ò+Ð+Ð+à×#Ñ# AÑ&¨Ò*Ð*Ñ*r‡   c                  ór  — t        j                  t        j                  g d¢gt        j                  d«      f«      «      } g d¢}t        j                  «       D ]\  \  }}d|vsŒ |dd¬«      }|j                  | |«       |j                  j                  dk(  sJ ‚|j                  j                  d	k(  rŒ\J ‚ y )
N)r   r   r   r   r   r<   rP   r;   r>   rM   r¾   )r;   rL   )r   r   r   r<   r<   rP   rP   rP   r?   r?   r?   Ú	ExtraTreer   r<   rª   rP   r>   )
rx   Ú	transposer­   rp   r:   r�   rŽ   rý   r½   rt   ©rd   re   r“   r  r  s        r…   Ú,test_behaviour_constant_feature_after_splitsr¶    s¡   € Ü
�‰Ü
�	‰	Ò5Ð6¼¿¹ÀÓ8IÐJÓKó	€Aò 	*€AÜ(Ÿ™Ó0ò -Ñˆˆmà˜dÒ"Ù¨Q¸QÔ?ˆCØ�G‰G�A�qŒMØ—9‘9×&Ñ&¨!Ò+Ð+Ð+Ø—9‘9×'Ñ'¨1Ó,Ð,Ð,ñ-r‡   c                  óÄ  — t        j                  t        j                  dgdgdgdgg«      t        j                  d«      g«      } t        j                  g d¢«      }t        j                  «       D ]k  \  }} |dd¬«      }|j                  | |«       |j                  j                  dk(  sJ ‚t        |j                  | «      t        j                  dd	«      «       Œm t        j                  «       D ]k  \  }} |dd¬«      }|j                  | |«       |j                  j                  dk(  sJ ‚t        |j                  | «      t        j                  d
d	«      «       Œm y )NrR   rW   )r;   r  )rW   rR   rW   rR   r   r<   rª   rh  rN   )r;   )rx   Úhstackr£   rp   rŒ   r�   rŽ   rý   r½   r+   rË   r›   rÕ   r�   rµ  s        r…   Ú(test_with_only_one_non_constant_featuresr¹    s   € Ü
�	‰	”2—8‘8˜c˜U S E¨C¨5°3°%Ð8Ó9¼2¿8¹8ÀIÓ;NÐOÓP€Aä
�‰Ò%Ó&€AÜ(Ÿ™Ó0ò GÑˆˆmÙ¨¸Ô;ˆØ�‰��1ŒØ�y‰y×"Ñ" aÒ'Ð'Ð'Ü˜3×,Ñ,¨QÓ/´·±¸ÀÓ1EÕFð	Gô  )Ÿ™Ó0ò ?ÑˆˆmÙ¨¸Ô;ˆØ�‰��1ŒØ�y‰y×"Ñ" aÒ'Ð'Ð'Ü˜3Ÿ;™; q›>¬2¯7©7°4¸Ó+=Õ>ñ	?r‡   c                  ó&  — t        j                  dd«      j                  t         j                  «      j	                  dd«      } t        «       }t        j                  t        d¬«      5  |j                  | g d¢«       d d d «       y # 1 sw Y   y xY w)Ng¥\Ãñ)c=Hr;   rB   r<   r  r	  )r   r<   r   r<   )
rx   Úrepeatr,  r~  Úreshaper   r¹   rø   rù   rŽ   )rd   r”   s     r…   Útest_big_inputr½  #  sg   € ä
�	‰	�(˜AÓ×%Ñ%¤b§j¡jÓ1×9Ñ9¸"¸aÓ@€AÜ
 Ó
"€CÜ	�‰”z¨Ô	3ñ !Ø�‰�’<Ô ÷!÷ !ñ !ús   Á)BÂBc                  óz   — ddl m}  t        j                  t        «      5   | «        d d d «       y # 1 sw Y   y xY w)Nr   ©Ú_realloc_test)Úsklearn.tree._utilsrÀ  r¹   rø   ÚMemoryErrorr¿  s    r…   Útest_reallocrÃ  +  s+   € Ý1ä	�‰”{Ó	#ñ ÙŒ÷÷ ñ ús    1±:c                  ó  — dt        j                  d«      z  } t        j                  j	                  dd«      }t        j                  j                  ddd«      }d| dz   z  }t        d|¬«      }t        j                  t        «      5  |j                  ||«       d d d «       d| dz
  z  dz
  }t        d|¬«      }t        j                  t        «      5  |j                  ||«       d d d «       y # 1 sw Y   ŒVxY w# 1 sw Y   y xY w)	NrO   ÚPrG   rP   r   r<   Úbest)Úsplitterrð   )ÚstructÚcalcsizerx   r‹  Úrandnr†  r   r¹   rø   Ú	ExceptionrŽ   rÂ  )Ún_bitsrd   re   Úhuger”   s        r…   Útest_huge_allocationsrÎ  2  sß   € Ø”—‘ Ó%Ñ%€Fä
�	‰	�‰˜˜AÓ€AÜ
�	‰	×Ñ˜!˜Q Ó#€Að �˜!‘Ñ€DÜ
 ¨&ÀÔ
F€CÜ	�‰”yÓ	!ñ Ø�‰��1Œ÷ð
 �˜!‘Ñ˜qÑ €DÜ
 ¨&ÀÔ
F€CÜ	�‰”{Ó	#ñ Ø�‰��1Œ÷ð ÷ð ú÷ð ús   ÂC0ÃC<Ã0C9Ã<Dc                 ó   — t         |    }t        |   d   }t        |   d   }|dv r|j                  d   dz  }|d | }|d | }t        t        z   t
        z   D �]5  } ||«      } |d|¬«      j                  ||«      }	 |d|¬«      j                  ||«      }
t        |	j                  |
j                  dj                  | «      «       |	j                  |«      }| t        v r"|	j                  |«      }|	j                  |«      }t        t
        z   t        z   D ]t  } ||t        j                  ¬«      }t!        |
j                  |«      |«       | t        v sŒ?t!        |
j                  |«      «       t!        |
j                  |«      «       Œv �Œ8 y )	Nrd   re   )rh   rg   r   r>   ©r[   r½   ú5{0} with dense and sparse format gave different treesr  )r:   r+  r¬   r/   r0   r1   rŽ   r†   rý   ru   r�   rŒ   rË   rÎ   rx   r  r*   )r
   Údatasetr½   r  rd   re   r\   r1  ÚX_sparser€   r�   Úy_predÚy_probaÚy_log_probaÚsparse_container_testÚX_sparse_tests                   r…   Úcheck_sparse_inputrÙ  G  s|  € Ü˜d‘O€MÜ�Ñ˜#Ñ€AÜ�Ñ˜#Ñ€Að Ð(Ñ(Ø—G‘G˜A‘J !‘Oˆ	ØˆjˆyˆMˆØˆjˆyˆMˆä*¬^Ñ;¼nÑLó ÐÙ# AÓ&ˆñ  q°IÔ>×BÑBÀ1ÀaÓHˆÙ q°IÔ>×BÑBÀ8ÈQÓOˆäØ�G‰GØ�G‰GØC×JÑJÈ4ÓPô	
ð —‘˜1“ˆØ”9ÑØ—o‘o aÓ(ˆGØ×-Ñ-¨aÓ0ˆKä%3´nÑ%DÄ~Ñ%Uò 		Ð!Ù1°(Ä"Ç*Á*ÔMˆMä% a§i¡i°Ó&>ÀÔGà”yÒ Ü)¨!¯/©/¸-Ó*HÈ'ÔRÜ)Ø×'Ñ'¨Ó6¸õò		ñ%r‡   Ú	tree_typerÒ  )rj   ri   rh   rl   rm   rn   ro   rp   c                 ó0   — |dk(  rdnd }t        | ||«       y )Nrh   r?   ©rÙ  )rÚ  rÒ  r½   s      r…   Útest_sparse_inputrÝ  p  s   € ð  Ò(‘¨d€IÜ�y '¨9Õ5r‡   rg   rk   c                 ó   — t        | |d«       y )NrP   rÜ  )rÚ  rÒ  s     r…   Útest_sparse_input_reg_treesrß  ƒ  s   € ô
 �y '¨1Õ-r‡   )rm   rn   ro   rp   c                 ó  — t         |    }t        |   d   } ||«      }t        |   d   } |ddd¬«      j                  ||«      } |ddd¬«      j                  ||«      }t        |j                  |j                  dj                  | «      «       t        |j                  |«      |j                  |«      «        |ddd¬	«      j                  ||«      } |ddd¬	«      j                  ||«      }t        |j                  |j                  dj                  | «      «       t        |j                  |«      |j                  |«      «        |d|j                  d   dz  ¬
«      j                  ||«      } |d|j                  d   dz  ¬
«      j                  ||«      }t        |j                  |j                  dj                  | «      «       t        |j                  |«      |j                  |«      «        |dd¬«      j                  ||«      } |dd¬«      j                  ||«      }t        |j                  |j                  dj                  | «      «       t        |j                  |«      |j                  |«      «       y )Nrd   re   r   r<   rP   )r[   r‹   r½   rÑ  rG   )r[   r‹   r  )r[   r"  r?   rï   )	r:   r+  rŽ   r†   rý   ru   r*   r�   r¬   )	rÚ  rÒ  r<  r  rd   rÓ  re   r€   r�   s	            r…   Útest_sparse_parametersrá  ‹  s9  € ô ˜iÑ(€MÜ�Ñ˜#Ñ€AÙ˜QÓ€HÜ�Ñ˜#Ñ€Añ 	 1°1ÀÔB×FÑFÀqÈ!ÓL€AÙ 1°1ÀÔB×FÑFÀxÐQRÓS€AÜØ	�‰Ø	�‰Ø?×FÑFÀyÓQôô
 ˜aŸi™i¨›l¨A¯I©I°a«LÔ9ñ 	 1°1ÈÔK×OÑOÐPQÐSTÓU€AÙ 1°1ÈÔK×OÑOØ�!ó	€Aô Ø	�‰Ø	�‰Ø?×FÑFÀyÓQôô
 ˜aŸi™i¨›l¨A¯I©I°a«LÔ9ñ 	 1°x·~±~ÀaÑ7HÈAÑ7MÔN×RÑRÐSTÐVWÓX€AÙ 1°x·~±~ÀaÑ7HÈAÑ7MÔN×RÑRØ�!ó	€Aô Ø	�‰Ø	�‰Ø?×FÑFÀyÓQôô
 ˜aŸi™i¨›l¨A¯I©I°a«LÔ9ñ 	 1°QÔ7×;Ñ;¸A¸qÓA€AÙ 1°QÔ7×;Ñ;¸HÀaÓH€AÜØ	�‰Ø	�‰Ø?×FÑFÀyÓQôô
 ˜aŸi™i¨›l¨A¯I©I°a«LÕ9r‡   ztree_type, criterionc                 óv  — t         |    }t        |   d   } ||«      }t        |   d   } |dd|¬«      j                  ||«      } |dd|¬«      j                  ||«      }	t        |j                  |	j                  dj                  | «      «       t        |	j                  |«      |j                  |«      «       y )Nrd   re   r   r?   ©r[   r½   r�   rÑ  )r:   r+  rŽ   r†   rý   ru   r*   r�   )
rÚ  rÒ  r<  r�   r  rd   rÓ  re   r€   r�   s
             r…   Útest_sparse_criteriarä  Â  s­   € ô ˜iÑ(€MÜ�Ñ˜#Ñ€AÙ˜QÓ€HÜ�Ñ˜#Ñ€Aá 1°¸YÔG×KÑKÈAÈqÓQ€AÙ 1°¸YÔG×KÑKÈHÐVWÓX€AäØ	�‰Ø	�‰Ø?×FÑFÀyÓQôô
 ˜aŸi™i¨›l¨A¯I©I°a«LÕ9r‡   zcsc_container,csr_containerc                 óÌ  — t         |    }d}d}|}t        j                  |«      }t        d«      }g }	g }
d}|g}t	        |«      D ]x  }|j                  |d«      }|j                  |«      d | }|	j                  |«       |j                  dd|f¬«      dz
  }|
j                  |«       ||z  }|j                  |«       Œz t        j                  |	«      j                  t        j                  «      }	t        j                  |t        j                  ¬«      }t        j                  t        j                  |
«      t        j                  ¬«      }
 ||
|	|f||f¬«      }|j                  «       } ||
|	|f||f¬«      }|j                  «       }|j                  dd|f¬«      }|j                  «       }|j                   d	k(  j#                  «       dkD  sJ ‚|j                   d	k(  j#                  «       dkD  sJ ‚ |d|¬
«      j%                  ||«      } |d|¬
«      j%                  ||«      }t'        |j(                  |j(                  dj+                  t,        «      «       ||f}t/        ||«      D �]ô  \  }}t1        |j(                  j3                  |«      |j(                  j3                  |«      «       t1        |j3                  |«      |j3                  |«      «       t1        |j3                  |«      |j(                  j3                  |«      «       t1        |j(                  j5                  |«      j                  «       |j(                  j5                  |«      j                  «       «       t1        |j5                  |«      j                  «       |j5                  |«      j                  «       «       t1        |j5                  |«      j                  «       |j(                  j5                  |«      j                  «       «       t1        |j7                  |«      |j7                  |«      «       t,        t8        v s�ŒËt1        |j;                  |«      |j;                  |«      «       �Œ÷ y )Nr?   rG   r   rN   r_   r<   r  ©r¬   rW   rÐ  rÑ  )r:   rx   rÓ   r3   rN  ÚbinomialÚpermutationÚappendÚconcatenater,  Úint32r£   r  Útoarrayr†  Úcopyrµ   r}   rŽ   r†   rý   ru   r
   r   r*   r  Údecision_pathr�   rŒ   rË   )rÚ  r<  r€  r  r½   r]   r\   Úsamplesr[   r«   rµ   ÚoffsetÚindptrÚiÚn_nonzero_iÚ	indices_iÚdata_irÓ  rd   rØ  ÚX_testre   r€   r�   ÚXsÚX1r  s                              r…   Útest_explicit_sparse_zerosrù  Ý  s«  € ô
 ˜iÑ(€MØ€IØ€Jð €IÜ�i‰i˜	Ó"€Gô & aÓ(€LØ€GØ€DØ€FØˆX€FÜ�:Óò ˆØ"×+Ñ+¨I°sÓ;ˆØ ×,Ñ,¨WÓ5°l°{ÐCˆ	Ø�‰�yÔ!Ø×&Ñ& q¨#°[°NÐ&ÓCÀaÑGˆØ�‰�FÔØ�+ÑˆØ�‰�fÕðô �n‰n˜WÓ%×,Ñ,¬R¯X©XÓ6€GÜ�X‰X�f¤B§H¡HÔ-€FÜ�8‰8”B—N‘N 4Ó(´·
±
Ô;€DÙ˜d G¨VÐ4¸YÈ
Ð<SÔT€HØ×ÑÓ€AÙ!Ø	ˆw˜Ð¨	°:Ð'>ô€Mð ×"Ñ"Ó$€FØ×Ñ˜Q ¨¨ÐÓ5€Að "×&Ñ&Ó(€Mð �M‰M˜SÑ ×%Ñ%Ó'¨!Ò+Ð+Ð+Ø×Ñ #Ñ%×*Ñ*Ó,¨qÒ0Ð0Ð0ñ 	 1°	Ô:×>Ñ>¸qÀ!ÓD€AÙ 1°	Ô:×>Ñ>¸xÈÓK€AäØ	�‰Ø	�‰Ø?×FÑFÄtÓLôð �-Ð	 €BÜ˜"˜b“/ó P‰ˆˆBÜ! !§'¡'§-¡-°Ó"3°Q·W±W·]±]À2Ó5FÔGÜ! !§'¡'¨"£+¨q¯w©w°r«{Ô;Ü! !§'¡'¨"£+¨q¯w©w¯}©}¸RÓ/@ÔAä!Ø�G‰G×!Ñ! "Ó%×-Ñ-Ó/°·±×1FÑ1FÀrÓ1J×1RÑ1RÓ1Tô	
ô 	"Ø�O‰O˜BÓ×'Ñ'Ó)¨1¯?©?¸2Ó+>×+FÑ+FÓ+Hô	
ô 	"Ø�O‰O˜BÓ×'Ñ'Ó)¨1¯7©7×+@Ñ+@ÀÓ+D×+LÑ+LÓ+Nô	
ô 	" !§)¡)¨B£-°·±¸2³Ô?ä”9ÓÜ% a§o¡o°bÓ&9¸1¿?¹?È2Ó;NÖOñ%Pr‡   c                 ó  — t         |    }t        j                  d d …df   j                  «       }t        j                  d d …df   j	                  d«      }t        j
                  }t        j                  t        «      5   |d¬«      j                  ||«       d d d «        |d¬«      }|j                  ||«       t        j                  t        «      5  |j                  |g«       d d d «       y # 1 sw Y   ŒYxY w# 1 sw Y   y xY w)Nr   r›  r‰   )r:   rf   rµ   r®   r¼  r¶   r¹   rø   rù   rŽ   r�   )r“   r  rd   ÚX_2dre   r  s         r…   Úcheck_raise_error_on_1d_inputrü  ,  sÎ   € Ü˜d‘O€Mä�	‰	’!�Q�$‰×ÑÓ€AÜ�9‰9’Q˜�T‰?×"Ñ" 7Ó+€DÜ�‰€Aä	�‰”zÓ	"ñ 0Ù 1Ô%×)Ñ)¨!¨QÔ/÷0ñ  QÔ
'€CØ‡G�GˆD�!ÔÜ	�‰”zÓ	"ñ Ø�‰�Q�CÔ÷ð ÷0ð 0ú÷
ð ús   Á>C0ÃC<Ã0C9Ã<Dc                 óX   — t        «       5  t        | «       d d d «       y # 1 sw Y   y xY w©N)r-   rü  r:  s    r…   Útest_1d_inputrÿ  <  s%   € ä	Ó	ñ ,Ü% dÔ+÷,÷ ,ñ ,ús   ‹  )r1  c                 óZ  — t         |    }t        j                  dgdgdgdgdgg«      }g d¢}g d¢}|� ||«      } |d¬«      }|j                  |||¬«       |j                  j
                  dk(  sJ ‚ |dd¬«      }|j                  |||¬«       |j                  j
                  dk(  sJ ‚y )	Nr   r<   )r   r   r   r   r<   )rA   rA   rA   rA   rA   r‰   r—   gš™™™™™Ù?)r[   r)  )r:   rx   r£   rŽ   rý   r½   )r“   r1  r  rd   re   r˜   r  s          r…   Ú test_min_weight_leaf_split_levelr  B  s´   € ô ˜d‘O€Mä
�‰�1�#˜�s˜Q˜C !  q cÐ*Ó+€AÚ€AÚ-€MØÐ#Ù˜QÓˆá
 QÔ
'€CØ‡G�GˆAˆq €GÔ.Ø�9‰9×Ñ !Ò#Ð#Ð#á
 QÀÔ
E€CØ‡G�GˆAˆq €GÔ.Ø�9‰9×Ñ !Ò#Ð#Ñ#r‡   c                 ó  — t         j                  t        j                  d¬«      }t	        |    «       }|j                  t         t        «       t        |j                  t         «      |j                  j                  |«      «       y ©NF©rí  ©
ÚX_smallr,  rx   r  r:   rŽ   Úy_smallr+   r  rý   )r“   Ú	X_small32r  s      r…   Útest_public_apply_all_treesr	  V  sR   € ä—‘œrŸz™z°�Ó6€Iä
�D‰/Ó
€CØ‡G�GŒG”WÔÜ�s—y‘y¤Ó)¨3¯9©9¯?©?¸9Ó+EÕFr‡   r€  c                 ó  —  |t         j                  t        j                  d¬«      «      }t	        |    «       }|j                  t         t        «       t        |j                  t         «      |j                  j                  |«      «       y r  r  )r“   r€  r  r  s       r…   Útest_public_apply_sparse_treesr  _  sY   € ñ œgŸn™n¬R¯Z©Z¸e˜nÓDÓE€Iä
�D‰/Ó
€CØ‡G�GŒG”WÔÜ�s—y‘y¤Ó)¨3¯9©9¯?©?¸9Ó+EÕFr‡   c                  óV  — t         j                  } t         j                  }t        dd¬«      j	                  | |«      }|j                  | d d «      j                  «       }t        |g d¢g d¢g«       dt        j                  t        j                  ddg} g d¢}t        j                  | «      j                  d	d«      } t        d¬
«      j	                  | |«      } |j
                  | «      j                  «       j                  d¬«      }t        ||j                  j                  «       y )Nr   r<   rÐ  rP   )r<   r<   r   ©r<   r   r<   r?   ©r   r   r   r<   r<   rB   r‰   ©Úaxis)rf   rµ   r¶   r   rŽ   rî  rì  r+   rx   Únanr£   r¼  r   r}   rý   r|   )rd   re   r  Únode_indicatorr
   r|   s         r…   Útest_decision_path_hardcodedr  i  sè   € ä�	‰	€AÜ�‰€AÜ
 ¨a¸1Ô
=×
AÑ
AÀ!ÀQÓ
G€CØ×&Ñ& q¨¨! uÓ-×5Ñ5Ó7€NÜ�~ª	²9Ð'=Ô>ð
 
ŒB�F‰F”B—F‘F˜A˜qÐ!€AÚ€AÜ
�‰�‹×Ñ˜B Ó"€AÜ ¨aÔ0×4Ñ4°Q¸Ó:€DØ'�T×'Ñ'¨Ó*×2Ñ2Ó4×8Ñ8¸aÐ8Ó@€NÜ�~ t§z¡z×'@Ñ'@ÕAr‡   c                 ó  — t         j                  }t         j                  }|j                  d   }t        |    } |dd¬«      }|j                  ||«       |j                  |«      }|j                  «       }|j                  ||j                  j                  fk(  sJ ‚|j                  |«      }t        |«      D �	�
cg c]  \  }	}
||	|
f   ‘Œ }}	}
t        |t        j                  |¬«      «       |j                  j                  t         k(  }t        t        j"                  ||«      t        j                  |¬«      «       |j%                  d¬«      j'                  «       }|j                  j(                  |k  sJ ‚y c c}
}	w )Nr   rP   rÐ  ræ  r<   r  )rf   rµ   r¶   r¬   r:   rŽ   rî  rì  rý   rt   r  Ú	enumerater*   rx   r™   rw   r    r  r}   rB  r½   )r“   rd   re   r\   r  r  Únode_indicator_csrr  Úleavesrò  ÚjÚleave_indicatorÚ
all_leavesr½   s                 r…   Útest_decision_pathr  |  s?  € ä�	‰	€AÜ�‰€AØ—‘˜‘
€Iä˜d‘O€MÙ
 Q°!Ô
4€CØ‡G�GˆAˆq„Mà×*Ñ*¨1Ó-ÐØ'×/Ñ/Ó1€NØ×Ñ I¨s¯y©y×/CÑ/CÐ#DÒDÐDÐDð �Y‰Y�q‹\€FÜ8AÀ&Ó8I×J±°°1�~ a¨ dÓ+ÐJ€OÑJÜ˜o¬r¯w©w¸YÔ/GÔHð —‘×(Ñ(¬IÑ5€JÜÜ
�‰ˆ~˜zÓ*¬B¯G©G¸)Ô,Dôð
 ×"Ñ"¨Ð"Ó*×.Ñ.Ó0€IØ�9‰9×Ñ )Ò+Ð+Ñ+ùó Ks   Â<E=c                 óÈ   — t          |t        «      }}t        |    }t        j                  t
        «      5   |d¬«      j                  ||«       d d d «       y # 1 sw Y   y xY w©Nr   r‰   )ÚX_multilabelÚy_multilabelr:   r¹   rø   rŽ  rŽ   )r“   r€  rd   re   r  s        r…   Útest_no_sparse_y_supportr   š  sQ   € ô ™¤|Ó4€q€AÜ˜d‘O€MÜ	�‰”yÓ	!ñ 0Ù 1Ô%×)Ñ)¨!¨QÔ/÷0÷ 0ñ 0ús   µAÁA!c                  ó  — t        ddd¬«      } | j                  dgdgdgdgdggg d¢g d	¢¬
«       t        | j                  j                  g d¢«       t        | j                  j                  j                  g d¢«       | j                  dgdgdgdgdggg d¢t        j                  d«      ¬
«       t        | j                  j                  g d¢«       t        | j                  j                  j                  g d¢«       | j                  dgdgdgdgdggg d¢¬«       t        | j                  j                  g d¢«       t        | j                  j                  j                  g d¢«       t        ddd¬«      } dgdgdgdgdgg}| j                  |g d¢g d¢¬
«       t        | j                  |«      g d¢«       t        | j                  j                  g d¢«       t        | j                  j                  j                  g d¢«       y)aP  Check MAE criterion produces correct results on small toy datasets:

    ## First toy dataset
    ------------------
    | X | y | weight |
    ------------------
    | 3 | 3 |  0.1   |
    | 5 | 3 |  0.3   |
    | 8 | 4 |  1.0   |
    | 3 | 6 |  0.6   |
    | 5 | 7 |  0.3   |
    ------------------
    |sum wt:|  2.3   |
    ------------------

    Because we are dealing with sample weights, we cannot find the median by
    simply choosing/averaging the centre value(s), instead we consider the
    median where 50% of the cumulative weight is found (in a y sorted data set)
    . Therefore with regards to this test data, the cumulative weight is >= 50%
    when y = 4.  Therefore:
    Median = 4

    For all the samples, we can get the total error by summing:
    Absolute(Median - y) * weight

    I.e., total error = (Absolute(4 - 3) * 0.1)
                      + (Absolute(4 - 3) * 0.3)
                      + (Absolute(4 - 4) * 1.0)
                      + (Absolute(4 - 6) * 0.6)
                      + (Absolute(4 - 7) * 0.3)
                      = 2.5

    Impurity = Total error / total weight
             = 2.5 / 2.3
             = 1.08695652173913
             ------------------

    From this root node, the next best split is between X values of 3 and 5.
    Thus, we have left and right child nodes:

    LEFT                    RIGHT
    ------------------      ------------------
    | X | y | weight |      | X | y | weight |
    ------------------      ------------------
    | 3 | 3 |  0.1   |      | 5 | 3 |  0.3   |
    | 3 | 6 |  0.6   |      | 8 | 4 |  1.0   |
    ------------------      | 5 | 7 |  0.3   |
    |sum wt:|  0.7   |      ------------------
    ------------------      |sum wt:|  1.6   |
                            ------------------

    Impurity is found in the same way:
    Left node Median = 6
    Total error = (Absolute(6 - 3) * 0.1)
                + (Absolute(6 - 6) * 0.6)
                = 0.3

    Left Impurity = Total error / total weight
            = 0.3 / 0.7
            = 0.428571428571429
            -------------------

    Likewise for Right node:
    Right node Median = 4
    Total error = (Absolute(4 - 3) * 0.3)
                + (Absolute(4 - 4) * 1.0)
                + (Absolute(4 - 7) * 0.3)
                = 1.2

    Right Impurity = Total error / total weight
            = 1.2 / 1.6
            = 0.75
            ------

    ## Second toy dataset:
    ------------------
    | X | y | weight |
    ------------------
    | 1 | 1 |   3    |
    | 2 | 1 |   3    |
    | 3 | 3 |   2    |
    | 4 | 1 |   1    |
    | 5 | 2 |   2    |
    ------------------
    |sum wt:|   11   |
    ------------------

    The weighted median is 1
    Total error = Absolute(1 - 3) * 2 + Absolute(1 - 2) * 2 = 6

    The best split is between X values of 2 and 3, with:
    - left node being the first 2 data points, both with y=1
      => AE and impurity is 0
    - right node being the last 3 data points, weighted median is 2.
      Total error = (Absolute(2 - 3) * 2)
                  + (Absolute(2 - 1) * 1)
                  + (Absolute(2 - 2) * 2)
                  = 3
    r   r7   rP   )r[   r�   rð   r?   r>   rO   )rM   r¾   r?   r;   r?   )ç333333ã?ç333333Ó?rî   rR   r#  )rd   re   r˜   )g²�…,dñ?gÜ¶mÛ¶mÛ?gÿÿÿÿÿÿç?)ç      @g      @r$  )çffffffö?rQ   gUUUUUUõ?)r;   rX   r$  rc   r<   )r[   r�   r½   r;   )r<   r<   r?   r<   rP   )r?   r?   rP   r<   rP   )r<   r<   rP   rP   rP   )gtÑE]tá?r   r"  )r<   r<   rP   N)r   rŽ   r   rý   r~   r+   r   r¨  rx   r™   r�   )Údt_maerd   s     r…   Útest_maer'  ¤  s½  € ôH #ØÐ"2À1ô€Fð
 ‡J�JØˆ3���a�S˜1˜# ˜sÐ
#Ú
Ú/ð ô ô
 �F—L‘L×)Ñ)Ò+LÔMÜ�v—|‘|×)Ñ)×.Ñ.²Ô@ð ‡J�J�1�#˜�s˜Q˜C !  q cÐ*ªoÌRÏWÉWÐUVËZ€JÔXÜ�v—|‘|×,Ñ,Ò.CÔDÜ�v—|‘|×)Ñ)×.Ñ.²Ô>ð
 ‡J�J�1�#˜�s˜Q˜C !  q cÐ*ªo€JÔ>Ü�v—|‘|×,Ñ,Ò.CÔDÜ�v—|‘|×)Ñ)×.Ñ.²Ô>ä"ØØ"Øô€Fð
 ˆˆqˆc�A�3˜˜˜a˜SÐ!€AØ
‡J�JØ
Ú
Ú%ð ô ô
 �F—N‘N 1Ó%¢Ô7Ü�F—L‘L×)Ñ)Ò+=Ô>Ü�v—|‘|×)Ñ)×.Ñ.²	Õ:r‡   c                  ó  — d} t        j                  dt         j                  ¬«      }d}d„ }t        j                  t        j                  |fD ]¹  }t        j                  «       D ]G  \  }} || |«      } ||«      j                  «       }|\  }	\  }
}}||	k(  sJ ‚| |
k(  sJ ‚t        ||«       ŒI t        j                  «       D ]B  \  }} || |«      } ||«      j                  «       }|\  }	\  }
}}||	k(  sJ ‚| |
k(  sJ ‚||k(  rŒBJ ‚ Œ» y )Nr?   r  rJ  c                 óR   — t        j                  t        j                  | «      «      S rþ  )r[  r]  r\  )Úobjs    r…   Ú_pickle_copyz)test_criterion_copy.<locals>._pickle_copy8  s   € Ü�|‰|œFŸL™L¨Ó-Ó.Ð.r‡   )
rx   rÓ   Úintprí  Údeepcopyr   r�   Ú
__reduce__r+   r   )Ú	n_outputsrY  r\   r+  Ú	copy_funcÚ_ÚtypenameÚcriteriaÚresultÚ	typename_Ú
n_outputs_rp  Ú
n_samples_s                r…   Útest_criterion_copyr8  1  s1  € ð €IÜ—	‘	˜!¤2§7¡7Ô+€IØ€Iò/ô —i‘i¤§¡°Ð=ò +ˆ	Ü'×-Ñ-Ó/ò 	6‰KˆAˆxÙ 	¨9Ó5ˆHÙ˜xÓ(×3Ñ3Ó5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ø 
Ò*Ð*Ð*Ü˜y¨*Õ5ð	6ô (×-Ñ-Ó/ò 	+‰KˆAˆxÙ 	¨9Ó5ˆHÙ˜xÓ(×3Ñ3Ó5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ø 
Ò*Ð*Ð*Ø 
Ó*Ð*Ð*ñ	+ñ+r‡   c                 ó¢  — t         j                  j                  d«      j                  dd«      dz  }t	        j
                  |j                  d«      «      }|d d …d d…f   }| � | |«      }|d d …df   }t        d¬«      j                  ||«      } |j                  |«      }t        t        j                  |j                  j                  t        k(  «      d   «      }|j                  |«      }t        j                  t        j                   |j                  j"                  «       «      d   }t%        |«      dk(  sJ ‚t%        |«      dk(  sJ ‚y )Nr   rJ  rL   g±¡*ÓÎâGr  rB   r‰   )rx   r‹  ÚRandomStaterÊ  r(   Ú
nan_to_numr,  r   rŽ   r  ÚsetÚwhererý   rw   r    Ú
differenceÚisfiniter{   rš   )	r1  rµ   rd   re   r
   Úterminal_regionsÚ	left_leafÚ
empty_leafÚinfinite_thresholds	            r…   Ú"test_empty_leaf_infinite_thresholdrD  M  s  € ô �9‰9× Ñ  Ó#×)Ñ)¨#¨rÓ2°TÑ9€DÜ�>‰>˜$Ÿ+™+ iÓ0Ó1€DØŠQ���ˆV‰€AØÐ#Ù˜QÓˆØŠQ�ˆU‰€Aä ¨aÔ0×4Ñ4°Q¸Ó:€DØ!�t—z‘z !“}ÐÜ”B—H‘H˜TŸZ™Z×5Ñ5¼ÑBÓCÀAÑFÓG€IØ×%Ñ%Ð&6Ó7€JÜŸ™¤2§;¡;¨t¯z©z×/CÑ/CÓ#DÐ"DÓEÀaÑHÐÜÐ!Ó" aÒ'Ð'Ð'Üˆz‹?˜aÒÐÑr‡   c                 ób  — t         |    } | d   | d   }} |dd¬«      }|j                  ||«      }|j                  }|j                  }t	        j
                  t	        j                  |«      dk\  «      sJ ‚t	        j
                  t	        j                  |«      dk\  «      sJ ‚t        ||||«       y ©Nrd   re   r^   r   )rð   r[   ©r+  Úcost_complexity_pruning_pathÚ
ccp_alphasÚ
impuritiesrx   rä   ÚdiffÚassert_pruning_creates_subtree©rÒ  r®  rd   re   r  ÚinfoÚpruning_pathrJ  s           r…   Ú'test_prune_tree_classifier_are_subtreesrP  `  s�   € ô
 �wÑ€GØ�3‰<˜ ™€q€AÙ
 "°1Ô
5€CØ×+Ñ+¨A¨qÓ1€Dà—?‘?€LØ—‘€JÜ�6‰6”"—'‘'˜,Ó'¨1Ñ,Ô-Ð-Ð-Ü�6‰6”"—'‘'˜*Ó%¨Ñ*Ô+Ð+Ð+ä" 8¨Q°°<Õ@r‡   c                 ób  — t         |    } | d   | d   }} |dd¬«      }|j                  ||«      }|j                  }|j                  }t	        j
                  t	        j                  |«      dk\  «      sJ ‚t	        j
                  t	        j                  |«      dk\  «      sJ ‚t        ||||«       y rF  rG  rM  s           r…   Ú'test_prune_tree_regression_are_subtreesrR  r  s�   € ô �wÑ€GØ�3‰<˜ ™€q€Aá
 "°1Ô
5€CØ×+Ñ+¨A¨qÓ1€Dà—?‘?€LØ—‘€JÜ�6‰6”"—'‘'˜,Ó'¨1Ñ,Ô-Ð-Ð-Ü�6‰6”"—'‘'˜*Ó%¨Ñ*Ô+Ð+Ð+ä" 8¨Q°°<Õ@r‡   c                  óÖ   — t        d¬«      } | j                  dgdggddg«       t        dd¬«      }|j                  dgdggddg«       t        | j                  |j                  «       y )Nr   r‰   r<   rG   )r[   Ú	ccp_alpha)r   rŽ   Úassert_is_subtreerý   )r•  rõ   s     r…   Útest_prune_single_node_treerV  ƒ  s`   € ä!¨qÔ1€DØ‡H�Hˆqˆc�A�3ˆZ˜!˜Q˜Ô ô "¨q¸BÔ?€DØ‡H�Hˆqˆc�A�3ˆZ˜!˜Q˜Ô ä�d—j‘j $§*¡*Õ-r‡   c                 óÔ   — g }|D ].  } | d|d¬«      j                  ||«      }|j                  |«       Œ0 t        |«      D ]%  \  }}t        |j                  |j                  «       Œ' y )Nr^   r   )rð   rT  r[   )rŽ   ré  r   rU  rý   )	Úestimator_clsrd   re   rO  Ú
estimatorsrT  r  Úprev_estÚnext_ests	            r…   rL  rL  �  sr   € à€JØ!ò ˆ	Ù¨2¸ÐQRÔS×WÑWØˆqó
ˆð 	×Ñ˜#Õð	ô ' zÓ2ò :Ñˆ�(Ü˜(Ÿ.™.¨(¯.©.Õ9ñ:r‡   c                 ó>  — | j                   |j                   k\  sJ ‚| j                  |j                  k\  sJ ‚| j                  }| j                  }|j                  }|j                  }dg}|�r1|j	                  «       \  }}t        | j                  |   |j                  |   «       t        | j                  |   |j                  |   «       t        | j                  |   |j                  |   «       t        | j                  |   |j                  |   «       ||   ||   k(  rt        t        |j                  |   «       nXt        | j                  |   |j                  |   «       |j                  ||   ||   f«       |j                  ||   ||   f«       |r�Œ0y y )N)r   r   )rt   r½   rw   rv   Úpopr*   r   r)   r~   r|   rM  r!   r{   ré  )	r
   ÚsubtreeÚtree_c_leftÚtree_c_rightÚsubtree_c_leftÚsubtree_c_rightÚstackÚtree_node_idxÚsubtree_node_idxs	            r…   rU  rU  ž  sœ  € Ø�?‰?˜g×0Ñ0Ò0Ð0Ð0Ø�>‰>˜W×.Ñ.Ò.Ð.Ð.à×$Ñ$€KØ×&Ñ&€LØ×*Ñ*€NØ×,Ñ,€OàˆH€EÚ
Ø*/¯)©)«+Ñ'ˆÐ'Ü!Ø�J‰J�}Ñ% w§}¡}Ð5EÑ'Fô	
ô 	Ø�M‰M˜-Ñ(¨'×*:Ñ*:Ð;KÑ*Lô	
ô 	Ø×Ñ Ñ.°×0FÑ0FÐGWÑ0Xô	
ô 	Ø×(Ñ(¨Ñ7Ø×+Ñ+Ð,<Ñ=ô	
ð
 Ð*Ñ+¨Ð?OÑ/PÒPä¤°×0AÑ0AÐBRÑ0SÕTô  Ø—‘˜}Ñ-¨w×/@Ñ/@ÐAQÑ/Rôð �L‰L˜+ mÑ4°nÐEUÑ6VÐWÔXØ�L‰LØ˜mÑ,¨oÐ>NÑ.OÐPôõ3 r‡   rÇ  rÆ  r‹  c                 óü  — t         d   }|d   j                  t        j                  d¬«      }|€t	        |«      }n~ ||d   «      }t        j
                  |j                  t        j                  ¬«      |_        t	        |j                  |j                  |j                  f«      \  |_        |_        |_        t	        t        j
                  t        t        j                  ¬«      «      }t        |    |¬«      }|j                  ||«       t        |j                  |«      |j                  |«      «       t        |j                  |«      j                  «       |j                  |«      j                  «       «       y )Nrj   rd   Fr  r  )rÇ  )r+  r,  rx   r  r,   r£   rµ   r«   rñ  r  r:   rŽ   r+   r�   rî  Útodense)r“   rÇ  r1  rÒ  r  Ú
X_readonlyÚ
y_readonlyr  s           r…   Ú"test_apply_path_readonly_all_treesrj  Æ  s%  € ô �{Ñ#€GØ�c‰l×!Ñ!¤"§*¡*°5Ð!Ó9€GØÐÜ.¨wÓ7‰
á% g¨c¡lÓ3ˆ
äŸ(™( :§?¡?¼"¿*¹*ÔEˆ
Œô
 &Ø�_‰_˜j×0Ñ0°*×2CÑ2CÐDó
ñ		
ØŒOØÔØÔô
 +¬2¯8©8´GÄ2Ç:Á:Ô+NÓO€JÜ
�D‰/ 8Ô
,€CØ‡G�GˆJ˜
Ô#Ü�s—{‘{ :Ó.°·±¸GÓ0DÔEÜØ×Ñ˜*Ó%×-Ñ-Ó/°×1BÑ1BÀ7Ó1K×1SÑ1SÓ1Uõr‡   )r6   r8   r9   c                 ó  — t         j                  t         j                  }} || ¬«      }|j                  ||«       t	        j
                  |j                  |«      «      t        j                  t	        j
                  |«      «      k(  sJ ‚y )Nr  )	rg   rµ   r¶   rŽ   rx   r}   r�   r¹   rº   )r�   r&   rd   re   r§   s        r…   Útest_balance_propertyrl  ä  s\   € ô �=‰=œ(Ÿ/™/€q€AÙ
˜Ô
#€CØ‡G�GˆAˆq„MÜ�6‰6�#—+‘+˜a“.Ó!¤V§]¡]´2·6±6¸!³9Ó%=Ò=Ð=Ñ=r‡   Úseedc           	      óŽ  — ddgddgddgddgddgddgddgddgg}g d¢}t        d| ¬«      }|j                  ||«       t        j                  |j	                  |«      «      dk(  sJ ‚t        d| ¬«      }|j                  ||«       t        j
                  |j	                  |«      dkD  «      sJ ‚d	}t        j                  |dz  dz  d
d||dz  dz  | ¬«      \  }}d|d|k  |dk  z  <   t        j                  |«      }t        d| ¬«      }|j                  ||«       t        j
                  |j	                  |«      dkD  «      sJ ‚y )Nr   r<   rP   r?   ©r   r   r   r   r<   rP   r?   r;   r6   rŸ   r9   rG   r"  r  )Úeffective_rankÚtail_strengthr\   r]   rê   r[   rB   )	r   rŽ   rx   Úaminr�   rä   r	   Úmake_regressionr¡   )rm  rd   re   r§   r]   s        r…   Útest_poisson_zero_nodesrt  ó  sN  € ð ˆQˆ�!�Q�˜!˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸À!ÀQÀÐH€AÚ €Aô  ¨/ÈÔ
M€CØ‡G�GˆAˆq„MÜ�7‰7�3—;‘;˜q“>Ó" aÒ'Ð'Ð'ä
¨)À$Ô
G€CØ‡G�GˆAˆq„MÜ�6‰6�#—+‘+˜a“. 1Ñ$Ô%Ð%Ð%ð €JÜ×#Ñ#Ø! A‘~¨Ñ*ØØØØ  1‘n¨Ñ)Øô�D€A€qð €A€rˆA�v�!�a‘%ÑÑä
�‰ˆq‹	€AÜ
¨)À$Ô
G€CØ‡G�GˆAˆq„MÜ�6‰6�#—+‘+˜a“. 1Ñ$Ô%Ð%Ñ%r‡   c            	      ó0  — t         j                  j                  d«      } d\  }}}t        j                  ||z   || ¬«      }| j                  dd|¬«      t        j                  |d¬«      z  }| j                  t        j                  ||z  «      ¬	«      }t        |||| ¬
«      \  }}}	}
t        dd| ¬«      }t        dd| ¬«      }|j                  ||	«       |j                  ||	«       t        d¬«      j                  ||	«      }||	df||
dffD ]…  \  }}}t        ||j                  |«      «      }t        |t        j                  |j                  |«      dd «      «      }t        ||j                  |«      «      }|dk(  r
|d|z  k  sJ ‚|d|z  k  rŒ…J ‚ y )NrÉ   )éô  rv  rG   ©r\   r]   r[   rE   rP   )ÚlowÚhighr`   r   r  )Úlam)Ú	test_sizer[   r9   rG   )r�   r  r[   r6   Úmean)ÚstrategyÚtrainÚtestgVçž¯Ò<rN   g      è?)rx   r‹  r:  r	   Úmake_low_rank_matrixÚuniformrB  r9   rÍ   r   r   rŽ   r   r   r�   Úclip)r-  Ún_trainÚn_testr]   rd   Úcoefre   ÚX_trainrö  r¥   r¦   Útree_poiÚtree_mseÚdummyÚvalÚ
metric_poiÚ
metric_mseÚmetric_dummys                     r…   Útest_poisson_vs_mserŽ    s¢  € ô
 �)‰)×
Ñ
 Ó
#€CØ".Ñ€GˆV�ZÜ×%Ñ%Ø˜FÑ"¨zÈô	€Að
 �;‰;˜2 A¨Jˆ;Ó7¼"¿&¹&ÀÈÔ:KÑK€DØ�‰œŸ™˜q 4™xÓ(ˆÓ)€AÜ'7Ø	ˆ1˜¨Sô(Ñ$€GˆV�W˜fô %Ø¨rÀô€Hô %Ø!°RÀcô€Hð ‡L�L�˜'Ô"Ø‡L�L�˜'Ô"Ü FÔ+×/Ñ/°¸ÓA€Eà ¨Ð1°F¸FÀFÐ3KÐLò 
0‰	ˆˆ1ˆcÜ*¨1¨h×.>Ñ.>¸qÓ.AÓBˆ
ä*¨1¬b¯g©g°h×6FÑ6FÀqÓ6IÈ5ÐRVÓ.WÓXˆ
Ü,¨Q°·±¸aÓ0@ÓAˆð �&Š=Ø  jÑ 0Ò0Ð0Ð0Ø˜D <Ñ/Ó/Ð/Ð/ñ
0r‡   rY  c                 óN  — d\  }}t        j                  ||||dd¬«      \  }} | dd¬«      j                  ||«      } | dd¬«      j                  ||«      }t        |j                  |j                  | ›d	�«       t        |j                  |«      |j                  |«      «       y
)z3Test that criterion=entropy gives same as log_loss.)rƒ  r>   r   rÉ   )rY  r\   r]   rê   rë   r[   r5   é+   rŸ   Úentropyz> with criterion 'entropy' and 'log_loss' gave different trees.N)r	   rñ   rŽ   r†   rý   r   r�   )r&   rY  r\   r]   rd   re   Útree_log_lossÚtree_entropys           r…   Ú'test_criterion_entropy_same_as_log_lossr”  ?  s¯   € ð "Ñ€IˆzÜ×'Ñ'ØØØØ ØØô�D€A€qñ  :¸BÔ?×CÑCÀAÀqÓI€MÙ )¸"Ô=×AÑAÀ!ÀQÓG€LäØ×ÑØ×ÑØˆ(ÐPÐQôô
 �M×)Ñ)¨!Ó,¨l×.BÑ.BÀ1Ó.EÕFr‡   c                  ó6  ‡‡— t        j                  d¬«      \  } }t        dd¬«      Š‰j                  | |«       ‰j	                  | |«      }d„ Šˆˆfd„}t        j                   |«       «      }|j	                  | |«      }t        j                  ||«      sJ ‚y )Nr   r‰   r?   rÐ  c                 óŒ   — | j                  «       j                  | j                  j                  «       «      j	                  «       S rþ  )ÚbyteswapÚviewr  Únewbyteorderr.  )Úarrs    r…   Úreduce_ndarrayz8test_different_endianness_pickle.<locals>.reduce_ndarray^  s/   € Ø�|‰|‹~×"Ñ" 3§9¡9×#9Ñ#9Ó#;Ó<×GÑGÓIÐIr‡   c                  ó  •— t        j                  «       } t        j                  | «      }t        j
                  j                  «       |_        ‰|j
                  t        j                  <   |j                  ‰«       | j                  d«       | S ©Nr   )ÚioÚBytesIOr[  ÚPicklerÚcopyregÚdispatch_tablerí  rx   ÚndarrayÚdumpÚseek)ÚfÚpr”   r›  s     €€r…   Ú get_pickle_non_native_endiannesszJtest_different_endianness_pickle.<locals>.get_pickle_non_native_endiannessa  sb   ø€ Ü�J‰J‹LˆÜ�N‰N˜1ÓˆÜ"×1Ñ1×6Ñ6Ó8ˆÔØ'5ˆ×ÑœŸ™Ñ$à	�‰ˆsŒØ	�‰ˆqŒ	Øˆr‡   )	r	   rñ   r   rŽ   r¯   r[  Úloadrx   Úisclose)rd   re   r¯   r¨  Únew_clfÚ	new_scorer”   r›  s         @@r…   Ú test_different_endianness_pickler­  W  s‚   ù€ Ü×'Ñ'°QÔ7�D€A€qä
 ¨a¸1Ô
=€CØ‡G�GˆAˆq„MØ�I‰I�a˜‹O€EòJõô �k‰kÑ:Ó<Ó=€GØ—‘˜a Ó#€IÜ�:‰:�e˜YÔ'Ð'Ñ'r‡   c                  óN  ‡‡— t        j                  d¬«      \  } }t        dd¬«      Š‰j                  | |«       ‰j	                  | |«      } G d„ dt
        «      Šˆˆfd„}t        j                   |«       «      }|j	                  | |«      }t        j                  ||«      sJ ‚y )Nr   r‰   r?   rÐ  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )úPtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPicklerc                 óÆ   •— t        |t        j                  «      r7|j                  «       j	                  |j
                  j                  «       «      }t        ‰| �!  |«       y rþ  )	Ú
isinstancerx   r£  r—  r˜  r  r™  ÚsuperÚsave)Úselfr*  r_  s     €r…   r´  zUtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPickler.savex  s@   ø€ Ü˜#œrŸz™zÔ*Ø—l‘l“n×)Ñ)¨#¯)©)×*@Ñ*@Ó*BÓC�Ü‰G‰L˜Õr‡   )Ú__name__Ú
__module__Ú__qualname__r´  Ú__classcell__)r_  s   @r…   ÚNonNativeEndiannessNumpyPicklerr°  w  s   ø„ ÷	ð 	r‡   rº  c                  ó„   •— t        j                  «       }  ‰| «      }|j                  ‰«       | j                  d«       | S r�  )rž  rŸ  r¤  r¥  )r¦  r§  rº  r”   s     €€r…   Ú'get_joblib_pickle_non_native_endiannesszXtest_different_endianness_joblib_pickle.<locals>.get_joblib_pickle_non_native_endianness}  s3   ø€ Ü�J‰J‹LˆÙ+¨AÓ.ˆà	�‰ˆsŒØ	�‰ˆqŒ	Øˆr‡   )
r	   rñ   r   rŽ   r¯   r   Újoblibr©  rx   rª  )rd   re   r¯   r¼  r«  r¬  rº  r”   s         @@r…   Ú'test_different_endianness_joblib_pickler¾  p  sˆ   ù€ Ü×'Ñ'°QÔ7�D€A€qä
 ¨a¸1Ô
=€CØ‡G�GˆAˆq„MØ�I‰I�a˜‹O€Eô¬,ô õô �k‰kÑAÓCÓD€GØ—‘˜a Ó#€IÜ�:‰:�e˜YÔ'Ð'Ñ'r‡   c                 ó¦  — t         rt        j                  nt        j                  }g d¢}| j                  j
                  j                  «       D ���ci c]  \  }\  }}||“Œ }}}}|D ]  }|||<   Œ	 t        j                  t        |j                  «       «      t        |j                  «       «      dœ«      }| j                  |d¬«      S c c}}}w )N)Ú
left_childÚright_childrz   r|   ©ÚnamesÚformatsÚ	same_kind©Úcasting)r.   rx   Úint64rë  r  Úfieldsr�   Úlistr  Úvaluesr,  )Únode_ndarrayÚnew_dtype_for_indexing_fieldsÚindexing_field_namesr“   r  r1  Únew_dtype_dictÚ	new_dtypes           r…   Ú"get_different_bitness_node_ndarrayrÑ  Š  sË   € Ý09¤B§H¢H¼r¿x¹xÐ!ò VÐð -9×,>Ñ,>×,EÑ,E×,KÑ,KÓ,M÷ð Ù(˜™j˜u aˆˆe‰ð€Nò ð %ò =ˆØ<ˆ�tÒð=ô —‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið ×Ñ˜y°+ÐÓ>Ð>ùôs   ÁCc                 óâ  — | j                   j                  j                  «       D ���ci c]  \  }\  }}||“Œ }}}}| j                   j                  j                  «       D ��cg c]  \  }}|‘Œ	 }}}|D �cg c]  }d|z   ‘Œ	 }}t	        j                   t        |j                  «       «      t        |j                  «       «      |dœ«      }| j                  |d¬«      S c c}}}w c c}}w c c}w )NrO   )rÃ  rÄ  ÚoffsetsrÅ  rÆ  )r  rÉ  r�   rË  rx   rÊ  r  r,  )	rÌ  r“   r  r1  rÏ  rð  rÓ  Úshifted_offsetsrÐ  s	            r…   Ú$get_different_alignment_node_ndarrayrÕ  œ  så   € à,8×,>Ñ,>×,EÑ,E×,KÑ,KÓ,M÷ð Ù(˜™j˜u aˆˆe‰ð€Nò ð ,8×+=Ñ+=×+DÑ+D×+KÑ+KÓ+M×N™-˜% ŠvÐN€GÑNØ07Ö8 f�q˜6“zÐ8€OÐ8ä—‘ä˜.×-Ñ-Ó/Ó0Ü˜N×1Ñ1Ó3Ó4Ø&ñ	
ó€Ið ×Ñ˜y°+ÐÓ>Ð>ùôùó OùÚ8s   ©CÁ$C&Á7C,c                 óø   — t         rt        j                  nt        j                  } | j                  «       \  }\  }}}}|j                  |d¬«      }|j                  «       }t        |d   «      |d<   ||||f|fS )NrÅ  rÆ  Únodes)r.   rx   rÈ  rë  r.  r,  rí  rÑ  )	r
   rÐ  r®  r]   rY  r/  ÚstateÚnew_n_classesÚ	new_states	            r…   Ú"reduce_tree_with_different_bitnessrÛ  ­  sw   € Ý%”—’¬2¯8©8€IØ:I¸$¿/¹/Ó:KÑ7€HÑ0ˆz˜9 i°%Ø×$Ñ$ Y¸Ð$ÓD€Mà—
‘
“€IÜ;¸IÀgÑ<NÓO€IˆgÑà�z =°)Ð<¸iÐHÐHr‡   c                  ó0  ‡— t        j                  d¬«      \  } }t        dd¬«      Š‰j                  | |«       ‰j	                  | |«      }ˆfd„}t        j                   |«       «      }|j	                  | |«      }|t        j                  |«      k(  sJ ‚y )Nr   r‰   r?   rÐ  c                  ó  •— t        j                  «       } t        j                  | «      }t        j
                  j                  «       |_        t        |j
                  t        <   |j                  ‰«       | j                  d«       | S r�  )rž  rŸ  r[  r   r¡  r¢  rí  rÛ  Ú
CythonTreer¤  r¥  ©r¦  r§  r”   s     €r…   Ú"pickle_dump_with_different_bitnesszItest_different_bitness_pickle.<locals>.pickle_dump_with_different_bitness¿  s^   ø€ Ü�J‰J‹LˆÜ�N‰N˜1ÓˆÜ"×1Ñ1×6Ñ6Ó8ˆÔÜ'Iˆ×ÑœÑ$à	�‰ˆsŒØ	�‰ˆqŒ	Øˆr‡   )	r	   rñ   r   rŽ   r¯   r[  r©  r¹   rº   )rd   re   r¯   rà  r«  r¬  r”   s         @r…   Útest_different_bitness_picklerá  ¸  s   ø€ Ü×'Ñ'°QÔ7�D€A€qä
 ¨a¸1Ô
=€CØ‡G�GˆAˆq„MØ�I‰I�a˜‹O€Eôô �k‰kÑ<Ó>Ó?€GØ—‘˜a Ó#€IØ”F—M‘M )Ó,Ò,Ð,Ñ,r‡   c                  ó0  ‡— t        j                  d¬«      \  } }t        dd¬«      Š‰j                  | |«       ‰j	                  | |«      }ˆfd„}t        j                   |«       «      }|j	                  | |«      }|t        j                  |«      k(  sJ ‚y )Nr   r‰   r?   rÐ  c                  óþ   •— t        j                  «       } t        | «      }t        j                  j                  «       |_        t        |j                  t        <   |j                  ‰«       | j                  d«       | S r�  )
rž  rŸ  r   r¡  r¢  rí  rÛ  rÞ  r¤  r¥  rß  s     €r…   Ú"joblib_dump_with_different_bitnesszPtest_different_bitness_joblib_pickle.<locals>.joblib_dump_with_different_bitnessÚ  sY   ø€ Ü�J‰J‹LˆÜ˜‹OˆÜ"×1Ñ1×6Ñ6Ó8ˆÔÜ'Iˆ×ÑœÑ$à	�‰ˆsŒØ	�‰ˆqŒ	Øˆr‡   )	r	   rñ   r   rŽ   r¯   r½  r©  r¹   rº   )rd   re   r¯   rä  r«  r¬  r”   s         @r…   Ú$test_different_bitness_joblib_picklerå  Î  s�   ø€ ô ×'Ñ'°QÔ7�D€A€qä
 ¨a¸1Ô
=€CØ‡G�GˆAˆq„MØ�I‰I�a˜‹O€Eôô �k‰kÑ<Ó>Ó?€GØ—‘˜a Ó#€IØ”F—M‘M )Ó,Ò,Ð,Ñ,r‡   c                  óL  — t         r#t        j                  t        j                  «      n"t        j                  t        j                  «      } t        j                  t        j                  «      t        j                  t        j                  «      g}||D �cg c]  }|j                  «       ‘Œ c}z  }t        j                  ddg| ¬«      }|D ]  }t        |j                  |«      | «       Œ t        j                  t        d¬«      5  t        j                  ddgg| ¬«      }t        || «       d d d «       t        j                  t        d¬«      5  |j                  t        j                  «      }t        || «       d d d «       y c c}w # 1 sw Y   Œ^xY w# 1 sw Y   y xY w)Nr   r<   r  zWrong dimensions.+n_classesr	  zn_classes.+incompatible dtype)r.   rx   r  rë  rÈ  r™  r£   r#   r,  r¹   rø   rù   r~  )Úexpected_dtypeÚallowed_dtypesÚdtrY  Úwrong_dim_n_classesÚwrong_dtype_n_classess         r…   Útest_check_n_classesrì  é  s;  € Ý+4”R—X‘XœbŸh™hÔ'¼"¿(¹(Ä2Ç8Á8Ó:L€NÜ—h‘hœrŸx™xÓ(¬"¯(©(´2·8±8Ó*<Ð=€NØ°>ÖB¨R�r—‘Õ(ÒBÑB€Nä—‘˜!˜Q˜ ~Ô6€IØò ?ˆÜ˜×)Ñ)¨"Ó-¨~Õ>ð?ô 
�‰”zÐ)FÔ	Gñ >Ü Ÿh™h¨¨A¨ x°~ÔFÐÜÐ,¨nÔ=÷>ô 
�‰”zÐ)HÔ	Iñ @Ø )× 0Ñ 0´·±Ó <ÐÜÐ.°Ô?÷@ð @ùò C÷>ð >ú÷@ð @ús   ÂF	Ä
'FÅ,FÆFÆF#c                  óÜ  — t        j                  t         j                  «      } d}t        j                  || ¬«      }| | j	                  «       g}|D ]  }t        |||¬«       Œ t        j                  t        d¬«      5  t        || d¬«       d d d «       |d d …d d …d d…f   t        j                  |«      fD ]>  }t        j                  t        d¬«      5  t        || |j                  ¬«       d d d «       Œ@ t        j                  t        d	¬«      5  t        |j                  t         j                  «      | |¬«       d d d «       y # 1 sw Y   Œ½xY w# 1 sw Y   Œ¦xY w# 1 sw Y   y xY w)
N)r>   r<   rP   r  )rç  Úexpected_shapezWrong shape.+value arrayr	  )r<   rP   r<   zvalue array.+C-contiguouszvalue array.+incompatible dtype)rx   r  r~  rp   r™  r%   r¹   rø   rù   r  r¬   r,  r  )rç  rî  Úvalue_ndarrayrè  ré  Úproblematic_arrs         r…   Útest_check_value_ndarrayrñ  û  sJ  € Ü—X‘XœbŸj™jÓ)€NØ€NÜ—H‘H˜^°>ÔB€Mà$ n×&AÑ&AÓ&CÐD€Nàò 
ˆÜØ¨"¸^ö	
ð
ô
 
�‰”zÐ)CÔ	Dñ 
ÜØ¨.Èõ	
÷
ð
 *ª!ªQ°°°¨(Ñ3´R×5FÑ5FÀ}Ó5UÐVò ˆÜ�]‰]œ:Ð-HÔIñ 	Ü ØØ-Ø.×4Ñ4õ÷	ð 	ðô 
�‰”zÐ)JÔ	Kñ 
ÜØ× Ñ ¤§¡Ó,Ø)Ø)õ	
÷
ð 
÷
ð 
ú÷	ð 	ú÷
ð 
ús$   Á?E
ÃEÄ,E"Å
EÅE	Å"E+c                  óª  — t         } t        j                  d| ¬«      }|t        |«      t	        |«      g}||D �cg c]+  }|j                  |j                  j                  «       «      ‘Œ- c}z  }|D ]  }t        || ¬«       Œ t        j                  t        d¬«      5  t        j                  d| ¬«      }t        || ¬«       d d d «       t        j                  t        d¬«      5  |d d d…   }t        || ¬«       d d d «       |j                  j                  j                  «       D ���ci c]  \  }\  }}||“Œ }}}}|j                  «       }	t        j                  |	d	<   t        j                  t!        |	j#                  «       «      t!        |	j%                  «       «      d
œ«      }
|j                  |
«      }t        j                  t        d¬«      5  t        || ¬«       d d d «       |j                  «       }	t        j&                  |	d<   t        j                  t!        |	j#                  «       «      t!        |	j%                  «       «      d
œ«      }
|j                  |
«      }t        j                  t        d¬«      5  t        || ¬«       d d d «       y c c}w # 1 sw Y   �ŒÛxY w# 1 sw Y   �Œ¯xY wc c}}}w # 1 sw Y   ŒÛxY w# 1 sw Y   y xY w)N)r>   r  )rç  zWrong dimensions.+node arrayr	  )r>   rP   znode array.+C-contiguousrP   r{   rÂ  znode array.+incompatible dtyperÀ  )r   rx   rp   rÑ  rÕ  r,  r  r™  r$   r¹   rø   rù   rÉ  r�   rí  rÈ  rÊ  r  rË  r~  )rç  rÌ  Úvalid_node_ndarraysrš  Úproblematic_node_ndarrayr“   r  r1  Ú
dtype_dictrÏ  rÐ  s              r…   Útest_check_node_ndarrayrö  	  s…  € Ü€Nä—8‘8˜D¨Ô7€Lð 	Ü*¨<Ó8Ü,¨\Ó:ðÐð
 Ø8KöØ14ˆ�
‰
�3—9‘9×)Ñ)Ó+Õ,òñ Ðð #ò IˆÜ˜L¸ÖHðIô 
�‰”zÐ)GÔ	Hñ UÜ#%§8¡8¨F¸.Ô#IÐ ÜÐ4À^ÕT÷Uô 
�‰”zÐ)CÔ	Dñ UØ#/±°!°Ñ#4Ð ÜÐ4À^ÕT÷Uð 7C×6HÑ6H×6OÑ6O×6UÑ6UÓ6W×XÐXÑ"2 $©
¨°�$˜‘+ÐX€JÒXð  —_‘_Ó&€NÜ"$§(¡(€N�;Ñä—‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið  ,×2Ñ2°9Ó=Ðä	�‰”zÐ)IÔ	Jñ UÜÐ4À^ÕT÷Uð  —_‘_Ó&€NÜ#%§:¡:€N�<Ñ Ü—‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið  ,×2Ñ2°9Ó=Ðä	�‰”zÐ)IÔ	Jñ UÜÐ4À^ÕT÷Uð UùòM÷Uñ Uú÷Uñ Uüô Y÷Uð Uú÷Uð Uús;   º0JÂ%JÃ&J)Ä,J6ÇJ=Ê K	ÊJ&Ê)J3Ê=KË	KÚSplitterc                 ód  — t         j                  j                  d«      }d}dt        j                  ddgt         j                  ¬«      }}t        d   ||«      } | ||dd|d	¬
«      }t        j                  |«      }t        j                  |«      }|j                  |k(  sJ ‚t        || «      sJ ‚y	)z&Check that splitters are serializable.rÉ   rG   rP   r?   r  r4   r>   rN   N)Úmonotonic_cst)rx   r‹  r:  r£   r,  r   r[  r\  r]  r‹   r²  )	r÷  r-  r‹   r/  rY  r�   rÇ  Úsplitter_serializeÚsplitter_backs	            r…   Útest_splitter_serializablerü  P	  s    € ô
 �)‰)×
Ñ
 Ó
#€CØ€LØœbŸh™h¨¨1 v´R·W±WÔ=ˆy€Iä˜VÑ$ Y°	Ó:€IÙ˜	 <°°C¸ÈDÔQ€HÜŸ™ hÓ/Ðä—L‘LÐ!3Ó4€MØ×%Ñ%¨Ò5Ð5Ð5Ü�m XÔ.Ð.Ñ.r‡   c                 ó   — t        | j                  d«      «      }t        d¬«      }|j                  t        t
        «       t        j                  ||«       t        j                  |d¬«      }t        |j                  |j                  d«       y)zhCheck that Trees can be deserialized with read only buffers.

    Non-regression test for gh-25584.
    z
clf.joblibr   r‰   Úr)Ú	mmap_modez?The trees of the original and loaded classifiers are not equal.N)ÚstrÚjoinr   rŽ   r  r  r½  r¤  r©  r†   rý   )ÚtmpdirÚpickle_pathr”   Ú
loaded_clfs       r…   Ú/test_tree_deserialization_from_read_only_bufferr  b	  sh   € ô
 �f—k‘k ,Ó/Ó0€KÜ
 ¨aÔ
0€CØ‡G�GŒG”WÔä
‡K�K��[Ô!Ü—‘˜[°CÔ8€JäØ×ÑØ�	‰	ØIõr‡   c                 ó6  — t        j                  ddgddgg«      }t        j                  ddg«      } | d¬«      j                  ||«        | d¬«      }d}t        j                  t
        |¬«      5   |j                  ||«       ddd«       y# 1 sw Y   yxY w)zhCheck that an error is raised when min_sample_split=1.

    non-regression test for issue gh-25481.
    r   r<   rR   )r  zb'min_samples_split' .* must be an int in the range \[2, inf\) or a float in the range \(0.0, 1.0\]r	  N)rx   r£   rŽ   r¹   rø   rù   )r&   rd   re   r
   Úmsgs        r…   Útest_min_sample_split_1_errorr  u	  s’   € ô 	�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€Añ 	˜3Ô×#Ñ# A qÔ)ñ  !Ô$€Dð	0ð ô 
�‰”z¨Ô	-ñ Øˆ�‰��AŒ÷÷ ñ ús   Á2BÂBc                 ó0  — t        j                  g d¢g«      j                  }t        j                  g d¢«      }| dk(  rt         j                  nt         j                  }t        dd| ¬«      }|j                  ||«       |j                  t         j                  gg«      }t        | ||dd «      g«       |dd	 }|dd	 }t        dd| ¬«      }|j                  ||«       |j                  t         j                  gg«      }t        | ||d
d «      g«       y)z=Check missing values goes to correct node during predictions.©	r   r<   rP   r?   rO   r  rL   é   é   ©	rî   rA   r#  rA   r%  r%  rQ   gš™™™™™ù?gÍÌÌÌÌÌ@r7   rÉ   r<   rã  r@   NrB   r=   )
rx   r£   r�   Úmedianr|  r   rŽ   r�   r  r   )r�   rd   re   Únode_value_funcÚdtcrÔ  ÚX_equalÚy_equals           r…   Ú;test_missing_values_best_splitter_on_equal_nodes_no_missingr  Œ	  sñ   € ô 	�‰Ò0Ð1Ó2×4Ñ4€AÜ
�‰Ò>Ó?€AØ#,Ð0@Ò#@”b—i’iÄbÇgÁg€Oä
¨R¸1È	Ô
R€CØ‡G�GˆAˆq„Mð �[‰[œ2Ÿ6™6˜(˜Ó$€FÜ�F™_¨Q¨r¨s¨VÓ4Ð5Ô6ð ��ˆf€GØ��ˆf€Gä
¨R¸1È	Ô
R€CØ‡G�GˆG�WÔð �[‰[œ2Ÿ6™6˜(˜Ó$€FÜ�F™_¨W°R°S¨\Ó:Ð;Õ<r‡   c                 óp  — t        j                  g d¢g«      j                  }t        j                  g d¢«      }t        |d| ¬«      }|j	                  ||«       |j
                  j                  d   }|j
                  j                  d   }|j
                  j                  |   }|j
                  j                  |   }||kD  }	|j
                  j                  |   d   }
|j
                  j                  |   d   }|j                  t         j                  gg«      }|	rt        |
|«       yt        ||«       y)zÝCheck missing values go to the correct node during predictions for ExtraTree.

    Since ETC use random splits, we use different seeds to verify that the
    left/right node is chosen correctly when the splits occur.
    r
  r  r<   rã  r   N)rx   r£   r�   r   rŽ   rý   rw   rv   rM  r   r�   r  r   )r�   rm  rd   re   ÚetrrÀ  rÁ  Úleft_samplesÚright_samplesÚ	went_leftÚy_pred_leftÚy_pred_rightrÔ  s                r…   Ú=test_missing_values_random_splitter_on_equal_nodes_no_missingr  ©	  s  € ô 	�‰Ò0Ð1Ó2×4Ñ4€AÜ
�‰Ò>Ó?€Aä
¨$¸!ÀyÔ
Q€CØ‡G�GˆAˆq„Mð —‘×(Ñ(¨Ñ+€JØ—)‘)×*Ñ*¨1Ñ-€Kð —9‘9×4Ñ4°ZÑ@€LØ—I‘I×5Ñ5°kÑB€MØ˜}Ñ,€Ið —)‘)—/‘/ *Ñ-¨aÑ0€KØ—9‘9—?‘? ;Ñ/°Ñ2€Lð �[‰[œ2Ÿ6™6˜(˜Ó$€FÙÜ˜ VÕ,ä˜ fÕ-r‡   r‘  r4   c                 ó¦  — d}t        j                  t         j                  gdz  g d¢z   g«      j                  }t        j                  |gdz  dgdz  z   dgdz  z   «      }t	        dd| ¬«      }|j                  ||«       t        j                  t         j                  dd	gg«      j                  }|j                  |«      }t        ||ddg«       y
)zITest when missing values are uniquely present in a class among 3 classes.r   r;   )r   r<   rP   r?   rO   r  rL   r  r<   rP   rÉ   rã  r?   r  N©rx   r£   r  r�   r   rŽ   r�   r+   )r�   Úmissing_values_classrd   re   r  rö  Ú
y_nan_preds          r…   Ú/test_missing_values_best_splitter_three_classesr   Í	  sº   € ð ÐÜ
�‰”2—6‘6�(˜Q‘,Ò!;Ñ;Ð<Ó=×?Ñ?€AÜ
�‰Ð&Ð'¨!Ñ+¨q¨c°A©gÑ5¸¸¸a¹Ñ?Ó@€AÜ
 ¨b¸AÈÔ
S€CØ‡G�GˆAˆq„Mä�X‰XœŸ™  2�Ð'Ó(×*Ñ*€FØ—‘˜VÓ$€Jä�zÐ$8¸!¸QÐ#?Õ@r‡   c                 ó®  — t        j                  t         j                  gdz  g d¢z   g«      j                  }t        j                  dgdz  dgdz  z   «      }t	        dd| ¬«      }|j                  ||«       t        j                  t         j                  d	t         j                  gg«      j                  }|j                  |«      }t        |g d
¢«       y)zŠMissing values spanning only one class at fit-time must make missing
    values at predict-time be classified has belonging to this class.r;   ©r   r<   rP   r?   r;   r>   r   r<   rM   rÉ   rP   rã  r>   )r   r<   r   Nr  ©r�   rd   re   r  rö  rÔ  s         r…   Ú)test_missing_values_best_splitter_to_leftr$  Ü	  s£   € ô 	�‰”2—6‘6�(˜Q‘,Ò!3Ñ3Ð4Ó5×7Ñ7€AÜ
�‰�!��q‘˜A˜3 ™7Ñ"Ó#€Aä
 ¨b¸AÈÔ
S€CØ‡G�GˆAˆq„Mä�X‰XœŸ™ ¤2§6¡6Ð*Ð+Ó,×.Ñ.€FØ�[‰[˜Ó €Fä�všyÕ)r‡   c                 ó   — t        j                  t         j                  gdz  g d¢z   g«      j                  }t        j                  dgdz  dgdz  z   dgdz  z   «      }t	        dd| ¬«      }|j                  ||«       t        j                  t         j                  dd	gg«      j                  }|j                  |«      }t        |g d
¢«       y)zŸMissing values and non-missing values sharing one class at fit-time
    must make missing values at predict-time be classified has belonging
    to this class.r;   r"  r<   r   rP   rÉ   rã  rS   g333333@r  Nr  r#  s         r…   Ú*test_missing_values_best_splitter_to_rightr&  ì	  sª   € ô
 	�‰”2—6‘6�(˜Q‘,Ò!3Ñ3Ð4Ó5×7Ñ7€AÜ
�‰�!��q‘˜A˜3 ™7Ñ" a S¨1¡WÑ,Ó-€Aä
 ¨b¸AÈÔ
S€CØ‡G�GˆAˆq„Mä�X‰XœŸ™  SÐ)Ð*Ó+×-Ñ-€FØ�[‰[˜Ó €Fä�všyÕ)r‡   c                 ó°  — t        j                  ddddt         j                  ddddt         j                  g
g«      j                  }t        j                  d	gdz  dgdz  z   «      }t	        d
d| ¬«      }|j                  ||«       t        j                  t         j                  ddgg«      j                  }|j                  |«      }t        |g d¢«       y)zNCheck behavior of missing value when there is one missing value in each class.r<   rP   r?   r>   rG   r^   rZ   é<   r   rÉ   rã  gffffff@gš™™™™A@r  Nr  r#  s         r…   Ú>test_missing_values_best_splitter_missing_both_classes_has_nanr)  ý	  s®   € ô 	�‰�1�a˜˜AœrŸv™v r¨2¨r°2´r·v±vÐ>Ð?Ó@×BÑB€AÜ
�‰�!��q‘˜A˜3 ™7Ñ"Ó#€Aä
 ¨b¸AÈÔ
S€CØ‡G�GˆAˆq„MÜ�X‰XœŸ™  TÐ*Ð+Ó,×.Ñ.€FØ�[‰[˜Ó €Fô �všyÕ)r‡   r
   c                 óf  — t        j                  ddddt         j                  ddddt         j                  g
g«      j                  }t        j                  d	gdz  dgdz  z   «      } | |«      }t	        j
                  t        d
¬«      5   |j                  ||«       ddd«       y# 1 sw Y   yxY w)z4Check unsupported configurations for missing values.r<   rP   r?   r>   rG   r^   rZ   r(  r   zInput X contains NaNr	  N)rx   r£   r  r�   r¹   rø   rù   rŽ   )r1  r
   rd   re   s       r…   Útest_missing_value_errorsr+  
  s”   € ô 	�‰�1�a˜˜AœrŸv™v r¨2¨r°2´r·v±vÐ>Ð?Ó@×BÑB€AÜ
�‰�!��q‘˜A˜3 ™7Ñ"Ó#€Aá˜Ó€Aä	�‰”zÐ)?Ô	@ñ Øˆ�‰��AŒ÷÷ ñ ús   Â
B'Â'B0c                 óD  — t         j                  j                  «       t         j                  }}t        j
                  |ddd…df<   t        j
                  |ddd…df<    | dd¬«      }|j                  ||«       |j                  |«      }|d	k\  j                  «       sJ ‚y)
z5Smoke test for poisson regression and missing values.Nr>   r   rM   rB   r9   rÉ   rŸ   rW   )	rg   rµ   rí  r¶   rx   r  rŽ   r�   rä   )r&   rd   re   r§   rÔ  s        r…   Útest_missing_values_poissonr-  !
  s†   € ô �=‰=×ÑÓ¤§¡€q€Aô —‘€A�cˆ€cˆ1€f�IÜ—‘€A�cˆ€cˆ2€g�Já
˜°Ô
4€CØ‡G�GˆAˆq„Mà�[‰[˜‹^€FØ�c‰M×ÑÔ Ð Ñ r‡   c                  óD   — t        j                  | i |¤Ž\  }}|dkD  }||fS )Né   )r	   Úmake_friedman1)ÚargsrÃ   rd   re   s       r…   Úmake_friedman1_classificationr2  1
  s-   € Ü×"Ñ" DÐ3¨FÑ3�D€A€qØ	ˆB‰€AØˆaˆ4€Kr‡   zmake_data, Tree, tolerancegìQ¸…ë±?g¸…ëQ¸ž?g¸…ëQ¸¾?Úsample_weight_trainr™   c                 ó~  — d\  }} | ||d|¬«      \  }}|j                  «       }	t        j                  j                  |«      }
t        j                  |	|
j                  ddg|j                  ddg¬«      <   t        |	||¬	«      \  }}}}|d
k(  r#t        j                  |j                  d   «      }nd}d} |||¬«      }|j                  |||¬«       |j                  ||«      }t        t        «        |||¬«      «      }|j                  ||«       |j                  ||«      }||z   |kD  sJ d|›d|› d|› �«       ‚y)zFCheck that trees can deal with missing values have decent performance.)rè   rG   rR   )r\   r]   Únoiser[   FTrY   rî   ©r`   r§  r‰   r™   r   NrG   rÒ   r—   zscore_native_tree=z + z! should be strictly greater than )rí  rx   r‹  r:  r  Úchoicer¬   r   r™   rŽ   r¯   r   r   )Ú	make_datar&   r3  rÂ   Ú	tolerancer\   r]   rd   re   Ú	X_missingr-  ÚX_missing_trainÚX_missing_testr¥   r¦   r˜   r½   Únative_treeÚscore_native_treeÚtree_with_imputerÚscore_tree_with_imputers                        r…   Ú!test_missing_values_is_resiliencerA  7
  sh  € ð( &Ñ€IˆzÙØØØØ'ô	�D€A€qð —‘“€IÜ
�)‰)×
Ñ
Ð 2Ó
3€CÜGIÇvÁv€Iˆc�j‰j˜% ˜¨Q¯W©W¸¸c¸
ˆjÓCÑDÜ7GØ�1Ð#5ô8Ñ4€O�^ W¨fð ˜fÒ$ÜŸ™ × 5Ñ 5°aÑ 8Ó9‰àˆð €IÙ Ð9KÔL€KØ‡O�O�O W¸M€OÔJØ#×)Ñ)¨.¸&ÓAÐä%Ü‹™¨	Ð@RÔSóÐð ×Ñ˜/¨7Ô3Ø/×5Ñ5°nÀfÓMÐà˜yÑ(Ð+BÒBð ØÐÐ
˜c ) ð -Ø#Ð$ð	&óÑBr‡   zTree, expected_scoreg333333ë?gö(\�Âõà?c                 óH  — t         j                  j                  d«      }d}|j                  |df¬«      }t        j                  t        j
                  |dz  «      t        j                  |dz  «      g«      }|j                  ddg|dd	g¬
«      }|j                  «       j                  t        «      }||    ||<   |j                  |¬«      }	t         j                  |	|<   |	|dd…df<    | |¬«      }
t        |
||d¬«      j                  «       }||k\  sJ d|› d|› �«       ‚y)z@Check the tree learns when only the missing value is predictive.r   rv  r^   r_   rP   FTgffffffî?rT   r6  Nr>   r‰   )ÚcvzExpected CV score: z	 but got )rx   r‹  r:  Ústandard_normalrê  rp   r™   r7  rí  r,  Úboolr  r   r|  )r&   Úexpected_scorerÂ   r-  r\   rd   re   ÚX_random_maskÚy_maskÚX_predictiver
   Útree_cv_scores               r…   Ú test_missing_value_is_predictiverK  t
  s  € ô �)‰)×
Ñ
 Ó
"€CØ€Ià×Ñ )¨R ÐÓ1€AÜ
�‰œŸ™ ¨a¡Ó0´"·'±'¸)Àq¹.Ó2IÐJÓK€Að —J‘J  t˜}°9ÀÀtÀ�JÓM€MØ�V‰V‹X�_‰_œTÓ"€FØ# MÑ2Ð2€Fˆ=Ñà×&Ñ&¨IÐ&Ó6€LÜŸ6™6€L�Ñà€A‚aˆ€d�GáÐ/Ô0€Dô $ D¨!¨Q°1Ô5×:Ñ:Ó<€MØ˜NÒ*ð Ø
˜nÐ-¨Y°}°oÐFóÑ*r‡   zmake_data, Treec                 ó  — t         j                  j                  d«      }d\  }} | |||¬«      \  }}t         j                  ||j	                  ddg|j
                  ddg¬«      <   t        j                  |j
                  d   «      }d	|d
d
d…<    |d¬«      }|j                  |||¬«        |d¬«      }	|	j                  |dd
d…d
d
…f   |dd
d…   «       t        |	j                  |«      |j                  |«      «       y
)z=Check sample weight is correctly handled with missing values.r   )r  rG   rw  FTrY   rî   r6  rW   NrP   r‰   r—   r<   )
rx   r‹  r:  r  r7  r¬   r™   rŽ   r   r�   )
r8  r&   r-  r\   r]   rd   re   r˜   Útree_with_swÚtree_samples_removeds
             r…   Útest_sample_weight_non_uniformrO  ’
  sú   € ô �)‰)×
Ñ
 Ó
"€CØ$Ñ€IˆzÙ˜y°ZÈcÔR�D€A€qô @B¿v¹v€A€c‡j�j�%˜� Q§W¡W°°c°
€jÓ;Ñ<ô —G‘G˜AŸG™G A™JÓ'€MØ€M‘#�A�#Ñá QÔ'€LØ×Ñ�Q˜¨ÐÔ7á¨QÔ/ÐØ×Ñ˜Q˜q˜t !˜t¢Q˜w™Z¨¨1¨4¨a¨4©Ô1äÐ(×0Ñ0°Ó3°\×5IÑ5IÈ!Ó5LÕMr‡   c                  óF  — t        d¬«      j                  t        j                  t        j                  «      } t        d¬«      j                  t        j                  t        j                  «      }t        j                  | «      }t        j                  |«      }||k(  sJ ‚y r  )r   rŽ   rf   rµ   r¶   r[  r\  )Útree1Útree2Úpickle1Úpickle2s       r…   Útest_deterministic_picklerU  ¯
  sl   € ô #°Ô2×6Ñ6´t·y±yÄ$Ç+Á+ÓN€EÜ"°Ô2×6Ñ6´t·y±yÄ$Ç+Á+ÓN€Eä�l‰l˜5Ó!€GÜ�l‰l˜5Ó!€Gà�gÒÐÑr‡   rd   r>   rM   c                 ó¦  — |j                  dd«      }t        j                  dd«      } | ||¬«      j                  ||«      }t	        |«      j                  |j                  dd«      |«      }|j
                  j                  }t        |dk\  «      sJ |j                  «       «       ‚| t        u r:t        |j
                  j                  dd |j
                  j                  dd «       t        j                  |j
                  j                  dk(  |j
                  j                  dk(  z  «      }t        |j
                  j                  |   d«       y)	a“  Check that regression trees correctly handle missing values in impurity
    calculations.

    This test verifies that:
    1. Impurity is always non-negative
    2. Impurity is zero for leaves with a single sample
    3. For decision trees, impurity matches reference trees after the first split

    Non-regression test for:
    - Missing values handling in regression criteria:
      https://github.com/scikit-learn/scikit-learn/issues/28254
      https://github.com/scikit-learn/scikit-learn/issues/28316
    - Incorrect/negative impurites for the Poisson criterion with missing values:
      https://github.com/scikit-learn/scikit-learn/issues/32870
    rB   r<   r¾   rŸ   r   NrP   rW   )r¼  rx   rÓ   rŽ   r   rý   r~   rä   r¢   r   r   Úflatnonzerorw   r|   )	r&   rd   r�   rÂ   re   r
   Útree_refr~   Ú
leaves_idxs	            r…   Ú'test_regression_tree_missing_values_toyrZ  ½
  s  € ð< 	
�	‰	�"�aÓ€AÜ
�	‰	�!�Q‹€Aá˜)Ð2DÔE×IÑIÈ!ÈQÓO€DÜ�T‹{�‰˜qŸy™y¨¨QÓ/°Ó3€Hà�z‰z×"Ñ"€HÜˆx˜1‰}ÔÐ-˜xŸ|™|›~Ó-Ðð Ô$Ñ$ä˜Ÿ
™
×+Ñ+¨B¨QÐ/°·±×1HÑ1HÈÈ!Ð1LÔMô —‘Ø	�‰×	!Ñ	! RÑ	'¨D¯J©J×,EÑ,EÈÑ,JÑKó€Jô �D—J‘J×'Ñ'¨
Ñ3°SÕ9r‡   c                 ó¾  — t         j                  j                  | «      }d}t        j                  |t         j                  ¬«      j                  dd«      }t         j                  |dd …d d …f<   |j                  |«       t        j                  |«      }t        | d¬«      j                  ||«      }|j                  j                  }t        |dk\  «      sJ |«       ‚y )	NrJ  r  rB   r<   iìÿÿÿr>   rÐ  r   )rx   r‹  r:  rÓ   r~  r¼  r  rí   r   rŽ   rý   r~   rä   )rÂ   r-  r\   rd   re   r
   r~   s          r…   Ú-test_regression_extra_tree_missing_values_toyr\  ñ
  s«   € Ü
�)‰)×
Ñ
Ð 2Ó
3€CØ€IÜ
�	‰	�)¤2§:¡:Ô.×6Ñ6°r¸1Ó=€AÜ—‘€A€c�dŠA€g�JØ‡K�K�„NÜ
�	‰	�)Ó€AäÐ+=ÈÔK×OÑOÐPQÐSTÓU€Dà�z‰z×"Ñ"€HÜˆx˜1‰}ÔÐ'˜xÓ'Ñr‡   c                  ó>  — t        j                  d¬«      \  } }t        j                  j	                  d«      }| j                  «       }|j                  t        j                  dt        j                  ¬«      | dd…dgf   dz  ¬	«      j                  t        «      }t        j                  ||<   t        ||d
¬«      \  }}}}t        j                  g d¢t        j                  ¬«      }t        ddd¬«      }	 |	j                  ||   ||   «       t!        |	j"                  j$                  dk\  «      sJ ‚t        j&                  |	j"                  j(                  dk(  |	j"                  j*                  dk(  z  «      }
t-        |	j"                  j$                  |
   d«       y)aØ  Check that we properly handle missing values in classification trees using a toy
    dataset.

    The test is more involved because we use a case where we detected a regression
    in a random forest. We therefore define the seed and bootstrap indices to detect
    one of the non-frequent regression.

    Here, we check that the impurity is null or positive in the leaves.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28254
    T)Ú
return_X_yrÉ   )r<   r;   )r¬   r  NrP   rO   )Únr§  é   r‰   )prP   éQ   é'   éa   é[   é&   é.   é   ée   r`  éY   éR   rJ  rÉ   éE   é   ra  é   éI   éJ   é3   é/   ék   é   éK   én   r^   r  éh   é9   é   r  rt  éO   é#   éM   éZ   rp  rf  r`  é^   rd  é   rO   é]   r  rn  r{  r  r`  ro  ém   ru  é   rG   r~  rv  rl  é\   é4   r^   r€  rO   rO   é   rl  rz  r  r  r¾   r�  r   rZ   rg  éN   r  r�  éi   rƒ  r   rn  r  éf   r†  r`  rg  r<   rk  rL   é    rt  r|  éj   r}  r(  é8   rz  rs  é>   éU   ra  rb  éP   rm  é?   rM   r�  éT   r?   r?   éL   r…  r  r?   r   iH¼nrÊ   r   rB   r<   rW   )r	   Ú	load_irisrx   r‹  r:  rí  rç  r™   rë  r,  rE  r  r   r£   r   rŽ   rä   rý   r~   rW  rw   r|   r   )rd   re   r-  r:  Úmaskr†  r1  r¥   r«   r
   rY  s              r…   Ú+test_classification_tree_missing_values_toyr“  ÿ
  sW  € ô ×Ñ¨Ô.�D€A€qä
�)‰)×
Ñ
 Ó
#€CØ—‘“€IØ�<‰<Ü
�'‰'˜¤b§h¡hÔ
/°1²Q¸¸°V±9¸q±=ð ó ç�fŒTƒlð 	ô —f‘f€Iˆd�OÜ-¨i¸ÈÔLÑ€GˆQ�˜ô �h‰hò ô �X‰Xô€Gô "Ø &°zô€Dð €D‡H�HˆW�WÑ˜w wÑ/Ô0Üˆt�z‰z×"Ñ" aÑ'Ô(Ð(Ð(ä—‘Ø	�‰×	!Ñ	! RÑ	'¨D¯J©J×,EÑ,EÈÑ,JÑKó€Jô �D—J‘J×'Ñ'¨
Ñ3°SÕ9r‡   c                  óÆ  — t        dd¬«      }  | j                  t        j                  t        j                  «       t        j                  | j                  «      }t        | j                  || j                  «      }t        j                  | j                  j                  t
        j                  ¬«      }d|d<   t        || j                  |«       | j                  j                  dk(  sJ ‚|j                  dk(  sJ ‚t!        j"                  t$        «      5  t'        | j                  j(                  |j(                  «       ddd«       t'        | j                  j(                  d   |j(                  d   «       t        | j                  || j                  «      }t        j                  | j                  j                  t
        j                  ¬«      }d|dd t        || j                  |«       | j                  j                  dk(  sJ ‚|j                  dk(  sJ |j                  «       ‚t'        | j                  j(                  |j(                  «       y# 1 sw Y   �ŒxY w)zHTest pruning a tree with the Python caller of the Cythonized prune tree.r   r<   rÐ  r  r?   N)r   rŽ   rf   rµ   r¶   rx   Ú
atleast_1drp  rÞ  Ún_features_in_r6  rp   rý   rt   Úuint8r"   r¹   rø   ÚAssertionErrorr+   r   ©r
   rY  Úpruned_treeÚleave_in_subtrees       r…   Útest_build_pruned_tree_pyrœ  .  sÆ  € ä!¨q¸AÔ>€DØ€D‡H�HŒT�Y‰YœŸ™Ô$ä—‘˜dŸo™oÓ.€IÜ˜T×0Ñ0°)¸T¿_¹_ÓM€Kô —x‘x §
¡
× 5Ñ 5¼R¿X¹XÔFÐØÐ�QÑÜ˜+ t§z¡zÐ3CÔDà�:‰:× Ñ  AÒ%Ð%Ð%Ø×!Ñ! QÒ&Ð&Ð&Ü	�‰”~Ó	&ñ @Ü˜4Ÿ:™:×+Ñ+¨[×->Ñ->Ô?÷@ä�t—z‘z×'Ñ'¨Ñ*¨K×,=Ñ,=¸aÑ,@ÔAô ˜T×0Ñ0°)¸T¿_¹_ÓM€KÜ—x‘x §
¡
× 5Ñ 5¼R¿X¹XÔFÐØÐ�Q�RÐô ˜+ t§z¡zÐ3CÔDØ�:‰:× Ñ  AÒ%Ð%Ð%Ø×!Ñ! QÒ&Ð>¨×(>Ñ(>Ó>Ð&Ü�t—z‘z×'Ñ'¨×):Ñ):Õ;÷@ñ @ús   Ä+IÉI c                  ó  — t        dd¬«      }  | j                  t        j                  t        j                  «       t        j                  | j                  «      }t        | j                  || j                  «      }t        j                  | j                  j                  t
        j                  ¬«      }d|d<   t        j                   t"        d¬«      5  t%        || j                  |«       ddd«       y# 1 sw Y   yxY w)z8Test pruning a tree does not result in an infinite loop.r   r<   rÐ  r  z,Node has reached a leaf in the original treer	  N)r   rŽ   rf   rµ   r¶   rx   r•  rp  rÞ  r–  r6  rp   rý   rt   r—  r¹   rø   rù   r"   r™  s       r…   Ú$test_build_pruned_tree_infinite_looprž  M  s¼   € ô "¨q¸AÔ>€DØ€D‡H�HŒT�Y‰YœŸ™Ô$Ü—‘˜dŸo™oÓ.€IÜ˜T×0Ñ0°)¸T¿_¹_ÓM€Kô —x‘x §
¡
× 5Ñ 5¼R¿X¹XÔFÐØÐ�QÑÜ	�‰ÜÐHô
ñ Iô 	˜k¨4¯:©:Ð7GÔH÷I÷ Iñ Iús   ÃC7Ã7D c                 óò  ‡— d„ Šdˆfd„	}t         j                  j                  | «      }dD ]É  }|j                  |df¬«      }|j                  |«      }|d|j                  dd«      z  z  }t        j                  |«      } ||||«        ||t        j
                  |«      |«        |||j                  «       dz   |«        ||||d	¬
«       |j                  |«      } ||||«        ||||d	¬
«       ŒË y)a“  
    Test the main bit of logic of the MAE(RegressionCriterion) class
    (used by DecisionTreeRegressor(criterion="absolute_error")).

    The implementation of the criterion relies on an efficient precomputation
    of left/right children absolute error for each split. This test verifies this
    part of the computation, in case of major refactor of the MAE class,
    it can be safely removed.
    c           	      óÞ  — | j                  «       j                  «       } t        d| j                  dz   «      D �cg c]  }t	        | d | |d | dd¬«      ‘Œ }}t        t        d| j                  dz   «      |«      D ��cg c]4  \  }}t        j                  | d | |z
  «      |d | z  j                  «       ‘Œ6 }}}t        j                  |«      t        j                  |«      fS c c}w c c}}w )Nr<   rƒ  T©Úaverage)
r®   rí  rN  r`   r2   Úziprx   r¡   r}   r£   )re   Úwrò  ÚmediansÚmÚerrorss         r…   Úcompute_prefix_abs_errors_naivezUtest_absolute_errors_precomputation_function.<locals>.compute_prefix_abs_errors_naivej  sâ   € Ø�G‰G‹I�N‰NÓˆô ˜1˜aŸf™f q™jÓ)ö
àô !  2 A ¨¨"¨1¨¨r¸4Ö@ð
ˆð 
ô œE ! Q§V¡V¨a¡ZÓ0°'Ó:÷
á��1ô �V‰V�A�b�q�E˜A‘IÓ  2 A Ñ&×+Ñ+Õ-ð
ˆñ 
ô �x‰x˜Ó¤§¡¨'Ó!2Ð2Ð2ùò
ùó
s   ºC$Á>9C)c                 ó  •— | j                   d   }|r|dz
  dfnd|f}t        | ||g|¢|‘­Ž \  }}| |   }||   }	|r|d d d…   }|	d d d…   }	 ‰||	«      \  }
}|r|
d d d…   }
|d d d…   }t        ||
d¬«       t        ||d¬«       y )Nr   r<   rB   g•dyáý¥=)Úatol)r¬   r   r   )re   r¤  r«   Úreverser_  r1  Ú
abs_errorsr¥  Úy_sortedÚw_sortedÚabs_errors_Úmedians_r¨  s               €r…   Úassert_same_resultszItest_absolute_errors_precomputation_function.<locals>.assert_same_resultsv  s¹   ø€ Ø�G‰G�A‰JˆÙ%��A‘�r‰{¨A¨q¨6ˆÜ<¸QÀÀ7ÐUÈTÐUÐSTÒUÑˆ
�GØ�W‘:ˆØ�W‘:ˆÙØ¡ " ‘~ˆHØ¡ " ‘~ˆHÙ ?ÀÈ(Ó SÑˆ�XÙØ%¡d¨ dÑ+ˆKØ¡ " ‘~ˆHÜ˜
 K°eÕ<Ü˜ °Ö6r‡   )r?   r>   rG   r^   rƒ  rJ  r<   r_   g      $@r@   r>   T)r«  N)F)rx   r‹  Údefault_rngr�  rÓ   r™   Úroundrè  )rÂ   r±  r-  r_  re   r¤  r«   r¨  s          @r…   Ú,test_absolute_errors_precomputation_functionr´  _  sç   ø€ ò
3õ7ô  �)‰)×
Ñ
Ð 2Ó
3€Cà$ò 9ˆØ�K‰K˜a ˜VˆKÓ$ˆØ�J‰J�q‹MˆØ	ˆT�S—[‘[  QÓ'Ñ'Ñ'ˆÜ—)‘)˜A“,ˆÙ˜A˜q 'Ô*Ù˜AœrŸw™w q›z¨7Ô3Ù˜A˜qŸw™w›y¨1™}¨gÔ6Ù˜A˜q '°4Õ8Ø—/‘/ !Ó$ˆÙ˜A˜q 'Ô*Ù˜A˜q '°4Ö8ñ9r‡   c                 óÒ  — t         j                  j                  | «      }t        d«      }|j	                  |¬«      }|j                  dd|¬«      |j                  dd|¬«      z  }t        dd¬«      j                  t        j                  |j                  d   df¬«      ||¬	«      j                  j                  j                  «       d   }t        ||d
d¬«      }t        ||«       y)z„
    Test that the weighted-median computed under-the-hood when
    building a tree with criterion="absolute_error" is correct.
    g     jø@r_   r   r?   r<   r7   )r�   r½   ræ  r—   rƒ  Tr¡  N)rx   r‹  r²  r  Ú	lognormalÚintegersr�  r   rŽ   r™   r¬   rý   r   r®   r2   r   )rÂ   r-  r_  rµ   r*  Útree_leaf_weighted_medianÚweighted_medians          r…   Ú7test_absolute_error_accurately_predicts_weighted_medianrº  –  sÅ   € ô
 �)‰)×
Ñ
Ð 2Ó
3€CÜˆC‹€AØ�=‰=˜aˆ=Ó €Dà�l‰l˜1˜a aˆlÓ(¨3¯;©;°q¸!À!¨;Ó+DÑD€Gô 	Ð(8ÀAÔFß	‰ŒR�W‰W˜DŸJ™J q™M¨1Ð-Ô.°ÀGˆÓ	Lß	‰�u‰u—U‘U“W˜Qñ	 ð ô
 +¨4°¸"ÀdÔK€OäÐ-¨Õ?r‡   c                  óx  — t        j                  g d¢g d¢g«      j                  dd«      j                  t        «      } g d¢}t         j
                  | | dk(  <   t        d«      D ]T  }t        d|¬«      j                  | |«      }t        |j                  j                  t        j                  g d¢«      «       ŒV y )	Nro  )r<   rP   r<   rP   r<   rP   r<   rP   r   r<   )r   r   r   r   r<   r<   r<   r<   r^   rÒ   )ra   rW   rW   )rx   r­   Úswapaxesr,  Úfloatr  rN  r   rŽ   r+   rý   r~   r£   )rd   re   rò  r
   s       r…   Ú"test_splitting_with_missing_valuesr¾  «  s–   € ô 	�	‰	Ò+Ò-EÐFÓGß	‰�!�Q‹ß	‰”‹ð ò
 	!€AÜ—‘€A€aˆ1�f�Iô �2‹Yò LˆÜ$¨q¸qÔA×EÑEÀaÈÓKˆÜ˜4Ÿ:™:×.Ñ.´·±Ò9IÓ0JÕKñLr‡   c                  ó>  — dddt         j                  t         j                  g} g d¢}t        j                  | «      j                  dd«      } t	        «       j                  | |«      }t         |j                  | «      |«       |j                  j                  dk(  sJ ‚y )Nr   r  rB   r<   r?   )
rx   r  r£   r¼  r   rŽ   r+   r�   rý   rt   )rd   re   r
   s      r…   Ú$test_missing_values_and_constant_toyrÀ  ¿  s~   € ð 
ˆAˆq”"—&‘&œ"Ÿ&™&Ð!€AÚ€AÜ
�‰�‹×Ñ˜B Ó"€AÜ!Ó#×'Ñ'¨¨1Ó-€Dô �|�t—|‘| A“¨Ô*à�:‰:× Ñ  AÒ%Ð%Ñ%r‡   c                  ó|   — t        j                  t        d¬«      5  t        d¬«      } d d d «       y # 1 sw Y   y xY w)Nr8   r	  r  )r¹   ÚwarnsÚFutureWarningr   )r1  s    r…   Útest_friedman_mse_deprecationrÄ  Î  s/   € Ü	�‰”m¨>Ô	:ñ <Ü!¨NÔ;ˆ÷<÷ <ñ <ús   œ2²;zX,yrR   r”  )rW   rR   r”  g      @)rW   rR   rW   zmultiple-non-missingzsingle-non-missing)Úidsc                 ór  — t        dd¬«      } |j                  | |«       |j                  j                  d   t        k7  sJ ‚|j                  j
                  d   }| t        j                  | «          }t        j                  |«      sJ ‚|j                  «       |cxk  r|j                  «       k  sJ ‚ J ‚y)z×
    Check random-split thresholds are finite when the first sample is missing.

    Non-regression test for a subtle bug, see
    https://github.com/scikit-learn/scikit-learn/pull/32119#issuecomment-3765288780
    r<   r   rÒ   N)r   rŽ   rý   rw   r    r{   rx   Úisnanr?  r¢   rB  )rd   re   r
   r{   Únon_missings        r…   Ú<test_random_splitter_missing_values_uses_non_missing_min_maxrÉ  Ó  sœ   € ô ¨¸Ô:€DØ€D‡H�HˆQ�„Nà�:‰:×#Ñ# AÑ&¬)Ò3Ð3Ð3Ø—
‘
×$Ñ$ QÑ'€IØ”R—X‘X˜a“[�L‘/€Kä�;‰;�yÔ!Ð!Ð!Ø�?‰?Ó 	Ô>¨[¯_©_Ó->Ò>Ð>Ñ>Ð>Ñ>r‡   rþ  )úÚ__doc__rí  r¡  rž  r[  rŒ  rÈ  Ú	itertoolsr   r   r   r½  Únumpyrx   r¹   Újoblib.numpy_pickler   Únumpy.testingr   Úsklearnr   r	   r
   Úsklearn.dummyr   Úsklearn.exceptionsr   Úsklearn.imputer   Úsklearn.metricsr   r   r   r   Úsklearn.model_selectionr   r   Úsklearn.pipeliner   Úsklearn.random_projectionr   Úsklearn.treer   r   r   r   Úsklearn.tree._classesr   r   r   r   Úsklearn.tree._criterionr   Úsklearn.tree._treer   r    r!   r"   r#   r$   r%   r&   rÞ  Úsklearn.utilsr'   Úsklearn.utils._array_apir(   Úsklearn.utils._testingr)   r*   r+   r,   r-   Úsklearn.utils.fixesr.   r/   r0   r1   Úsklearn.utils.statsr2   Úsklearn.utils.validationr3   r´   ÚREG_CRITERIONSrŒ   rÕ   rÀ   r:   Ú__annotations__ÚupdateÚSPARSE_TREESr£   r  r  Úy_small_regrd   re   r�   r‘   r‘  rf   r‹  r:  r-  rè  r¶   r`   Úpermrµ   Úload_diabetesrg   Úload_digitsrh   r[   Úmake_multilabel_classificationr  r  r�  ÚX_sparse_posr†  Úy_randomrì  ÚX_sparse_mixrp   r+  r†   r•   rœ   ÚmarkÚfilterwarningsÚparametrizerË  r¨   r²   r·   r�   r»   rÇ   rÐ   r×   rÛ   ræ   rö   rû   rþ   r  r  r   r'  r6  r;  r@  rC  rF  rH  rU  rf  rn  rs  ry  r�  r‰  r�  r™  rœ  r£  r¦  rª  r­  r±  r¶  r¹  r½  rÃ  rÎ  rÙ  rÝ  Úsortedr<  Úintersectionrß  rá  rÊ  rä  r£  rù  rü  rÿ  r  r	  r  r  r  r   r'  r8  rD  r  rP  rR  rV  rL  rU  rj  rl  rN  rt  rŽ  r”  r­  r¾  rÑ  rÕ  rÛ  rá  rå  rì  rñ  rö  rü  r  r  r  r  r   r$  r&  r)  r+  r-  r2  r0  rA  rK  rs  rñ   rO  rU  r  rZ  r\  r“  rœ  rž  r´  rº  r¾  rÀ  rÄ  rÉ  )r
   s   0r…   ú<module>rò     sî  ðòó Û Û 	Û Û 	Û ß .Ñ .ã Û Û Ý ,Ý )ç )Ñ )Ý (Ý -Ý (÷ó ÷ FÝ *Ý ;÷ó ÷ó õ C÷÷ ñ õ 2Ý /Ý (÷õ ÷ó õ 5Ý 7à%€ØO€ð 5Ø.ñ€	ð 3Ø,ñ€	ñ
 “&€	ˆ4Ó Ø 	× Ñ �Ô Ø 	× Ñ �Ô ò€ð ˆ"�(‰(â5Ú6Ú<Ú9Ú4Ú:Ú@Ú>Ú>Ú@Ú7Ú4Ú5Ú4Ú5Ú?Ú@ÚAÚ8Ú4Ú5Ú4Ú4ð/ó€ò8 P€ò€ð6 	ˆ"€X��Bˆx˜"˜b˜ A q 6¨A¨q¨6°A°q°6Ð:€Ú€Øˆ"€X��1ˆv˜˜1�vÐ€Ú€ð €x×ÑÓ€Ø‡i�i×Ñ˜AÓ€Ø
‡��t—{‘{×'Ñ'Ó(€Ø�I‰I�d‰O€„	Ø�k‰k˜$Ñ€„ð "ˆ8×!Ñ!Ó#€Ø
‡��x—‘×+Ñ+Ó,€Ø—‘˜dÑ#€„Ø—/‘/ $Ñ'€„à	ˆ×	Ñ	Ó	€Ø
‡��v—}‘}×)Ñ)Ó*€Ø�k‰k˜$Ñ€„Ø—‘˜dÑ#€„á! !Ó$€ØD˜X×DÑDØ˜b¨RôÑ €ˆlð
 ×#Ñ#¨Ð#Ó1€Ø$'€ˆ\˜SÑ Ñ !Ø×Ñ  1¨5ÐÓ1€Ù$ R¨°TÈÔJ×RÑRÓT€ð —)‘) $§+¡+Ñ.Ø—m‘m¨(¯/©/Ñ:Ø—K‘K f§m¡mÑ4Ø˜ÑØ WÑ-Ø [Ñ1Ø$¨<Ñ8Ø$¨8Ñ4Ø%˜¨HÑ5Ø$¨8Ñ4Ø�2—8‘8˜GÓ$¨8Ñ4ñ€ò$òN	Xò	Xð ‡‚×ÒÐCÓDØ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4Ø‡‚×Ò˜ nÓ5ñ,ó 6ó 5ó Eð,ò*Fò*
ð& ‡‚×ÒÐCÓDØ‡‚×Ò˜ y§¢Ó'8Ó9Ø‡‚×Ò˜ nÓ5ñó 6ó :ó Eðð ‡‚×ÒÐCÓDØ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4Ø‡‚×ÒØà	Ð,Ð-Ø	Ð.Ð/Ø	Ð+Ð,Ø	Ð)Ð*ð	óñ
<óó 5ó Eð
<ò
ò4òWò ò2Lò>-òKò<!7òH?+òDHò>FóB8
ðv ‡‚×Ò˜ Ó+ñ1ó ,ð1ð ‡‚×Ò˜ Ó.Ø‡‚×Ò˜¨.Ó9ñWó :ó /ðWð
 &*ó:
ðz ‡‚×Ò˜ Ó+ñGó ,ðGð ‡‚×Ò˜ Ó.Ø‡‚×Ò˜¨.Ó9ñó :ó /ðð ‡‚×ÒÐCÓDØ‡‚×ÒØðÙ	�×!Ò!Ó# ^Ó	4ðá	�×!Ò!Ó# ^Ó	4ðóñ!Góó Eð!GòH0ðh ‡‚×ÒÐCÓDØ‡‚×ÒØðÙ	�×!Ò!Ó# ^Ó	4ðá	�×!Ò!Ó# ^Ó	4ðóñ@%óó Eð@%òF=ò(	Eò*8òZ1òh3ð0 ‡‚×Ò˜ Ó+ñ,Nó ,ð,Nð^ ‡‚×Ò˜ Ó+ñ	ó ,ð	ò+ò$òKò$(ð ‡‚×Ò˜ Y×%5Ò%5Ó%7Ó8ñ+ó 9ð+ò(-ò?ò"!òòó*&ðR ‡‚×Ò˜ lÓ3Ø‡‚×ÒØð	óñ6óó 4ð6ð
 ‡‚×Ò˜¡f©S°Ó->×-KÒ-KÈIÓ-VÓ&WÓXØ‡‚×Ò˜ Z°Ð$=Ó>ñ.ó ?ó Yð.ð ‡‚×Ò˜ lÓ3Ø‡‚×Ò˜Ò$WÓXØ‡‚×Ò˜¨.Ó9ñ0:ó :ó Yó 4ð0:ðh ‡‚×ÒÐCÓDØ‡‚×ÒØÙ‰ <ÖE˜4°4¸9Ò3D’$ÒEÀ~Ó	VÓWÙ
Ù ,ÖD˜$°$¸)Ò2C’ÒDÀnÓUóñóð ‡‚×Ò˜Ò$WÓXØ‡‚×Ò˜¨.Ó9ñ:ó :ó Yóó Eð:ð" ‡‚×Ò˜ lÓ3Ø‡‚×ÒØ!¡3 ~°~Ó#FóñHPóó 4ðHPòVð  ‡‚×Ò˜ Ó+ñ,ó ,ð,ð
 ‡‚×Ò˜ Ó+Ø‡‚×ÒÐ+¨d¨V°nÑ-DÓEñ$ó Fó ,ð$ð$ ‡‚×Ò˜ Ó+ñGó ,ðGð ‡‚×Ò˜ Ó.Ø‡‚×Ò˜¨.Ó9ñGó :ó /ðGòBð& ‡‚×Ò˜ Ó+ñ,ó ,ð,ð: ‡‚×Ò˜ Ó+Ø‡‚×Ò˜¨.Ó9ñ0ó :ó ,ð0òJ;òZ+ð8 ‡‚×ÒÐ+¨d¨V°nÑ-DÓEñ ó Fð ð$ ‡‚×ÒØ‰v‘c˜(Ÿ-š-›/Ó*¨k¸:Ð-FÑFÓGóð ‡‚×Ò˜Ð&<Ð>QÐ%RÓSñAó TóðAð ‡‚×Ò˜ H§M¢M£OÓ4Ø‡‚×Ò˜Ð&;Ð=OÐ%PÓQñAó Ró 5ðAò	.ò:ò%ðP ‡‚×Ò˜ Ó+Ø‡‚×Ò˜ f¨hÐ%7Ó8Ø‡‚×ÒÐ+¨d¨V°nÑ-DÀ~Ñ-UÓVñó Wó 9ó ,ðð6 ‡‚×ÒÐCÓDØ‡‚×Ò˜Ò&RÓSØ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4ñ	>ó 5ó Tó Eð	>ð ‡‚×Ò˜¡ q£Ó*ñ&ó +ð&òB'0ðT ‡‚×Ò˜Ð"8Ð:MÐ!NÓOØ‡‚×Ò˜ q¨! fÓ-ñGó .ó PðGò,(ò2(ò4?ò$?ò"Iò-ò,-ò6@ò$
òB1Uðh ‡‚×ÒØ‘Ð,�o×,Ò,Ó.Ð0GÐ0@×0GÒ0GÓ0IÓJóñ/óð/òð& ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4ñó 5ðð, ‡‚×ÒÐCÓDØ‡‚×Ò˜ nÓ5ñ=ó 6ó Eð=ð6 ‡‚×ÒÐCÓDØ‡‚×Ò˜¡ q£Ó*Ø‡‚×Ò˜ nÓ5ñ.ó 6ó +ó Eð.ðB ‡‚×Ò˜ y°&Ð&9Ó:ñAó ;ðAð ‡‚×Ò˜ y°&Ð&9Ó:ñ*ó ;ð*ð ‡‚×Ò˜ y°&Ð&9Ó:ñ*ó ;ð*ð  ‡‚×Ò˜ y°&Ð&9Ó:ñ*ó ;ð*ð ‡‚×ÒÐ+¨^Ó<Ø‡‚×ÒØ
áÓÙÓðóñ	óó =ð	ð ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4ñ!ó 5ð!òð ‡‚×ÒØ ð 
×	 Ò	 Ð"7¸Ð;Ø	×	 Ò	 Ð"4°dÐ;Ø	&Ð(>ÀÐEØ	&Ð(;¸TÐBðóð ‡‚×ÒÐ.°°v°Ó?ñ'ó @óð 'ðZ ‡‚×ÒÐ/±°Y×5EÒ5EÓ5GÈ$ÐPTÈÓ1VÓWñó Xðð: ‡‚×ÒØà	×	!Ò	!Ð#8Ð9Ø	×	%Ò	%Ð'=Ð>ðóñNóðNò,
ð ‡‚×ÒÐCÓDØ‡‚×Ò˜Ð"7Ð9KÐ!LÓMØ‡‚×ÒØð 	ˆ�‰�"—&’&˜!˜RŸVšV Q¨¨1Ð-Ó.Øˆ�‰�"—&’&˜"Ÿ&š& ! Q¨¨1Ð-Ó.àˆ�‰�!�Q˜˜1˜bŸfšf b§f¢fÐ-Ó.Øˆ�‰�!�Q˜˜2Ÿ6š6 1 b§f¢fÐ-Ó.ðó
ð ‡‚×Ò˜ nÓ5ñ#:ó 6ó
ó Nó Eð#:òL(ò,:ò^<ò>Iò$49òn@ò*Lò(&ò<ð
 ‡‚×ÒØ	à	ˆ�‰�B—F’F�8˜c˜U S E¨C¨5Ð1Ó	2°H°B·H±HÒ=QÓ4RÐSØ	ˆ�‰�B—F’F�8˜c˜U R§V¢V HÐ-Ó	.°°·±ºÓ0IÐJðð 
 Ð!5Ð6ð ó ñ?óñ?ùòm0 FùâDs   ä	AKäAKä5	AKä?AK