Ë
    ÷Q(h9„ ã                   ó:  — 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	 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 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-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl3m;Z< ddl=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJ ddlKmLZL dZMdZNe(e*dœZOe)e+dœZP eQ«       ZReQeSd<   eRj©                  eO«       eRj©                  eP«       g d¢ZU ej¬                  g d¢g d¢g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d2¢g«      ZWg d3¢ZXg d4¢ZYd5d6gd6d6gd6d5gd7d7gd7d8gd8d7ggZZg d9¢Z[d6d6gd8d8gd:d8ggZ\g d;¢Z] ej¼                  «       Z_ejÀ                  jÃ                  d7«      ZbebjÇ                  e_jÈ                  jÊ                  «      Zfe_jÎ                  ef   e__g        e_jÈ                  ef   e__d         ejÐ                  «       ZiebjÇ                  eijÈ                  jÊ                  «      ZfeijÎ                  ef   ei_g        eijÈ                  ef   ei_d         ejÔ                  «       ZkebjÇ                  ekjÈ                  jÊ                  «      ZfekjÎ                  ef   ek_g        ekjÈ                  ef   ek_d         eLd«      Zl ejÚ                  dd<d=¬>«      \  ZnZoeljá                  d?¬@«      ZqdAeqeqdBk  <   eljå                  ddCdD¬@«      Zs e&dEd=dFd¬G«      jé                  «       Zue_jÎ                  e_jÈ                  dHœeijÎ                  eijÈ                  dHœekjÎ                  ekjÈ                  dHœeZe[dHœeWeXdHœeWeYdHœeneodHœeqesdHœeq esdHœeuesdHœ ejì                  dI«      esdHœdJœZwdK„ ZxdL„ ZydM„ Zzejö                  jù                  dNePjû                  «       «      ejö                  jù                  dOeN«      dP„ «       «       Z~dQ„ ZdR„ Z€ejö                  jù                  dSeP�j                  «       «      ejö                  jù                  dOeN«      dT„ «       «       Z‚eEejö                  jù                  dSeP�j                  «       «      ejö                  jù                  dUdVdWedXfdYdEedXfdZdWedXfd[dWed<fg«      d\„ «       «       «       Zƒd]„ Z„d^„ Z…d_„ Z†d`„ Z‡da„ Zˆdb„ Z‰dc„ ZŠdd„ Z‹de„ ZŒdf„ Z�dg„ ZŽdádh„Z�ejö                  jù                  dieR«      dj„ «       Z�ejö                  jù                  dieU«      ejö                  jù                  dkeI«      dl„ «       «       Z‘	 dádm„Z’ejö                  jù                  dieR«      dn„ «       Z“ejö                  jù                  dieU«      ejö                  jù                  dkeI«      do„ «       «       Z”dp„ Z•dq„ Z–dr„ Z—ds„ Z˜dt„ Z™du„ Zšdv„ Z›dw„ Zœejö                  jù                  dieO«      dx„ «       Z�ejö                  jù                  dieO«      dy„ «       Zždz„ ZŸd{„ Z d|„ Z¡d}„ Z¢d~„ Z£d„ Z¤d€„ Z¥d�„ Z¦d‚„ Z§dádƒ„Z¨ejö                  jù                  d„eU«      ejö                  jù                  d…d†«      d‡„ «       «       Z©ejö                  jù                  d„ eª e«eU«      �jY                  eP«      «      «      ejö                  jù                  d…dˆd‰g«      dŠ„ «       «       Z­ejö                  jù                  d„eU«      ejö                  jù                  d…g d‹¢«      ejö                  jù                  dkeI«      dŒ„ «       «       «       Z®ejö                  jù                  d� e¯ e	eUD � cg c]	  } | ePv sŒ| ‘Œ c} eN«      «       e¯ e	eUD � cg c]	  } | eOv sŒ| ‘Œ c} eM«      «      z   «      ejö                  jù                  d…g d‹¢«      ejö                  jù                  dkeI«      dŽ„ «       «       «       Z°ejö                  jù                  d„eU«      ejö                  jù                  d� e±eIeJ«      «      d�„ «       «       Z²d‘„ Z³ejö                  jù                  dieR«      d’„ «       Z´ejö                  jù                  dieR«      ejö                  jù                  d“dgeIz   «      d”„ «       «       Zµejö                  jù                  dieR«      d•„ «       Z¶ejö                  jù                  dieU«      ejö                  jù                  d–eJ«      d—„ «       «       Z·d˜„ Z¸ejö                  jù                  dieR«      d™„ «       Z¹ejö                  jù                  dieR«      ejö                  jù                  d–eJ«      dš„ «       «       Zºd›„ Z»dœ„ Z¼ejö                  jù                  d“dgeIz   «      d�„ «       Z½ejö                  jù                  d… eª e«ew�j}                  «       «      d‰dˆhz
  «      «      ejö                  jù                  dže(e*g«      dŸ„ «       «       Z¿ejö                  jù                  d…ew�j}                  «       «      ejö                  jù                  dže)e+g«      d „ «       «       ZÀd¡„ ZÁd¢„ ZÂd£„ ZÃejö                  jù                  dieR«      ejö                  jù                  d¤d¥d¦g«      ejö                  jù                  d“dgeIz   eJz   «      d§„ «       «       «       ZÄejö                  jù                  dOg d¨¢«      ejö                  jù                  dNePjû                  «       «      d©„ «       «       ZÅejö                  jù                  dª eÆd:«      «      d«„ «       ZÇd¬„ ZÈejö                  jù                  dNe(e*g«      ejö                  jù                  d­d8dCg«      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 e/jú                  «        e0jú                  «       «      «      dº„ «       ZÔd»„ ZÕejö                  jù                  dNeRjû                  «       «      d¼„ «       ZÖejö                  jù                  dOdVdZg«      d½„ «       Z×ejö                  jù                  dª eÆd:«      «      ejö                  jù                  dOdVdZg«      d¾„ «       «       ZØejö                  jù                  dOd¿dÀg«      dÁ„ «       ZÙejö                  jù                  dOd¿dÀg«      dÂ„ «       ZÚejö                  jù                  dOd¿dÀg«      dÃ„ «       ZÛejö                  jù                  dOd¿dÀg«      dÄ„ «       ZÜejö                  jù                  d“dgeJz   «      ejö                  jù                  dÅ e)dY¬Æ«       e+dY¬Æ«      g«      dÇ„ «       «       ZÝejö                  jù                  dNePjû                  «       «      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±eOjû                  «       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ù                  dNe)e+g«      ejö                  jù                  dØ ej¬                  e�jÎ                  d8e�jÎ                  dCdÙdÚg«       ej¬                  e�jÎ                  e�jÎ                  d:dCdÙdÚg«       ej¬                  d7d8d:dCe�jÎ                  e�jÎ                  g«       ej¬                  d7d8d:e�jÎ                  dÚe�jÎ                  g«      g«      ejö                  jù                  dOdVdZg«      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Úproduct)ÚNumpyPickler)Úassert_allclose)ÚcloneÚdatasetsÚtree)ÚDummyRegressor)ÚNotFittedError)ÚSimpleImputer)Úaccuracy_scoreÚ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_sort)Ú
NODE_DTYPEÚ	TREE_LEAFÚTREE_UNDEFINEDÚ_build_pruned_tree_pyÚ_check_n_classesÚ_check_node_ndarrayÚ_check_value_ndarray)ÚTree)Úcompute_sample_weight)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚcreate_memmap_backed_dataÚignore_warningsÚskip_if_32bit)Ú	_IS_32BITÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERS)Ú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   r9   éûÿÿÿçš™™™™™É?r   r8   r9   )éÿÿÿÿr?   r   r   ç      Àr   r   çÍÌÌÌÌÌ @r9   r   r   r@   r   r9   )r?   r?   r   g333333ó¿r   r   r   r   r   r   r>   r   r   r9   )r?   r?   r   r   r   r   r   r<   r   r   r   r   r   r9   )r?   éþÿÿÿr   r8   éýÿÿÿé
   r8   r   çš™™™™™	Àr   r8   r<   r:   r9   )çáz®Gá @r   éúÿÿÿç      à¿r   é   r   r   rE   é   ç      à?r   rC   r9   )rF   r   rG   rH   r   rI   r   r   rE   rJ   r   r   rB   r9   )rF   é   rG   rH   r   rI   r   r   rE   rJ   r   r   rB   r9   )rF   rL   rG   rH   r   rI   r   r   rE   rJ   rK   r   r?   r   )é   rL   r;   r9   rK   r:   rD   r   r9   r=   r<   r   rM   r   )rM   r   r9   r9   r9   r?   r9   r   r   rB   r<   r   r9   r   )rM   r   r9   rM   r<   r?   rD   rM   r   r?   r9   rM   rM   r   )r9   r9   r   rM   rM   r?   r9   rM   r   r=   r9   rM   r<   r   )r<   r9   r   r<   r   r:   rD   r   r9   r=   r<   r   r<   r9   )rF   rL   rG   rH   r   r9   r   r   rE   rJ   rK   r   rC   r9   )rF   rL   rG   rH   r   r9   r   r   rE   rJ   ç      ø?r9   r?   r?   )rF   rL   rG   rH   r   rD   r   r   rE   rJ   rK   r   r?   r?   )rM   r   r;   r9   rK   rB   rD   r   r9   r=   r<   r9   r   r?   )rM   r   r9   r9   r9   rB   r9   r   r   rB   r   r   r   r9   )rM   r9   r9   r9   rM   r?   rD   rM   r   r?   r   rM   r9   r9   )r9   r9   r   r   r9   rC   r9   rM   r   r=   r9   rM   r9   r9   )r<   r9   r   r9   r   r:   r9   r   r9   rB   r   r   r9   r   )r9   r9   r   r   r   r   r9   r9   r9   r9   r9   r9   r   r   r   r9   r   r   r9   r   r   r   r   )ç      ð?rA   ç333333ó?çš™™™™™©?rD   g333333@çÍÌÌÌÌÌ@g)\�Âõ(ð?ç{®Gáz„?g×£p=
×@rR   gš™™™™™ñ?ç        rP   rM   rI   r   r   ç      @gî|?5^ºÉ?gö(\�Âõð?çÍÌÌÌÌÌì?r   rB   r?   r9   rM   )r?   r?   r?   r9   r9   r9   r<   )r?   r9   r9   é   rD   )Úrandom_stateÚ	n_samplesÚ
n_features)é   r;   ©ÚsizerT   gš™™™™™é?r8   )r[   r[   g      Ð?)ÚdensityrX   ©Ú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        úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/tree/tests/test_tree.pyÚassert_tree_equalr‚   È   s‹  € à	�‰˜Ÿ™Ò$ðà1×8Ñ8Ø�—‘˜qŸ|™|óóØ$ô
 Ø	×Ñ˜!×*Ñ*¨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   ©rX   úFailed with {0}r9   )Úmax_featuresrX   )
Ú	CLF_TREESÚitemsÚfitr`   ra   r(   ÚpredictÚTÚtrue_resultrq   ©Únamer$   Úclfs      r�   Útest_classification_toyr‘   ï   s�   € ä—o‘oÓ'ò X‰
ˆˆdÙ Ô"ˆØ�‰””1ŒÜ˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÔWá °Ô2ˆØ�‰””1ŒÜ˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÕWñXrƒ   c            
      ó  — t         j                  «       D ]í  \  } } |d¬«      }|j                  t        t        t        j                  t        t        «      «      ¬«       t        |j                  t        «      t        dj                  | «      «       |j                  t        t        t        j                  t        t        «      d«      ¬«       t        |j                  t        «      t        dj                  | «      «       Œï y )Nr   r…   ©Úsample_weightr†   rK   )rˆ   r‰   rŠ   r`   ra   rt   ÚonesÚlenr(   r‹   rŒ   r�   rq   ÚfullrŽ   s      r�   Ú test_weighted_classification_toyr˜   û   s©   € ä—o‘oÓ'ò X‰
ˆˆdÙ Ô"ˆà�‰””1¤B§G¡G¬C´«F£OˆÔ4Ü˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÔWà�‰””1¤B§G¡G¬C´«F°CÓ$8ˆÔ9Ü˜3Ÿ;™;¤q›>¬;Ð8I×8PÑ8PÐQUÓ8VÕWñXrƒ   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 )Nr6   r9   ©r™   rX   ©r™   r‡   rX   )rt   ÚabsÚminra   Úarrayr�   rŠ   r`   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)rD   rD   r9   r;   r   r…   rO   r†   ©rX   r‡   )rt   rl   ÚindicesÚshapeÚvstackÚravelrŒ   rˆ   r‰   rŠ   Úscorerq   )ra   ÚgridxÚgridyr`   r�   r$   r�   s          r�   Útest_xorr®     s  € ä
�‰�Ó€AØ€A€b€q€bˆ"ˆ1ˆ"€f�IØ€A€a�bˆ!‰"€f�Iä—:‘:˜aŸg™gÓ&�L€Eˆ5ä
�	‰	�5—;‘;“= %§+¡+£-Ð0Ó1×3Ñ3€AØ	�‰‹	€Aä—o‘oÓ'ò F‰
ˆˆdÙ Ô"ˆØ�‰��1ŒØ�y‰y˜˜A‹ #Ò%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%á °Ô2ˆØ�‰��1ŒØ�y‰y˜˜A‹ #Ó%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%ñFrƒ   c                  ó”  — t        t        j                  «       t        «      D �]"  \  \  } }} ||d¬«      }|j	                  t
        j                  t
        j                  «       t        |j                  t
        j                  «      t
        j                  «      }|dkD  sJ dj                  | ||«      «       ‚ ||dd¬«      }|j	                  t
        j                  t
        j                  «       t        |j                  t
        j                  «      t
        j                  «      }|dkD  r�ŒJ dj                  | ||«      «       ‚ y )Nr   r›   rV   z0Failed with {0}, criterion = {1} and score = {2}rM   rœ   rK   )r   rˆ   r‰   ÚCLF_CRITERIONSrŠ   rb   ÚdataÚtargetr   r‹   rq   )r�   r$   r™   r�   r«   s        r�   Ú	test_irisr³   3  sú   € ä#*¬9¯?©?Ó+<¼nÓ#Mó 
Ñ‰ˆˆt�iÙ˜Y°QÔ7ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü˜sŸ{™{¬4¯9©9Ó5´t·{±{ÓCˆØ�sŠ{ð 	
ÐN×UÑUØ�)˜Uó
ó 	
ˆ{ñ ˜Y°QÀQÔGˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü˜sŸ{™{¬4¯9©9Ó5´t·{±{ÓCˆØ�sŒ{ð 	
ÐN×UÑUØ�)˜Uó
ó 	
ˆ{ñ
rƒ   z
name, Treec                 ó2  —  ||d¬«      }|j                  t        j                  t        j                  «       t	        t        j                  |j                  t        j                  «      «      }|t        j                  d«      k(  sJ d| › d|› d|› �«       ‚y )Nr   r›   zFailed with z, criterion = z and score = )rŠ   rc   r±   r²   r   r‹   ÚpytestÚapprox)r�   r$   r™   r£   r«   s        r�   Útest_diabetes_overfitr·   E  s€   € ñ
 ˜°Ô
3€CØ‡G�GŒH�M‰Mœ8Ÿ?™?Ô+ÜœxŸ™°·±¼H¿M¹MÓ0JÓK€EØ”F—M‘MØ	óò ð Jà	�d�V˜>¨)¨°MÀ%ÀÐIóJñ rƒ   z&criterion, max_depth, metric, max_lossr3   é   é<   r4   r5   r6   c                 ó   —  |||dd¬«      }|j                  t        j                  t        j                  «        |t        j                  |j	                  t        j                  «      «      }d|cxk  r|k  sJ ‚ J ‚y )NrJ   r   )r™   Ú	max_depthr‡   rX   )rŠ   rc   r±   r²   r‹   )r�   r$   r™   r»   ÚmetricÚmax_lossr£   Úlosss           r�   Útest_diabetes_underfitr¿   R  sa   € ñ ˜¨iÀaÐVWÔ
X€CØ‡G�GŒH�M‰Mœ8Ÿ?™?Ô+Ù”(—/‘/ 3§;¡;¬x¯}©}Ó#=Ó>€DØˆtÔ�hÒÐÑÐÑ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 )Nr9   é*   ©r»   r‡   rX   r   r†   rn   rL   )rˆ   r‰   rŠ   rb   r±   r²   Úpredict_probar'   rt   ry   r•   r¨   rq   r(   Úargmaxr‹   r&   ÚexpÚpredict_log_proba)r�   r$   r�   Úprob_predicts       r�   Útest_probabilityrÈ   g  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»   rX   )rt   ÚarangeÚnewaxisÚ	REG_TREESr‰   rŠ   ©r`   ra   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 )
NrB   r?   r9   rM   )r9   r9   r9   r9   r9   r9   r   r…   r†   rn   )rˆ   r‰   rŠ   r(   r‹   rq   rÍ   r&   )r`   ra   r�   ÚTreeClassifierr�   ÚTreeRegressorr£   s          r�   Útest_pure_setrÓ   Œ  sÜ   € à
ˆbˆ�B˜�8˜b "˜X¨¨1 v°°1¨v¸¸1°vÐ>€AÚ€Aä )§¡Ó 1ò VÑˆˆnÙ¨!Ô,ˆØ�‰��1ŒÜ˜3Ÿ;™; q›>¨1Ð6G×6NÑ6NÈtÓ6TÖUðVô
  )Ÿ™Ó0ò WÑˆˆmÙ¨Ô+ˆØ�‰��1ŒÜ˜CŸK™K¨›N¨AÐ7H×7OÑ7OÐPTÓ7UÖVñWrƒ   c            
      óÀ  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      } t        j                  g d¢«      }t        j                  d	¬
«      5  t        j	                  «       D ]Z  \  }} |d¬«      }|j                  | |«       |j                  | | «       |j                  |  |«       |j                  |  | «       Œ\ 	 d d d «       y # 1 sw Y   y xY w)N)gsþ_—c@çdÀ	�a@ç±› `8`@çëÆý?õüc@)gŒÁý_9Ða@gþ 8ú`@g-Výßu]@g    @Xd@)gSW jÒ_@rÕ   rÖ   r×   )gÓ Ù‹`@ç4Tÿÿ÷a@ç	£þlKa@çÁ{ýÿ»c@)gç|@�ÆY@g~G`÷a@gwIÿ?lKa@g/"þ»c@)gƒ÷úÿ�í_@rØ   rÙ   rÚ   )g®û¿‘:^@rÕ   rÖ   r×   )rO   g¿½A‹wæ?gtúQ?5?á?rT   g7G€¶í?g”�ÞÛº¼Þ?g™¥b'Âß?Úraise)Úallr   r…   )rt   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éˆ  rD   r<   r   F©rY   rZ   Ún_informativeÚn_redundantÚ
n_repeatedÚshufflerX   r…   çš™™™™™¹?r†   ©rX   Úmax_leaf_nodes)r   Úmake_classificationrˆ   r‰   rŠ   Úfeature_importances_rt   ry   r¨   rq   r   rb   r±   r²   r–   r(   )r`   ra   r�   r$   r�   ÚimportancesÚn_importantÚclf2s           r�   Útest_importancesrî   µ  s)  € ä×'Ñ'ØØØØØØØô�D€A€qô  —o‘oÓ'ò @‰
ˆˆdÙ Ô"ˆà�‰��1ŒØ×.Ñ.ˆÜ—f‘f˜[¨3Ñ.Ó/ˆà× Ñ  Ñ# rÒ)ÐIÐ+<×+CÑ+CÀDÓ+IÓIÐ)Ø˜aÓÐ?Ð!2×!9Ñ!9¸$Ó!?Ó?Ðð@ô !¨aÔ
0€CØ‡G�GŒD�I‰I”t—{‘{Ô#Ü!¨qÄÄTÇYÁYÃÔP€DØ‡H�HŒT�Y‰YœŸ™Ô$ä�s×/Ñ/°×1JÑ1JÕKrƒ   c                  óŒ   — t        «       } t        j                  t        «      5  t	        | d«       d d d «       y # 1 sw Y   y xY w)Nrê   )r   rµ   ÚraisesÚ
ValueErrorÚgetattr)r�   s    r�   Útest_importances_raisesró   Ô  s6   € ä
 Ó
"€CÜ	�‰”zÓ	"ñ -Ü�Ð+Ô,÷-÷ -ñ -ús	   ¤:ºAc            	      óš  — t        j                  ddddddd¬«      \  } }t        ddd¬	«      j                  | |«      }t	        d
dd¬	«      j                  | |«      }t        |j                  |j                  «       t        |j                  j                  |j                  j                  «       t        |j                  j                  |j                  j                  «       t        |j                  j                  |j                  j                  «       t        |j                  j                  |j                  j                  «       y )NiÐ  rD   r<   r   Frá   r1   r;   )r™   r»   rX   r3   )r   ré   r   rŠ   r   r&   rê   r(   Útree_rv   rs   rr   rx   )r`   ra   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‡   r9   Úlog2r<   rS   rK   rO   )r7   r‰   rŠ   rb   r±   r²   Úmax_features_Úintrt   rø   r¨   rù   )r�   ÚTreeEstimatorÚests      r�   Útest_max_featuresrþ   ù  s$  € ä(Ÿ™Ó0ó 7ÑˆˆmÙ¨Ô0ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤C¬¯©´·	±	·±ÀÑ0BÓ(CÓ$DÒDÐDÐDá¨Ô0ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤C¬¯©´·	±	·±ÀÑ0BÓ(CÓ$DÒDÐDÐDá¨Ô+ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ  AÒ%Ð%Ð%á¨Ô+ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ  AÒ%Ð%Ð%á¨Ô.ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ  AÒ%Ð%Ð%á¨Ô-ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤C¨¬d¯i©i¯o©o¸aÑ.@Ñ(@Ó$AÒAÐAÐAá¨Ô-ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤D§I¡I§O¡O°AÑ$6Ò6Ð6Ð6á¨Ô.ˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ø× Ñ ¤D§I¡I§O¡O°AÑ$6Ô6Ð6Ð6ñ?7rƒ   c                  óJ	  — t         j                  «       D �]o  \  } } |«       }t        j                  t        «      5  |j                  t        «       d d d «       |j                  t        t        «       g d¢g}t        j                  t        «      5  |j                  |«       d d d «        |«       }t        d d }t        j                  t        «      5  |j                  t        |«       d d d «       t        j                  t        «      } |«       }|j                  |t        «       t        |j                  t        «      t        «        |«       }t        j                  t        «      5  |j                  t        «       d d d «       |j                  t        t        «       t        j                   t        «      }t        j                  t        «      5  |j                  |d d …dd …f   «       d d d «       t        j"                  t        «      j                  } |«       }|j                  t        j$                  t        |«      t        «       t        j                  t        «      5  |j                  t        «       d d d «       t        j                  t        «      5  |j'                  t        «       d d d «        |«       }|j                  t        t        «       t        j                  t        «      5  |j                  |«       d d d «       t        j                  t        «      5  |j'                  |«       d d d «        |«       }t        j                  t        «      5  |j'                  t        «       d d d «       �Œr t)        d¬«      }t        j                  t        d¬«      5  |j                  g d¢gg d	¢«       d d d «       t        j                  t        d
¬«      5  |j                  g d¢gg d¢«       d d d «       y # 1 sw Y   �Œ»xY w# 1 sw Y   �ŒvxY w# 1 sw Y   �Œ;xY w# 1 sw Y   �Œ±xY w# 1 sw Y   �ŒOxY w# 1 sw Y   �ŒÍxY w# 1 sw Y   �Œ£xY w# 1 sw Y   �Œ\xY w# 1 sw Y   �Œ6xY w# 1 sw Y   �ŒuxY w# 1 sw Y   ŒÇxY w# 1 sw Y   y xY w)N)rB   r?   r9   r?   r9   r6   ©r™   zy is not positive.*Poisson©Úmatch©r   r9   rM   )r   r   r   zSome.*y are negative.*Poisson)r;   gš™™™™™¹¿rM   )rˆ   r‰   rµ   rð   r   rÃ   r`   rŠ   ra   rñ   rt   Úasfortranarrayr&   r‹   rŒ   r�   ÚasarrayrŸ   ÚdotÚapplyr   )	r�   rü   rý   ÚX2Úy2ÚXfÚtÚXtr�   s	            r�   Ú
test_errorr    sH  € ä(Ÿ™Ó0ó 6Ñˆˆmá‹oˆÜ�]‰]œ>Ó*ñ 	!Ø×ÑœaÔ ÷	!ð 	�‰””1ŒÚˆ]ˆÜ�]‰]œ:Ó&ñ 	"Ø×Ñ˜bÔ!÷	"ñ ‹oˆÜˆs�ˆVˆÜ�]‰]œ:Ó&ñ 	Ø�G‰G”A�rŒN÷	ô ×ÑœqÓ!ˆÙ‹oˆØ�‰�”AŒÜ˜CŸK™K¬›N¬KÔ8ñ ‹oˆÜ�]‰]œ>Ó*ñ 	Ø�K‰KœŒN÷	ð 	�‰””1ŒÜ�J‰J”q‹MˆÜ�]‰]œ:Ó&ñ 	"Ø�K‰K˜š!˜Q™R˜%™Ô!÷	"ô �X‰X”a‹[�]‰]ˆá‹oˆØ�‰”—‘”q˜"“œqÔ!Ü�]‰]œ:Ó&ñ 	Ø�K‰KœŒN÷	ä�]‰]œ:Ó&ñ 	Ø�I‰I”aŒL÷	ñ ‹oˆØ�‰””1ŒÜ�]‰]œ:Ó&ñ 	Ø�K‰K˜ŒO÷	ä�]‰]œ:Ó&ñ 	Ø�I‰I�bŒM÷	ñ ‹oˆÜ�]‰]œ>Ó*ñ 	Ø�I‰I”aŒL÷	ñ 	ðk6ôr  ¨)Ô
4€CÜ	�‰”zÐ)EÔ	Fñ (Ø�‰’�šYÔ'÷(ä	�‰”zÐ)HÔ	Iñ +Ø�‰’�š\Ô*÷+ð +÷s	!ñ 	!ú÷
	"ñ 	"ú÷	ñ 	ú÷	ñ 	ú÷	"ñ 	"ú÷	ñ 	ú÷	ñ 	ú÷
	ñ 	ú÷	ñ 	ú÷
	ñ 	ú÷
(ð (ú÷+ð +ús�   ¼PÂPÃP%Å-P2ÇP?É+QÊ"QË:Q&Ì-Q3Í'R Î/RÏ*RÐP	ÐP"	Ð%P/	Ð2P<	Ð?Q		ÑQ	ÑQ#	Ñ&Q0	Ñ3Q=	Ò R
	ÒRÒR"c                  óê  — t        j                  t        j                  t        j
                  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éè  rD   r   )Úmin_samples_splitrè   rX   r?   é	   r†   r>   N)rt   r  rb   r±   r	   Ú_treeÚDTYPEr²   r   r7   ÚkeysrŠ   rõ   rx   rs   rž   rq   )r`   ra   rè   r�   rü   rý   Únode_sampless          r�   Útest_min_samples_splitr  _  s4  € ä
×Ñœ$Ÿ)™)¬4¯:©:×+;Ñ+;Ô<€AÜ�‰€Aô !(¨´i·n±nÓ6FÓ Gó HÑˆ˜Ü! $™ˆñ Ø °Èaô
ˆð 	�‰��1Œà—y‘y×/Ñ/°·	±	×0GÑ0GÈ2Ñ0MÑNˆä�v‰v�lÓ# aÒ'ÐGÐ):×)AÑ)AÀ$Ó)GÓGÐ'ñ Ø!°.Èqô
ˆð 	�‰��1Œà—y‘y×/Ñ/°·	±	×0GÑ0GÈ2Ñ0MÑNˆä�v‰v�lÓ# aÓ'ÐGÐ):×)AÑ)AÀ$Ó)GÓGÐ'ñ+Hrƒ   c                  ó  — t        j                  t        j                  t        j
                  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è   rX   r8   r†   ræ   )rt   r  rb   r±   r	   r  r  r²   r   r7   r  rŠ   rõ   r  Úbincountrž   rq   )	r`   ra   rè   r�   rü   rý   ÚoutÚnode_countsÚ
