Ë
    êÿæi:¤ ã                   ó‚!  — 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l5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> ddl7m?Z@ ddlAmBZB ddlCmDZD ddlEmFZFmGZGmHZHmIZImJZJ ddlKmLZLmMZMmNZNmOZO ddlPmQZQ ddlRmSZS dZTdZUe*e,dœZVe+e-dœZW eX«       ZYeXeZd<   eYj·                  eV«       eYj·                  eW«       g d¢Z\ 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 d0¢g d1¢g d2¢g d3¢g d4¢g d5¢g«      Z^g d6¢Z_g d7¢Z`d8d9gd9d9gd9d8gd:d:gd:d;gd;d:ggZag d<¢Zbd9d9gd;d;gd=d;ggZcg d>¢Zd ejÊ                  «       ZfejÎ                  jÑ                  d:«      ZieijÕ                  efjÖ                  jØ                  «      ZmefjÜ                  em   ef_n        efjÖ                  em   ef_k         ejÞ                  «       ZpeijÕ                  epjÖ                  jØ                  «      ZmepjÜ                  em   ep_n        epjÖ                  em   ep_k         ejâ                  «       ZreijÕ                  erjÖ                  jØ                  «      ZmerjÜ                  em   er_n        erjÖ                  em   er_k         eSd«      Zs ejè                  dd?d@¬A«      \  ZuZvesjï                  dB¬C«      ZxdDexexdEk  <   esjó                  ddFdG¬C«      Zz e(dHd@dId¬J«      j÷                  «       Z|efjÜ                  efjÖ                  dKœepjÜ                  epjÖ                  dKœerjÜ                  erjÖ                  dKœeaebdKœe^e_dKœe^e`dKœeuevdKœexezdKœex ezdKœe|ezdKœ ejú                  dL«      ezdKœdMœZ~dN„ ZdO„ Z€dP„ Z�e�j                  �j                  dQeW�j	                  «       «      e�j                  �j                  dReU«      dS„ «       «       Z…dT„ Z†dU„ Z‡e�j                  �j                  dVeW�j                  «       «      e�j                  �j                  dReU«      dW„ «       «       Z‰e�j                  �j                  dQeW�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                  djeY«      dk„ «       Z—e�j                  �j                  dje\«      e�j                  �j                  dleN«      dm„ «       «       Z˜	 dèdn„Z™e�j                  �j                  djeY«      do„ «       Zše�j                  �j                  dje\«      e�j                  �j                  dleN«      dp„ «       «       Z›dq„ Zœdr„ Z�e�j                  �j                  dsg  e
eW�j	                  «       eU«      ¢ e
eV�j	                  «       eT«      ¢«      dt„ «       Zždu„ ZŸdv„ Z dw„ Z¡dx„ Z¢dy„ Z£e�j                  �j                  djeV«      dz„ «       Z¤e�j                  �j                  djeV«      d{„ «       Z¥d|„ Z¦d}„ Z§d~„ Z¨d„ Z©e�j                  �j                  d€eY�j	                  «       «      d�„ «       Zªd‚„ Z«dƒ„ Z¬d„„ Z­d…„ Z®d†„ Z¯dèd‡„Z°e�j                  �j                  dˆe\«      e�j                  �j                  d‰dŠ«      d‹„ «       «       Z±e�j                  �j                  dˆ e² e³e\«      �ji                  eW«      «      «      e�j                  �j                  d‰dŒd�g«      dŽ„ «       «       Zµe�j                  �j                  dˆe\«      e�j                  �j                  d‰g d�¢«      e�j                  �j                  dleN«      d�„ «       «       «       Z¶e�j                  �j                  d‘ e· e
e\D � cg c]	  } | eWv sŒ| ‘Œ c} eU«      «       e· e
e\D � cg c]	  } | eVv sŒ| ‘Œ c} eT«      «      z   «      e�j                  �j                  d‰g d�¢«      e�j                  �j                  dleN«      d’„ «       «       «       Z¸e�j                  �j                  dˆe\«      e�j                  �j                  d“ e¹eNeO«      «      d”„ «       «       Zºd•„ Z»e�j                  �j                  djeY«      d–„ «       Z¼e�j                  �j                  djeY«      e�j                  �j                  d—dgeNz   «      d˜„ «       «       Z½e�j                  �j                  djeY«      d™„ «       Z¾e�j                  �j                  dje\«      e�j                  �j                  dšeO«      d›„ «       «       Z¿dœ„ ZÀe�j                  �j                  djeY«      d�„ «       ZÁe�j                  �j                  djeY«      e�j                  �j                  dšeO«      dž„ «       «       ZÂdŸ„ ZÃd „ ZÄe�j                  �j                  d—dgeNz   «      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                  djeY«      e�j                  �j                  d§d¨d©g«      e�j                  �j                  d—dgeNz   eOz   «      dª„ «       «       «       ZÌe�j                  �j                  dRg d«¢«      e�j                  �j                  dQeW�j	                  «       «      d¬„ «       «       ZÍe�j                  �j                  d­ eÎd=«      «      d®„ «       ZÏd¯„ ZÐe�j                  �j                  dQe*e,g«      e�j                  �j                  d°d;dFg«      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                  dQeY�j	                  «       «      d¿„ «       ZÞe�j                  �j                  dRdYd[g«      dÀ„ «       Zße�j                  �j                  d­ eÎd=«      «      e�j                  �j                  dRdYd[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                  dRdÂdÃg«      dÇ„ «       Zäe�j                  �j                  d—dgeOz   «      e�j                  �j                  dÈ e+dZ¬É«       e-dZ¬É«      g«      dÊ„ «       «       Zåe�j                  �j                  dQeW�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¹eV�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                  dQe+e-g«      e�j                  �j                  dÛ ejº                  e�jÞ                  d;e�jÞ                  dFdÜdÝg«       ejº                  e�jÞ                  e�jÞ                  d=dFdÜdÝg«       ejº                  d:d;d=dFe�jÞ                  e�jÞ                  g«       ejº                  d:d;d=e�jÞ                  dÝe�jÞ                  g«      g«      e�j                  �j                  dRdYd[g«      dÞ„ «       «       «       Zðdß„ Zñdà„ Zòdá„ Zódâ„ Zôdã„ Zõdä„ Zödå„ Z÷dæ„ Zø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)Ú_py_sort)Ú
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=   )éÿÿÿÿrC   r   r   ç      Àr   r   çÍÌÌÌÌÌ @r=   r   r   rD   r   r=   )rC   rC   r   g333333ó¿r   r   r   r   r   r   rB   r   r   r=   )rC   rC   r   r   r   r   r   r@   r   r   r   r   r   r=   )rC   éþÿÿÿr   r<   éýÿÿÿé
   r<   r   çš™™™™™	Àr   r<   r@   r>   r=   )çáz®Gá @r   éúÿÿÿç      à¿r   é   r   r   rI   é   ç      à?r   rG   r=   )rJ   r   rK   rL   r   rM   r   r   rI   rN   r   r   rF   r=   )rJ   é   rK   rL   r   rM   r   r   rI   rN   r   r   rF   r=   )rJ   rP   rK   rL   r   rM   r   r   rI   rN   rO   r   rC   r   )é   rP   r?   r=   rO   r>   rH   r   r=   rA   r@   r   rQ   r   )rQ   r   r=   r=   r=   rC   r=   r   r   rF   r@   r   r=   r   )rQ   r   r=   rQ   r@   rC   rH   rQ   r   rC   r=   rQ   rQ   r   )r=   r=   r   rQ   rQ   rC   r=   rQ   r   rA   r=   rQ   r@   r   )r@   r=   r   r@   r   r>   rH   r   r=   rA   r@   r   r@   r=   )rJ   rP   rK   rL   r   r=   r   r   rI   rN   rO   r   rG   r=   )rJ   rP   rK   rL   r   r=   r   r   rI   rN   ç      ø?r=   rC   rC   )rJ   rP   rK   rL   r   rH   r   r   rI   rN   rO   r   rC   rC   )rQ   r   r?   r=   rO   rF   rH   r   r=   rA   r@   r=   r   rC   )rQ   r   r=   r=   r=   rF   r=   r   r   rF   r   r   r   r=   )rQ   r=   r=   r=   rQ   rC   rH   rQ   r   rC   r   rQ   r=   r=   )r=   r=   r   r   r=   rG   r=   rQ   r   rA   r=   rQ   r=   r=   )r@   r=   r   r=   r   r>   r=   r   r=   rF   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   )ç      ð?rE   ç333333ó?çš™™™™™©?rH   g333333@çÍÌÌÌÌÌ@g)\�Âõ(ð?ç{®Gáz„?g×£p=
×@rV   gš™™™™™ñ?ç        rT   rQ   rM   r   r   ç      @gî|?5^ºÉ?gö(\�Âõð?çÍÌÌÌÌÌì?r   rF   rC   r=   rQ   )rC   rC   rC   r=   r=   r=   r@   )rC   r=   r=   é   rH   )Úrandom_stateÚ	n_samplesÚ
n_features)é   r?   ©ÚsizerX   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/Volumes/fast/ai/experiments/voice-extract-mac/.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Úfitre   rf   r,   ÚpredictÚTÚtrue_resultrv   ©Únamer'   Úclfs      r†   Útest_classification_toyr–   ö   s‰   € ä—o‘oÖ'‰
ˆˆdÙ Ô"ˆØ�‰””1ŒÜ˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÔWá °Ô2ˆØ�‰””1ŒÜ˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÕWñ (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‹   rO   )r�   rŽ   r�   re   rf   ry   ÚonesÚlenr,   r�   r‘   r’   rv   Úfullr“   s      r†   Ú test_weighted_classification_toyr�     s¢   € ä—o‘oÖ'‰
ˆˆ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ñ (rˆ   r'   Ú	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 )Nr:   r=   ©rž   r\   ©rž   rŒ   r\   )ry   ÚabsÚminrf   Úarrayr’   r�   re   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)rH   rH   r=   r?   r   rŠ   rS   r‹   ©r\   rŒ   )ry   rq   ÚindicesÚshapeÚvstackÚravelr‘   r�   rŽ   r�   Úscorerv   )rf   ÚgridxÚgridyre   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Ö'‰
ˆˆdÙ Ô"ˆØ�‰��1ŒØ�y‰y˜˜A‹ #Ò%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%á °Ô2ˆØ�‰��1ŒØ�y‰y˜˜A‹ #Ó%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%ñ (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    rZ   z0Failed with {0}, criterion = {1} and score = {2}rQ   r¡   rO   )r   r�   rŽ   ÚCLF_CRITERIONSr�   rg   ÚdataÚtargetr   r�   rv   )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ó
ó 	
ˆ{ñ $N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�   rh   r¶   r·   r   r�   ÚpytestÚapprox)r”   r'   rž   r¨   r°   s        r†   Útest_diabetes_overfitr¼   L  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, metricr7   r8   r9   r:   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 )	NrN   r¡   Ú	max_depthr=   r<   é   r   © )Údictrh   r¶   r·   r�   r�   )
r'   rž   ÚmetricÚglobal_random_seedÚkwargsre   rf   Úloss1Úloss4Úloss7s
             r†   Útest_diabetes_underfitrÈ   Y  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‹   rs   rP   )r�   rŽ   r�   rg   r¶   r·   Úpredict_probar+   ry   r~   rš   r­   rv   r,   Úargmaxr�   r*   ÚexpÚpredict_log_proba)r”   r'   r•   Úprob_predicts       r†   Útest_probabilityrÑ   p  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\   )ry   ÚarangeÚnewaxisÚ	REG_TREESrŽ   r�   ©re   rf   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 )