leaf_counts	            r�   Útest_min_samples_leafr   ~  sL  € ä
×Ñœ$Ÿ)™)¬4¯:©:×+;Ñ+;Ô<€AÜ�‰€Aô !(¨´i·n±nÓ6FÓ Gó FÑˆ˜Ü! $™ˆñ Ø¨~ÈAô
ˆð 	�‰��1ŒØ�i‰i�o‰o˜aÓ ˆÜ—k‘k #Ó&ˆà  °Ñ!1Ñ2ˆ
Ü�v‰v�jÓ! AÒ%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%ñ Ø °Èaô
ˆð 	�‰��1ŒØ�i‰i�o‰o˜aÓ ˆÜ—k‘k #Ó&ˆà  °Ñ!1Ñ2ˆ
Ü�v‰v�jÓ! AÔ%ÐEÐ'8×'?Ñ'?ÀÓ'EÓEÐ%ñ/Frƒ   c                 óè  — t         |   d   j                  t        j                  «      }|� ||«      }t         |   d   }t        j                  |j                  d   «      }t        j                  |«      }t        |    }t        dt        j                  ddd«      «      D ]Ð  \  }}	 ||	|d¬«      }
|
j                  |||¬	«       |�*|
j                  j                  |j                  «       «      }n|
j                  j                  |«      }t        j                  ||¬
«      }||dk7     }t        j                   |«      ||
j"                  z  k\  rŒ±J dj%                  | |
j"                  «      «       ‚ |j                  d   }t        dt        j                  ddd«      «      D ]Ì  \  }}	 ||	|d¬«      }
|
j                  ||«       |�*|
j                  j                  |j                  «       «      }n|
j                  j                  |«      }t        j                  |«      }||dk7     }t        j                   |«      ||
j"                  z  k\  rŒ­J dj%                  | |
j"                  «      «       ‚ y)zPTest if leaves contain at least min_weight_fraction_leaf of the
    training setr`   Nra   r   r  rK   rJ   )Úmin_weight_fraction_leafrè   rX   r“   )Úweightsz,Failed with {0} min_weight_fraction_leaf={1})ÚDATASETSÚastypert   Úfloat32ÚrngÚrandr¨   ry   r7   r   ÚlinspacerŠ   rõ   r  Útocsrr  rž   r"  rq   )r�   r   Úsparse_containerr`   ra   r#  Útotal_weightrü   rè   Úfracrý   r  Únode_weightsÚleaf_weightss                 r�   Úcheck_min_weight_fraction_leafr0  Ÿ  s5  € ô 	�Ñ˜3Ñ×&Ñ&¤r§z¡zÓ2€AØÐ#Ù˜QÓˆÜ�Ñ˜3Ñ€Aä�h‰h�q—w‘w˜q‘zÓ"€GÜ—6‘6˜'“?€Lä˜d‘O€Mô !(¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜ÙØ%)¸.ÐWXô
ˆð 	�‰��1 GˆÔ,àÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3°Ô8ˆà# L°AÑ$5Ñ6ˆä�F‰F�<Ó  L°3×3OÑ3OÑ$OÓOð	
à9×@Ñ@Ø�#×.Ñ.ó
ó	
ØOð
ð* —7‘7˜1‘:€Lä '¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜ÙØ%)¸.ÐWXô
ˆð 	�‰��1ŒàÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3Ó'ˆà# L°AÑ$5Ñ6ˆä�F‰F�<Ó  L°3×3OÑ3OÑ$OÓOð	
à9×@Ñ@Ø�#×.Ñ.ó
ó	
ØOñ
rƒ   r�   c                 ó   — t        | d«       y ©Nrb   ©r0  ©r�   s    r�   Ú,test_min_weight_fraction_leaf_on_dense_inputr5  Ú  s   € ä" 4¨Õ0rƒ   Úcsc_containerc                 ó    — t        | d|¬«       y ©Nrh   )r+  r3  ©r�   r6  s     r�   Ú-test_min_weight_fraction_leaf_on_sparse_inputr:  ß  s   € ô # 4¨ÈÖVrƒ   c                 óä  — t         |   d   j                  t        j                  «      }|� ||«      }t         |   d   }|j                  d   }t
        |    }t        dt        j                  ddd«      «      D ]â  \  }} |||dd¬	«      }	|	j                  ||«       |�*|	j                  j                  |j                  «       «      }
n|	j                  j                  |«      }
t        j                  |
«      }||dk7     }t        j                  |«      t        ||	j                  z  d«      k\  rŒ¸J d
j!                  | |	j                  |	j"                  «      «       ‚ t        dt        j                  ddd«      «      D ]ï  \  }} |||dd¬	«      }	|	j                  ||«       |�*|	j                  j                  |j                  «       «      }
n|	j                  j                  |«      }
t        j                  |
«      }||dk7     }t        j                  |«      t        ||	j                  z  ||	j"                  z  «      k\  rŒÅJ d
j!                  | |	j                  |	j"                  «      «       ‚ y)zzTest the interaction between min_weight_fraction_leaf and
    min_samples_leaf when sample_weights is not provided in fit.r`   Nra   r   r  rK   r<   r;   )r"  rè   r  rX   zBFailed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}ræ   )r$  r%  rt   r&  r¨   r7   r   r)  rŠ   rõ   r  r*  r  rž   Úmaxr"  rq   r  )r�   r   r+  r`   ra   r,  rü   rè   r-  rý   r  r.  r/  s                r�   Ú4check_min_weight_fraction_leaf_with_min_samples_leafr=  å  sL  € ô
 	�Ñ˜3Ñ×&Ñ&¤r§z¡zÓ2€AØÐ#Ù˜QÓˆÜ�Ñ˜3Ñ€Aà—7‘7˜1‘:€LÜ˜d‘O€MÜ '¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜áØ%)Ø)ØØô	
ˆð 	�‰��1ŒàÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3Ó'ˆà# L°AÑ$5Ñ6ˆÜ�v‰v�lÓ#¤sØ˜C×8Ñ8Ñ8¸1ó(
ó 
ð 	
àO×VÑVØ�#×.Ñ.°×0DÑ0Dó
ó	
ð 
ð%
ô. !(¨´b·k±kÀ!ÀSÈ!Ó6LÓ Mò 
Ñˆ˜áØ%)Ø)Ø Øô	
ˆð 	�‰��1ŒàÐ'Ø—)‘)—/‘/ !§'¡'£)Ó,‰Cà—)‘)—/‘/ !Ó$ˆCä—{‘{ 3Ó'ˆà# L°AÑ$5Ñ6ˆÜ�v‰v�lÓ#¤sØ˜C×8Ñ8Ñ8Ø˜C×0Ñ0Ñ0ó(
ó 
ð 	
ð P×VÑVØ�#×.Ñ.°×0DÑ0Dó
ó	
ð 
ñ%
rƒ   c                 ó   — t        | d«       y r2  ©r=  r4  s    r�   ÚBtest_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_inputr@  "  s   € ä8¸¸vÕFrƒ   c                 ó    — t        | d|¬«       y r8  r?  r9  s     r�   ÚCtest_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_inputrB  '  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   ©rY   rX   r  r   ©rè   rX   rQ   )rè   Úmin_impurity_decreaserX   g-Cëâ6?ræ   gH¯¼šò×z>z)Failed, min_impurity_decrease = {0} > {1}z2Failed with {0} expected min_impurity_decrease={1})r   ré   r   r7   r  rG  rq   rŠ   Úrangerõ   rp   rs   r   rz   Úweighted_n_node_samplesrr   r¨   )Úglobal_random_seedr`   ra   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_decreaser^  1  st  € ô ×'Ñ'°#ÐDVÔW�D€A€qô !(¨´i·n±nÓ6FÓ Gó >Ñˆ˜Ü! $™ˆñ ¨NÈÔKˆáØ)ÀÐTUô
ˆñ Ø)ÀÐVWô
ˆñ Ø)ÀÐSTô
ˆð
 �4ˆLØ�4ˆLØ�6ˆNØ�3ˆKð	'
ó ,	Ñ"ˆCÐ"ð ×)Ñ)Ð->Ò>ðà:×AÑ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ð
 (Ð+<Ô<ðàK×RÑRØ'Ð):óóØ<ò; ò,	ñ%>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»   rp   ÚcapacityÚ	n_classesrs   rr   Ún_leavesrv   rw   rz   rx   rI  r{   z6Failed to generate same score  after pickling with {0}z"Failed to generate same attribute z after pickling with rn   N)r7   r‰   rb   r±   r²   rc   rŠ   r«   rò   rõ   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__rq   r(   )r�   rü   r`   ra   rý   r«   Ú
attributesÚ	attributeÚfitted_attributeÚserialized_objectrL  Úscore2s               r�   Útest_picklern  y  sW  € ä(Ÿ™Ó0ó .ÑˆˆmØ˜4ÑÜ—9‘9œdŸk™kˆq‰Aä—=‘=¤(§/¡/ˆqˆAá¨Ô+ˆØ�‰��1ŒØ—	‘	˜!˜Q“ˆò
ˆ
ð  GQö
Ø9BˆI”w˜sŸy™y¨)Ó4Ñ4ð
Ðð 
ô #ŸL™L¨Ó-ÐÜ�|‰|Ð-Ó.ˆÜ�D‹z˜SŸ]™]Ò*Ð*Ð*à—‘˜A˜qÓ!ˆà�VŠOð	QàC×JÑJÈ4ÓPó	QØà)ò 	ˆIÜÜ˜Ÿ
™
 IÓ.Ø  Ñ+à8¸¸ð DØ�vðö	ò	ñM.ùò4
s   ÂEc                  ó„  — 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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}ddgddgddgddgg}t         j                  «       D ]Þ  \  }} |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(  rŒÞJ ‚ t        j                  «       D ]L  \  }}
 |
d¬«      }|j                  | |«      j                  |«      }t        ||«       |j
                  dk(  rŒLJ ‚ y )