NrF   rC   r=   rQ   )r=   r=   r=   r=   r=   r=   r   rŠ   r‹   rs   )r�   rŽ   r�   r,   r�   rv   rÖ   r*   )re   rf   r”   ÚTreeClassifierr•   ÚTreeRegressorr¨   s          r†   Útest_pure_setrÜ   •  sÎ   € à
ˆbˆ�B˜�8˜b "˜X¨¨1 v°°1¨v¸¸1°vÐ>€AÚ€Aä )§¡Ö 1ÑˆˆnÙ¨!Ô,ˆØ�‰��1ŒÜ˜3Ÿ;™; q›>¨1Ð6G×6NÑ6NÈtÓ6TÖUð !2ô
  )Ÿ™Ö0ÑˆˆmÙ¨Ô+ˆØ�‰��1ŒÜ˜CŸK™K¨›N¨AÐ7H×7OÑ7OÐPTÓ7UÖVñ  1rˆ   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à   )rS   g¿½A‹wæ?gtúQ?5?á?rX   g7G€¶í?g”�ÞÛº¼Þ?g™¥b'Âß?Úraise)Úallr   rŠ   )ry   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éˆ  rH   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_ry   r~   r­   rv   r   rg   r¶   r·   r›   r,   )re   rf   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ü   Ý  s-   € ä
 Ó
"€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Ð  rH   r@   r   Frê   r5   r?   )rž   r¾   r\   r7   )r	   rò   r   r�   r   r*   ró   r,   Útree_r{   rx   rw   r}   )re   rf   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@   rW   rO   rS   )r;   rŽ   r�   rg   r¶   r·   Úmax_features_Úintry   r  r­   r  )r”   ÚTreeEstimatorÚests      r†   Útest_max_featuresr    s  € ä(Ÿ™×0Ñˆˆ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ñ?  1rˆ   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)rF   rC   r=   rC   r=   r:   ©rž   zy is not positive.*Poisson©Úmatch©r   r=   rQ   )r   r   r   zSome.*y are negative.*Poisson)r?   gš™™™™™¹¿rQ   )r�   rŽ   rº   rù   r   rÌ   re   r�   rf   rú   ry   Úasfortranarrayr*   r�   r‘   r’   Úasarrayr¤   ÚdotÚapplyr   )	r”   r  r  ÚX2Úy2ÚXfÚtÚXtr•   s	            r†   Ú
test_errorr  &  sè  € ä(Ÿ™×0Ñˆˆ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  1ôr  ¨)Ô
4€CÜ	�‰”zÐ)EÖ	FØ�‰’�šYÔ'÷ 
Gä	�‰”zÐ)HÖ	IØ�‰’�š\Ô*÷ 
JÐ	I÷s +Ñ*ú÷
 'Ñ&ú÷ 'Ñ&ú÷ +Ñ*ú÷ 'Ñ&ú÷ 'Ñ&úç&Ñ&ú÷
 'Ñ&úç&Ñ&ú÷
 +Ñ*ú÷
 
GÐ	Fúç	IÐ	Iú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
                  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éè  rH   r   )Úmin_samples_splitrñ   r\   rC   é	   r‹   rB   N)ry   r  rg   r¶   r
   Ú_treeÚDTYPEr·   r   r;   Úkeysr�   rþ   r}   rx   r£   rv   )re   rf   rñ   r”   r  r  Únode_sampless          r†   Útest_min_samples_splitr"  h  s.  € ä
×Ñœ$Ÿ)™)¬4¯:©:×+;Ñ+;Ô<€AÜ�‰€Aô !(¨´i·n±nÓ6F× GÑˆ˜Ü! $™ˆñ Ø °È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
                  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ï   )ry   r  rg   r¶   r
   r  r  r·   r   r;   r   r�   rþ   r  Úbincountr£   rv   )	re   rf   rñ   r”   r  r  ÚoutÚnode_countsÚ
leaf_counts	            r†   Útest_min_samples_leafr)  ‡  sF  € ä
×Ñœ$Ÿ)™)¬4¯:©:×+;Ñ+;Ô<€AÜ�‰€Aô !(¨´i·n±nÓ6F× GÑˆ˜Ü! $™ˆñ Ø¨~È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Ð%ñ/ !H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 setre   Nrf   r   r  rO   rN   )Úmin_weight_fraction_leafrñ   r\   r˜   )Úweightsz,Failed with {0} min_weight_fraction_leaf={1})ÚDATASETSÚastypery   Úfloat32ÚrngÚrandr­   r~   r;   r   Úlinspacer�   rþ   r  Útocsrr%  r£   r+  rv   )r”   r	   Úsparse_containerre   rf   r,  Útotal_weightr  rñ   Úfracr  r&  Únode_weightsÚleaf_weightss                 r†   Úcheck_min_weight_fraction_leafr9  ¨  s-  € ô 	�Ñ˜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ð !Nð* —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ñ !Nrˆ   r”   c                 ó   — t        | d«       y ©Nrg   ©r9  ©r”   s    r†   Ú,test_min_weight_fraction_leaf_on_dense_inputr>  ã  s   € ä" 4¨Õ0rˆ   Úcsc_containerc                 ó    — t        | d|¬«       y ©Nrm   )r4  r<  ©r”   r?  s     r†   Ú-test_min_weight_fraction_leaf_on_sparse_inputrC  è  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.re   Nrf   r   r  rO   r@   r?   )r+  rñ   r$  r\   zBFailed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}rï   )r-  r.  ry   r/  r­   r;   r   r2  r�   rþ   r  r3  r%  r£   Úmaxr+  rv   r$  )r”   r	   r4  re   rf   r5  r  rñ   r6  r  r&  r7  r8  s                r†   Ú4check_min_weight_fraction_leaf_with_min_samples_leafrF  î  sD  € ô
 	�Ñ˜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ó