NrB   r?   r9   rM   r   r<   r…   ©r8   rM   )r8   r8   )rˆ   r‰   rŠ   r‹   r(   r¨   rÃ   r–   rÆ   rÍ   r&   )r`   ra   rŒ   Úy_truer�   rÑ   r�   Úy_hatÚprobaÚ	log_probarÒ   r£   s               r�   Útest_multioutputru  ¬  sR  € ð 
ˆRˆØ	ˆRˆØ	ˆRˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆBˆØ	
ˆBˆØ	
ˆBˆð	€Að  
ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆð	€Að ˆbˆ�A�q�6˜B ˜7 Q¨ GÐ,€AØ�1ˆg˜˜1�v  A˜w¨¨A¨Ð/€Fô !*§¡Ó 1ò ,ÑˆˆnÙ¨!Ô,ˆØ—‘˜˜1“×%Ñ% aÓ(ˆÜ˜5 &Ô)Ø�{‰{˜fÒ$Ð$Ð$à×!Ñ! !Ó$ˆÜ�5‹z˜QŠÐˆØ�Q‰x�~‰~ Ò'Ð'Ð'Ø�Q‰x�~‰~ Ò'Ð'Ð'à×)Ñ)¨!Ó,ˆ	Ü�9‹~ Ò"Ð"Ð"Ø˜‰|×!Ñ! VÒ+Ð+Ð+Ø˜‰|×!Ñ! VÓ+Ð+Ð+ð,ô"  )Ÿ™Ó0ò %ÑˆˆmÙ¨Ô+ˆØ—‘˜˜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…   rM   r?   r9   rB   )rˆ   r‰   rŠ   r`   ra   Ú
n_classes_r(   Úclasses_rt   r©   rŸ   rŒ   r–   )r�   rÑ   r�   Ú_ys       r�   Útest_classes_shaperz  è  sñ   € ä )§¡Ó 1ó =Ñˆˆná¨!Ô,ˆØ�‰””1Œà�~‰~ Ò"Ð"Ð"Ü˜3Ÿ<™<¨"¨a¨Ô1ô �Y‰Yœœ2Ÿ8™8¤A›;¨™?Ð+Ó,×.Ñ.ˆÙ¨!Ô,ˆØ�‰”�2ŒÜ�3—>‘>Ó" aÒ'Ð'Ð'Ü�3—<‘<Ó  AÒ%Ð%Ð%Ü˜3Ÿ>™>¨A¨q¨6Ô2Ü˜3Ÿ<™<¨2¨q¨'°B¸°7Ð);Ö<ñ=rƒ   c                  ó  — t         j                  d d } t         j                  d d }t        d|«      }t        j                  «       D ]=  \  }} |d¬«      }|j                  | ||¬«       t        |j                  | «      |«       Œ? y )Né}   Úbalancedr   r…   r“   )	rb   r±   r²   r%   rˆ   r‰   rŠ   r&   r‹   )Úunbalanced_XÚunbalanced_yr”   r�   rÑ   r�   s         r�   Útest_unbalanced_irisr€  ü  sy   € ä—9‘9˜T˜c�?€LÜ—;‘;˜t Ð$€LÜ)¨*°lÓC€Mä )§¡Ó 1ò EÑˆˆnÙ¨!Ô,ˆØ�‰�˜l¸-ˆÔHÜ˜CŸK™K¨Ó5°|ÕDñErƒ   c                  óü  — t        t        j                  «       t        j                  t        j
                  g«      D �]¼  \  \  } }} |d¬«      }t        j                  t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        j                  t        j                  d|¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        j                  t        j                  d|¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        j                  t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       t        D ]U  } |t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       ŒW t        D ]U  } |t        j                  |¬«      }t        j                  }t        |j                  ||«      j                  |«      |«       ŒW t        j                  t        j                  d d d…   |¬«      }t        j                  d d d…   }t        |j                  ||«      j                  |«      |«       �Œ¿ y )Nr   r…   r  ÚC)Úorderr  ÚFr<   )r   r7   r‰   rt   Úfloat64r&  r  rb   r±   r²   r(   rŠ   r‹   Úascontiguousarrayr/   r.   )r�   rü   r  rý   r`   ra   Úcsr_containerr6  s           r�   Útest_memory_layoutrˆ    s%  € ä(/Ü�‰ÓœBŸJ™J¬¯
©
Ð3ó)ó (8Ñ$Ñˆˆ}˜uñ ¨Ô+ˆô �J‰J”t—y‘y¨Ô.ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô �J‰J”t—y‘y¨°5Ô9ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô �J‰J”t—y‘y¨°5Ô9ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô × Ñ ¤§¡°%Ô8ˆÜ�K‰KˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÔ7ô ,ò 	<ˆMÙœdŸi™i¨uÔ5ˆAÜ—‘ˆAÜ˜sŸw™w q¨!›}×4Ñ4°QÓ7¸Õ;ð	<ô ,ò 	<ˆMÙœdŸi™i¨uÔ5ˆAÜ—‘ˆAÜ˜sŸw™w q¨!›}×4Ñ4°QÓ7¸Õ;ð	<ô �J‰J”t—y‘y¡ 1 ‘~¨UÔ3ˆÜ�K‰K™˜!˜ÑˆÜ˜3Ÿ7™7 1 a›=×0Ñ0°Ó3°QÖ7ñQ(8rƒ   c                  óz  — t        j                  d«      d d …t         j                  f   } t        j                  d«      }d|d d t        j                  d«      }d||dk(  <   t	        d¬«      }|j                  | ||¬«       t        |j                  | «      t        j                  d«      «       t        j                  d«      d d …t         j                  f   } t        j                  d«      }d|dd d	|dd d| dd…df<   t        j                  d«      }d
||d	k(  <   t	        dd¬«      }|j                  | ||¬«       |j                  j                  d   dk(  sJ ‚d||d	k(  <   t	        dd¬«      }|j                  | ||¬«       |j                  j                  d   dk(  sJ ‚t        j                  } t        j                  }t        j                  d| j                   d   d«      }t	        d¬«      }|j                  | |   ||   «       t        j"                  || j                   d   ¬«      }t	        d¬«      }|j                  | ||¬«       |j                  j$                  t&        j(                  j*                  k7  }t-        |j                  j                  |   |j                  j                  |   «       y )NrD  rT   é2   r   r…   r“   éÈ   r9   rM   gR¸…ëQà?rÊ   g     °b@rK   g     ÀH@)Ú	minlength)rt   rË   rÌ   r•   r   rŠ   r(   r‹   rl   rõ   rw   rb   r±   r²   r'  Úrandintr¨   r  rs   r	   r  r   r'   )r`   ra   r”   r�   Ú
duplicatesrí   r€   s          r�   Útest_sample_weightr�  5  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)
NrD  rT   rŠ  r   r…   r9   r“   zgInput should have at least 1 dimension i.e. satisfy `len(x.shape) > 0`, got scalar `array(0.)` instead.r  )rt   rË   rÌ   r•   r   Úrandomr(  rµ   rð   rñ   rŠ   rŸ   ÚreÚescapeÚ	TypeError)r`   ra   r�   r”   Úexpected_errs        r�   Útest_sample_weight_invalidr–  i  sä   € ä
�	‰	�#‹’qœ"Ÿ*™*�}Ñ%€AÜ
�‰�‹€AØ€A€c€r€Fä
 ¨aÔ
0€Cä—I‘I—N‘N 3¨Ó*€MÜ	�‰”zÓ	"ñ 3Ø�‰��1 MˆÔ2÷3ô —H‘H˜Q“K€Mä—9‘9ðBó€Lô 
�‰”y¨Ô	5ñ 3Ø�‰��1 MˆÔ2÷3ð 3÷3ð 3ú÷3ð 3ús   Â
D
Ã,DÄ
DÄDc                 óü  — t         |    } |d¬«      }|j                  t        j                  t        j                  «        |dd¬«      }|j                  t        j                  t        j                  «       t        |j                  |j                  «       t        j                  t        j                  t        j                  t        j                  f«      j                  } |ddddœddddœddddœgd¬«      }|j                  t        j                  |«       t        |j                  |j                  «        |dd¬«      }|j                  t        j                  |«       t        |j                  |j                  «       t        j                  t        j                  j                  «      }|t        j                  dk(  xx   d	z  cc<   dd
ddœ} |d¬«      }|j                  t        j                  t        j                  |«        ||d¬«      }|j                  t        j                  t        j                  «       t        |j                  |j                  «        |d¬«      }|j                  t        j                  t        j                  |dz  «        ||d¬«      }|j                  t        j                  t        j                  |«       t        |j                  |j                  «       y )Nr   r…   r}  ©Úclass_weightrX   g       @rO   r  r9   rD  g      Y@rM   )rˆ   rŠ   rb   r±   r²   r&   rê   rt   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)	NrM   rK   rO   ©r?   r9   r   r˜  zBnumber of elements in class_weight should match number of outputs.r  )rˆ   rt   r©   ra   rŸ   rŒ   rµ   rð   rñ   rŠ   r`   )r�   rÑ   ry  r�   ro   s        r�   Útest_class_weight_errorsr¡  ±  s}   € ô ˜t‘_€NÜ	�‰”A”r—x‘x¤“{ Q‘Ð'Ó	(×	*Ñ	*€Bñ ¨C°CÑ'8Ð&9ÈÔ
J€CØR€GÜ	�‰”z¨Ô	1ñ Ø�‰”�2Œ÷÷ ñ ús   Á4BÂBc                  óÞ   — t        j                  dd¬«      \  } }d}t        j                  «       D ]:  \  }} |d |dz   ¬«      j	                  | |«      }|j                  «       |dz   k(  rŒ:J ‚ y ©NrD  r9   rE  r8   )r»   rè   )r   Úmake_hastie_10_2r7   r‰   rŠ   Úget_n_leaves©r`   ra   Úkr�   rü   rý   s         r�   Útest_max_leaf_nodesr¨  ¾  sp   € ä×$Ñ$¨sÀÔC�D€A€qØ	€AÜ(Ÿ™Ó0ò +ÑˆˆmÙ d¸1¸q¹5ÔA×EÑEÀaÈÓKˆØ×ÑÓ! Q¨¡UÓ*Ð*Ð*ñ+rƒ   c                  óÒ   — t        j                  dd¬«      \  } }d}t        j                  «       D ]4  \  }} |d|¬«      j	                  | |«      }|j                  «       dk(  rŒ4J ‚ y r£  )r   r¤  r7   r‰   rŠ   Ú	get_depthr¦  s         r�   Útest_max_leaf_nodes_max_depthr«  Ç  se   € ä×$Ñ$¨sÀÔC�D€A€qØ	€AÜ(Ÿ™Ó0ò $ÑˆˆmÙ a¸Ô:×>Ñ>¸qÀ!ÓDˆØ�}‰}‹ !Ó#Ð#Ð#ñ$rƒ   c                  óÈ   — dD ]]  } t        t        «       j                  dgdggddg«      j                  | «      }d|j                  d   cxk  rdk  rŒPJ d«       ‚ J d«       ‚ y )N)rb  r{   rs   rr   rw   rz   rv   rx   r   r9   rC   r<   z Array points to arbitrary memory)rò   r   rŠ   rõ   Úflat)Úattrr{   s     r�   Útest_arrays_persistr¯  Ð  st   € ð	ò Kˆô Ô.Ó0×4Ñ4°q°c¸A¸3°ZÀ!ÀQÀÓH×NÑNÐPTÓUˆà�U—Z‘Z ‘]Ô& QÓ&ÐJÐ(JÓJÑ&ÐJÐ(JÓJÐ&ñKrƒ   c                  ó  — t        d«      } t        j                  d«      }| j                  ddd«      }t        j                  «       D ];  \  }} |d¬«      }|j                  ||«       |j                  j                  dk(  rŒ;J ‚ y )Nr   )rD   r[   rM   )rD   r…   )	r0   rt   rl   r�  r7   r‰   rŠ   rõ   r»   )rX   r`   ra   r�   rü   rý   s         r�   Útest_only_constant_featuresr±  â  sx   € Ü% aÓ(€LÜ
�‰�Ó€AØ×Ñ˜Q  5Ó)€AÜ(Ÿ™Ó0ò (ÑˆˆmÙ¨Ô+ˆØ�‰��1ŒØ�y‰y×"Ñ" 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   r9   rM   r8   r;   rJ   é   )r8   rI   )r   r   r   r9   r9   rM   rM   rM   r<   r<   r<   Ú	ExtraTreer   r9   r¦   rM   r;   )
rt   Ú	transposer©   rl   r7   r‰   rŠ   rõ   r»   rp   ©r`   ra   r�   rü   rý   s        r�   Ú,test_behaviour_constant_feature_after_splitsr·  ì  s¡   € Ü
�‰Ü
�	‰	Ò5Ð6¼¿¹ÀÓ8IÐJÓKó	€Aò 	*€AÜ(Ÿ™Ó0ò -Ñˆˆmà˜dÒ"Ù¨Q¸QÔ?ˆCØ�G‰G�A�qŒMØ—9‘9×&Ñ&¨!Ò+Ð+Ð+Ø—9‘9×'Ñ'¨1Ó,Ð,Ð,ñ-rƒ   c                  óÄ  — t        j                  t        j                  dgdgdgdgg«      t        j                  d«      g«      } t        j                  g d¢«      }t        j                  «       D ]k  \  }} |dd¬«      }|j                  | |«       |j                  j                  dk(  sJ ‚t        |j                  | «      t        j                  dd	«      «       Œm t        j                  «       D ]k  \  }} |dd¬«      }|j                  | |«       |j                  j                  dk(  sJ ‚t        |j                  | «      t        j                  d
d	«      «       Œm y )NrO   rT   )r8   r  )rT   rO   rT   rO   r   r9   r¦   rp  rK   )r8   )rt   ÚhstackrŸ   rl   rˆ   r‰   rŠ   rõ   r»   r(   rÃ   r—   rÍ   r‹   r¶  s        r�   Ú(test_with_only_one_non_constant_featuresrº  ú  s   € Ü
�	‰	”2—8‘8˜c˜U S E¨C¨5°3°%Ð8Ó9¼2¿8¹8ÀIÓ;NÐOÓP€Aä
�‰Ò%Ó&€AÜ(Ÿ™Ó0ò GÑˆˆmÙ¨¸Ô;ˆØ�‰��1ŒØ�y‰y×"Ñ" aÒ'Ð'Ð'Ü˜3×,Ñ,¨QÓ/´·±¸ÀÓ1EÕFð	Gô  )Ÿ™Ó0ò ?ÑˆˆmÙ¨¸Ô;ˆØ�‰��1ŒØ�y‰y×"Ñ" aÒ'Ð'Ð'Ü˜3Ÿ;™; q›>¬2¯7©7°4¸Ó+=Õ>ñ	?rƒ   c                  ó&  — t        j                  dd«      j                  t         j                  «      j	                  dd«      } t        «       }t        j                  t        d¬«      5  |j                  | g d¢«       d d d «       y # 1 sw Y   y xY w)Ng¥\Ãñ)c=Hr8   r?   r9   r&  r  )r   r9   r   r9   )
rt   Úrepeatr%  r…  Úreshaper   rµ   rð   rñ   rŠ   )r`   r�   s     r�   Útest_big_inputr¾    sg   € ä
�	‰	�(˜AÓ×%Ñ%¤b§j¡jÓ1×9Ñ9¸"¸aÓ@€AÜ
 Ó
"€CÜ	�‰”z¨Ô	3ñ !Ø�‰�’<Ô ÷!÷ !ñ !ús   Á)BÂBc                  óz   — ddl m}  t        j                  t        «      5   | «        d d d «       y # 1 sw Y   y xY w)Nr   ©Ú_realloc_test)Úsklearn.tree._utilsrÁ  rµ   rð   ÚMemoryErrorrÀ  s    r�   Útest_reallocrÄ    s+   € Ý1ä	�‰”{Ó	#ñ ÙŒ÷÷ ñ ús    1±:c                  ó  — dt        j                  d«      z  } t        j                  j	                  dd«      }t        j                  j                  ddd«      }d| dz   z  }t        d|¬«      }t        j                  t        «      5  |j                  ||«       d d d «       d| dz
  z  dz
  }t        d|¬«      }t        j                  t        «      5  |j                  ||«       d d d «       y # 1 sw Y   ŒVxY w# 1 sw Y   y xY w)	NrL   ÚPrD   rM   r   r9   Úbest)Úsplitterrè   )ÚstructÚcalcsizert   r‘  Úrandnr�  r   rµ   rð   Ú	ExceptionrŠ   rÃ  )Ún_bitsr`   ra   Úhuger�   s        r�   Útest_huge_allocationsrÏ    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 )	Nr`   ra   )rd   rc   r   r;   ©rX   r»   ú5{0} with dense and sparse format gave different treesr  )r7   r$  r¨   r-   r.   r/   rŠ   r‚   rõ   rq   r‹   rˆ   rÃ   rÆ   rt   r&  r'   )r	   Údatasetr»   rü   r`   ra   rY   r+  ÚX_sparser|   r}   Úy_predÚy_probaÚy_log_probaÚsparse_container_testÚX_sparse_tests                   r�   Úcheck_sparse_inputrÚ  /  s|  € Ü˜d‘O€MÜ�Ñ˜#Ñ€AÜ�Ñ˜#Ñ€Að Ð(Ñ(Ø—G‘G˜A‘J !‘Oˆ	ØˆjˆyˆMˆØˆjˆyˆMˆä*¬^Ñ;¼nÑLó ÐÙ# AÓ&ˆñ  q°IÔ>×BÑBÀ1ÀaÓHˆÙ q°IÔ>×BÑBÀ8ÈQÓOˆäØ�G‰GØ�G‰GØC×JÑJÈ4ÓPô	