ó	
ð 
ð% !Nô. !(¨´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ó
ó	
ð 
ñ% !Nrˆ   c                 ó   — t        | d«       y r;  ©rF  r=  s    r†   ÚBtest_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_inputrI  +  s   € ä8¸¸vÕFrˆ   c                 ó    — t        | d|¬«       y rA  rH  rB  s     r†   ÚCtest_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_inputrK  0  s   € ô
 9Øˆl¨]örˆ   c                 ó„  — t        j                  d| ¬«      \  }}t        dt        j	                  «       «      D �]  \  }}t        |   } ||d¬«      } ||dd¬«      } ||dd¬«      } ||d	d¬«      }	|d
f|df|df|	d	ffD �]¸  \  }
}|
j
                  |k  s!J dj                  |
j
                  |«      «       ‚|
j                  ||«       t        |
j                  j                  «      D �]M  }|
j                  j                  |   t        k7  sŒ%|
j                  j                  |   }|
j                  j                  |   }|
j                  j                  |   }|
j                  j                  |   }|
j                  j                  |   }||z  }|
j                  j                  |   }|
j                  j                  |   }|
j                  j                  |   }||z  }||z   }||z  }|
j                  j                  |   |j                   d   z  }|||z
  z  }||k\  r�Œ9J dj                  ||«      «       ‚ �Œ» �Œ y )Néd   ©r]   r\   r  r   ©rñ   r\   rU   )rñ   Úmin_impurity_decreaser\   g-Cëâ6?rï   çH¯¼šò×z>z)Failed, min_impurity_decrease = {0} > {1}z2Failed with {0} expected min_impurity_decrease={1})r	   rò   r   r;   r   rP  rv   r�   Úrangerþ   ru   rx   r!   r   Úweighted_n_node_samplesrw   r­   )rÃ   re   rf   rñ   r”   r  Úest1Úest2Úest3Úest4r  Úexpected_decreaseÚnodeÚ
imp_parentÚ
wtd_n_nodeÚleftÚ
wtd_n_leftÚimp_leftÚwtd_imp_leftÚrightÚwtd_n_rightÚ	imp_rightÚwtd_imp_rightÚwtd_avg_left_right_impÚfractional_node_weightÚactual_decreases                             r†   Útest_min_impurity_decreaserg  :  sf  € ô ×'Ñ'°#ÐDVÔW�D€A€qô !(¨´i·n±nÓ6F× GÑˆ˜Ü! $™ˆñ ¨NÈÔKˆáØ)ÀÐTUô
ˆñ Ø)ÀÐVWô
ˆñ Ø)ÀÐSTô
ˆð
 �4ˆLØ�4ˆLØ�6ˆNØ�3ˆKô	'
Ñ"ˆCÐ"ð ×,Ñ,Ð0AÒAð Ø;×BÑBØ×-Ñ-Ð/@óóÐAð
 �G‰G�A�qŒMÜ˜cŸi™i×2Ñ2×3�ð —9‘9×*Ñ*¨4Ñ0´IÓ=Ø!$§¡×!3Ñ!3°DÑ!9�JØ!$§¡×!BÑ!BÀ4Ñ!H�JàŸ9™9×2Ñ2°4Ñ8�DØ!$§¡×!BÑ!BÀ4Ñ!H�JØ"Ÿy™y×1Ñ1°$Ñ7�HØ#-°Ñ#8�LàŸI™I×4Ñ4°TÑ:�EØ"%§)¡)×"CÑ"CÀEÑ"J�KØ #§	¡	× 2Ñ 2°5Ñ 9�IØ$/°)Ñ$;�Mà-:¸\Ñ-IÐ*Ø*¨jÑ8Ð*ð Ÿ	™	×9Ñ9¸$Ñ?À!Ç'Á'È!Á*ÑLð +ð '=Ø"Ð%;Ñ;ñ'�Oð +Ð.?Ô?ð ØL×SÑSØ+Ð->óóÐ?ò9 4ò'
ñ% !H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¾   ru   ÚcapacityÚ	n_classesrx   rw   Ún_leavesr{   r|   r   r}   rS  r€   z6Failed to generate same score  after pickling with {0}z"Failed to generate same attribute z after pickling with rs   N)r;   rŽ   rg   r¶   r·   rh   r�   r°   rû   rþ   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__rv   r,   )r”   r  re   rf   r  r°   Ú
attributesÚ	attributeÚfitted_attributeÚserialized_objectrU  Úscore2s               r†   Útest_picklerw  ‚  sM  € ä(Ÿ™×0ÑˆˆmØ˜4ÑÜ—9‘9œdŸk™kˆq‰Aä—=‘=¤(§/¡/ˆqˆAá¨Ô+ˆØ�‰��1ŒØ—	‘	˜!˜Q“ˆò
ˆ
ñ  GQó
ÙFP¸ˆI”w˜sŸy™y¨)Ó4Ñ4Àjð 	ð 
ô #ŸL™L¨Ó-ÐÜ�|‰|Ð-Ó.ˆÜ�D‹z˜SŸ]™]Ò*Ð*Ð*à—‘˜A˜qÓ!ˆØ˜Šð 	
ØD×KÑKÈDÓQó	
ˆó *ˆIÜÜ˜Ÿ
™
 IÓ.Ø  Ñ+à8¸¸ð DØ�vðö	ò *ñM  1ùò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 )NrF   rC   r=   rQ   r   r@   r:   r<   )r\   rž   ©r<   rQ   )r<   r<   )ry   r¤   rµ   r�   r�   r,   r­   rÌ   r›   rÏ   r*   )r'   rž   re   rf   r‘   Úy_trueÚis_clfr•   Úy_hatÚprobaÚ	log_probar¨   s               r†   Útest_multioutputr  µ  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Š   rQ   rC   r=   rF   )r�   rŽ   r�   re   rf   Ú
n_classes_r,   Úclasses_ry   r®   r¤   r‘   r›   )r”   rÚ   r•   Ú_ys       r†   Útest_classes_shaper„  ÿ  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Ð);Ö<ñ !2rˆ   c                  ó  — t         j                  d d } t         j                  d d }t        d|«      }t        j                  «       D ]=  \  }} |d¬«      }|j                  | ||¬«       t        |j                  | «      |«       Œ? y )Né}   Úbalancedr   rŠ   r˜   )	rg   r¶   r·   r(   r�   rŽ   r�   r*   r�   )Úunbalanced_XÚunbalanced_yr™   r”   rÚ   r•   s         r†   Útest_unbalanced_irisrŠ    sr   € ä—9‘9˜T˜c�?€LÜ—;‘;˜t Ð$€LÜ)¨*°lÓC€Mä )§¡Ö 1ÑˆˆnÙ¨!Ô,ˆØ�‰�˜l¸-ˆÔHÜ˜CŸK™K¨Ó5°|ÕDñ !2rˆ   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Ž   ry   Úfloat64r/  r  rg   r¶   r·   r,   r�   r�   Úascontiguousarrayr2   r1   )r”   r  r  r  re   rf   Úcsr_containerr?  s           r†   Útest_memory_layoutr’    s  € ä(/Ü�‰ÓœBŸJ™J¬¯
©
Ð3÷)Ñ$Ñˆˆ}˜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)rˆ   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 )NrM  rX   é2   r   rŠ   r˜   éÈ   r=   rQ   gR¸…ëQà?rÓ   g     °b@rO   g     ÀH@)Ú	minlength)ry   rÔ   rÕ   rš   r   r�   r,   r�   rq   rþ   r|   rg   r¶   r·   r0  Úrandintr­   r%  rx   r
   r  r!   r+   )re   rf   r™   r•   Ú
duplicatesrö   r…   s          r†   Útest_sample_weightr™  L  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)
NrM  rX   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
  )ry   rÔ   rÕ   rš   r   Úrandomr1  rº   rù   rú   r�   r¤   ÚreÚescapeÚ	TypeError)re   rf   r•   r™   Úexpected_errs        r†   Útest_sample_weight_invalidr   €  sÔ   € ä