ð —‘˜1“ˆØ”9ÑØ—o‘o aÓ(ˆGØ×-Ñ-¨aÓ0ˆKä%3´nÑ%DÄ~Ñ%Uò 		Ð!Ù1°(Ä"Ç*Á*ÔMˆMä% a§i¡i°Ó&>ÀÔGà”yÒ Ü)¨!¯/©/¸-Ó*HÈ'ÔRÜ)Ø×'Ñ'¨Ó6¸õò		ñ%rƒ   Ú	tree_typerÓ  )rf   re   rd   rh   ri   rj   rk   rl   c                 ó0   — |dk(  rdnd }t        | ||«       y )Nrd   r<   ©rÚ  )rÛ  rÓ  r»   s      r�   Útest_sparse_inputrÞ  X  s   € ð  Ò(‘¨d€IÜ�y '¨9Õ5rƒ   rc   rg   c                 ó   — t        | |d«       y )NrM   rÝ  )rÛ  rÓ  s     r�   Útest_sparse_input_reg_treesrà  k  s   € ô
 �y '¨1Õ-rƒ   )ri   rj   rk   rl   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 )Nr`   ra   r   r9   rM   )rX   r‡   r»   rÒ  rD   )rX   r‡   r  )rX   r  r<   rç   )	r7   r$  rŠ   r‚   rõ   rq   r'   r‹   r¨   )	rÛ  rÓ  r6  rü   r`   rÔ  ra   r|   r}   s	            r�   Útest_sparse_parametersrâ  s  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 )Nr`   ra   r   r<   ©rX   r»   r™   rÒ  )r7   r$  rŠ   r‚   rõ   rq   r'   r‹   )
rÛ  rÓ  r6  r™   rü   r`   rÔ  ra   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<   rD   r   rK   r\   r9   r  ©r¨   rT   rÑ  rÒ  )r7   rt   rË   r0   rH  ÚbinomialÚpermutationÚappendÚconcatenater%  Úint32rŸ   r&  Útoarrayr�  Úcopyr±   ry   rŠ   r‚   rõ   rq   r	   r   r'   r  Údecision_pathr‹   rˆ   rÃ   )rÛ  r6  r‡  rü   r»   rZ   rY   ÚsamplesrX   r§   r±   ÚoffsetÚindptrÚiÚn_nonzero_iÚ	indices_iÚdata_irÔ  r`   rÙ  ÚX_testra   r|   r}   ÚXsÚX1r  s                              r�   Útest_explicit_sparse_zerosrú  Ã  s«  € ô
 ˜iÑ(€MØ€IØ€Jð €IÜ�i‰i˜	Ó"€Gô & aÓ(€LØ€GØ€DØ€FØˆX€FÜ�:Óò ˆØ"×+Ñ+¨I°sÓ;ˆØ ×,Ñ,¨WÓ5°l°{ÐCˆ	Ø�‰�yÔ!Ø×&Ñ& q¨#°[°NÐ&ÓCÀaÑGˆØ�‰�FÔØ�+ÑˆØ�‰�fÕðô �n‰n˜WÓ%×,Ñ,¬R¯X©XÓ6€GÜ�X‰X�f¤B§H¡HÔ-€FÜ�8‰8”B—N‘N 4Ó(´·
±
Ô;€DÙ˜d G¨VÐ4¸YÈ
Ð<SÔT€HØ×ÑÓ€AÙ!Ø	ˆw˜Ð¨	°:Ð'>ô€Mð ×"Ñ"Ó$€FØ×Ñ˜Q ¨¨ÐÓ5€Að "×&Ñ&Ó(€Mð �M‰M˜SÑ ×%Ñ%Ó'¨!Ò+Ð+Ð+Ø×Ñ #Ñ%×*Ñ*Ó,¨qÒ0Ð0Ð0ñ 	 1°	Ô:×>Ñ>¸qÀ!ÓD€AÙ 1°	Ô:×>Ñ>¸xÈÓK€AäØ	�‰Ø	�‰Ø?×FÑFÄtÓLôð �-Ð	 €BÜ˜"˜b“/ó P‰ˆˆBÜ! !§'¡'§-¡-°Ó"3°Q·W±W·]±]À2Ó5FÔGÜ! !§'¡'¨"£+¨q¯w©w°r«{Ô;Ü! !§'¡'¨"£+¨q¯w©w¯}©}¸RÓ/@ÔAä!Ø�G‰G×!Ñ! "Ó%×-Ñ-Ó/°·±×1FÑ1FÀrÓ1J×1RÑ1RÓ1Tô	
ô 	"Ø�O‰O˜BÓ×'Ñ'Ó)¨1¯?©?¸2Ó+>×+FÑ+FÓ+Hô	
ô 	"Ø�O‰O˜BÓ×'Ñ'Ó)¨1¯7©7×+@Ñ+@ÀÓ+D×+LÑ+LÓ+Nô	
ô 	" !§)¡)¨B£-°·±¸2³Ô?ä”9ÓÜ% a§o¡o°bÓ&9¸1¿?¹?È2Ó;NÖOñ%Prƒ   c                 ó  — t         |    }t        j                  d d …df   j                  «       }t        j                  d d …df   j	                  d«      }t        j
                  }t        j                  t        «      5   |d¬«      j                  ||«       d d d «        |d¬«      }|j                  ||«       t        j                  t        «      5  |j                  |g«       d d d «       y # 1 sw Y   ŒYxY w# 1 sw Y   y xY w)Nr   r   r…   )r7   rb   r±   rª   r½  r²   rµ   rð   rñ   rŠ   r‹   )r�   rü   r`   ÚX_2dra   rý   s         r�   Úcheck_raise_error_on_1d_inputrý    sÎ   € Ü˜d‘O€Mä�	‰	’!�Q�$‰×ÑÓ€AÜ�9‰9’Q˜�T‰?×"Ñ" 7Ó+€DÜ�‰€Aä	�‰”zÓ	"ñ 0Ù 1Ô%×)Ñ)¨!¨QÔ/÷0ñ  QÔ
'€CØ‡G�GˆD�!ÔÜ	�‰”zÓ	"ñ Ø�‰�Q�CÔ÷ð ÷0ð 0ú÷
ð ús   Á>C0ÃC<Ã0C9Ã<Dc                 óX   — t        «       5  t        | «       d d d «       y # 1 sw Y   y xY w©N)r*   rý  r4  s    r�   Útest_1d_inputr   "  s%   € ä	Ó	ñ ,Ü% dÔ+÷,÷ ,ñ ,ús   ‹  )r+  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   r9   )r   r   r   r   r9   )r>   r>   r>   r>   r>   r…   r“   gš™™™™™Ù?)rX   r"  )r7   rt   rŸ   rŠ   rõ   r»   )r�   r+  rü   r`   ra   r”   rý   s          r�   Ú test_min_weight_leaf_split_levelr  (  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  r7   rŠ   Úy_smallr(   r  rõ   )r�   Ú	X_small32rý   s      r�   Útest_public_apply_all_treesr
  <  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  E  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                  óæ   — t         j                  } t         j                  }t        dd¬«      j	                  | |«      }|j                  | d d «      j                  «       }t        |g d¢g d¢g«       y )Nr   r9   rÑ  rM   )r9   r9   r   ©r9   r   r9   )rb   r±   r²   r   rŠ   rï  rí  r(   )r`   ra   rý   Únode_indicators       r�   Útest_decision_path_hardcodedr  O  s[   € Ü�	‰	€AÜ�‰€AÜ
 ¨a¸1Ô
=×
AÑ
AÀ!ÀQÓ
G€CØ×&Ñ& q¨¨! uÓ-×5Ñ5Ó7€NÜ�~ª	²9Ð'=Õ>rƒ   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   rM   rÑ  rç  r9   ©Úaxis)rb   r±   r²   r¨   r7   rŠ   rï  rí  rõ   rp   r  Ú	enumerater'   rt   r•   rs   r   r  ry   r<  r»   )r�   r`   ra   rY   rü   rý   Únode_indicator_csrr  Úleavesró  ÚjÚleave_indicatorÚ
all_leavesr»   s                 r�   Útest_decision_pathr  W  s?  € ä�	‰	€AÜ�‰€AØ—‘˜‘
€Iä˜d‘O€MÙ
 Q°!Ô
4€CØ‡G�GˆAˆq„Mà×*Ñ*¨1Ó-ÐØ'×/Ñ/Ó1€NØ×Ñ I¨s¯y©y×/CÑ/CÐ#DÒDÐDÐDð �Y‰Y�q‹\€FÜ8AÀ&Ó8I×J±°°1�~ a¨ dÓ+ÐJ€OÑJÜ˜o¬r¯w©w¸YÔ/GÔHð —‘×(Ñ(¬IÑ5€JÜÜ
�‰ˆ~˜zÓ*¬B¯G©G¸)Ô,Dôð
 ×"Ñ"¨Ð"Ó*×.Ñ.Ó0€IØ�9‰9×Ñ )Ò+Ð+Ñ+ùó Ks   Â<E=c                 óÈ   — t          |t        «      }}t        |    }t        j                  t
        «      5   |d¬«      j                  ||«       d d d «       y # 1 sw Y   y xY w©Nr   r…   )ÚX_multilabelÚy_multilabelr7   rµ   rð   r”  rŠ   )r�   r‡  r`   ra   rü   s        r�   Útest_no_sparse_y_supportr  u  sQ   € ô ™¤|Ó4€q€AÜ˜d‘O€MÜ	�‰”yÓ	!ñ 0Ù 1Ô%×)Ñ)¨!¨QÔ/÷0÷ 0ñ 0ús   µAÁA!c                  óÜ  — t        ddd¬«      } | j                  dgdgdgdgdggg d¢g d	¢¬
«       t        | j                  j                  g d¢«       t        | j                  j                  j                  g d¢«       | j                  dgdgdgdgdggg d¢t        j                  d«      ¬
«       t        | j                  j                  g d¢«       t        | j                  j                  j                  g d¢«       | j                  dgdgdgdgdggg d¢¬«       t        | j                  j                  g d¢«       t        | j                  j                  j                  g d¢«       y)aQ	  Check MAE criterion produces correct results on small 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
            ------
    r   r4   rM   )rX   r™   rè   r<   r;   rL   )rJ   r³  r<   r8   r<   )ç333333ã?ç333333Ó?ræ   rO   r"  )r`   ra   r”   )g²�…,dñ?gÜ¶mÛ¶mÛ?gÿÿÿÿÿÿç?)ç      @g      @r#  )çffffffö?rN   gUUUUUUõ?)r8   rU   r#  r_   N)