�	‰	�#‹’qœ"Ÿ*™*�}Ñ%€AÜ
�‰�‹€AØ€A€c€r€Fä
 ¨aÔ
0€Cä—I‘I—N‘N 3¨Ó*€MÜ	�‰”zÕ	"Ø�‰��1 MˆÔ2÷ 
#ô —H‘H˜Q“K€Mä—9‘9ðBó€Lô 
�‰”y¨Ö	5Ø�‰��1 MˆÔ2÷ 
6Ð	5÷ 
#Ð	"ú÷ 
6Ð	5ú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Š   r‡  ©Úclass_weightr\   g       @rS   r  r=   rM  g      Y@rQ   )r�   r�   rg   r¶   r·   r*   ró   ry   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)	NrQ   rO   rS   ©rC   r=   r   r¢  zBnumber of elements in class_weight should match number of outputs.r
  )r�   ry   r®   rf   r¤   r‘   rº   rù   rú   r�   re   )r”   rÚ   rƒ  r•   rt   s        r†   Útest_class_weight_errorsr«  È  st   € ô ˜t‘_€NÜ	�‰”A”r—x‘x¤“{ Q‘Ð'Ó	(×	*Ñ	*€Bñ ¨C°CÑ'8Ð&9ÈÔ
J€CØR€GÜ	�‰”z¨Ö	1Ø�‰”�2Œ÷ 
2×	1Ñ	1ús   Á4BÂBc                  óÞ   — t        j                  dd¬«      \  } }d}t        j                  «       D ]:  \  }} |d |dz   ¬«      j	                  | |«      }|j                  «       |dz   k(  rŒ:J ‚ y ©NrM  r=   rN  r<   )r¾   rñ   )r	   Úmake_hastie_10_2r;   rŽ   r�   Úget_n_leaves©re   rf   Úkr”   r  r  s         r†   Útest_max_leaf_nodesr²  Õ  sk   € ä×$Ñ$¨sÀÔC�D€A€qØ	€AÜ(Ÿ™Ö0ÑˆˆmÙ d¸1¸q¹5ÔA×EÑEÀaÈÓKˆØ×ÑÓ! Q¨¡UÓ*Ð*Ð*ñ  1rˆ   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µ  Þ  s`   € ä×$Ñ$¨sÀÔC�D€A€qØ	€AÜ(Ÿ™Ö0ÑˆˆmÙ a¸Ô:×>Ñ>¸qÀ!ÓDˆØ�}‰}‹ !Ó#Ð#Ð#ñ  1rˆ   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)rk  r€   rx   rw   r|   r   r{   r}   r   r=   rG   r@   z Array points to arbitrary memory)rû   r   r�   rþ   Úflat)Úattrr€   s     r†   Útest_arrays_persistr¹  ç  sm   € ó	ˆô Ô.Ó0×4Ñ4°q°c¸A¸3°ZÀ!ÀQÀÓH×NÑNÐPTÓUˆà�U—Z‘Z ‘]Ô& QÓ&ÐJÐ(JÓJÑ&ÐJÐ(JÓJÐ&ñ	rˆ   c                  ó  — t        d«      } t        j                  d«      }| j                  ddd«      }t        j                  «       D ];  \  }} |d¬«      }|j                  ||«       |j                  j                  dk(  rŒ;J ‚ y )Nr   )rH   r_   rQ   ©rH   rŠ   )	r4   ry   rq   r—  r;   rŽ   r�   rþ   r¾   )r\   re   rf   r”   r  r  s         r†   Útest_only_constant_featuresr¼  ù  ss   € Ü% aÓ(€LÜ
�‰�Ó€AØ×Ñ˜Q  5Ó)€AÜ(Ÿ™Ö0ÑˆˆmÙ¨Ô+ˆØ�‰��1ŒØ�y‰y×"Ñ" aÓ'Ð'Ð'ñ  1rˆ   Ú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   rH   rQ   rQ  r»  rŠ   r=   )r4   r1  r—  r�   ró   )r½  r\   re   Úfeature_thresholdrf   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=   rQ   r<   r?   rN   r¿   )r<   rM   )r   r   r   r=   r=   rQ   rQ   rQ   r@   r@   r@   Ú	ExtraTreer   r=   r«   rQ   r?   )
ry   Ú	transposer®   rq   r;   rŽ   r�   rþ   r¾   ru   ©re   rf   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Ó,Ð,Ð,ñ  1rˆ   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 )NrS   rX   )r<   r  )rX   rS   rX   rS   r   r=   r«   ry  rO   )r<   )ry   Úhstackr¤   rq   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ÑˆˆmÙ¨¸Ô;ˆØ�‰��1ŒØ�y‰y×"Ñ" aÒ'Ð'Ð'Ü˜3×,Ñ,¨QÓ/´·±¸ÀÓ1EÕFð	  1ô  )Ÿ™Ö0ÑˆˆmÙ¨¸Ô;ˆØ�‰��1ŒØ�y‰y×"Ñ" aÒ'Ð'Ð'Ü˜3Ÿ;™; q›>¬2¯7©7°4¸Ó+=Õ>ñ	  1rˆ   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<   rC   r=   r/  r
  )r   r=   r   r=   )
ry   Úrepeatr.  r�  Úreshaper   rº   rù   rú   r�   )re   r•   s     r†   Útest_big_inputrÌ  7  s^   € ä
�	‰	�(˜AÓ×%Ñ%¤b§j¡jÓ1×9Ñ9¸"¸aÓ@€AÜ
 Ó
"€CÜ	�‰”z¨Ö	3Ø�‰�’<Ô ÷ 
4×	3Ñ	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)	NrP   ÚPrH   rQ   r   r=   Úbest)Úsplitterrñ   )ÚstructÚcalcsizery   r›  Úrandnr—  r   rº   rù   Ú	Exceptionr�   rÑ  )Ún_bitsre   rf   Úhuger•   s        r†   Útest_huge_allocationsrÝ  F  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 )	Nre   rf   )ri   rh   r   r?   ©r\   r¾   ú5{0} with dense and sparse format gave different treesr  )r;   r-  r­   r0   r1   r2   r�   r‡   rþ   rv   r�   r�   rÌ   rÏ   ry   r/  r+   )r
   Údatasetr¾   r  re   rf   r]   r4  ÚX_sparser�   r‚   Úy_predÚy_probaÚy_log_probaÚsparse_container_testÚX_sparse_tests                   r†   Úcheck_sparse_inputrè  [  st  € Ü˜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¸õò &Vñ% Mrˆ   Ú	tree_typerá  )rk   rj   ri   rm   rn   ro   rp   rq   c                 ó0   — |dk(  rdnd }t        | ||«       y )Nri   r@   ©rè  )ré  rá  r¾   s      r†   Útest_sparse_inputrì  „  s   € ð  Ò(‘¨d€IÜ�y '¨9Õ5rˆ   rh   rl   c                 ó   — t        | |d«       y )NrQ   rë  )ré  rá  s     r†   Útest_sparse_input_reg_treesrî  —  s   € ô
 �y '¨1Õ-rˆ   )rn   ro   rp   rq   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 )Nre   rf   r   r=   rQ   )r\   rŒ   r¾   rà  rH   )r\   rŒ   r  )r\   r$  r@   rð   )	r;   r-  r�   r‡   rþ   rv   r+   r�   r­   )	ré  rá  r?  r  re   râ  rf   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 )Nre   rf   r   r@   ©r\   r¾   rž   rà  )r;   r-  r�   r‡   rþ   rv   r+   r�   )
ré  rá  r?  rž   r  re   râ  rf   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@   rH   r   rO   r`   r=   r  ©r­   rX   rß  rà  )r;   ry   rÔ   r4   rR  ÚbinomialÚpermutationÚappendÚconcatenater.  Úint32r¤   r/  Útoarrayr—  Úcopyr¶   r~   r�   r‡   rþ   rv   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â  re   rç  ÚX_testrf   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—/‰ˆˆ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ñ% "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;   rg   r¶   r¯   rË  r·   rº   rù   rú   r�   r�   )r”   r  re   ÚX_2drf   r  s         r†   Úcheck_raise_error_on_1d_inputr  >  s¾   € Ü˜d‘O€Mä�	‰	’!�Q�$‰×ÑÓ€AÜ�9‰9’Q˜�T‰?×"Ñ" 7Ó+€DÜ�‰€Aä	�‰”zÕ	"Ù 1Ô%×)Ñ)¨!¨QÔ/÷ 
#ñ  QÔ
'€CØ‡G�GˆD�!ÔÜ	�‰”zÕ	"Ø�‰�Q�CÔ÷ 
#Ð	"÷ 
#Ð	"ú÷
 
#Ð	"ú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  N  s   € ä	Õ	Ü% dÔ+÷ 
×	Ñ	ús   ‹  )r4  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=   )rB   rB   rB   rB   rB   rŠ   r˜   gš™™™™™Ù?)r\   r+  )r;   ry   r¤   r�   rþ   r¾   )r”   r4  r  re   rf   r™   r  s          r†   Ú test_min_weight_leaf_split_levelr  T  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                  j                  d¬«      }t        |    «       }|j                  t         t        «       t        |j                  t         «      |j                  j                  |«      «       y ©NF©rü  ©ÚX_smallr.  r
   r  r  r;   r�   Úy_smallr,   r  rþ   )r”   Ú	X_small32r  s      r†   Útest_public_apply_all_treesr  h  sX   € ä—‘œtŸz™z×/Ñ/°e�Ó<€Iä
�D‰/Ó
€CØ‡G�GŒG”WÔÜ�s—y‘y¤Ó)¨3¯9©9¯?©?¸9Ó+EÕFrˆ   r‘  c                 ó,  —  |t         j                  t        j                  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  q  s_   € ñ œgŸn™n¬T¯Z©Z×-=Ñ-=ÀE˜nÓJÓK€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ß  rQ   )r=   r=   r   ©r=   r   r=   r@   ©r   r   r   r=   r=   rC   rŠ   ©Úaxis)rg   r¶   r·   r   r�   rý  rû  r,   ry   Únanr¤   rË  r   r~   rþ   r}   )re   rf   r  Únode_indicatorr
   r}   s         r†   Útest_decision_path_hardcodedr"  {  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   rQ   rß  rõ  r=   r  )rg   r¶   r·   r­   r;   r�   rý  rû  rþ   ru   r  Ú	enumerater+   ry   rš   rx   r!   r  r~   rE  r¾   )r”   re   rf   r]   r  r  Únode_indicator_csrr!  Úleavesr  ÚjÚleave_indicatorÚ
all_leavesr¾   s                 r†   Útest_decision_pathr*  Ž  sB  € ä�	‰	€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Ñ8I±°°1�~ a¨ dÓ+Ð8I€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‘  re   rf   r  s        r†   Útest_no_sparse_y_supportr/  ¬  sH   € ô ™¤|Ó4€q€AÜ˜d‘O€MÜ	�‰”yÕ	!Ù 1Ô%×)Ñ)¨!¨QÔ/÷ 
"×	!Ñ	!ú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   r8   rQ   )r\   rž   rñ   r@   r?   rP   )rN   r¿   r@   r<   r@   )ç333333ã?ç333333Ó?rï   rS   r2  )re   rf   r™   )g²�…,dñ?gÜ¶mÛ¶mÛ?gÿÿÿÿÿÿç?)ç      @g      @r3  )çffffffö?rR   gUUUUUUõ?)r<   rY   r3  rd   r=   )r\   rž   r¾   r<   )r=   r=   r@   r=   rQ   )r@   r@   rQ   r=   rQ   )r=   r=   rQ   rQ   rQ   )gtÑE]tá?r   r1  )r=   r=   rQ   N)r   r�   r   rþ   r   r,   r€   r·  ry   rš   r�   )Údt_maere   s     r†   Útest_maer6  ¶  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  rM  c                 óR   — t        j                  t        j                  | «      «      S r  )rm  ro  rn  )Úobjs    r†   Ú_pickle_copyz)test_criterion_copy.<locals>._pickle_copyJ  s   € Ü�|‰|œFŸL™L¨Ó-Ó.Ð.rˆ   )
ry   rÔ   Úintprü  Údeepcopyr   rŽ   Ú
__reduce__r,   r   )Ú	n_outputsrk  r]   r:  Ú	copy_funcÚ_ÚtypenameÚcriteriaÚresultÚ	typename_Ú
n_outputs_r�  Ú
n_samples_s                r†   Útest_criterion_copyrG  C  s"  € ð €IÜ—	‘	˜!¤2§7¡7Ô+€IØ€Iò/ô —i‘i¤§¡°Ó=ˆ	Ü'×-Ñ-Ö/‰KˆAˆxÙ 	¨9Ó5ˆHÙ˜xÓ(×3Ñ3Ó5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ø 
Ò*Ð*Ð*Ü˜y¨*Õ5ð 0ô (×-Ñ-Ö/‰KˆAˆxÙ 	¨9Ó5ˆHÙ˜xÓ(×3Ñ3Ó5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ø 
Ò*Ð*Ð*Ø 
Ó*Ð*Ð*ñ 0ñ >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   rM  rM   g±¡*ÓÎâGr/  rC   rŠ   )ry   r›  ÚRandomStaterÙ  r)   Ú
nan_to_numr.  r   r�   r  ÚsetÚwhererþ   rx   r!   Ú
differenceÚisfiniter|   r›   )	r4  r¶   re   rf   r
   Úterminal_regionsÚ	left_leafÚ
empty_leafÚinfinite_thresholds	            r†   Ú"test_empty_leaf_infinite_thresholdrS  _  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 ©Nre   rf   r_   r   rO  ©r-  Úcost_complexity_pruning_pathÚ
ccp_alphasÚ
impuritiesry   rå   ÚdiffÚassert_pruning_creates_subtree©rá  r½  re   rf   r  ÚinfoÚpruning_pathrY  s           r†   Ú'test_prune_tree_classifier_are_subtreesr_  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                 ó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 rU  rV  r\  s           r†   Ú'test_prune_tree_regression_are_subtreesra  „  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=   rH   )r\   Ú	ccp_alpha)r   r�   Úassert_is_subtreerþ   )r¤  rö   s     r†   Útest_prune_single_node_treere  •  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ñ   rc  r\   )r�   rø  r   rd  rþ   )	Úestimator_clsre   rf   r^  Ú
estimatorsrc  r  Úprev_estÚnext_ests	            r†   r[  r[  ¡  sh   € à€JÛ!ˆ	Ù¨2¸ÐQRÔS×WÑWØˆqó
ˆð 	×Ñ˜#Õð	 "ô ' zÖ2Ñˆ�(Ü˜(Ÿ.™.¨(¯.©.Õ9ñ 3rˆ   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   )ru   r¾   rx   rw   Úpopr+   r€   r*   r   r}   rS  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†   rd  rd  °  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                 ó8  — t         d   }|d   j                  t        j                  j                  d¬«      }|€t        |«      }nˆ ||d   «      }t        j                  |j                  t        j                  j                  ¬«      |_        t        |j                  |j                  |j                  f«      \  |_        |_	        |_
        t        t        j                  t        t        j                  j                  ¬«      «      }t        |    |¬«      }|j                  ||«       t        |j                  |«      |j                  |«      «       t        |j!                  |«      j#                  «       |j!                  |«      j#                  «       «       y )Nrk   re   Fr  r  )rÖ  )r-  r.  r
   r  r  r-   ry   r¤   r¶   r¬   r   r  r;   r�   r,   r�   rý  Útodense)r”   rÖ  r4  rá  r  Ú