r   rŠ   r   rõ   rz   r(   r{   r­  rt   r•   )Údt_maes    r�   Útest_maer&    s0  € ôT #ØÐ"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—|‘|×)Ñ)×.Ñ.²Õ>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  rD  c                 óR   — t        j                  t        j                  | «      «      S rÿ  )rd  rf  re  )Úobjs    r�   Ú_pickle_copyz)test_criterion_copy.<locals>._pickle_copyê  s   € Ü�|‰|œFŸL™L¨Ó-Ó.Ð.rƒ   )
rt   rË   Úintprî  Údeepcopyr   r‰   Ú
__reduce__r(   r   )Ú	n_outputsrb  rY   r*  Ú	copy_funcÚ_ÚtypenameÚcriteriaÚresultÚ	typename_Ú
n_outputs_rw  Ú
n_samples_s                r�   Útest_criterion_copyr7  ã  s1  € ð €IÜ—	‘	˜!¤2§7¡7Ô+€IØ€Iò/ô —i‘i¤§¡°Ð=ò +ˆ	Ü'×-Ñ-Ó/ò 	6‰KˆAˆxÙ 	¨9Ó5ˆHÙ˜xÓ(×3Ñ3Ó5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ø 
Ò*Ð*Ð*Ü˜y¨*Õ5ð	6ô (×-Ñ-Ó/ò 	+‰KˆAˆxÙ 	¨9Ó5ˆHÙ˜xÓ(×3Ñ3Ó5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ø 
Ò*Ð*Ð*Ø 
Ó*Ð*Ð*ñ	+ñ+rƒ   c                 ó¢  — t         j                  j                  d«      j                  dd«      dz  }t        j                  |j                  d«      «      }|d d …d d…f   }| � | |«      }|d d …df   }t        d¬«      j                  ||«      } |j                  |«      }t        t        j                  |j                  j                  t        k(  «      d   «      }|j                  |«      }t        j                  t        j                  |j                  j                   «       «      d   }t#        |«      dk(  sJ ‚t#        |«      dk(  sJ ‚y )Nr   rD  rI   g±¡*ÓÎâGr&  r?   r…   )rt   r‘  ÚRandomStaterË  Ú
nan_to_numr%  r   rŠ   r  ÚsetÚwhererõ   rs   r   Ú
differenceÚisfiniterw   r–   )	r+  r±   r`   ra   r	   Úterminal_regionsÚ	left_leafÚ
empty_leafÚinfinite_thresholds	            r�   Ú"test_empty_leaf_infinite_thresholdrC  ÿ  s  € ô �9‰9× Ñ  Ó#×)Ñ)¨#¨rÓ2°TÑ9€DÜ�=‰=˜Ÿ™ YÓ/Ó0€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ƒ   Útree_clsc                 ó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 ©Nr`   ra   r[   r   rF  ©r$  Úcost_complexity_pruning_pathÚ
ccp_alphasÚ
impuritiesrt   rÜ   ÚdiffÚassert_pruning_creates_subtree©rÓ  rD  r`   ra   rý   ÚinfoÚpruning_pathrJ  s           r�   Ú'test_prune_tree_classifier_are_subtreesrP    s�   € ô
 �wÑ€GØ�3‰<˜ ™€q€AÙ
 "°1Ô
5€CØ×+Ñ+¨A¨qÓ1€Dà—?‘?€LØ—‘€JÜ�6‰6”"—'‘'˜,Ó'¨1Ñ,Ô-Ð-Ð-Ü�6‰6”"—'‘'˜*Ó%¨Ñ*Ô+Ð+Ð+ä" 8¨Q°°<Õ@rƒ   c                 ób  — t         |    } | d   | d   }} |dd¬«      }|j                  ||«      }|j                  }|j                  }t	        j
                  t	        j                  |«      dk\  «      sJ ‚t	        j
                  t	        j                  |«      dk\  «      sJ ‚t        ||||«       y rF  rG  rM  s           r�   Ú'test_prune_tree_regression_are_subtreesrR  $  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…   r9   rD   )rX   Ú	ccp_alpha)r   rŠ   Úassert_is_subtreerõ   )rš  rí   s     r�   Útest_prune_single_node_treerV  5  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d  «      D ]%  \  }}t        |j                  |j                  «       Œ' y )Nr[   r   )rè   rT  rX   r9   )rŠ   rê  ÚziprU  rõ   )	Úestimator_clsr`   ra   rO  Ú
estimatorsrT  rý   Úprev_estÚnext_ests	            r�   rL  rL  A  sz   € à€JØ!ò ˆ	Ù¨2¸ÐQRÔS×WÑWØˆqó
ˆð 	×Ñ˜#Õð	ô " *¨j¸¸¨nÓ=ò :Ñˆ�(Ü˜(Ÿ.™.¨(¯.©.Õ9ñ:rƒ   c                 ó>  — | j                   |j                   k\  sJ ‚| j                  |j                  k\  sJ ‚| j                  }| j                  }|j                  }|j                  }dg}|�r1|j	                  «       \  }}t        | j                  |   |j                  |   «       t        | j                  |   |j                  |   «       t        | j                  |   |j                  |   «       t        | j                  |   |j                  |   «       ||   ||   k(  rt        t        |j                  |   «       nXt        | j                  |   |j                  |   «       |j                  ||   ||   f«       |j                  ||   ||   f«       |r�Œ0y y )N)r   r   )rp   r»   rs   rr   Úpopr'   r{   r&   rz   rx   rI  r   rw   rê  )	r	   ÚsubtreeÚtree_c_leftÚtree_c_rightÚsubtree_c_leftÚsubtree_c_rightÚstackÚtree_node_idxÚsubtree_node_idxs	            r�   rU  rU  P  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 )Nrf   r`   Fr  r  )rÈ  )r$  r%  r	   r  r  r)   rt   rŸ   r±   r§   rò  r  r7   rŠ   r(   r‹   rï  Útodense)r�   rÈ  r+  rÓ  r  Ú
X_readonlyÚ
y_readonlyrý   s           r�   Ú"test_apply_path_readonly_all_treesrk  x  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ƒ   )r3   r5   r6   c                 ó  — t         j                  t         j                  }} || ¬«      }|j                  ||«       t	        j
                  |j                  |«      «      t        j                  t	        j
                  |«      «      k(  sJ ‚y )Nr   )	rc   r±   r²   rŠ   rt   ry   r‹   rµ   r¶   )r™   r$   r`   ra   r£   s        r�   Útest_balance_propertyrm  •  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   r9   rM   r<   )r   r   r   r   r9   rM   r<   r8   r3   r›   r6   rD   r!  r  )Úeffective_rankÚtail_strengthrY   rZ   râ   rX   r?   )	r   rŠ   rt   Úaminr‹   rÜ   r   Úmake_regressionr�   )rn  r`   ra   r£   rZ   s        r�   Útest_poisson_zero_nodesrt  £  sN  € ð ˆQˆ�!�Q�˜!˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸À!ÀQÀÐH€AÚ €Aô  ¨/ÈÔ
M€CØ‡G�GˆAˆq„MÜ�7‰7�3—;‘;˜q“>Ó" aÒ'Ð'Ð'ä
¨)À$Ô
G€CØ‡G�GˆAˆq„MÜ�6‰6�#—+‘+˜a“. 1Ñ$Ô%Ð%Ð%ð €JÜ×#Ñ#Ø! A‘~¨Ñ*ØØØØ  1‘n¨Ñ)Øô�D€A€qð €A€rˆA�v�!�a‘%ÑÑä
�‰ˆq‹	€AÜ
¨)À$Ô
G€CØ‡G�GˆAˆq„MÜ�6‰6�#—+‘+˜a“. 1Ñ$Ô%Ð%Ñ%rƒ   c            	      ó0  — t         j                  j                  d«      } d\  }}}t        j                  ||z   || ¬«      }| j                  dd|¬«      t        j                  |d¬«      z  }| j                  t        j                  ||z  «      ¬	«      }t        |||| ¬
«      \  }}}	}
t        dd| ¬«      }t        dd| ¬«      }|j                  ||	«       |j                  ||	«       t        d¬«      j                  ||	«      }||	df||
dffD ]…  \  }}}t        ||j                  |«      «      }t        |t        j                  |j                  |«      dd «      «      }t        ||j                  |«      «      }|dk(  r
|d|z  k  sJ ‚|d|z  k  rŒ…J ‚ y )NrÁ   )éô  rv  rD   ©rY   rZ   rX   rB   rM   )ÚlowÚhighr]   r   r  )Úlam)Ú	test_sizerX   r6   rD   )r™   r  rX   r3   Úmean)ÚstrategyÚtrainÚtestgVçž¯Ò<rK   g      è?)rt   r‘  r9  r   Úmake_low_rank_matrixÚuniformr<  r6   rÅ   r   r   rŠ   r
   r   r‹   Úclip)r'  Ún_trainÚn_testrZ   r`   Úcoefra   ÚX_trainr÷  r¡   r¢   Útree_poiÚtree_mseÚdummyÚvalÚ
metric_poiÚ
metric_mseÚmetric_dummys                     r�   Útest_poisson_vs_mserŽ  Å  s¢  € ô
 �)‰)×
Ñ
 Ó
#€CØ".Ñ€GˆV�ZÜ×%Ñ%Ø˜FÑ"¨zÈô	€Að
 �;‰;˜2 A¨Jˆ;Ó7¼"¿&¹&ÀÈÔ:KÑK€DØ�‰œŸ™˜q 4™xÓ(ˆÓ)€AÜ'7Ø	ˆ1˜¨Sô(Ñ$€GˆV�W˜fô %Ø¨rÀô€Hô %Ø!°RÀcô€Hð ‡L�L�˜'Ô"Ø‡L�L�˜'Ô"Ü FÔ+×/Ñ/°¸ÓA€Eà ¨Ð1°F¸FÀFÐ3KÐLò 
0‰	ˆˆ1ˆcÜ*¨1¨h×.>Ñ.>¸qÓ.AÓBˆ
ä*¨1¬b¯g©g°h×6FÑ6FÀqÓ6IÈ5ÐRVÓ.WÓXˆ
Ü,¨Q°·±¸aÓ0@ÓAˆð �&Š=Ø  jÑ 0Ò0Ð0Ð0Ø˜D <Ñ/Ó/Ð/Ð/ñ
0rƒ   rb  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Á   )rb  rY   rZ   râ   rã   rX   r2   é+   r›   Úentropyz> with criterion 'entropy' and 'log_loss' gave different trees.N)r   ré   rŠ   r‚   rõ   r   r‹   )r$   rb  rY   rZ   r`   ra   Útree_log_lossÚtree_entropys           r�   Ú'test_criterion_entropy_same_as_log_lossr”  ï  s¯   € ð "Ñ€IˆzÜ×'Ñ'ØØØØ ØØô�D€A€qñ  :¸BÔ?×CÑCÀAÀqÓI€MÙ )¸"Ô=×AÑAÀ!ÀQÓG€LäØ×ÑØ×ÑØˆ(ÐPÐQôô
 �M×)Ñ)¨!Ó,¨l×.BÑ.BÀ1Ó.EÕFrƒ   c                  ó6  ‡‡— t        j                  d¬«      \  } }t        dd¬«      Š‰j                  | |«       ‰j	                  | |«      }d„ Šˆˆfd„}t        j                   |«       «      }|j	                  | |«      }t        j                  ||«      sJ ‚y )Nr   r…   r<   rÑ  c                 óŒ   — | j                  «       j                  | j                  j                  «       «      j	                  «       S rÿ  )ÚbyteswapÚviewr  Únewbyteorderr-  )Úarrs    r�   Úreduce_ndarrayz8test_different_endianness_pickle.<locals>.reduce_ndarray  s/   € Ø�|‰|‹~×"Ñ" 3§9¡9×#9Ñ#9Ó#;Ó<×GÑGÓIÐIrƒ   c                  ó  •— t        j                  «       } t        j                  | «      }t        j
                  j                  «       |_        ‰|j
                  t        j                  <   |j                  ‰«       | j                  d«       | S ©Nr   )ÚioÚBytesIOrd  ÚPicklerÚcopyregÚdispatch_tablerî  rt   ÚndarrayÚdumpÚseek)ÚfÚpr�   r›  s     €€r�   Ú get_pickle_non_native_endiannesszJtest_different_endianness_pickle.<locals>.get_pickle_non_native_endianness  sb   ø€ Ü�J‰J‹LˆÜ�N‰N˜1ÓˆÜ"×1Ñ1×6Ñ6Ó8ˆÔØ'5ˆ×ÑœŸ™Ñ$à	�‰ˆsŒØ	�‰ˆqŒ	Øˆrƒ   )	r   ré   r   rŠ   r«   rd  Úloadrt   Úisclose)r`   ra   r«   r¨  Únew_clfÚ	new_scorer�   r›  s         @@r�   Ú test_different_endianness_pickler­    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ÿ  )	Ú