X_readonlyÚ
y_readonlyr  s           r†   Ú"test_apply_path_readonly_all_treesry  Ø  s7  € ô �{Ñ#€GØ�c‰l×!Ñ!¤$§*¡*×"2Ñ"2¸Ð!Ó?€GØÐÜ.¨wÓ7‰
á% g¨c¡lÓ3ˆ
äŸ(™( :§?¡?¼$¿*¹*×:JÑ:JÔKˆ
Œô
 &Ø�_‰_˜j×0Ñ0°*×2CÑ2CÐDó
ñ		
ØŒOØÔØÔô
 +¬2¯8©8´GÄ4Ç:Á:×CSÑCSÔ+TÓU€JÜ
�D‰/ 8Ô
,€CØ‡G�GˆJ˜
Ô#Ü�s—{‘{ :Ó.°·±¸GÓ0DÔEÜØ×Ñ˜*Ó%×-Ñ-Ó/°×1BÑ1BÀ7Ó1K×1SÑ1SÓ1Uõrˆ   )r7   r9   r:   c                 ó  — t         j                  t         j                  }} || ¬«      }|j                  ||«       t	        j
                  |j                  |«      «      t        j                  t	        j
                  |«      «      k(  sJ ‚y )Nr	  )	rh   r¶   r·   r�   ry   r~   r�   rº   r»   )rž   r'   re   rf   r¨   s        r†   Útest_balance_propertyr{  õ  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=   rQ   r@   ©r   r   r   r   r=   rQ   r@   r<   r7   r    r:   rH   r1  r  )Úeffective_rankÚtail_strengthr]   r^   rë   r\   rC   )	r   r�   ry   Úaminr�   rå   r	   Úmake_regressionr¢   )r|  re   rf   r¨   r^   s        r†   Útest_poisson_zero_nodesrƒ    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Ê   )éô  r…  rH   ©r]   r^   r\   rF   rQ   )ÚlowÚhighra   r   r  )Úlam)Ú	test_sizer\   r:   rH   )rž   r  r\   r7   Úmean)ÚstrategyÚtrainÚtestgVçž¯Ò<rO   g      è?)ry   r›  rI  r	   Úmake_low_rank_matrixÚuniformrE  r:   rÎ   r   r   r�   r   r   r�   Úclip)r0  Ún_trainÚn_testr^   re   Úcoefrf   Ú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‰	ˆˆ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 <Ñ/Ó/Ð/Ð/ñ Mrˆ   rk  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Ê   )rk  r]   r^   rë   rì   r\   r6   é+   r    Úentropyz> with criterion 'entropy' and 'log_loss' gave different trees.N)r	   rò   r�   r‡   rþ   r   r�   )r'   rk  r]   r^   re   rf   Útree_log_lossÚtree_entropys           r†   Ú'test_criterion_entropy_same_as_log_lossr£  O  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_ndarrayn  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ÚBytesIOrm  ÚPicklerÚcopyregÚdispatch_tablerü  ry   ÚndarrayÚdumpÚseek)ÚfÚpr•   rª  s     €€r†   Ú get_pickle_non_native_endiannesszJtest_different_endianness_pickle.<locals>.get_pickle_non_native_endiannessq  sb   ø€ Ü�J‰J‹LˆÜ�N‰N˜1ÓˆÜ"×1Ñ1×6Ñ6Ó8ˆÔØ'5ˆ×ÑœŸ™Ñ$à	�‰ˆsŒØ	�‰ˆqŒ	Øˆrˆ   )	r	   rò   r   r�   r°   rm  Úloadry   Úisclose)re   rf   r°   r·  Únew_clfÚ	new_scorer•   rª  s         @@r†   Ú test_different_endianness_pickler¼  g  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  )	Ú
isinstancery   r²  r¦  r§  r  r¨  ÚsuperÚsave)Úselfr9  rq  s     €r†   rÃ  zUtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPickler.saveˆ  s@   ø€ Ü˜#œrŸz™zÔ*Ø—l‘l“n×)Ñ)¨#¯)©)×*@Ñ*@Ó*BÓC�Ü‰G‰L˜Õrˆ   )Ú__name__Ú
__module__Ú__qualname__rÃ  Ú__classcell__)rq  s   @r†   ÚNonNativeEndiannessNumpyPicklerr¿  ‡  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¸  ry   r¹  )re   rf   r°   rË  rº  r»  rÉ  r•   s         @@r†   Ú'test_different_endianness_joblib_picklerÍ  €  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_childr{   r}   ©ÚnamesÚformatsÚ	same_kind©Úcasting)r/   ry   Úint64rú  r  ÚfieldsrŽ   Úlistr   Úvaluesr.  )Únode_ndarrayÚnew_dtype_for_indexing_fieldsÚindexing_field_namesr”   r  r@  Ú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õÙ,MÑ(˜™j˜u aˆˆe‰Ð,Mð ò ó %ˆØ<ˆ�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 )NrP   )rÒ  rÓ  ÚoffsetsrÔ  rÕ  )r  rØ  rŽ   rÚ  ry   rÙ  r   r.  )	rÛ  r”   r  r@  rÞ  rÿ  râ  Úshifted_offsetsrß  s	            r†   Ú$get_different_alignment_node_ndarrayrä  ¬  sè   € à,8×,>Ñ,>×,EÑ,E×,KÑ,KÔ,MõÙ,MÑ(˜™j˜u aˆˆe‰Ð,Mð ò ð ,8×+=Ñ+=×+DÑ+D×+KÑ+KÔ+MÔNÑ+M™-˜% ŠvÐ+M€GÑNÙ07Ó8± f�q˜6“z°€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/   ry   r×  rú  r=  r.  rü  rà  )	r
   rß  r½  r^   rk  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®  rm  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°   rm  r¸  rº   r»   )re   rf   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»   )re   rf   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/   ry   r  rú  r×  r¨  r¤   r$   r.  rº   rù   rú   r�  )Úexpected_dtypeÚallowed_dtypesÚdtrk  Ú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Ô=÷ 
Hô 
�‰”zÐ)HÖ	IØ )× 0Ñ 0´·±Ó <ÐÜÐ.°Ô?÷ 
JÐ	Iùò C÷ 
HÐ	Gú÷ 
JÐ	Iú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=   rQ   r  )rö  Úexpected_shapezWrong shape.+value arrayr
  )r=   rQ   r=   zvalue array.+C-contiguouszvalue array.+incompatible dtype)ry   r  r�  rq   r¨  r&   rº   rù   rú   r  r­   r.  r/  )rö  rý  Úvalue_ndarrayr÷  rø  Úproblematic_arrs         r†   Útest_check_value_ndarrayr   	  s.  € Ü—X‘XœbŸj™jÓ)€NØ€NÜ—H‘H˜^°>ÔB€Mà$ n×&AÑ&AÓ&CÐD€NãˆÜØ¨"¸^ö	
ð ô
 
�‰”zÐ)CÖ	DÜØ¨.Èõ	
÷ 
Eð
 *ª!ªQ°°°¨(Ñ3´R×5FÑ5FÀ}Ó5UÓVˆÜ�]‰]œ:Ð-HÖIÜ ØØ-Ø.×4Ñ4õ÷ JÐIð Wô 
�‰”zÐ)JÖ	KÜØ× Ñ ¤§¡Ó,Ø)Ø)õ	
÷ 
LÐ	K÷ 
EÐ	Dú÷ JÐIú÷ 
LÐ	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?   rQ   znode array.+C-contiguousrQ   r|   rÑ  znode array.+incompatible dtyperÏ  )r    ry   rq   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  r@  Ú
dtype_dictrÞ  rß  s              r†   Útest_check_node_ndarrayr  ,	  s\  € Ü€Nä—8‘8˜D¨Ô7€Lð 	Ü*¨<Ó8Ü,¨\Ó:ðÐð
 Ù8KóÙ8K°ˆ�
‰
�3—9‘9×)Ñ)Ó+Õ,Ð8Kññ Ðó #ˆÜ˜L¸ÖHð #ô 
�‰”zÐ)GÖ	HÜ#%§8¡8¨F¸.Ô#IÐ ÜÐ4À^ÕT÷ 
Iô 
�‰”zÐ)CÖ	DØ#/±°!°Ñ#4Ð ÜÐ4À^ÕT÷ 
Eð 7C×6HÑ6H×6OÑ6O×6UÑ6UÔ6WÕXÑ6WÑ"2 $©
¨°�$˜‘+Ð6W€JÒXð  —_‘_Ó&€NÜ"$§(¡(€N�;Ñä—‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið  ,×2Ñ2°9Ó=Ðä	�‰”zÐ)IÖ	JÜÐ4À^ÕT÷ 
Kð  —_‘_Ó&€NÜ#%§:¡:€N�<Ñ Ü—‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið  ,×2Ñ2°9Ó=Ðä	�‰”zÐ)IÖ	JÜÐ4À^ÕT÷ 
KÐ	JùòM÷ 
IÑ	Hú÷ 
EÑ	Düô Y÷ 
KÐ	Jú÷ 
KÐ	Jú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Ê   rH   rQ   r@   r  r5   r?   rO   N)Úmonotonic_cst)ry   r›  rI  r¤   r;  r   rm  rn  ro  rŒ   rÁ  )	r  r0  rŒ   r>  rk  rž   rÖ  Úsplitter_serializeÚsplitter_backs	            r†   Útest_splitter_serializabler  `	  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  r	  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=   rS   )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)ry   r¤   r�   rº   rù   rú   )r'   re   rf   r
   Úmsgs        r†   Útest_min_sample_split_1_errorr  …	  s‰   € ô 	�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€Añ 	˜3Ô×#Ñ# A qÔ)ñ  !Ô$€Dð	0ð ô 
�‰”z¨Ö	-Øˆ�‰��AŒ÷ 
.×	-Ñ	-ús   Á2BÂBc                 ó  — t        j                  g d¢g«      j                  }t        j                  g d¢«      }t        dd| ¬«      }|j	                  ||«       |j                  t         j                  gg«      }t        |t        j                  |dd «      g«       |dd }|dd }t        dd| ¬«      }|j	                  ||«       |j                  t         j                  gg«      }t        |t        j                  |d	d «      g«       y)
z=Check missing values goes to correct node during predictions.©	r   r=   rQ   r@   rP   r  rM   é   é   ©	rï   rB   r2  rB   r4  r4  rR   gš™™™™™ù?gÍÌÌÌÌÌ@rÊ   r=   rò  rA   NrC   r>   )	ry   r¤   r‘   r   r�   r�   r   r   r‹  )rž   re   rf   Údtcrã  ÚX_equalÚy_equals          r†   Ú;test_missing_values_best_splitter_on_equal_nodes_no_missingr   ›	  sá   € ô 	�‰Ò0Ð1Ó2×4Ñ4€AÜ
�‰Ò>Ó?€Aä
¨R¸1È	Ô
R€CØ‡G�GˆAˆq„Mð �[‰[œ2Ÿ6™6˜(˜Ó$€FÜ�FœRŸW™W Q r s V›_Ð-Ô.ð ��ˆf€GØ��ˆf€Gä
¨R¸1È	Ô
R€CØ‡G�GˆG�WÔð �[‰[œ2Ÿ6™6˜(˜Ó$€FÜ�FœRŸW™W W¨R¨S \Ó2Ð3Õ4rˆ   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)ry   r¤   r‘   r   r�   rþ   rx   rw   rS  r€   r�   r   r   )rž   r|  re   rf   Ú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   r5   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=   rQ   r@   rP   r  rM   r  r=   rQ   rÊ   rò  r@   r  N©ry   r¤   r   r‘   r   r�   r�   r,   )rž   Úmissing_values_classre   rf   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=   rQ   r@   r<   r?   r   r=   rN   rÊ   rQ   rò  r?   )r   r=   r   Nr*  ©rž   re   rf   r  r  rã  s         r†   Ú)test_missing_values_best_splitter_to_leftr1  ç	  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   rQ   rÊ   rò  rT   g333333@r  Nr*  r0  s         r†   Ú*test_missing_values_best_splitter_to_rightr3  ÷	  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=   rQ   r@   r?   rH   r_   r[   é<   r   rÊ   rò  gffffff@gš™™™™A@r  Nr*  r0  s         r†   Ú>test_missing_values_best_splitter_missing_both_classes_has_nanr6  
  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
   r	  c                 ój  — 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=   rQ   r@   r?   rH   r_   r[   r5  r   NzInput X contains NaNr
  )ry   r¤   r   r‘   rº   rù   rú   r�   )r4  r
   re   rf   s       r†   Útest_missing_value_errorsr8  
  s’   € ô 	�‰�1�a˜˜AœrŸv™v r¨2¨r°2´r·v±vÐ>Ð?Ó@×BÑB€AÜ
�‰�!��q‘˜A˜3 ™7Ñ"Ó#€AàÐ#Ù˜QÓˆä	�‰”zÐ)?Ö	@Øˆ�‰��AŒ÷ 
A×	@Ñ	@ús   ÂB)Â)B2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   rN   rC   r:   rÊ   r    rX   )	rh   r¶   rü  r·   ry   r   r�   r�   rå   )r'   re   rf   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Ä   re   rf   s       r†   Úmake_friedman1_classificationr?  =
  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é   rH   rS   )r]   r^   Únoiser\   FTrZ   rï   ©ra   r¶  rŠ   rš   r   NrH   rÓ   r˜   zscore_native_tree=z + z! should be strictly greater than )rü  ry   r›  rI  r   Úchoicer­   r   rš   r�   r°   r   r   )Ú	make_datar'   r@  rÃ   Ú	tolerancer]   r^   re   rf   Ú	X_missingr0  Ú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_resiliencerN  C
  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   r…  r_   r`   rQ   FTgffffffî?rU   rC  Nr?   rŠ   )ÚcvzExpected CV score: z	 but got )ry   r›  rI  Ústandard_normalrù  rq   rš   rD  rü  r.  Úboolr   r   r‹  )r'   Úexpected_scorerÃ   r0  r]   re   rf   ÚX_random_maskÚy_maskÚX_predictiver
   Útree_cv_scores               r†   Ú test_missing_value_is_predictiverX  €
  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  rH   r†  FTrZ   rï   rC  rX   NrQ   rŠ   r˜   r=   )
ry   r›  rI  r   rD  r­   rš   r�   r   r�   )
rE  r'   r0  r]   r^   re   rf   r™   Útree_with_swÚtree_samples_removeds
             r†   Útest_sample_weight_non_uniformr\  ž
  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�   rg   r¶   r·   rm  rn  )Útree1Útree2Úpickle1Úpickle2s       r†   Útest_deterministic_picklerb  »
  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ˆ   re   r?   rN   c                 ó¤  — |j                  dd«      }t        j                  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 we properly handle missing values in regression trees using a toy
    dataset.

    The regression targeted by this test was that we were not reinitializing the
    criterion when it comes to the number of missing values. Therefore, the value
    of the critetion (i.e. MSE) was completely wrong.

    This test check that the MSE is null when there is a single sample in the leaf.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28254
    https://github.com/scikit-learn/scikit-learn/issues/28316
    rC   r=   rN   r    r   NrQ   rX   )rË  ry   rÔ   r�   r   rþ   r   rå   r£   r   r   Úflatnonzerorx   r}   )	r'   re   rž   rÃ   rf   r
   Útree_refr   Ú
leaves_idxs	            r†   Ú'test_regression_tree_missing_values_toyrg  È
  s  € ð6 	
�	‰	�"�aÓ€AÜ
�	‰	�!‹€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 )	NrM  r  rC   r=   iìÿÿÿr?   rß  r   )ry   r›  rI  rÔ   r�  rË  r   rî   r   r�   rþ   r   rå   )rÃ   r0  r]   re   rf   r
   r   s          r†   Ú-test_regression_extra_tree_missing_values_toyri  ù
  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  NrQ   rP   )Únr¶  é   rŠ   )prQ   éQ   é'   éa   é[   é&   é.   é   ée   rm  éY   éR   rM  rÊ   éE   é   rn  é   éI   éJ   é3   é/   ék   é   éK   én   r_   r  éh   é9   é   r  r�  éO   é#   éM   éZ   r}  rs  rm  é^   rq  é   rP   é]   rŒ  r{  rˆ  r  rm  r|  ém   r‚  é   rH   r‹  rƒ  ry  é\   é4   r_   r�  rP   rP   é   ry  r‡  r  r  r¿   rŸ  r   r[   rt  éN   r  rŽ  éi   r”  r   r{  r  éf   r“  rm  rt  r=   rx  rM   é    r�  r‰  éj   rŠ  r5  é8   r‡  r€  é>   éU   rn  ro  éP   rz  é?   rN   rš  éT   r@   r@   éL   r’  r  r@   r  iH¼nrË   r   rC   r=   rX   )r	   Ú	load_irisry   r›  rI  rü  rö  rš   rú  r.  rR  r   r   r¤   r   r�   rå   rþ   r   rd  rx   r}   r   )re   rf   r0  rG  Úmaskr•  r@  r¦   r¬   r
   rf  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�   rg   r¶   r·   ry   Ú
atleast_1dr�  rí  Ún_features_in_rE  rq   rþ   ru   Úuint8r#   rº   rù   ÚAssertionErrorr,   r€   ©r
   rk  Úpruned_treeÚleave_in_subtrees       r†   Útest_build_pruned_tree_pyr©  6  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�   rg   r¶   r·   ry   r¢  r�  rí  r£  rE  rq   rþ   ru   r¤  rº   rù   rú   r#   r¦  s       r†   Ú$test_build_pruned_tree_infinite_loopr«  U  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ö
ô 	˜k¨4¯:©:Ð7GÔH÷
÷ 
ñ 
ús   ÃC7Ã7D c                  óZ  — t         j                  j                  d«      } | j                  ddd¬«      j	                  t         j
                  «      }t        j                  |gdz  «      }t        j                  dt         j                  ¬«      }t        ||d«       g d	¢}t        ||«       y
)zÇNon-regression test for gh-30554.

    Using log2 and log in sort correctly sorts feature_values, but the tie breaking is
    different which can results in placing samples in a different order.
    r�  rX   ç      $@rH   )ÚlocÚscalera   r?   r”  r  )2r   é(   r[   r_   rH   é   ro  é   é1   r  é-   r  r‡  r?   é   rM   rt  é)   r=   é   é   r  rQ   rÊ   r•  r‹  rm  rŸ  r@   é!   rN   é$   rs  rz  r…  r<   r<  rŽ  é"   é,   ry  r~  r¿   é%   r€  rP   rr  é0   r‘  é   N)ry   r›  Údefault_rngÚnormalr.  r/  rù  rÔ   r;  r   r,   )r0  ÚsomeÚfeature_valuesrþ  Úexpected_sampless        r†   Útest_sort_log2_buildrÅ  g  s„   € ô �)‰)×
Ñ
 Ó
#€CØ�:‰:˜# T°ˆ:Ó3×:Ñ:¼2¿:¹:ÓF€DÜ—^‘^ T F¨Q¡JÓ/€NÜ�i‰i˜¤"§'¡'Ô*€GÜˆ^˜W bÔ)òÐô �wÐ 0Õ1rˆ   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ü  rR  ra   r3   Úzipry   r¢   r~   r¤   )rf   Úwr  ÚmediansÚmÚerrorss         r†   Úcompute_prefix_abs_errors_naivezUtest_absolute_errors_precomputation_function.<locals>.compute_prefix_abs_errors_naiveˆ  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=   rC   g•dyáý¥=)Úatol)r­   r   r   )rf   rË  r¬   Úreverserl  r>  Ú
abs_errorsrÌ  Úy_sortedÚw_sortedÚabs_errors_Úmedians_rÏ  s               €r†   Úassert_same_resultszItest_absolute_errors_precomputation_function.<locals>.assert_same_results”  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?   rH   r_   r”  rM  r=   r`   r­  rA   r?   T)rÒ  N)F)ry   r›  rÀ  r�  rÔ   rš   Úroundr÷  )rÃ   rØ  r0  rl  rf   rË  r¬   rÏ  s          @r†   Ú,test_absolute_errors_precomputation_functionrÚ  }  sâ   ø€ ò
3õ7ô  �)‰)×
Ñ
Ð 2Ó
3€Cã$ˆØ�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ñ %rˆ   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=   r8   )rž   r¾   rõ  r˜   r”  TrÈ  N)ry   r›  rÀ  r  Ú	lognormalÚintegersr�  r   r�   rš   r­   rþ   r€   r¯   r3   r   )rÃ   r0  rl  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 )	Nr~  )r=   rQ   r=   rQ   r=   rQ   r=   rQ   r   r=   )r   r   r   r   r=   r=   r=   r=   r_   rÓ   )rb   rX   rX   )ry   r®   Úswapaxesr.  Úfloatr   rR  r   r�   r,   rþ   r   r¤   )re   rf   r  r
   s       r†   Ú"test_splitting_with_missing_valuesrä  É  s�   € ô 	�	‰	Ò+Ò-EÐFÓGß	‰�!�Q‹ß	‰”‹ð ò
 	!€AÜ—‘€A€aˆ1�f�Iô �2ŽYˆÜ$¨q¸qÔA×EÑEÀaÈÓKˆÜ˜4Ÿ:™:×.Ñ.´·±Ò9IÓ0JÕKñ 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  rC   r=   r@   )
ry   r   r¤   rË  r   r�   r,   r�   rþ   ru   )re   rf   r
   s      r†   Ú$test_missing_values_and_constant_toyræ  Ý  s~   € ð 
ˆAˆq”"—&‘&œ"Ÿ&™&Ð!€AÚ€AÜ
�‰�‹×Ñ˜B Ó"€AÜ!Ó#×'Ñ'¨¨1Ó-€Dô �|�t—|‘| A“¨Ô*à�:‰:× Ñ  AÒ%Ð%Ñ%rˆ   r  )úÚ__doc__rü  r°  r­  rm  rœ  r×  Ú	itertoolsr   r   r   rÌ  Únumpyry   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._partitionerr   Ú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/   r0   r1   r2   Úsklearn.utils.statsr3   Úsklearn.utils.validationr4   rµ   ÚREG_CRITERIONSr�   rÖ   rÁ   r;   Ú__annotations__ÚupdateÚSPARSE_TREESr¤   r  r  Úy_small_regre   rf   r‘   r’   rž  rg   r›  rI  r0  r÷  r·   ra   Úpermr¶   Úload_diabetesrh   Úload_digitsri   r\   Úmake_multilabel_classificationr-  r.  r�  ÚX_sparse_posr—  Úy_randomrû  ÚX_sparse_mixrq   r-  r‡   r–   r�   ÚmarkÚparametrizerÚ  r©   r³   r¸   rŽ   r¼   rÈ   rÑ   rØ   rÜ   rç   r÷   rü   rÿ   r  r  r"  r)  r9  r>  rC  rF  rI  rK  rg  rw  r  r„  rŠ  r’  r™  r   r¨  r«  r²  rµ  r¹  r¼  rÀ  rÅ  rÈ  rÌ  rÒ  rÝ  rè  rì  ÚsortedrK  Úintersectionrî  rð  rÙ  ró  rÊ  r  r  r  r  r  r  r"  r*  r/  r6  rG  rS  r   r_  ra  re  r[  rd  ry  r{  rR  rƒ  r�  r£  r¼  rÍ  rà  rä  rê  rð  rô  rû  r   r  r  r  r  r   r(  r-  r1  r3  r6  r8  r:  r?  r=  rN  rX  r‚  rò   r\  rb  r   rg  ri  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ð ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4Ø‡‚×Ò˜ nÓ5ñ,ó 6ó 5ð,ò*Fò*
ð$ ‡‚×Ò˜ y§¢Ó'8Ó9Ø‡‚×Ò˜ nÓ5ñó 6ó :ðð ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4Ø‡‚×ÒØà	Ð,Ð-Ø	Ð.Ð/Ø	Ð+Ð,Ø	Ð)Ð*ð	óñ
<óó 5ð
<ò
ò4òWò ò2Lò>-òKò<!7òH?+òDHò>FóB8
ðv ‡‚×Ò˜ Ó+ñ1ó ,ð1ð ‡‚×Ò˜ Ó.Ø‡‚×Ò˜¨.Ó9ñWó :ó /ðWð
 &*ó:
ðz ‡‚×Ò˜ Ó+ñGó ,ðGð ‡‚×Ò˜ Ó.Ø‡‚×Ò˜¨.Ó9ñó :ó /ðòEòP0ðf ‡‚×ÒØðÙ	�×!Ò!Ó# ^Ó	4ðá	�×!Ò!Ó# ^Ó	4ðóñ@%óð@%ò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:ðf ‡‚×ÒØÙ‰¡<ÓE¡<˜4°4¸9Ò3D’$ <ÑEÀ~Ó	VÓWÙ
Ù¡,ÓD¡,˜$°$¸)Ò2C’ ,ÑDÀnÓUóñóð ‡‚×Ò˜Ò$WÓXØ‡‚×Ò˜¨.Ó9ñ:ó :ó Yóð:ð" ‡‚×Ò˜ 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ó ,ðð4 ‡‚×Ò˜Ò&RÓSØ‡‚×Ò˜ ×!1Ò!1Ó!3Ó4ñ	>ó 5ó Tð	>ð ‡‚×Ò˜¡ 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ðð* ‡‚×Ò˜ ¸Ð&GÓHñ5ó Ið5ð2 ‡‚×Ò˜¡ q£Ó*Ø‡‚×Ò˜ ¸Ð&GÓHñ.ó Ió +ð.ðB ‡‚×Ò˜ y°&Ð&9Ó:ñAó ;ðAð ‡‚×Ò˜ y°&Ð&9Ó:ñ*ó ;ð*ð ‡‚×Ò˜ y°&Ð&9Ó:ñ*ó ;ð*ð  ‡‚×Ò˜ y°&Ð&9Ó:ñ*ó ;ð*ð ‡‚×ÒÐ+¨d¨V°nÑ-DÓEØ‡‚×ÒØ
áÐ(8Ô9ÙÐ%5Ô6ðóñ
óó Fð
ð ‡‚×Ò˜ ×!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ò,
ð ‡‚×Ò˜Ð"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Ð-Ó.ðó
ð ‡‚×Ò˜ ¸Ð&GÓHñ!:ó Ió
ó Nð!:òH(ò,:ò^<ò>Iò$2ò,49òn@ò*Ló(&ùòM0 FùâDs   à	AB7àAB7à.	AB<à8AB<