isinstancert   r£  r—  r˜  r  r™  ÚsuperÚsave)Úselfr)  rh  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__)rh  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©  rt   rª  )r`   ra   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_childrv   rx   ©ÚnamesÚformatsÚ	same_kind©Úcasting)r,   rt   Úint64rì  r  Úfieldsr‰   Úlistr  Úvaluesr%  )Únode_ndarrayÚnew_dtype_for_indexing_fieldsÚindexing_field_namesr�   r  r0  Únew_dtype_dictÚ	new_dtypes           r�   Ú"get_different_bitness_node_ndarrayrÑ  :  sË   € Ý09¤B§H¢H¼r¿x¹xÐ!ò VÐð -9×,>Ñ,>×,EÑ,E×,KÑ,KÓ,M÷ð Ù(˜™j˜u aˆˆe‰ð€Nò ð %ò =ˆØ<ˆ�tÒð=ô —‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið ×Ñ˜y°+ÐÓ>Ð>ùôs   ÁCc                 óâ  — | j                   j                  j                  «       D ���ci c]  \  }\  }}||“Œ }}}}| j                   j                  j                  «       D ��cg c]  \  }}|‘Œ	 }}}|D �cg c]  }d|z   ‘Œ	 }}t	        j                   t        |j                  «       «      t        |j                  «       «      |dœ«      }| j                  |d¬«      S c c}}}w c c}}w c c}w )NrL   )rÃ  rÄ  ÚoffsetsrÅ  rÆ  )r  rÉ  r‰   rË  rt   rÊ  r  r%  )	rÌ  r�   r  r0  rÏ  rñ  rÓ  Úshifted_offsetsrÐ  s	            r�   Ú$get_different_alignment_node_ndarrayrÕ  L  så   € à,8×,>Ñ,>×,EÑ,E×,KÑ,KÓ,M÷ð Ù(˜™j˜u aˆˆe‰ð€Nò ð ,8×+=Ñ+=×+DÑ+D×+KÑ+KÓ+M×N™-˜% ŠvÐN€GÑNØ07Ö8 f�q˜6“zÐ8€OÐ8ä—‘ä˜.×-Ñ-Ó/Ó0Ü˜N×1Ñ1Ó3Ó4Ø&ñ	
ó€Ið ×Ñ˜y°+ÐÓ>Ð>ùôùó OùÚ8s   ©CÁ$C&Á7C,c                 óø   — t         rt        j                  nt        j                  } | j                  «       \  }\  }}}}|j                  |d¬«      }|j                  «       }t        |d   «      |d<   ||||f|fS )NrÅ  rÆ  Únodes)r,   rt   rÈ  rì  r-  r%  rî  rÑ  )	r	   rÐ  rD  rZ   rb  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Ÿ  rd  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_bitnesso  s^   ø€ Ü�J‰J‹LˆÜ�N‰N˜1ÓˆÜ"×1Ñ1×6Ñ6Ó8ˆÔÜ'Iˆ×ÑœÑ$à	�‰ˆsŒØ	�‰ˆqŒ	Øˆrƒ   )	r   ré   r   rŠ   r«   rd  r©  rµ   r¶   )r`   ra   r«   rà  r«  r¬  r�   s         @r�   Útest_different_bitness_picklerá  h  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¶   )r`   ra   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   r9   r  zWrong dimensions.+n_classesr  zn_classes.+incompatible dtype)r,   rt   r  rì  rÈ  r™  rŸ   r!   r%  rµ   rð   rñ   r…  )Úexpected_dtypeÚallowed_dtypesÚdtrb  Úwrong_dim_n_classesÚwrong_dtype_n_classess         r�   Útest_check_n_classesrì  ™  s;  € Ý+4”R—X‘XœbŸh™hÔ'¼"¿(¹(Ä2Ç8Á8Ó:L€NÜ—h‘hœrŸx™xÓ(¬"¯(©(´2·8±8Ó*<Ð=€NØ°>ÖB¨R�r—‘Õ(ÒBÑB€Nä—‘˜!˜Q˜ ~Ô6€IØò ?ˆÜ˜×)Ñ)¨"Ó-¨~Õ>ð?ô 
�‰”zÐ)FÔ	Gñ >Ü Ÿh™h¨¨A¨ x°~ÔFÐÜÐ,¨nÔ=÷>ô 
�‰”zÐ)HÔ	Iñ @Ø )× 0Ñ 0´·±Ó <ÐÜÐ.°Ô?÷@ð @ùò C÷>ð >ú÷@ð @ús   ÂF	Ä
'FÅ,FÆFÆF#c                  óÜ  — t        j                  t         j                  «      } d}t        j                  || ¬«      }| | j	                  «       g}|D ]  }t        |||¬«       Œ t        j                  t        d¬«      5  t        || d¬«       d d d «       |d d …d d …d d…f   t        j                  |«      fD ]>  }t        j                  t        d¬«      5  t        || |j                  ¬«       d d d «       Œ@ t        j                  t        d	¬«      5  t        |j                  t         j                  «      | |¬«       d d d «       y # 1 sw Y   Œ½xY w# 1 sw Y   Œ¦xY w# 1 sw Y   y xY w)
N)r;   r9   rM   r  )rç  Úexpected_shapezWrong shape.+value arrayr  )r9   rM   r9   zvalue array.+C-contiguouszvalue array.+incompatible dtype)rt   r  r…  rl   r™  r#   rµ   rð   rñ   r  r¨   r%  r&  )rç  rî  Úvalue_ndarrayrè  ré  Úproblematic_arrs         r�   Útest_check_value_ndarrayrñ  «  sJ  € Ü—X‘XœbŸj™jÓ)€NØ€NÜ—H‘H˜^°>ÔB€Mà$ n×&AÑ&AÓ&CÐD€Nàò 
ˆÜØ¨"¸^ö	
ð
ô
 
�‰”zÐ)CÔ	Dñ 
ÜØ¨.Èõ	
÷
ð
 *ª!ªQ°°°¨(Ñ3´R×5FÑ5FÀ}Ó5UÐVò ˆÜ�]‰]œ:Ð-HÔIñ 	Ü ØØ-Ø.×4Ñ4õ÷	ð 	ðô 
�‰”zÐ)JÔ	Kñ 
ÜØ× Ñ ¤§¡Ó,Ø)Ø)õ	
÷
ð 
÷
ð 
ú÷	ð 	ú÷
ð 
ús$   Á?E
ÃEÄ,E"Å
EÅE	Å"E+c                  óª  — t         } t        j                  d| ¬«      }|t        |«      t	        |«      g}||D �cg c]+  }|j                  |j                  j                  «       «      ‘Œ- c}z  }|D ]  }t        || ¬«       Œ t        j                  t        d¬«      5  t        j                  d| ¬«      }t        || ¬«       d d d «       t        j                  t        d¬«      5  |d d d…   }t        || ¬«       d d d «       |j                  j                  j                  «       D ���ci c]  \  }\  }}||“Œ }}}}|j                  «       }	t        j                  |	d	<   t        j                  t!        |	j#                  «       «      t!        |	j%                  «       «      d
œ«      }
|j                  |
«      }t        j                  t        d¬«      5  t        || ¬«       d d d «       |j                  «       }	t        j&                  |	d<   t        j                  t!        |	j#                  «       «      t!        |	j%                  «       «      d
œ«      }
|j                  |
«      }t        j                  t        d¬«      5  t        || ¬«       d d d «       y c c}w # 1 sw Y   �ŒÛxY w# 1 sw Y   �Œ¯xY wc c}}}w # 1 sw Y   ŒÛxY w# 1 sw Y   y xY w)N)r;   r  )rç  zWrong dimensions.+node arrayr  )r;   rM   znode array.+C-contiguousrM   rw   rÂ  znode array.+incompatible dtyperÀ  )r   rt   rl   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  r0  Ú
dtype_dictrÏ  rÐ  s              r�   Útest_check_node_ndarrayrö  Ì  s…  € Ü€Nä—8‘8˜D¨Ô7€Lð 	Ü*¨<Ó8Ü,¨\Ó:ðÐð
 Ø8KöØ14ˆ�
‰
�3—9‘9×)Ñ)Ó+Õ,òñ Ðð #ò IˆÜ˜L¸ÖHðIô 
�‰”zÐ)GÔ	Hñ UÜ#%§8¡8¨F¸.Ô#IÐ ÜÐ4À^ÕT÷Uô 
�‰”zÐ)CÔ	Dñ UØ#/±°!°Ñ#4Ð ÜÐ4À^ÕT÷Uð 7C×6HÑ6H×6OÑ6O×6UÑ6UÓ6W×XÐXÑ"2 $©
¨°�$˜‘+ÐX€JÒXð  —_‘_Ó&€NÜ"$§(¡(€N�;Ñä—‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið  ,×2Ñ2°9Ó=Ðä	�‰”zÐ)IÔ	Jñ UÜÐ4À^ÕT÷Uð  —_‘_Ó&€NÜ#%§:¡:€N�<Ñ Ü—‘Ü�~×*Ñ*Ó,Ó-¼$¸~×?TÑ?TÓ?VÓ:WÑXó€Ið  ,×2Ñ2°9Ó=Ðä	�‰”zÐ)IÔ	Jñ UÜÐ4À^ÕT÷Uð UùòM÷Uñ Uú÷Uñ Uüô Y÷Uð Uú÷Uð Uús;   º0JÂ%JÃ&J)Ä,J6ÇJ=Ê K	ÊJ&Ê)J3Ê=KË	KÚSplitterc                 ód  — t         j                  j                  d«      }d}dt        j                  ddgt         j                  ¬«      }}t        d   ||«      } | ||dd|d	¬
«      }t        j                  |«      }t        j                  |«      }|j                  |k(  sJ ‚t        || «      sJ ‚y	)z&Check that splitters are serializable.rÁ   rD   rM   r<   r  r1   r;   rK   N)Úmonotonic_cst)rt   r‘  r9  rŸ   r+  r   rd  re  rf  r‡   r²  )	r÷  r'  r‡   r.  rb  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  	  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   r9   rO   )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)rt   rŸ   rŠ   rµ   rð   rñ   )r$   r`   ra   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   r9   rM   r<   rL   r  rI   é   r¸   ©	ræ   r>   r"  r>   r$  r$  rN   gš™™™™™ù?gÍÌÌÌÌÌ@rÁ   r9   rä  r=   Nr?   r:   )	rt   rŸ   rŒ   r   rŠ   r‹   Únanr   r|  )r™   r`   ra   Ú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  r9   rä  r   N)rt   rŸ   rŒ   r   rŠ   rõ   rs   rr   rI  r{   r‹   r  r   )r™   rn  r`   ra   Ú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  U	  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‘  r1   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   r8   )r   r9   rM   r<   rL   r  rI   r  r9   rM   rÁ   rä  r<   r  N©rt   rŸ   r  rŒ   r   rŠ   r‹   r(   )r™   Úmissing_values_classr`   ra   r  r÷  Ú
y_nan_preds          r�   Ú/test_missing_values_best_splitter_three_classesr  x	  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.r8   ©r   r9   rM   r<   r8   r;   r   r9   rJ   rÁ   rM   rä  r;   )r   r9   r   Nr  ©r™   r`   ra   r  r÷  rÕ  s         r�   Ú)test_missing_values_best_splitter_to_leftr"  ‡	  s£   € ô 	�‰”2—6‘6�(˜Q‘,Ò!3Ñ3Ð4Ó5×7Ñ7€AÜ
�‰�!��q‘˜A˜3 ™7Ñ"Ó#€Aä
 ¨b¸AÈÔ
S€CØ‡G�GˆAˆq„Mä�X‰XœŸ™ ¤2§6¡6Ð*Ð+Ó,×.Ñ.€FØ�[‰[˜Ó €Fä�všyÕ)rƒ   c                 ó   — t        j                  t         j                  gdz  g d¢z   g«      j                  }t        j                  dgdz  dgdz  z   dgdz  z   «      }t	        dd| ¬«      }|j                  ||«       t        j                  t         j                  dd	gg«      j                  }|j                  |«      }t        |g d
¢«       y)zŸMissing values and non-missing values sharing one class at fit-time
    must make missing values at predict-time be classified has belonging
    to this class.r8   r   r9   r   rM   rÁ   rä  rP   g333333@r  Nr  r!  s         r�   Ú*test_missing_values_best_splitter_to_rightr$  —	  sª   € ô
 	�‰”2—6‘6�(˜Q‘,Ò!3Ñ3Ð4Ó5×7Ñ7€AÜ
�‰�!��q‘˜A˜3 ™7Ñ" a S¨1¡WÑ,Ó-€Aä
 ¨b¸AÈÔ
S€CØ‡G�GˆAˆq„Mä�X‰XœŸ™  SÐ)Ð*Ó+×-Ñ-€FØ�[‰[˜Ó €Fä�všyÕ)rƒ   c                 ó°  — t        j                  ddddt         j                  ddddt         j                  g
g«      j                  }t        j                  d	gdz  dgdz  z   «      }t	        d
d| ¬«      }|j                  ||«       t        j                  t         j                  ddgg«      j                  }|j                  |«      }t        |g d¢«       y)zNCheck behavior of missing value when there is one missing value in each class.r9   rM   r<   r;   rD   r[   rW   r¹   r   rÁ   rä  gffffff@gš™™™™A@r  Nr  r!  s         r�   Ú>test_missing_values_best_splitter_missing_both_classes_has_nanr&  ¨	  s®   € ô 	�‰�1�a˜˜AœrŸv™v r¨2¨r°2´r·v±vÐ>Ð?Ó@×BÑB€AÜ
�‰�!��q‘˜A˜3 ™7Ñ"Ó#€Aä
 ¨b¸AÈÔ
S€CØ‡G�GˆAˆq„MÜ�X‰XœŸ™  TÐ*Ð+Ó,×.Ñ.€FØ�[‰[˜Ó €Fô �všyÕ)rƒ   r	   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.r9   rM   r<   r;   rD   r[   rW   r¹   r   NzInput X contains NaNr  )rt   rŸ   r  rŒ   rµ   rð   rñ   rŠ   )r+  r	   r`   ra   s       r�   Útest_missing_value_errorsr(  ¸	  sš   € ô 	�‰�1�a˜˜AœrŸv™v r¨2¨r°2´r·v±vÐ>Ð?Ó@×BÑB€AÜ
�‰�!��q‘˜A˜3 ™7Ñ"Ó#€AàÐ#Ù˜QÓˆä	�‰”zÐ)?Ô	@ñ Øˆ�‰��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   rJ   r?   r6   rÁ   r›   rT   )	rc   r±   rî  r²   rt   r  rŠ   r‹   rÜ   )r$   r`   ra   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)ÚargsÚkwargsr`   ra   s       r�   Úmake_friedman1_classificationr0  Ý	  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à   rD   rO   )rY   rZ   ÚnoiserX   FTrV   ræ   ©r]   r§  r…   r•   r   NrD   rÊ   r“   zscore_native_tree=z + z! should be strictly greater than )rî  rt   r‘  r9  r  Úchoicer¨   r   r•   rŠ   r«   r   r   )Ú	make_datar$   r1  rJ  Ú	tolerancerY   rZ   r`   ra   Ú	X_missingr'  ÚX_missing_trainÚX_missing_testr¡   r¢   r”   r»   Únative_treeÚscore_native_treeÚtree_with_imputerÚscore_tree_with_imputers                        r�   Ú!test_missing_values_is_resiliencer?  ã	  sh  € ð( &Ñ€IˆzÙØØØØ'ô	�D€A€qð —‘“€IÜ
�)‰)×
Ñ
Ð 2Ó
3€CÜGIÇvÁv€Iˆc�j‰j˜% ˜¨Q¯W©W¸¸c¸
ˆjÓCÑDÜ7GØ�1Ð#5ô8Ñ4€O�^ W¨fð ˜fÒ$ÜŸ™ × 5Ñ 5°aÑ 8Ó9‰àˆð €IÙ Ð9KÔL€KØ‡O�O�O W¸M€OÔJØ#×)Ñ)¨.¸&ÓAÐä%Ü‹™¨	Ð@RÔSóÐð ×Ñ˜/¨7Ô3Ø/×5Ñ5°nÀfÓMÐà˜yÑ(Ð+BÒBð ØÐÐ
˜c ) ð -Ø#Ð$ð	&óÑBrƒ   zTree, expected_scoreg333333ë?gö(\�Âõà?c                 óH  — t         j                  j                  d«      }d}|j                  |df¬«      }t        j                  t        j
                  |dz  «      t        j                  |dz  «      g«      }|j                  ddg|dd	g¬
«      }|j                  «       j                  t        «      }||    ||<   |j                  |¬«      }	t         j                  |	|<   |	|dd…df<    | |¬«      }
t        |
||d¬«      j                  «       }||k\  sJ d|› d|› �«       ‚y)z@Check the tree learns when only the missing value is predictive.r   rv  r[   r\   rM   FTgffffffî?rQ   r4  Nr;   r…   )ÚcvzExpected CV score: z	 but got )rt   r‘  r9  Ústandard_normalrë  rl   r•   r5  rî  r%  Úboolr  r   r|  )r$   Úexpected_scorerJ  r'  rY   r`   ra   ÚX_random_maskÚy_maskÚX_predictiver	   Útree_cv_scores               r�   Ú test_missing_value_is_predictiverI   
  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à˜Ò'ðFà	˜^Ð,¨I°m°_ÐEó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  rD   rw  FTrV   ræ   r4  rT   NrM   r…   r“   r9   )
rt   r‘  r9  r  r5  r¨   r•   rŠ   r   r‹   )
r6  r$   r'  rY   rZ   r`   ra   r”   Útree_with_swÚtree_samples_removeds
             r�   Útest_sample_weight_non_uniformrM  >
  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Š   rb   r±   r²   rd  re  )Útree1Útree2Úpickle1Úpickle2s       r�   Útest_deterministic_picklerS  [
  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ƒ   r`   r;   rJ   c                 ó”  — |j                  dd«      }t        j                  d«      } | |d¬«      j                  ||«      }t	        |«      j                  |j                  dd«      |«      }|j
                  j                  }t        |dk\  «      sJ |j                  «       «       ‚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
    r?   r9   rJ   r   r›   NrM   rT   )r½  rt   rË   rŠ   r   rõ   rz   rÜ   rž   r   Úflatnonzerors   rx   )r$   r`   r™   ra   r	   Útree_refrz   Ú
leaves_idxs           r�   Ú'test_regression_tree_missing_values_toyrX  h
  s  € ð6 	
�	‰	�"�aÓ€AÜ
�	‰	�!‹€Aá˜)°!Ô4×8Ñ8¸¸AÓ>€DÜ�T‹{�‰˜qŸy™y¨¨QÓ/°Ó3€Hà�z‰z×"Ñ"€HÜˆx˜1‰}ÔÐ-˜xŸ|™|›~Ó-Ðô �D—J‘J×'Ñ'¨¨Ð+¨X¯^©^×-DÑ-DÀRÀaÐ-HÔIô —‘Ø	�‰×	!Ñ	! 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 )	NrD  r  r?   r9   iìÿÿÿr;   rÑ  r   )rt   r‘  r9  rË   r…  r½  r  rå   r   rŠ   rõ   rz   rÜ   )rJ  r'  rY   r`   ra   r	   rz   s          r�   Ú-test_regression_extra_tree_missing_values_toyrZ  –
  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 clasification 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Á   )r9   r8   )r¨   r  NrM   rL   )Únr§  é   r…   )prM   éQ   é'   éa   é[   é&   é.   é   ée   r^  éY   éR   rD  rÁ   éE   é   r_  é   éI   éJ   é3   é/   ék   é   éK   én   r[   r¸   éh   é9   é   r¸   rr  éO   é#   éM   éZ   rn  rd  r^  é^   rb  é   rL   é]   r}  rl  ry  r  r^  rm  ém   rs  é   rD   r|  rt  rj  é\   é4   r[   r~  rL   rL   é   rj  rx  r  r  r³  r�  r   rW   re  éN   r  r  éi   rŠ  r   rl  r  éf   r„  r^  re  r9   ri  rI   é    rr  rz  éj   r{  r¹   é8   rx  rq  é>   éU   r_  r`  éP   rk  é?   rJ   r‹  éT   r<   r<   éL   rƒ  r  r<   rø   iH¼nrÂ   r   r?   r9   rT   )r   Ú	load_irisrt   r‘  r9  rî  rè  r•   rì  r%  rC  r  r   rŸ   r   rŠ   rÜ   rõ   rz   rU  rs   rx   r   )r`   ra   r'  r8  Úmaskr†  r0  r¡   r§   r	   rW  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   r9   rÑ  r  r<   N)r   rŠ   rb   r±   r²   rt   Ú
atleast_1drw  rÞ  Ún_features_in_r5  rl   rõ   rp   Úuint8r    rµ   rð   ÚAssertionErrorr(   r{   ©r	   rb  Úpruned_treeÚleave_in_subtrees       r�   Útest_build_pruned_tree_pyrš  Ó
  sÆ  € ä!¨q¸AÔ>€DØ€D‡H�HŒT�Y‰YœŸ™Ô$ä—‘˜dŸo™oÓ.€IÜ˜T×0Ñ0°)¸T¿_¹_ÓM€Kô —x‘x §
¡
× 5Ñ 5¼R¿X¹XÔFÐØÐ�QÑÜ˜+ t§z¡zÐ3CÔDà�:‰:× Ñ  AÒ%Ð%Ð%Ø×!Ñ! QÒ&Ð&Ð&Ü	�‰”~Ó	&ñ @Ü˜4Ÿ:™:×+Ñ+¨[×->Ñ->Ô?÷@ä�t—z‘z×'Ñ'¨Ñ*¨K×,=Ñ,=¸aÑ,@ÔAô ˜T×0Ñ0°)¸T¿_¹_ÓM€KÜ—x‘x §
¡
× 5Ñ 5¼R¿X¹XÔFÐØÐ�Q�RÐô ˜+ t§z¡zÐ3CÔDØ�:‰:× Ñ  AÒ%Ð%Ð%Ø×!Ñ! QÒ&Ð>¨×(>Ñ(>Ó>Ð&Ü�t—z‘z×'Ñ'¨×):Ñ):Õ;÷@ñ @ús   Ä+IÉI c                  ó  — t        dd¬«      }  | j                  t        j                  t        j                  «       t        j                  | j                  «      }t        | j                  || j                  «      }t        j                  | j                  j                  t
        j                  ¬«      }d|d<   t        j                   t"        d¬«      5  t%        || j                  |«       ddd«       y# 1 sw Y   yxY w)z8Test pruning a tree does not result in an infinite loop.r   r9   rÑ  r  z,Node has reached a leaf in the original treer  N)r   rŠ   rb   r±   r²   rt   r“  rw  rÞ  r”  r5  rl   rõ   rp   r•  rµ   rð   rñ   r    r—  s       r�   Ú$test_build_pruned_tree_infinite_looprœ  ò
  s¼   € ô "¨q¸AÔ>€DØ€D‡H�HŒT�Y‰YœŸ™Ô$Ü—‘˜dŸo™oÓ.€IÜ˜T×0Ñ0°)¸T¿_¹_ÓM€Kô —x‘x §
¡
× 5Ñ 5¼R¿X¹XÔFÐØÐ�QÑÜ	�‰ÜÐHô
ñ Iô 	˜k¨4¯:©:Ð7GÔH÷I÷ Iñ Iús   ÃC7Ã7D c                  ó:  — t         j                  j                  d«      } | j                  ddd¬«      j	                  t         j
                  «      }t        j                  |gdz  «      }t        j                  d«      }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.
    rr  rT   g      $@rD   )ÚlocÚscaler]   r;   rŠ  )2r   é(   rW   r[   rD   é   r`  é   é1   r  é-   r¸   rx  r;   é   rI   re  é)   r9   é   é   r  rM   rÁ   r†  r|  r^  r�  r<   é!   rJ   é$   rd  rk  rv  r8   r,  r  é"   é,   rj  ro  r³  é%   rq  rL   rc  é0   r‚  é   N)
rt   r‘  Údefault_rngÚnormalr%  r&  rë  rË   r   r(   )r'  ÚsomeÚfeature_valuesrð  Úexpected_sampless        r�   Útest_sort_log2_buildrµ    s}   € ô �)‰)×
Ñ
 Ó
#€CØ�:‰:˜# T°ˆ:Ó3×:Ñ:¼2¿:¹:ÓF€DÜ—^‘^ T F¨Q¡JÓ/€NÜ�i‰i˜‹m€GÜˆ^˜W bÔ)òÐô �wÐ 0Õ1rƒ   rÿ  )îÚ__doc__rî  r¡  rž  rd  r’  rÉ  Ú	itertoolsr   r   r½  Únumpyrt   rµ   Újoblib.numpy_pickler   Únumpy.testingr   Úsklearnr   r   r	   Úsklearn.dummyr
   Úsklearn.exceptionsr   Úsklearn.imputer   Úsklearn.metricsr   r   r   Úsklearn.model_selectionr   r   Úsklearn.pipeliner   Úsklearn.random_projectionr   Úsklearn.treer   r   r   r   Úsklearn.tree._classesr   r   r   r   Úsklearn.tree._partitionerr   Úsklearn.tree._treer   r   r   r    r!   r"   r#   r$   rÞ  Úsklearn.utilsr%   Úsklearn.utils._testingr&   r'   r(   r)   r*   r+   Úsklearn.utils.fixesr,   r-   r.   r/   Úsklearn.utils.validationr0   r°   ÚREG_CRITERIONSrˆ   rÍ   Údictr7   Ú__annotations__ÚupdateÚSPARSE_TREESrŸ   r  r  Úy_small_regr`   ra   rŒ   r�   r�  rb   r‘  r9  r'  ré  r²   r]   Úpermr±   Úload_diabetesrc   Úload_digitsrd   rX   Úmake_multilabel_classificationr  r  r�  ÚX_sparse_posr�  Úy_randomrí  ÚX_sparse_mixrl   r$  r‚   r‘   r˜   ÚmarkÚparametrizerË  r¤   r®   r³   r‰   r·   r¿   rÈ   rÏ   rÓ   rÞ   rî   ró   rö   rþ   r  r  r   r0  r5  r:  r=  r@  rB  r^  rn  ru  rz  r€  rˆ  r�  r–  rž  r¡  r¨  r«  r¯  r±  r·  rº  r¾  rÄ  rÏ  rÚ  rÞ  Úsortedr;  Úintersectionrà  râ  rÊ  rå  rX  rú  rý  r   r  r
  r  r  r  r  r&  r7  rC  r  rP  rR  rV  rL  rU  rk  rm  rH  rt  rŽ  r”  r­  r¾  rÑ  rÕ  rÛ  rá  rå  rì  rñ  rö  rü  r  r  r  r  r  r"  r$  r&  r(  r*  r0  r-  r?  rI  rs  ré   rM  rS  r  rX  rZ  r‘  rš  rœ  rµ  )r	   s   0r�   ú<module>rÜ     s†  ðòó Û Û 	Û Û 	Û ß $ã Û Û Ý ,Ý )ç )Ñ )Ý (Ý -Ý (ß UÑ Uß EÝ *Ý ;÷ó ÷ó õ /÷÷ ñ õ 2Ý /÷÷ ÷ó õ 8à%€Ø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ñJó 6ó :ðJð Ø‡�×Ñ˜ y§¢Ó'8Ó9Ø‡�×ÑØ,à	˜"Ð0°"Ð5Ø	˜2Ð1°2Ð6Ø	˜Ð/°Ð4Ø	�BÐ-¨rÐ2ð	óñóó :ó ðò
ò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9%òx=ò(	Eò*8òZ1òh3ð0 ‡�×Ñ˜ Ó+ñ,Nó ,ð,Nð^ ‡�×Ñ˜ Ó+ñ	ó ,ð	ò+ò$òKò$(ò-ò?ò"!òòó*&ð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ò?ð ‡�×Ñ˜ Ó+ñ,ó ,ð,ð: ‡�×Ñ˜ Ó+Ø‡�×Ñ˜¨.Ó9ñ0ó :ó ,ð0òa?òH+ð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ñFó XðFð: ‡�×ÑØà	×	!Ò	!Ð#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ð:òB(ò,:ò^<ò>Ió$2ùòs* FùâDs   Ý	~Ý~Ý6	~Þ ~