§
    rŠtj¥ ã                   ó%  — U d Z ddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
 ddlZddlZddlZddlmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< ddl5m=Z> ddl?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZFmGZGmHZH ddlImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQ dZRdZSe*e,dœZTe+e-dœZU eV¦   «         ZWeVeXd<   eW Y                    eT¦  «         eW Y                    eU¦  «         g d¢ZZ ej[        g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d2¢g d3¢g d4¢g¦  «        Z\g d5¢Z]g d6¢Z^d7d8gd8d8gd8d7gd9d9gd9d:gd:d9ggZ_g d;¢Z`d8d8gd:d:gd<d:ggZag d=¢Zb ejc        ¦   «         Zdeje         f                    d9¦  «        Zgeg h                    edji        jj        ¦  «        Zkedjl        ek         ed_l        edji        ek         ed_i         ejm        ¦   «         Zneg h                    enji        jj        ¦  «        Zkenjl        ek         en_l        enji        ek         en_i         ejo        ¦   «         Zpeg h                    epji        jj        ¦  «        Zkepjl        ek         ep_l        epji        ek         ep_i         eQd¦  «        Zq ejr        dd>d?¬@¦  «        \  ZsZteq u                    dA¬B¦  «        ZvdCevevdDk    <   eq w                    ddEdF¬B¦  «        Zx e(dGd?dHd¬I¦  «         y                    ¦   «         Zzedjl        edji        dJœenjl        enji        dJœepjl        epji        dJœe_e`dJœe\e]dJœe\e^dJœesetdJœevexdJœev exdJœezexdJœ ej{        dK¦  «        exdJœdLœZ|dM„ Z}dN„ Z~dO„ Zej€         �                    dP¦  «        ej€         ‚                    dQeU ƒ                    ¦   «         ¦  «        ej€         ‚                    dReS¦  «        dS„ ¦   «         ¦   «         ¦   «         Z„dT„ Z…dU„ Z†ej€         �                    dP¦  «        ej€         ‚                    dVeU ‡                    ¦   «         ¦  «        ej€         ‚                    dReS¦  «        dW„ ¦   «         ¦   «         ¦   «         Zˆej€         �                    dP¦  «        ej€         ‚                    dQeU ƒ                    ¦   «         ¦  «        ej€         ‚                    dXdYe!fdZefd[e!fd\e fg¦  «        d]„ ¦   «         ¦   «         ¦   «         Z‰d^„ ZŠd_„ Z‹d`„ ZŒda„ Z�db„ ZŽdc„ Z�dd„ Z�de„ Z‘df„ Z’dg„ Z“dh„ Z”dódi„Z•ej€         ‚                    djeW¦  «        dk„ ¦   «         Z–ej€         ‚                    djeZ¦  «        ej€         ‚                    dleL¦  «        dm„ ¦   «         ¦   «         Z—	 dódn„Z˜ej€         ‚                    djeW¦  «        do„ ¦   «         Z™ej€         ‚                    djeZ¦  «        ej€         ‚                    dleL¦  «        dp„ ¦   «         ¦   «         Zšej€         �                    dP¦  «        ej€         ‚                    dqg  e
eU ƒ                    ¦   «         eS¦  «        ¢ e
eT ƒ                    ¦   «         eR¦  «        ¢¦  «        dr„ ¦   «         ¦   «         Z›ds„ Zœej€         �                    dP¦  «        ej€         ‚                    dtg  e
eU ƒ                    ¦   «         eS¦  «        ¢ e
eT ƒ                    ¦   «         eR¦  «        ¢¦  «        du„ ¦   «         ¦   «         Z�dv„ Zždw„ ZŸdx„ Z dy„ Z¡dz„ Z¢ej€         ‚                    djeT¦  «        d{„ ¦   «         Z£ej€         ‚                    djeT¦  «        d|„ ¦   «         Z¤d}„ Z¥d~„ Z¦d„ Z§d€„ Z¨ej€         ‚                    d�eW ƒ                    ¦   «         ¦  «        d‚„ ¦   «         Z©dƒ„ Zªd„„ Z«d…„ Z¬d†„ Z­d‡„ Z®dódˆ„Z¯ej€         ‚                    d‰eZ¦  «        ej€         ‚                    dŠd‹¦  «        dŒ„ ¦   «         ¦   «         Z°ej€         ‚                    d‰ e± e²eZ¦  «         ³                    eU¦  «        ¦  «        ¦  «        ej€         ‚                    dŠd�dŽg¦  «        d�„ ¦   «         ¦   «         Z´ej€         ‚                    d‰eZ¦  «        ej€         ‚                    dŠg d�¢¦  «        ej€         ‚                    dleL¦  «        d‘„ ¦   «         ¦   «         ¦   «         Zµej€         �                    dP¦  «        ej€         ‚                    d’ e¶ e
d“„ eZD ¦   «         eS¦  «        ¦  «         e¶ e
d”„ eZD ¦   «         eR¦  «        ¦  «        z   ¦  «        ej€         ‚                    dŠg d�¢¦  «        ej€         ‚                    dleL¦  «        d•„ ¦   «         ¦   «         ¦   «         ¦   «         Z·ej€         ‚                    d‰eZ¦  «        ej€         ‚                    d– e¸eLeM¦  «        ¦  «        d—„ ¦   «         ¦   «         Z¹d˜„ Zºej€         ‚                    djeW¦  «        d™„ ¦   «         Z»ej€         ‚                    djeW¦  «        ej€         ‚                    dšdgeLz   ¦  «        d›„ ¦   «         ¦   «         Z¼ej€         ‚                    djeW¦  «        dœ„ ¦   «         Z½ej€         ‚                    djeZ¦  «        ej€         ‚                    d�eM¦  «        dž„ ¦   «         ¦   «         Z¾dŸ„ Z¿ej€         ‚                    djeW¦  «        d „ ¦   «         ZÀej€         ‚                    djeW¦  «        ej€         ‚                    d�eM¦  «        d¡„ ¦   «         ¦   «         ZÁd¢„ ZÂd£„ ZÃej€         ‚                    dšdgeLz   ¦  «        d¤„ ¦   «         ZÄej€         ‚                    dŠ e± e²e| Å                    ¦   «         ¦  «        dŽd�hz
  ¦  «        ¦  «        ej€         ‚                    d�e*e,g¦  «        d¥„ ¦   «         ¦   «         ZÆej€         ‚                    dŠe| Å                    ¦   «         ¦  «        ej€         ‚                    d�e+e-g¦  «        d¦„ ¦   «         ¦   «         ZÇd§„ ZÈd¨„ ZÉd©„ ZÊej€         ‚                    djeW¦  «        ej€         ‚                    dªd«d¬g¦  «        ej€         ‚                    dšdgeLz   eMz   ¦  «        d­„ ¦   «         ¦   «         ¦   «         ZËej€         �                    dP¦  «        ej€         ‚                    dRg d®¢¦  «        ej€         ‚                    dQeU ƒ                    ¦   «         ¦  «        d¯„ ¦   «         ¦   «         ¦   «         ZÌej€         ‚                    d° eÍd<¦  «        ¦  «        d±„ ¦   «         ZÎd²„ ZÏej€         ‚                    dQe*e,g¦  «        ej€         ‚                    d³d:dEg¦  «        d´„ ¦   «         ¦   «         ZÐdµ„ ZÑd¶„ ZÒd·„ ZÓd¸„ ZÔd¹„ ZÕdº„ ZÖd»„ Z×d¼„ ZØd½„ ZÙd¾„ ZÚej€         ‚                    d¿ e e1jƒ        ¦   «          e2jƒ        ¦   «         ¦  «        ¦  «        dÀ„ ¦   «         ZÛdÁ„ ZÜej€         ‚                    dQeW ƒ                    ¦   «         ¦  «        dÂ„ ¦   «         ZÝej€         �                    dP¦  «        ej€         ‚                    dReS¦  «        dÃ„ ¦   «         ¦   «         ZÞej€         �                    dP¦  «        ej€         ‚                    d° eÍd<¦  «        ¦  «        ej€         ‚                    dReS¦  «        dÄ„ ¦   «         ¦   «         ¦   «         Zßej€         ‚                    dRdÅdÆg¦  «        dÇ„ ¦   «         Zàej€         ‚                    dRdÅdÆg¦  «        dÈ„ ¦   «         Záej€         ‚                    dRdÅdÆg¦  «        dÉ„ ¦   «         Zâej€         ‚                    dRdÅdÆg¦  «        dÊ„ ¦   «         Zãej€         ‚                    dšeM¦  «        ej€         ‚                    dË e+¦   «          e-¦   «         g¦  «        dÌ„ ¦   «         ¦   «         Zäej€         ‚                    dQeU ƒ                    ¦   «         ¦  «        dÍ„ ¦   «         ZådÎ„ Zæej€         ‚                    dÏejç        e+dfejç        e-dÐfeæe*dÑfeæe,dÒfg¦  «        ej€         ‚                    dÓddÔg¦  «        dÕ„ ¦   «         ¦   «         Zèej€         ‚                    dÖ e¸eT ƒ                    ¦   «         d×dØg¦  «        ¦  «        dÙ„ ¦   «         Zéej€         ‚                    dÚejê        e+fejë        e*fg¦  «        dÛ„ ¦   «         ZìdÜ„ Zíej€         �                    dP¦  «        ej€         ‚                    dQe+e-g¦  «        ej€         ‚                    dÝ ej[        ejî        d:ejî        dEdÞdßg¦  «         ej[        ejî        ejî        d<dEdÞdßg¦  «         ej[        d9d:d<dEejî        ejî        g¦  «         ej[        d9d:d<ejî        dßejî        g¦  «        g¦  «        ej€         ‚                    dReS¦  «        dà„ ¦   «         ¦   «         ¦   «         ¦   «         Zïdá„ Zðdâ„ Zñdã„ Zòdä„ Zódå„ Zôdæ„ Zõdç„ Zödè„ Z÷dé„ Zøej€         ‚                    dê ej[        ejî        gdCgdëgdìgg¦  «         ej[        g dí¢¦  «        f ej[        ejî        gdëgejî        gg¦  «         ej[        g dî¢¦  «        fgdïdðg¬ñ¦  «        dò„ ¦   «         ZùdS )ôz-
Testing for the tree module (sklearn.tree).
é    N)ÚchainÚpairwiseÚproduct)ÚNumpyPickler)Úassert_allclose)ÚcloneÚdatasetsÚtree)ÚDummyRegressor)ÚNotFittedError)ÚSimpleImputer)Úaccuracy_scoreÚmean_absolute_errorÚmean_poisson_devianceÚmean_squared_error)Úcross_val_scoreÚtrain_test_split)Úmake_pipeline)Ú_sparse_random_matrix)ÚDecisionTreeClassifierÚDecisionTreeRegressorÚExtraTreeClassifierÚExtraTreeRegressor)ÚCRITERIA_CLFÚCRITERIA_REGÚDENSE_SPLITTERSÚSPARSE_SPLITTERS)Ú_py_precompute_absolute_errors)Ú
NODE_DTYPEÚ	TREE_LEAFÚTREE_UNDEFINEDÚ_build_pruned_tree_pyÚ_check_n_classesÚ_check_node_ndarrayÚ_check_value_ndarray)ÚTree)Úcompute_sample_weight)Úxpx)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚcreate_memmap_backed_dataÚignore_warnings)Ú	_IS_32BITÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERS©Ú_weighted_percentile)Úcheck_random_state)ÚginiÚlog_loss)Úsquared_errorÚabsolute_errorÚfriedman_mseÚpoisson)r   r   )r   r   Ú	ALL_TREES)r   r   é   r   r   r   é   iòÿÿÿr   éüÿÿÿr   r   r   r   )r   r   é   é   r   r>   r   r   r=   éûÿÿÿçš™™™™™É?r   r<   r=   )éÿÿÿÿrC   r   r   ç      Àr   r   çÍÌÌÌÌÌ @r=   r   r   rD   r   r=   )rC   rC   r   g333333ó¿r   r   r   r   r   r   rB   r   r   r=   )rC   rC   r   r   r   r   r   r@   r   r   r   r   r   r=   )rC   éþÿÿÿr   r<   éýÿÿÿé
   r<   r   çš™™™™™	Àr   r<   r@   r>   r=   )çáz®Gá @r   éúÿÿÿç      à¿r   é   r   r   rI   é   ç      à?r   rG   r=   )rJ   r   rK   rL   r   rM   r   r   rI   rN   r   r   rF   r=   )rJ   é   rK   rL   r   rM   r   r   rI   rN   r   r   rF   r=   )rJ   rP   rK   rL   r   rM   r   r   rI   rN   rO   r   rC   r   )é   rP   r?   r=   rO   r>   rH   r   r=   rA   r@   r   rQ   r   )rQ   r   r=   r=   r=   rC   r=   r   r   rF   r@   r   r=   r   )rQ   r   r=   rQ   r@   rC   rH   rQ   r   rC   r=   rQ   rQ   r   )r=   r=   r   rQ   rQ   rC   r=   rQ   r   rA   r=   rQ   r@   r   )r@   r=   r   r@   r   r>   rH   r   r=   rA   r@   r   r@   r=   )rJ   rP   rK   rL   r   r=   r   r   rI   rN   rO   r   rG   r=   )rJ   rP   rK   rL   r   r=   r   r   rI   rN   ç      ø?r=   rC   rC   )rJ   rP   rK   rL   r   rH   r   r   rI   rN   rO   r   rC   rC   )rQ   r   r?   r=   rO   rF   rH   r   r=   rA   r@   r=   r   rC   )rQ   r   r=   r=   r=   rF   r=   r   r   rF   r   r   r   r=   )rQ   r=   r=   r=   rQ   rC   rH   rQ   r   rC   r   rQ   r=   r=   )r=   r=   r   r   r=   rG   r=   rQ   r   rA   r=   rQ   r=   r=   )r@   r=   r   r=   r   r>   r=   r   r=   rF   r   r   r=   r   )r=   r=   r   r   r   r   r=   r=   r=   r=   r=   r=   r   r   r   r=   r   r   r=   r   r   r   r   )ç      ð?rE   ç333333ó?çš™™™™™©?rH   g333333@çÍÌÌÌÌÌ@g)\�Âõ(ð?ç{®Gáz„?g×£p=
×@rV   gš™™™™™ñ?ç        rT   rQ   rM   r   r   ç      @gî|?5^ºÉ?gö(\�Âõð?çÍÌÌÌÌÌì?r   rF   rC   r=   rQ   )rC   rC   rC   r=   r=   r=   r@   )rC   r=   r=   é   rH   )Úrandom_stateÚ	n_samplesÚ
n_features)é   r?   ©ÚsizerX   gš™™™™™é?r<   )r_   r_   ç      Ð?)Údensityr\   ©ÚXÚy)r_   r@   )ÚirisÚdiabetesÚdigitsÚtoyÚ	clf_smallÚ	reg_smallÚ
multilabelú
sparse-posú
sparse-negú
sparse-mixÚzerosc                 ó4  — |j         | j         k    s)J d                     ||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
                             ¦   «         |dz   ¦  «         t          | j
        |j
        |dz   ¦  «         t          | j        |j        |dz   ¬	¦  «         t          | j        |         |j        |         |d
z   ¬	¦  «         d S )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/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/tree/tests/test_tree.pyÚassert_tree_equalr‡   Î   sÈ  € ØŒ<˜1œ<Ò'Ð'Ð'Ø2×9Ò9Ø�Q”\ 1¤<ñ	
ô 	
ñ (Ô'Ð'õ Ø	Ô˜!Ô*¨GÐ6PÑ,Pñô ð õ Ø	Œ˜œ¨'Ð4MÑ*Mñô ð ð Ô¥9Ò,€HÝŒ~˜hÑ'Ô'€HåØ	Œ	�(Ô˜QœY xÔ0°'Ð<PÑ2Pñô ð õ Ø	Œ�HÔ˜qœ{¨8Ô4°gÐ@UÑ6Uñô ð õ Ø	Ô×ÒÑÔØ	Ô×ÒÑÔØÐ1Ñ1ñô ð õ
 Ø	Ô˜!Ô*¨GÐ6PÑ,Pñô ð õ ˜œ
 A¤J¸ÐBVÑ8VÐWÑWÔWÐWåØ	Œ�Ô˜1œ7 8Ô,°gÐ@QÑ6Qðñ ô ð ð ð ó    c                  óú  — t                                ¦   «         D ]à\  } } |d¬¦  «        }|                     t          t          ¦  «         t          |                     t          ¦  «        t          d 	                    | ¦  «        ¦  «          |dd¬¦  «        }|                     t          t          ¦  «         t          |                     t          ¦  «        t          d 	                    | ¦  «        ¦  «         Œád S )Nr   ©r\   úFailed with {0}r=   )Úmax_featuresr\   )
Ú	CLF_TREESÚitemsÚfitre   rf   r+   ÚpredictÚTÚtrue_resultrv   ©Únamer&   Úclfs      r†   Útest_classification_toyr–   õ   sÐ   € å—o’oÑ'Ô'ð Xð X‰
ˆˆdØˆd Ð"Ñ"Ô"ˆØ�Š••1‰ŒˆÝ˜3Ÿ;š;¥q™>œ>­;Ð8I×8PÒ8PÐQUÑ8VÔ8VÑWÔWÐWàˆd °Ð2Ñ2Ô2ˆØ�Š••1‰ŒˆÝ˜3Ÿ;š;¥q™>œ>­;Ð8I×8PÒ8PÐQUÑ8VÔ8VÑWÔWÐWÐWðXð Xrˆ   c            
      ó~  — t                                ¦   «         D �]!\  } } |d¬¦  «        }|                     t          t          t          j        t          t          ¦  «        ¦  «        ¬¦  «         t          | 	                    t          ¦  «        t          d                     | ¦  «        ¦  «         |                     t          t          t          j        t          t          ¦  «        d¦  «        ¬¦  «         t          | 	                    t          ¦  «        t          d                     | ¦  «        ¦  «         �Œ#d S )Nr   rŠ   ©Úsample_weightr‹   rO   )r�   rŽ   r�   re   rf   ry   ÚonesÚlenr+   r�   r‘   r’   rv   Úfullr“   s      r†   Ú test_weighted_classification_toyr�     sê   € å—o’oÑ'Ô'ð Xñ X‰
ˆˆdØˆd Ð"Ñ"Ô"ˆà�Š••1¥B¤G­Cµ©F¬F¡O¤OˆÑ4Ô4Ð4Ý˜3Ÿ;š;¥q™>œ>­;Ð8I×8PÒ8PÐQUÑ8VÔ8VÑWÔWÐWà�Š••1¥B¤G­Cµ©F¬F°CÑ$8Ô$8ˆÑ9Ô9Ð9Ý˜3Ÿ;š;¥q™>œ>­;Ð8I×8PÒ8PÐQUÑ8VÔ8VÑWÔWÐWÑWðXð Xrˆ   z%ignore:.*friedman_mse.*:FutureWarningr&   Ú	criterionc                 ó>  — |dk    rgt          j        t          j        t          ¦  «        ¦  «        dz   }t          j        t          ¦  «        |z   }t          j        t
          ¦  «        |z   }nt          }t
          } | |d¬¦  «        }|                     t          |¦  «         t          | 	                    t          ¦  «        |¦  «          | |dd¬¦  «        }|                     t          |¦  «         t          | 	                    t          ¦  «        |¦  «         d S )Nr:   r=   ©rž   r\   ©rž   rŒ   r\   )ry   ÚabsÚminrf   Úarrayr’   r�   re   r   r�   r‘   )r&   rž   ÚaÚy_trainÚy_testÚregr•   s          r†   Útest_regression_toyr©     sê   € ð
 �IÒÐõ ŒF•2”6�!‘9”9ÑÔ Ñ!ˆÝ”(�1‘+”+ ‘/ˆÝ”�+Ñ&Ô&¨Ñ*ˆˆåˆÝˆà
ˆ$˜°Ð
3Ñ
3Ô
3€CØ‡G‚G�AˆwÑÔÐÝ�C—K’K¥‘N”N FÑ+Ô+Ð+à
ˆ$˜°ÀÐ
CÑ
CÔ
C€CØ‡G‚G�AˆwÑÔÐÝ�C—K’K¥‘N”N FÑ+Ô+Ð+Ð+Ð+rˆ   c                  óÜ  — t          j        d¦  «        } d| d d…d d…f<   d| dd …dd …f<   t          j        | j        ¦  «        \  }}t          j        |                     ¦   «         |                     ¦   «         g¦  «        j        }|                      ¦   «         } t                               ¦   «         D ]¸\  }} |d¬¦  «        }| 	                    || ¦  «         | 
                    || ¦  «        dk    sJ d                     |¦  «        ¦   «         ‚ |dd¬¦  «        }| 	                    || ¦  «         | 
                    || ¦  «        dk    sJ d                     |¦  «        ¦   «         ‚Œ¹d S )	N)rH   rH   r=   r?   r   rŠ   rS   r‹   ©r\   rŒ   )ry   rq   ÚindicesÚshapeÚvstackÚravelr‘   r�   rŽ   r�   Úscorerv   )rf   ÚgridxÚgridyre   r”   r&   r•   s          r†   Útest_xorr³   &  sb  € å
Œ�ÑÔ€AØ€A€b€q€bˆ"ˆ1ˆ"€f�IØ€A€a€b€bˆ!ˆ"ˆ"€f�Iå”:˜aœgÑ&Ô&�L€Eˆ5å
Œ	�5—;’;‘=”= %§+¢+¡-¤-Ð0Ñ1Ô1Ô3€AØ	�Š‰	Œ	€Aå—o’oÑ'Ô'ð Fð F‰
ˆˆdØˆd Ð"Ñ"Ô"ˆØ�Š��1‰ŒˆØ�yŠy˜˜A‰Œ #Ò%Ð%Ð%Ð'8×'?Ò'?ÀÑ'EÔ'EÑ%Ô%Ð%àˆd °Ð2Ñ2Ô2ˆØ�Š��1‰ŒˆØ�yŠy˜˜A‰Œ #Ò%Ð%Ð%Ð'8×'?Ò'?ÀÑ'EÔ'EÑ%Ô%Ð%Ð%ðFð Frˆ   c                  óÂ  — t          t                               ¦   «         t          ¦  «        D �]0\  \  } }} ||d¬¦  «        }|                     t
          j        t
          j        ¦  «         t          | 	                    t
          j        ¦  «        t
          j        ¦  «        }|dk    sJ d 
                    | ||¦  «        ¦   «         ‚ ||dd¬¦  «        }|                     t
          j        t
          j        ¦  «         t          | 	                    t
          j        ¦  «        t
          j        ¦  «        }|dk    sJ d 
                    | ||¦  «        ¦   «         ‚�Œ2d S )Nr   r    rZ   z0Failed with {0}, criterion = {1} and score = {2}rQ   r¡   rO   )r   r�   rŽ   ÚCLF_CRITERIONSr�   rg   ÚdataÚtargetr   r�   rv   )r”   r&   rž   r•   r°   s        r†   Ú	test_irisr¸   ;  s*  € å#*­9¯?ª?Ñ+<Ô+<½nÑ#MÔ#Mð 
ñ 
Ñ‰ˆˆt�iØˆd˜Y°QÐ7Ñ7Ô7ˆØ�Š•”	�4œ;Ñ'Ô'Ð'Ý˜sŸ{š{­4¬9Ñ5Ô5µt´{ÑCÔCˆØ�sŠ{ˆ{ˆ{ÐN×UÒUØ�)˜Uñ
ô 
‰{Œ{ˆ{ð ˆd˜Y°QÀQÐGÑGÔGˆØ�Š•”	�4œ;Ñ'Ô'Ð'Ý˜sŸ{š{­4¬9Ñ5Ô5µt´{ÑCÔCˆØ�sŠ{ˆ{ˆ{ÐN×UÒUØ�)˜Uñ
ô 
‰{Œ{ˆ{‰{ð
ð 
rˆ   z
name, Treec                 ó8  —  ||d¬¦  «        }|                      t          j        t          j        ¦  «         t	          t          j        |                     t          j        ¦  «        ¦  «        }|t          j        d¦  «        k    sJ d| › d|› d|› �¦   «         ‚d S )Nr   r    zFailed with z, criterion = z and score = )r�   rh   r¶   r·   r   r�   ÚpytestÚapprox)r”   r&   rž   r¨   r°   s        r†   Útest_diabetes_overfitr¼   N  s“   € ð ˆ$˜°Ð
3Ñ
3Ô
3€CØ‡G‚G�HŒM�8œ?Ñ+Ô+Ð+Ý�xœ°·²½H¼MÑ0JÔ0JÑKÔK€EØ•F”M !Ñ$Ô$Ò$Ð$Ð$ØJ�tÐJÐJ¨9ÐJÐJÀ5ÐJÐJñ %Ô$Ð$Ð$Ð$rˆ   zcriterion, metricr7   r8   r9   r:   c           	      ó  — t          |d|¬¦  «        }t          j        t          j        }} || | di |¤ddi¤Ž                     ||¦  «                             |¦  «        ¦  «        } || | di |¤ddi¤Ž                     ||¦  «                             |¦  «        ¦  «        } || | di |¤ddi¤Ž                     ||¦  «                             |¦  «        ¦  «        }	d|	cxk     r|cxk     r|k     sn J |	||f¦   «         ‚d S )	NrN   r¡   Ú	max_depthr=   r<   é   r   © )Údictrh   r¶   r·   r�   r�   )
r&   rž   ÚmetricÚglobal_random_seedÚkwargsre   rf   Úloss1Úloss4Úloss7s
             r†   Útest_diabetes_underfitrÈ   ]  sN  € õ ˜I°AÐDVÐWÑWÔW€FÝŒ=�(œ/€q€AØˆF�1�d�dÐ1Ð1˜VÐ1Ð1¨qÐ1Ð1Ð1×5Ò5°a¸Ñ;Ô;×CÒCÀAÑFÔFÑGÔG€EØˆF�1�d�dÐ1Ð1˜VÐ1Ð1¨qÐ1Ð1Ð1×5Ò5°a¸Ñ;Ô;×CÒCÀAÑFÔFÑGÔG€EØˆF�1�d�dÐ1Ð1˜VÐ1Ð1¨qÐ1Ð1Ð1×5Ò5°a¸Ñ;Ô;×CÒCÀAÑFÔFÑGÔG€Eð ˆuÐ$Ð$Ò$Ð$�uÐ$Ð$Ò$Ð$˜uÒ$Ð$Ð$Ð$Ð$ u¨e°UÐ&;Ñ$Ô$Ð$Ð$Ð$rˆ   c            	      óB  — t                                ¦   «         D �]ƒ\  } } |ddd¬¦  «        }|                     t          j        t          j        ¦  «         |                     t          j        ¦  «        }t          t          j	        |d¦  «        t          j
        t          j        j        d         ¦  «        d                     | ¦  «        ¬¦  «         t          t          j        |d¦  «        |                     t          j        ¦  «        d                     | ¦  «        ¬¦  «         t!          |                     t          j        ¦  «        t          j        |                     t          j        ¦  «        ¦  «        dd                     | ¦  «        ¬¦  «         �Œ…d S )Nr=   é*   ©r¾   rŒ   r\   r   r‹   rs   rP   )r�   rŽ   r�   rg   r¶   r·   Úpredict_probar*   ry   r~   rš   r­   rv   r+   Úargmaxr�   r)   ÚexpÚpredict_log_proba)r”   r&   r•   Úprob_predicts       r†   Útest_probabilityrÑ   u  sg  € õ  —o’oÑ'Ô'ð 
ñ 
‰
ˆˆdØˆd˜Q¨Q¸RÐ@Ñ@Ô@ˆØ�Š•”	�4œ;Ñ'Ô'Ð'à×(Ò(­¬Ñ3Ô3ˆÝ!ÝŒF�< Ñ#Ô#ÝŒG•D”I”O AÔ&Ñ'Ô'Ø%×,Ò,¨TÑ2Ô2ð	
ñ 	
ô 	
ð 	
õ
 	ÝŒI�l AÑ&Ô&Ø�KŠK�œ	Ñ"Ô"Ø%×,Ò,¨TÑ2Ô2ð	
ñ 	
ô 	
ð 	
õ
 	Ø×Ò�dœiÑ(Ô(ÝŒF�3×(Ò(­¬Ñ3Ô3Ñ4Ô4ØØ%×,Ò,¨TÑ2Ô2ð		
ñ 	
ô 	
ð 	
ñ 	
ð
ð 
rˆ   c                  ó  — t          j        d¦  «        d d …t           j        f         } t          j        d¦  «        }t                               ¦   «         D ](\  }} |d d¬¦  «        }|                     | |¦  «         Œ)d S )Ni'  r   ©r¾   r\   )ry   ÚarangeÚnewaxisÚ	REG_TREESrŽ   r�   ©re   rf   r”   r&   r¨   s        r†   Útest_arrayreprrØ   �  s   € õ 	Œ	�%ÑÔ˜˜˜�BœJ˜Ô'€AÝ
Œ	�%ÑÔ€Aå—o’oÑ'Ô'ð ð ‰
ˆˆdØˆd˜T°Ð2Ñ2Ô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                                ¦   «         D ]_\  }} |d¬¦  «        }|                     | |¦  «         t          |                     | ¦  «        |d                     |¦  «        ¬	¦  «         Œ`t                               ¦   «         D ]_\  }} |d¬¦  «        }|                     | |¦  «         t          |                     | ¦  «        |d                     |¦  «        ¬	¦  «         Œ`d S )
NrF   rC   r=   rQ   )r=   r=   r=   r=   r=   r=   r   rŠ   r‹   rs   )r�   rŽ   r�   r+   r�   rv   rÖ   r)   )re   rf   r”   ÚTreeClassifierr•   ÚTreeRegressorr¨   s          r†   Útest_pure_setrÜ   š  s,  € à
ˆbˆ�B˜�8˜b "˜X¨¨1 v°°1¨v¸¸1°vÐ>€AØÐÐ€Aå )§¢Ñ 1Ô 1ð Vð VÑˆˆnØˆn¨!Ð,Ñ,Ô,ˆØ�Š��1‰ŒˆÝ˜3Ÿ;š; q™>œ>¨1Ð6G×6NÒ6NÈtÑ6TÔ6TÐUÑUÔUÐUÐUå(ŸšÑ0Ô0ð Wð WÑˆˆmØˆm¨Ð+Ñ+Ô+ˆØ�Š��1‰ŒˆÝ˜CŸKšK¨™NœN¨AÐ7H×7OÒ7OÐPTÑ7UÔ7UÐVÑVÔVÐVÐVðWð 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                               ¦   «         D ]m\  }} |d¬¦  «        }|                     | |¦  «         |                     | | ¦  «         |                     |  |¦  «         |                     |  | ¦  «         Œn	 d d d ¦  «         d S # 1 swxY w Y   d S )N)gsþ_—c@çdÀ	�a@ç±› `8`@çëÆý?õüc@)gŒÁý_9Ða@gþ 8ú`@g-Výßu]@g    @Xd@)gSW jÒ_@rÞ   rß   rà   )gÓ Ù‹`@ç4Tÿÿ÷a@ç	£þlKa@çÁ{ýÿ»c@)gç|@�ÆY@g~G`÷a@gwIÿ?lKa@g/"þ»c@)gƒ÷úÿ�í_@rá   râ   rã   )g®û¿‘:^@rÞ   rß   rà   )rS   g¿½A‹wæ?gtúQ?5?á?rX   g7G€¶í?g”�ÞÛº¼Þ?g™¥b'Âß?Úraise)Úallr   rŠ   )ry   r¤   ÚerrstaterÖ   rŽ   r�   r×   s        r†   Útest_numerical_stabilityrç   ª  sh  € å
ŒàDÐDÐDØDÐDÐDØDÐDÐDØDÐDÐDØDÐDÐDØDÐDÐDØDÐDÐDð	
ñ
	ô 
	€Aõ 	ŒÐWÐWÐWÑXÔX€Aå	Œ˜Ð	!Ñ	!Ô	!ð ð Ý#Ÿ/š/Ñ+Ô+ð 	ð 	‰JˆD�$Ø�$ AÐ&Ñ&Ô&ˆCØ�GŠG�A�q‰MŒMˆMØ�GŠG�A˜�r‰NŒNˆNØ�GŠG�Q�B˜‰NŒNˆNØ�GŠG�Q�B˜˜‰OŒOˆOˆOð	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁBC+Ã+C/Ã2C/c            	      óð  — t          j        ddddddd¬¦  «        \  } }t                               ¦   «         D ]—\  }} |d¬¦  «        }|                     | |¦  «         |j        }t          j        |dk    ¦  «        }|j        d         dk    sJ d	 	                    |¦  «        ¦   «         ‚|dk    sJ d	 	                    |¦  «        ¦   «         ‚Œ˜t          d¬¦  «        }|                     t          j        t          j        ¦  «         t          dt          t          j        ¦  «        ¬
¦  «        }|                     t          j        t          j        ¦  «         t          |j        |j        ¦  «         d S )Néˆ  rH   r@   r   F©r]   r^   Ún_informativeÚn_redundantÚ
n_repeatedÚshuffler\   rŠ   çš™™™™™¹?r‹   ©r\   Úmax_leaf_nodes)r	   Úmake_classificationr�   rŽ   r�   Úfeature_importances_ry   r~   r­   rv   r   rg   r¶   r·   r›   r+   )re   rf   r”   r&   r•   ÚimportancesÚn_importantÚclf2s           r†   Útest_importancesr÷   Ã  se  € åÔ'ØØØØØØØðñ ô �D€A€qõ  —o’oÑ'Ô'ð @ð @‰
ˆˆdØˆd Ð"Ñ"Ô"ˆà�Š��1‰ŒˆØÔ.ˆÝ”f˜[¨3Ò.Ñ/Ô/ˆàÔ  Ô# rÒ)Ð)Ð)Ð+<×+CÒ+CÀDÑ+IÔ+IÑ)Ô)Ð)Ø˜aÒÐÐÐ!2×!9Ò!9¸$Ñ!?Ô!?ÑÔÐÐõ !¨aÐ
0Ñ
0Ô
0€CØ‡G‚G�DŒI•t”{Ñ#Ô#Ð#Ý!¨qÅÅTÄYÁÄÐPÑPÔP€DØ‡H‚H�TŒY�œÑ$Ô$Ð$å�sÔ/°Ô1JÑKÔKÐKÐKÐKrˆ   c                  ó¦   — t          ¦   «         } t          j        t          ¦  «        5  t	          | d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nró   )r   rº   ÚraisesÚ
ValueErrorÚgetattr)r•   s    r†   Útest_importances_raisesrü   â  s’   € å
 Ñ
"Ô
"€CÝ	Œ•zÑ	"Ô	"ð -ð -Ý�Ð+Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ¨AÁA
ÁA
c            	      ó.  — t          j        ddddddd¬¦  «        \  } }t          ddd¬	¦  «                             | |¦  «        }t	          d
dd¬	¦  «                             | |¦  «        }t          |j        |j        ¦  «         t          |j        j	        |j        j	        ¦  «         t          |j        j
        |j        j
        ¦  «         t          |j        j        |j        j        ¦  «         t          |j        j        |j        j        ¦  «         d S )NiÐ  rH   r@   r   Frê   r5   r?   )rž   r¾   r\   r7   )r	   rò   r   r�   r   r)   ró   r+   Útree_r{   rx   rw   r}   )re   rf   r•   r¨   s       r†   Ú)test_importances_gini_equal_squared_errorrÿ   é  s  € õ Ô'ØØØØØØØðñ ô �D€A€qõ !¨6¸QÈQÐ
OÑ
OÔ
O×
SÒ
SØ	ˆ1ñô €Cõ  Ø!¨Q¸Qðñ ô ç	‚cˆ!ˆQ�i„ið õ ˜Ô0°#Ô2JÑKÔKÐKÝ�s”yÔ(¨#¬)Ô*;Ñ<Ô<Ð<Ý�s”yÔ.°´	Ô0GÑHÔHÐHÝ�s”yÔ/°´Ô1IÑJÔJÐJÝ�s”yÔ/°´Ô1IÑJÔJÐJÐJÐJrˆ   c                  óæ  — t                                ¦   «         D �]Õ\  } } |d¬¦  «        }|                     t          j        t          j        ¦  «         |j        t          t          j	        t          j        j
        d         ¦  «        ¦  «        k    sJ ‚ |d¬¦  «        }|                     t          j        t          j        ¦  «         |j        t          t          j        t          j        j
        d         ¦  «        ¦  «        k    sJ ‚ |d¬¦  «        }|                     t          j        t          j        ¦  «         |j        dk    sJ ‚ |d¬¦  «        }|                     t          j        t          j        ¦  «         |j        dk    sJ ‚ |d¬¦  «        }|                     t          j        t          j        ¦  «         |j        dk    sJ ‚ |d¬¦  «        }|                     t          j        t          j        ¦  «         |j        t          dt          j        j
        d         z  ¦  «        k    sJ ‚ |d¬¦  «        }|                     t          j        t          j        ¦  «         |j        t          j        j
        d         k    sJ ‚ |d ¬¦  «        }|                     t          j        t          j        ¦  «         |j        t          j        j
        d         k    sJ ‚�Œ×d S )	NÚsqrt)rŒ   r=   Úlog2r@   rW   rO   rS   )r;   rŽ   r�   rg   r¶   r·   Úmax_features_Úintry   r  r­   r  )r”   ÚTreeEstimatorÚests      r†   Útest_max_featuresr    s{  € å(ŸšÑ0Ô0ð 7ñ 7ÑˆˆmØˆm¨Ð0Ñ0Ô0ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ ¥C­¬µ´	´ÀÔ0BÑ(CÔ(CÑ$DÔ$DÒDÐDÐDÐDàˆm¨Ð0Ñ0Ô0ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ ¥C­¬µ´	´ÀÔ0BÑ(CÔ(CÑ$DÔ$DÒDÐDÐDÐDàˆm¨Ð+Ñ+Ô+ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ  AÒ%Ð%Ð%Ð%àˆm¨Ð+Ñ+Ô+ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ  AÒ%Ð%Ð%Ð%àˆm¨Ð.Ñ.Ô.ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ  AÒ%Ð%Ð%Ð%àˆm¨Ð-Ñ-Ô-ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ ¥C¨­d¬i¬o¸aÔ.@Ñ(@Ñ$AÔ$AÒAÐAÐAÐAàˆm¨Ð-Ñ-Ô-ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ ¥D¤I¤O°AÔ$6Ò6Ð6Ð6Ð6àˆm¨Ð.Ñ.Ô.ˆØ�Š•”	�4œ;Ñ'Ô'Ð'ØÔ ¥D¤I¤O°AÔ$6Ò6Ð6Ð6Ð6Ñ6ð?7ð 7rˆ   c                  óz
  — t                                ¦   «         D �]r\  } } |¦   «         }t          j        t          ¦  «        5  |                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     t          t          ¦  «         g d¢g}t          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y    |¦   «         }t          d d…         }t          j        t          ¦  «        5  |                     t          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        } |¦   «         }|                     |t          ¦  «         t          |                     t          ¦  «        t          ¦  «          |¦   «         }t          j        t          ¦  «        5  |                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     t          t          ¦  «         t          j        t          ¦  «        }t          j        t          ¦  «        5  |                     |d d …dd …f         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        j        } |¦   «         }|                     t          j        t          |¦  «        t          ¦  «         t          j        t          ¦  «        5  |                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y    |¦   «         }|                     t          t          ¦  «         t          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y    |¦   «         }t          j        t          ¦  «        5  |                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   �Œtt)          d¬¦  «        }t          j        t          d¬¦  «        5  |                     g d¢gg d	¢¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  |                     g d¢gg d¢¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)rF   rC   r=   rC   r=   r:   ©rž   zy is not positive.*Poisson©Úmatch©r   r=   rQ   )r   r   r   zSome.*y are negative.*Poisson)r?   gš™™™™™¹¿rQ   )r�   rŽ   rº   rù   r   rÌ   re   r�   rf   rú   ry   Úasfortranarrayr)   r�   r‘   r’   Úasarrayr¤   ÚdotÚapplyr   )	r”   r  r  ÚX2Úy2ÚXfÚtÚXtr•   s	            r†   Ú
test_errorr  +  s  € å(ŸšÑ0Ô0ð 6ñ 6Ñˆˆmàˆm‰oŒoˆÝŒ]�>Ñ*Ô*ð 	!ð 	!Ø×Ò�aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	�Š••1‰ŒˆØˆkˆkˆ]ˆÝŒ]�:Ñ&Ô&ð 	"ð 	"Ø×Ò˜bÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð ˆm‰oŒoˆÝˆs�ˆsŒVˆÝŒ]�:Ñ&Ô&ð 	ð 	Ø�GŠG•A�r‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Ô�qÑ!Ô!ˆØˆm‰oŒoˆØ�Š�•A‰ŒˆÝ˜CŸKšK­™NœN­KÑ8Ô8Ð8ð ˆm‰oŒoˆÝŒ]�>Ñ*Ô*ð 	ð 	Ø�KŠK�‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�Š••1‰ŒˆÝŒJ•q‰MŒMˆÝŒ]�:Ñ&Ô&ð 	"ð 	"Ø�KŠK˜˜!˜!˜!˜Q˜R˜R˜%œÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ ŒX•a‰[Œ[Œ]ˆàˆm‰oŒoˆØ�Š•”•q˜"‘”�qÑ!Ô!Ð!ÝŒ]�:Ñ&Ô&ð 	ð 	Ø�KŠK�‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åŒ]�:Ñ&Ô&ð 	ð 	Ø�IŠI•a‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆm‰oŒoˆØ�Š••1‰ŒˆÝŒ]�:Ñ&Ô&ð 	ð 	Ø�KŠK˜‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åŒ]�:Ñ&Ô&ð 	ð 	Ø�IŠI�b‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆm‰oŒoˆÝŒ]�>Ñ*Ô*ð 	ð 	Ø�IŠI•a‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ùõ  ¨)Ð
4Ñ
4Ô
4€CÝ	Œ•zÐ)EÐ	FÑ	FÔ	Fð (ð (Ø�Š����˜Y˜Y˜YÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (å	Œ•zÐ)HÐ	IÑ	IÔ	Ið +ð +Ø�Š����˜\˜\˜\Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +sØ   ÁA*Á*A.	Á1A.	Â3CÃC	ÃC	ÄD:Ä:D>	ÅD>	ÇG:Ç:G>	ÈG>	É"JÊJ		ÊJ		ÌL+Ì+L/	Ì2L/	ÍM6Í6M:	Í=M:	ÏO&Ï&O*	Ï-O*	Ð
P,Ð,P0	Ð3P0	ÑRÒR	ÒR	Ò9S!Ó!S%Ó(S%ÔT0Ô0T4Ô7T4c                  óÎ  — t          j        t          j        t           j        ¬¦  «        } t          j        }t          dt                               ¦   «         ¦  «        D �]\  }}t          |         } |d|d¬¦  «        }| 	                    | |¦  «         |j
        j        |j
        j        dk             }t          j        |¦  «        dk    sJ d                     |¦  «        ¦   «         ‚ |d	|d¬¦  «        }| 	                    | |¦  «         |j
        j        |j
        j        dk             }t          j        |¦  «        dk    sJ d                     |¦  «        ¦   «         ‚�Œd
S )z Test min_samples_split parameter©Údtype©Néè  rH   r   )Úmin_samples_splitrñ   r\   rC   é	   r‹   rB   N)ry   r  rg   r¶   Úfloat32r·   r   r;   Úkeysr�   rþ   r}   rx   r£   rv   )re   rf   rñ   r”   r  r  Únode_sampless          r†   Útest_min_samples_splitr!  m  s`  € å
Ô�$œ)­2¬:Ð6Ñ6Ô6€AÝŒ€Aõ !(¨µi·n²nÑ6FÔ6FÑ GÔ Gð Hñ HÑˆ˜Ý! $œˆð ˆmØ °Èað
ñ 
ô 
ˆð 	�Š��1‰Œˆà”yÔ/°´	Ô0GÈ2Ò0MÔNˆåŒv�lÑ#Ô# aÒ'Ð'Ð'Ð):×)AÒ)AÀ$Ñ)GÔ)GÑ'Ô'Ð'ð ˆmØ!°.Èqð
ñ 
ô 
ˆð 	�Š��1‰Œˆà”yÔ/°´	Ô0GÈ2Ò0MÔNˆåŒv�lÑ#Ô# aÒ'Ð'Ð'Ð):×)AÒ)AÀ$Ñ)GÔ)GÑ'Ô'Ð'Ñ'ð+Hð Hrˆ   c                  ó6  — t          j        t          j        t           j        ¬¦  «        } t          j        }t          dt                               ¦   «         ¦  «        D �]9\  }}t          |         } |d|d¬¦  «        }| 	                    | |¦  «         |j
                             | ¦  «        }t          j        |¦  «        }||dk             }t          j        |¦  «        dk    sJ d                     |¦  «        ¦   «         ‚ |d|d¬¦  «        }| 	                    | |¦  «         |j
                             | ¦  «        }t          j        |¦  «        }||dk             }t          j        |¦  «        dk    sJ d                     |¦  «        ¦   «         ‚�Œ;d S )	Nr  r  r?   r   )Úmin_samples_leafrñ   r\   r<   r‹   rï   )ry   r  rg   r¶   r  r·   r   r;   r  r�   rþ   r  Úbincountr£   rv   )	re   rf   rñ   r”   r  r  ÚoutÚnode_countsÚ
leaf_counts	            r†   Útest_min_samples_leafr(  Œ  s�  € å
Ô�$œ)­2¬:Ð6Ñ6Ô6€AÝŒ€Aõ !(¨µi·n²nÑ6FÔ6FÑ GÔ Gð Fñ FÑˆ˜Ý! $œˆð ˆmØ¨~ÈAð
ñ 
ô 
ˆð 	�Š��1‰ŒˆØŒi�oŠo˜aÑ Ô ˆÝ”k #Ñ&Ô&ˆà  °Ò!1Ô2ˆ
ÝŒv�jÑ!Ô! AÒ%Ð%Ð%Ð'8×'?Ò'?ÀÑ'EÔ'EÑ%Ô%Ð%ð ˆmØ °Èað
ñ 
ô 
ˆð 	�Š��1‰ŒˆØŒi�oŠo˜aÑ Ô ˆÝ”k #Ñ&Ô&ˆà  °Ò!1Ô2ˆ
ÝŒv�jÑ!Ô! AÒ%Ð%Ð%Ð'8×'?Ò'?ÀÑ'EÔ'EÑ%Ô%Ð%Ñ%ð/Fð Frˆ   c                 ó<  — t           |         d                              t          j        ¦  «        }|� ||¦  «        }t           |         d         }t                               |j        d         ¦  «        }t          j        |¦  «        }t          |          }t          dt          j
        ddd¦  «        ¦  «        D ]Ù\  }}	 ||	|d¬¦  «        }
|
                     |||¬	¦  «         |�-|
j                             |                     ¦   «         ¦  «        }n|
j                             |¦  «        }t          j        ||¬
¦  «        }||dk             }t          j        |¦  «        ||
j        z  k    s#J d                     | |
j        ¦  «        ¦   «         ‚ŒÚ|j        d         }t          dt          j
        ddd¦  «        ¦  «        D ]Õ\  }}	 ||	|d¬¦  «        }
|
                     ||¦  «         |�-|
j                             |                     ¦   «         ¦  «        }n|
j                             |¦  «        }t          j        |¦  «        }||dk             }t          j        |¦  «        ||
j        z  k    s#J d                     | |
j        ¦  «        ¦   «         ‚ŒÖdS )zPTest if leaves contain at least min_weight_fraction_leaf of the
    training setre   Nrf   r   r  rO   rN   )Úmin_weight_fraction_leafrñ   r\   r˜   )Úweightsz,Failed with {0} min_weight_fraction_leaf={1})ÚDATASETSÚastypery   r  ÚrngÚrandr­   r~   r;   r   Úlinspacer�   rþ   r  Útocsrr$  r£   r*  rv   )r”   r	   Úsparse_containerre   rf   r+  Útotal_weightr  rñ   Úfracr  r%  Únode_weightsÚleaf_weightss                 r†   Úcheck_min_weight_fraction_leafr7  ­  s�  € õ 	�Ô˜3Ô×&Ò&¥r¤zÑ2Ô2€AØÐ#ØÐ˜QÑÔˆÝ�Ô˜3Ô€Aå�hŠh�q”w˜q”zÑ"Ô"€GÝ”6˜'‘?”?€Lå˜d”O€Mõ !(¨µb´kÀ!ÀSÈ!Ñ6LÔ6LÑ MÔ Mð 
ð 
Ñˆ˜ØˆmØ%)¸.ÐWXð
ñ 
ô 
ˆð 	�Š��1 GˆÑ,Ô,Ð,àÐ'Ø”)—/’/ !§'¢'¡)¤)Ñ,Ô,ˆCˆCà”)—/’/ !Ñ$Ô$ˆCå”{ 3°Ð8Ñ8Ô8ˆà# L°AÒ$5Ô6ˆÝŒv�lÑ#Ô# |°cÔ6RÑ'RÒRÐRÐRØ:×AÒAØ�cÔ2ñô ñ SÔRÐRÐRð ”7˜1”:€Lå '¨µb´kÀ!ÀSÈ!Ñ6LÔ6LÑ MÔ Mð 
ð 
Ñˆ˜ØˆmØ%)¸.ÐWXð
ñ 
ô 
ˆð 	�Š��1‰ŒˆàÐ'Ø”)—/’/ !§'¢'¡)¤)Ñ,Ô,ˆCˆCà”)—/’/ !Ñ$Ô$ˆCå”{ 3Ñ'Ô'ˆà# L°AÒ$5Ô6ˆÝŒv�lÑ#Ô# |°cÔ6RÑ'RÒRÐRÐRØ:×AÒAØ�cÔ2ñô ñ SÔRÐRÐRð
ð 
rˆ   r”   c                 ó&   — t          | d¦  «         d S ©Nrg   ©r7  ©r”   s    r†   Ú,test_min_weight_fraction_leaf_on_dense_inputr<  è  s   € å" 4¨Ñ0Ô0Ð0Ð0Ð0rˆ   Úcsc_containerc                 ó*   — t          | d|¬¦  «         d S ©Nrm   )r2  r:  ©r”   r=  s     r†   Ú-test_min_weight_fraction_leaf_on_sparse_inputrA  í  s   € õ # 4¨ÈÐVÑVÔVÐVÐVÐVrˆ   c                 ó&  — t           |         d                              t          j        ¦  «        }|� ||¦  «        }t           |         d         }|j        d         }t
          |          }t          dt          j        ddd¦  «        ¦  «        D ]ê\  }} |||dd¬	¦  «        }	|	                     ||¦  «         |�-|	j	         
                    |                     ¦   «         ¦  «        }
n|	j	         
                    |¦  «        }
t          j        |
¦  «        }||dk             }t          j        |¦  «        t          ||	j        z  d¦  «        k    s)J d
                     | |	j        |	j        ¦  «        ¦   «         ‚Œët          dt          j        ddd¦  «        ¦  «        D ]ò\  }} |||dd¬	¦  «        }	|	                     ||¦  «         |�-|	j	         
                    |                     ¦   «         ¦  «        }
n|	j	         
                    |¦  «        }
t          j        |
¦  «        }||dk             }t          j        |¦  «        t          ||	j        z  ||	j        z  ¦  «        k    s)J d
                     | |	j        |	j        ¦  «        ¦   «         ‚ŒódS )zzTest the interaction between min_weight_fraction_leaf and
    min_samples_leaf when sample_weights is not provided in fit.re   Nrf   r   r  rO   r@   r?   )r*  rñ   r#  r\   zBFailed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}rï   )r,  r-  ry   r  r­   r;   r   r0  r�   rþ   r  r1  r$  r£   Úmaxr*  rv   r#  )r”   r	   r2  re   rf   r3  r  rñ   r4  r  r%  r5  r6  s                r†   Ú4check_min_weight_fraction_leaf_with_min_samples_leafrD  ó  s°  € õ
 	�Ô˜3Ô×&Ò&¥r¤zÑ2Ô2€AØÐ#ØÐ˜QÑÔˆÝ�Ô˜3Ô€Aà”7˜1”:€LÝ˜d”O€MÝ '¨µb´kÀ!ÀSÈ!Ñ6LÔ6LÑ MÔ Mð 
ð 
Ñˆ˜àˆmØ%)Ø)ØØð	
ñ 
ô 
ˆð 	�Š��1‰ŒˆàÐ'Ø”)—/’/ !§'¢'¡)¤)Ñ,Ô,ˆCˆCà”)—/’/ !Ñ$Ô$ˆCå”{ 3Ñ'Ô'ˆà# L°AÒ$5Ô6ˆÝŒv�lÑ#Ô#¥sØ˜CÔ8Ñ8¸1ñ(
ô (
ò 
ð 
ð 
àO×VÒVØ�#Ô.°Ô0Dñ
ô 
ñ
ô 
ð 
ð 
õ
 !(¨µb´kÀ!ÀSÈ!Ñ6LÔ6LÑ MÔ Mð 
ð 
Ñˆ˜àˆmØ%)Ø)Ø Øð	
ñ 
ô 
ˆð 	�Š��1‰ŒˆàÐ'Ø”)—/’/ !§'¢'¡)¤)Ñ,Ô,ˆCˆCà”)—/’/ !Ñ$Ô$ˆCå”{ 3Ñ'Ô'ˆà# L°AÒ$5Ô6ˆÝŒv�lÑ#Ô#¥sØ˜CÔ8Ñ8Ø˜CÔ0Ñ0ñ(
ô (
ò 
ð 
ð 
ð P×VÒVØ�#Ô.°Ô0Dñ
ô 
ñ
ô 
ð 
ð 
ð%
ð 
rˆ   c                 ó&   — t          | d¦  «         d S r9  ©rD  r;  s    r†   ÚBtest_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_inputrG  0  s   € å8¸¸vÑFÔFÐFÐFÐFrˆ   c                 ó*   — t          | d|¬¦  «         d S r?  rF  r@  s     r†   ÚCtest_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_inputrI  5  s,   € õ
 9Øˆl¨]ðñ ô ð ð ð rˆ   zTreeEstimator, criterionc                 ó¶  — t          j        d|¬¦  «        \  }}dD ]¼}dD ]·} | ||||¬¦  «        }|                     ||¦  «         |j        }|j        |j        z  |j        d         z  }	t          |j        ¦  «        D ]W}
|j	        |
         t          k    r?|j	        |
         }|j        |
         }|	|
         |	|         |	|         z   z
  }||dz
  k    sJ ‚ŒXŒ¸Œ½d S )Néd   ©r]   r\   r  )rU   g-Cëâ6?rï   )rž   rñ   Úmin_impurity_decreaser\   r   g»½×Ùß|Û=)r	   rò   r�   rþ   r   Úweighted_n_node_samplesr­   Úrangeru   rx   r    rw   )r  rž   rÃ   re   rf   rñ   Úexpected_decreaser  r
   Úweighted_impurityÚnodeÚleftÚrightÚactual_decreases                 r†   Útest_min_impurity_decreaserV  @  s<  € õ Ô'°#ÐDVÐWÑWÔW�D€A€qð 'ð Gð GˆØ!4ð 	Gð 	GÐØ�-Ø#Ø-Ø&7Ø/ð	ñ ô ˆCð �GŠG�A�q‰MŒMˆMØ”9ˆDà” Ô <Ñ<¸q¼wÀq¼zÑIð õ ˜dœoÑ.Ô.ð Gð G�ð Ô% dÔ+­yÒ8Ð8ØÔ-¨dÔ3�DØ Ô/°Ô5�Eà&7¸Ô&=Ø)¨$Ô/Ð2CÀEÔ2JÑJñ'�Oð
 +Ð->ÀÑ-FÒFÐFÐFÐFøðGð	GðGð Grˆ   c            
      óª  ‡— t                                ¦   «         D �]6\  } }d| v rt          j        t          j        }}nt
          j        t
          j        }} |d¬¦  «        Š‰                     ||¦  «         ‰                     ||¦  «        }g d¢}ˆfd„|D ¦   «         }t          j	        ‰¦  «        }t          j
        |¦  «        }t          |¦  «        ‰j        k    sJ ‚|                     ||¦  «        }	||	k    sJ d                     | ¦  «        ¦   «         ‚|D ]3}
t          t          |j        |
¦  «        ||
         d|
› d| › �¬	¦  «         Œ4�Œ8d
S )z8Test pickling preserves Tree properties and performance.Ú
Classifierr   rŠ   )r¾   ru   ÚcapacityÚ	n_classesrx   rw   Ún_leavesr{   r|   r   r}   rN  r€   c                 ó<   •— i | ]}|t          ‰j        |¦  «        “ŒS rÀ   )rû   rþ   )Ú.0Ú	attributer  s     €r†   ú
<dictcomp>ztest_pickle.<locals>.<dictcomp>ˆ  s4   ø€ ð 
ð 
ð 
Ø9BˆI•w˜sœy¨)Ñ4Ô4ð
ð 
ð 
rˆ   z6Failed to generate same score  after pickling with {0}z"Failed to generate same attribute z after pickling with rs   N)r;   rŽ   rg   r¶   r·   rh   r�   r°   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__rv   r+   rû   rþ   )r”   r  re   rf   r°   Ú
attributesÚfitted_attributeÚserialized_objectÚest2Úscore2r^  r  s              @r†   Útest_picklerj  l  s›  ø€ å(ŸšÑ0Ô0ð .ñ .ÑˆˆmØ˜4ÐÐÝ”9�dœkˆqˆAˆAå”=¥(¤/ˆqˆAàˆm¨Ð+Ñ+Ô+ˆØ�Š��1‰ŒˆØ—	’	˜!˜Q‘”ˆð
ð 
ð 
ˆ
ð
ð 
ð 
ð 
ØFPð
ñ 
ô 
Ðõ #œL¨Ñ-Ô-ÐÝŒ|Ð-Ñ.Ô.ˆÝ�D‰zŒz˜Sœ]Ò*Ð*Ð*Ð*à—’˜A˜qÑ!Ô!ˆØ˜ŠˆˆØD×KÒKÈDÑQÔQñ Œˆð *ð 	ð 	ˆIÝÝ˜œ
 IÑ.Ô.Ø  Ô+ð¸ð ð Øðð ð	ñ ô ð ð ñ	ðM.ð .rˆ   zTree, criterionc                 ó   — ddgddgddgddgddgddgddgddgddgddgddgddgg}t          j        ddgddgddgddgddgddgddgddgddgddgddgddgg¦  «        }ddgddgddgddgg}t          j        ddgddgddgddgg¦  «        }|t          v }|dk    r(||dk    xx         dz  cc<   ||dk    xx         dz  cc<   |rõ | d|¬	¦  «        }|                     ||¦  «                             |¦  «        }t          ||¦  «         |j        d
k    sJ ‚|                     |¦  «        }	t          |	¦  «        dk    sJ ‚|	d         j        d
k    sJ ‚|	d         j        dk    sJ ‚| 	                    |¦  «        }
t          |
¦  «        dk    sJ ‚|
d         j        d
k    sJ ‚|
d         j        dk    sJ ‚d S  | d|¬	¦  «        }|                     ||¦  «                             |¦  «        }t          ||¦  «         |j        d
k    sJ ‚d S )NrF   rC   r=   rQ   r   r@   r:   r<   )r\   rž   ©r<   rQ   )r<   r<   )ry   r¤   rµ   r�   r�   r+   r­   rÌ   r›   rÏ   r)   )r&   rž   re   rf   r‘   Úy_trueÚis_clfr•   Úy_hatÚprobaÚ	log_probar¨   s               r†   Útest_multioutputrr     sÑ  € ð 
ˆRˆØ	ˆRˆØ	ˆRˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆBˆØ	
ˆBˆØ	
ˆBˆð	€Aõ 	Œà�ˆGØ�ˆGØ�ˆGØ�ˆFØ�ˆFØ�ˆFØ�ˆGØ�ˆGØ�ˆGØ�ˆFØ�ˆFØ�ˆFð	
ñ	ô 	€Að" ˆbˆ�A�q�6˜B ˜7 Q¨ GÐ,€AÝŒX˜˜A�w  A ¨¨Q¨°!°Q°Ð8Ñ9Ô9€Fà�.Ð(€FØ�IÒÐà	ˆ!ˆqŠ&ˆ	ˆ	Œ	�Q‰ˆ	ˆ	‰	Øˆv˜Š{ÐÐÔ˜qÑ ÐÐÑàð %àˆd ¨YÐ7Ñ7Ô7ˆØ—’˜˜1‘”×%Ò% aÑ(Ô(ˆÝ˜5 &Ñ)Ô)Ð)ØŒ{˜fÒ$Ð$Ð$Ð$à×!Ò! !Ñ$Ô$ˆÝ�5‰zŒz˜QŠˆˆˆØ�QŒxŒ~ Ò'Ð'Ð'Ð'Ø�QŒxŒ~ Ò'Ð'Ð'Ð'à×)Ò)¨!Ñ,Ô,ˆ	Ý�9‰~Œ~ Ò"Ð"Ð"Ð"Ø˜Œ|Ô! VÒ+Ð+Ð+Ð+Ø˜Œ|Ô! VÒ+Ð+Ð+Ð+Ð+Ð+ð ˆd ¨YÐ7Ñ7Ô7ˆØ—’˜˜1‘”×%Ò% aÑ(Ô(ˆÝ˜E 6Ñ*Ô*Ð*ØŒ{˜fÒ$Ð$Ð$Ð$Ð$Ð$rˆ   c                  óv  — t                                ¦   «         D �]\  } } |d¬¦  «        }|                     t          t          ¦  «         |j        dk    sJ ‚t          |j        ddg¦  «         t          j	        t          t          j
        t          ¦  «        dz  f¦  «        j        } |d¬¦  «        }|                     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¦  «         �Œd S )Nr   rŠ   rQ   rC   r=   rF   )r�   rŽ   r�   re   rf   Ú
n_classes_r+   Úclasses_ry   r®   r¤   r‘   r›   )r”   rÚ   r•   Ú_ys       r†   Útest_classes_shaperw  ë  s,  € å )§¢Ñ 1Ô 1ð =ñ =Ñˆˆnàˆn¨!Ð,Ñ,Ô,ˆØ�Š••1‰ŒˆàŒ~ Ò"Ð"Ð"Ð"Ý˜3œ<¨"¨a¨Ñ1Ô1Ð1õ ŒY��2œ8¥A™;œ;¨™?Ð+Ñ,Ô,Ô.ˆØˆn¨!Ð,Ñ,Ô,ˆØ�Š•�2‰ŒˆÝ�3”>Ñ"Ô" aÒ'Ð'Ð'Ð'Ý�3”<Ñ Ô  AÒ%Ð%Ð%Ð%Ý˜3œ>¨A¨q¨6Ñ2Ô2Ð2Ý˜3œ<¨2¨q¨'°B¸°7Ð);Ñ<Ô<Ð<Ñ<ð=ð =rˆ   c                  óB  — t           j        d d…         } t           j        d d…         }t          d|¦  «        }t                               ¦   «         D ]L\  }} |d¬¦  «        }|                     | ||¬¦  «         t          |                     | ¦  «        |¦  «         ŒMd S )Né}   Úbalancedr   rŠ   r˜   )	rg   r¶   r·   r'   r�   rŽ   r�   r)   r�   )Úunbalanced_XÚunbalanced_yr™   r”   rÚ   r•   s         r†   Útest_unbalanced_irisr}  ÿ  s¥   € å”9˜T˜c˜T”?€LÝ”;˜t ˜tÔ$€LÝ)¨*°lÑCÔC€Må )§¢Ñ 1Ô 1ð Eð EÑˆˆnØˆn¨!Ð,Ñ,Ô,ˆØ�Š�˜l¸-ˆÑHÔHÐHÝ˜CŸKšK¨Ñ5Ô5°|ÑDÔDÐDÐDðEð Erˆ   c                  óD  — t          t                               ¦   «         t          j        t          j        g¦  «        D �]à\  \  } }} |d¬¦  «        }t          j        t          j        |¬¦  «        }t          j	        }t          |                     ||¦  «                             |¦  «        |¦  «         t          j        t          j        d|¬¦  «        }t          j	        }t          |                     ||¦  «                             |¦  «        |¦  «         t          j        t          j        d|¬¦  «        }t          j	        }t          |                     ||¦  «                             |¦  «        |¦  «         t          j        t          j        |¬¦  «        }t          j	        }t          |                     ||¦  «                             |¦  «        |¦  «         t          D ]\} |t          j        |¬¦  «        }t          j	        }t          |                     ||¦  «                             |¦  «        |¦  «         Œ]t          D ]\} |t          j        |¬¦  «        }t          j	        }t          |                     ||¦  «                             |¦  «        |¦  «         Œ]t          j        t          j        d d d…         |¬¦  «        }t          j	        d d d…         }t          |                     ||¦  «                             |¦  «        |¦  «         �Œâd S )Nr   rŠ   r  ÚC)Úorderr  ÚFr@   )r   r;   rŽ   ry   Úfloat64r  r  rg   r¶   r·   r+   r�   r�   Úascontiguousarrayr1   r0   )r”   r  r  r  re   rf   Úcsr_containerr=  s           r†   Útest_memory_layoutr…    sœ  € å(/Ý�ŠÑÔ�BœJ­¬
Ð3ñ)ô )ð (8ñ (8Ñ$Ñˆˆ}˜uð ˆm¨Ð+Ñ+Ô+ˆõ ŒJ•t”y¨Ð.Ñ.Ô.ˆÝŒKˆÝ˜3Ÿ7š7 1 a™=œ=×0Ò0°Ñ3Ô3°QÑ7Ô7Ð7õ ŒJ•t”y¨°5Ð9Ñ9Ô9ˆÝŒKˆÝ˜3Ÿ7š7 1 a™=œ=×0Ò0°Ñ3Ô3°QÑ7Ô7Ð7õ ŒJ•t”y¨°5Ð9Ñ9Ô9ˆÝŒKˆÝ˜3Ÿ7š7 1 a™=œ=×0Ò0°Ñ3Ô3°QÑ7Ô7Ð7õ Ô ¥¤°%Ð8Ñ8Ô8ˆÝŒKˆÝ˜3Ÿ7š7 1 a™=œ=×0Ò0°Ñ3Ô3°QÑ7Ô7Ð7õ ,ð 	<ð 	<ˆMØ��dœi¨uÐ5Ñ5Ô5ˆAÝ”ˆAÝ˜sŸwšw q¨!™}œ}×4Ò4°QÑ7Ô7¸Ñ;Ô;Ð;Ð;õ ,ð 	<ð 	<ˆMØ��dœi¨uÐ5Ñ5Ô5ˆAÝ”ˆAÝ˜sŸwšw q¨!™}œ}×4Ò4°QÑ7Ô7¸Ñ;Ô;Ð;Ð;õ ŒJ•t”y   1 ”~¨UÐ3Ñ3Ô3ˆÝŒK˜˜˜!˜ÔˆÝ˜3Ÿ7š7 1 a™=œ=×0Ò0°Ñ3Ô3°QÑ7Ô7Ð7Ñ7ðQ(8ð (8rˆ   c                  óˆ  — t          j        d¦  «        d d …t           j        f         } t          j        d¦  «        }d|d d…<   t          j        d¦  «        }d||dk    <   t	          d¬¦  «        }|                     | ||¬¦  «         t          |                     | ¦  «        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
        d         dk    sJ ‚d||d	k    <   t	          dd¬¦  «        }|                     | ||¬¦  «         |j	        j
        d         dk    sJ ‚t          j        } t          j        }t                               d| j        d         d¦  «        }t	          d¬¦  «        }|                     | |         ||         ¦  «         t          j        || j        d         ¬¦  «        }t	          d¬¦  «        }|                     | ||¬¦  «         |j	        j        t&          j        j        k    }t-          |j	        j
        |         |j	        j
        |         ¦  «         d S )NrK  rX   é2   r   rŠ   r˜   éÈ   r=   rQ   gR¸…ëQà?rÓ   g     °b@rO   g     ÀH@)Ú	minlength)ry   rÔ   rÕ   rš   r   r�   r+   r�   rq   rþ   r|   rg   r¶   r·   r.  Úrandintr­   r$  rx   r
   Ú_treer    r*   )re   rf   r™   r•   Ú
duplicatesrö   r…   s          r†   Útest_sample_weightr�  8  sŠ  € õ 	Œ	�#‰Œ�q�q�q�"œ*�}Ô%€AÝ
Œ�‰Œ€AØ€A€c€r€c�Få”G˜C‘L”L€MØ€M�!�q’&Ñå
 ¨aÐ
0Ñ
0Ô
0€CØ‡G‚GˆAˆq €GÑ.Ô.Ð.Ý�s—{’{ 1‘~”~¥r¤w¨s¡|¤|Ñ4Ô4Ð4õ 	Œ	�#‰Œ�q�q�q�"œ*�}Ô%€AÝ
Œ�‰Œ€AØ€A€bˆ€f�IØ€A€cˆ#€g�JØ€A€cˆ#€gˆq€j�Må”G˜C‘L”L€Mà €M�!�q’&ÑÝ
 ¨1¸1Ð
=Ñ
=Ô
=€CØ‡G‚GˆAˆq €GÑ.Ô.Ð.ØŒ9Ô˜qÔ! UÒ*Ð*Ð*Ð*à€M�!�q’&ÑÝ
 ¨1¸1Ð
=Ñ
=Ô
=€CØ‡G‚GˆAˆq €GÑ.Ô.Ð.ØŒ9Ô˜qÔ! TÒ)Ð)Ð)Ð)õ 	Œ	€AÝŒ€Aå—’˜Q ¤¨¤
¨CÑ0Ô0€Jå
 ¨aÐ
0Ñ
0Ô
0€CØ‡G‚GˆAˆjŒM˜1˜Zœ=Ñ)Ô)Ð)å”K 
°a´g¸a´jÐAÑAÔA€MÝ!¨qÐ1Ñ1Ô1€DØ‡H‚HˆQ� €HÑ/Ô/Ð/àŒyÔ&­$¬*Ô*>Ò>€HÝØŒ	Ô˜HÔ% t¤zÔ';¸HÔ'Eñô ð ð ð rˆ   c                  óf  — t          j        d¦  «        d d …t           j        f         } t          j        d¦  «        }d|d d…<   t	          d¬¦  «        }t           j                             dd¦  «        }t          j        t          ¦  «        5  | 
                    | ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        }t          j        d¦  «        }t          j        t          |¬	¦  «        5  | 
                    | ||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
NrK  rX   r‡  r   rŠ   r=   r˜   zgInput should have at least 1 dimension i.e. satisfy `len(x.shape) > 0`, got scalar `array(0.)` instead.r
  )ry   rÔ   rÕ   rš   r   Úrandomr/  rº   rù   rú   r�   r¤   ÚreÚescapeÚ	TypeError)re   rf   r•   r™   Úexpected_errs        r†   Útest_sample_weight_invalidr”  l  s“  € å
Œ	�#‰Œ�q�q�q�"œ*�}Ô%€AÝ
Œ�‰Œ€AØ€A€c€r€c�Få
 ¨aÐ
0Ñ
0Ô
0€Cå”I—N’N 3¨Ñ*Ô*€MÝ	Œ•zÑ	"Ô	"ð 3ð 3Ø�Š��1 MˆÑ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ ”H˜Q‘K”K€Må”9ðBñô €Lõ 
Œ•y¨Ð	5Ñ	5Ô	5ð 3ð 3Ø�Š��1 MˆÑ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3s$   ÂB2Â2B6Â9B6Ä D&Ä&D*Ä-D*c                 ó’  — t           |          } |d¬¦  «        }|                     t          j        t          j        ¦  «          |dd¬¦  «        }|                     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¬¦  «        }|                     t          j        |¦  «         t          |j        |j        ¦  «          |dd¬¦  «        }|                     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¬¦  «        }|                     t          j        t          j        |¦  «          ||d¬¦  «        }|                     t          j        t          j        ¦  «         t          |j        |j        ¦  «          |d¬¦  «        }|                     t          j        t          j        |dz  ¦  «          ||d¬¦  «        }|                     t          j        t          j        |¦  «         t          |j        |j        ¦  «         d S )Nr   rŠ   rz  ©Úclass_weightr\   ç       @rS   r  r=   rK  g      Y@rQ   )r�   r�   rg   r¶   r·   r)   ró   ry   r®   r‘   rš   r­   )	r”   rÚ   Úclf1rö   Ú
iris_multiÚclf3Úclf4r™   r—  s	            r†   Útest_class_weightsr�  „  s„  € õ ˜t”_€Nð ˆ> qÐ)Ñ)Ô)€DØ‡H‚H�TŒY�œÑ$Ô$Ð$Øˆ> zÀÐBÑBÔB€DØ‡H‚H�TŒY�œÑ$Ô$Ð$Ý˜Ô1°4Ô3LÑMÔMÐMõ ”�DœK­¬µd´kÐBÑCÔCÔE€Jàˆ>à˜ Ð$Ð$Ø˜ Ð$Ð$Ø˜ Ð$Ð$ð
ð
 ðñ ô €Dð 	‡H‚H�TŒY˜
Ñ#Ô#Ð#Ý˜Ô1°4Ô3LÑMÔMÐMàˆ> zÀÐBÑBÔB€DØ‡H‚H�TŒY˜
Ñ#Ô#Ð#Ý˜Ô1°4Ô3LÑMÔMÐMõ ”G�DœKÔ-Ñ.Ô.€MØ•$”+ Ò"Ð#Ð#Ô# sÑ*Ð#Ð#Ñ#Ø˜u¨Ð-Ð-€LØˆ> qÐ)Ñ)Ô)€DØ‡H‚H�TŒY�œ ]Ñ3Ô3Ð3Øˆ> |À!ÐDÑDÔD€DØ‡H‚H�TŒY�œÑ$Ô$Ð$Ý˜Ô1°4Ô3LÑMÔMÐMð ˆ> qÐ)Ñ)Ô)€DØ‡H‚H�TŒY�œ ]°AÑ%5Ñ6Ô6Ð6Øˆ> |À!ÐDÑDÔD€DØ‡H‚H�TŒY�œ ]Ñ3Ô3Ð3Ý˜Ô1°4Ô3LÑMÔMÐMÐMÐMrˆ   c                 óX  — t           |          }t          j        t          t          j        t          ¦  «        dz  f¦  «        j        } |dddœgd¬¦  «        }d}t          j        t          |¬¦  «        5  | 	                    t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	NrQ   rO   rS   ©rC   r=   r   r–  zBnumber of elements in class_weight should match number of outputs.r
  )r�   ry   r®   rf   r¤   r‘   rº   rù   rú   r�   re   )r”   rÚ   rv  r•   rt   s        r†   Útest_class_weight_errorsr   ´  sà   € õ ˜t”_€NÝ	Œ•A•r”x¥‘{”{ Q‘Ð'Ñ	(Ô	(Ô	*€Bð ˆ.¨C°CÐ'8Ð'8Ð&9ÈÐ
JÑ
JÔ
J€CØR€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð ð Ø�Š•�2‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á6BÂB#Â&B#c                  óü   — t          j        dd¬¦  «        \  } }d}t                               ¦   «         D ]F\  }} |d |dz   ¬¦  «                             | |¦  «        }|                     ¦   «         |dz   k    sJ ‚ŒGd S ©NrK  r=   rL  r<   )r¾   rñ   )r	   Úmake_hastie_10_2r;   rŽ   r�   Úget_n_leaves©re   rf   Úkr”   r  r  s         r†   Útest_max_leaf_nodesr§  Á  s”   € åÔ$¨sÀÐCÑCÔC�D€A€qØ	€AÝ(ŸšÑ0Ô0ð +ð +ÑˆˆmØˆm d¸1¸q¹5ÐAÑAÔA×EÒEÀaÈÑKÔKˆØ×ÒÑ!Ô! Q¨¡UÒ*Ð*Ð*Ð*Ð*ð+ð +rˆ   c                  óð   — t          j        dd¬¦  «        \  } }d}t                               ¦   «         D ]@\  }} |d|¬¦  «                             | |¦  «        }|                     ¦   «         dk    sJ ‚ŒAd S r¢  )r	   r£  r;   rŽ   r�   Ú	get_depthr¥  s         r†   Útest_max_leaf_nodes_max_depthrª  Ê  sˆ   € åÔ$¨sÀÐCÑCÔC�D€A€qØ	€AÝ(ŸšÑ0Ô0ð $ð $ÑˆˆmØˆm a¸Ð:Ñ:Ô:×>Ò>¸qÀ!ÑDÔDˆØ�}Š}‰Œ !Ò#Ð#Ð#Ð#Ð#ð$ð $rˆ   c                  óÎ   — dD ]a} t          t          ¦   «                              dgdggddg¦  «        j        | ¦  «        }d|j        d         cxk    rdk     sn J d¦   «         ‚Œbd S )N)rZ  r€   rx   rw   r|   r   r{   r}   r   r=   rG   r@   z Array points to arbitrary memory)rû   r   r�   rþ   Úflat)Úattrr€   s     r†   Útest_arrays_persistr®  Ó  s�   € ð	ð Kð Kˆõ Õ.Ñ0Ô0×4Ò4°q°c¸A¸3°ZÀ!ÀQÀÑHÔHÔNÐPTÑUÔUˆà�U”Z ”]Ð&Ð&Ò&Ð& QÒ&Ð&Ð&Ð&Ð&Ð(JÑ&Ô&Ð&Ð&ðKð Krˆ   c                  ó   — t          d¦  «        } t          j        d¦  «        }|                      ddd¦  «        }t                               ¦   «         D ]9\  }} |d¬¦  «        }|                     ||¦  «         |j        j        dk    sJ ‚Œ:d S )Nr   )rH   r_   rQ   ©rH   rŠ   )	r4   ry   rq   rŠ  r;   rŽ   r�   rþ   r¾   )r\   re   rf   r”   r  r  s         r†   Útest_only_constant_featuresr±  å  s™   € Ý% aÑ(Ô(€LÝ
Œ�ÑÔ€AØ×Ò˜Q  5Ñ)Ô)€AÝ(ŸšÑ0Ô0ð (ð (ÑˆˆmØˆm¨Ð+Ñ+Ô+ˆØ�Š��1‰ŒˆØŒyÔ" aÒ'Ð'Ð'Ð'Ð'ð(ð (rˆ   Útree_clsc                 ó:  — t          d¦  «        }|                     dd¦  «        }d}|d d …dfxx         |z  cc<   |                     ddd¦  «        } | d¬¦  «        }|                     ||¦  «         |j        d         dk    sJ ‚|j        d         dk    sJ ‚d S )Nr   rH   rQ   gH¯¼šò×z>r°  rŠ   r=   )r4   r/  rŠ  r�   ró   )r²  r\   re   Úfeature_thresholdrf   r  s         r†   Útest_almost_constant_featurerµ  ï  s¿   € õ
 & aÑ(Ô(€LØ×Ò˜"˜aÑ Ô €Að ÐØ€a€a€aˆ€d€G€G„GÐ Ñ €G€G�GØ×Ò˜Q  5Ñ)Ô)€Aà
ˆ( Ð
"Ñ
"Ô
"€CØ‡G‚GˆAˆq�M„M€MàÔ# AÔ&¨!Ò+Ð+Ð+Ð+àÔ# AÔ&¨Ò*Ð*Ð*Ð*Ð*Ð*rˆ   c                  ó\  — t          j        t          j        g d¢gt          j        d¦  «        f¦  «        ¦  «        } g d¢}t                               ¦   «         D ]P\  }}d|vrG |dd¬¦  «        }|                     | |¦  «         |j        j        dk    sJ ‚|j        j	        d	k    sJ ‚ŒQd S )
N)r   r   r   r   r   r=   rQ   r<   r?   rN   r¿   )r<   rM   )r   r   r   r=   r=   rQ   rQ   rQ   r@   r@   r@   Ú	ExtraTreer   r=   r«   rQ   r?   )
ry   Ú	transposer®   rq   r;   rŽ   r�   rþ   r¾   ru   ©re   rf   r”   r  r  s        r†   Ú,test_behaviour_constant_feature_after_splitsrº    sË   € Ý
ŒÝ
Œ	Ð5Ð5Ð5Ð6½¼ÀÑ8IÔ8IÐJÑKÔKñ	ô 	€Að 	*Ð)Ð)€AÝ(ŸšÑ0Ô0ð -ð -Ñˆˆmà˜dÐ"Ð"Ø�-¨Q¸QÐ?Ñ?Ô?ˆCØ�GŠG�A�q‰MŒMˆMØ”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                               ¦   «         D ]p\  }} |dd¬¦  «        }|                     | |¦  «         |j        j        dk    sJ ‚t          | 
                    | ¦  «        t          j        dd	¦  «        ¦  «         Œqt                               ¦   «         D ]p\  }} |dd¬¦  «        }|                     | |¦  «         |j        j        dk    sJ ‚t          |                     | ¦  «        t          j        d
d	¦  «        ¦  «         Œqd S )NrS   rX   )r<   r  )rX   rS   rX   rS   r   r=   r«   rl  rO   )r<   )ry   Úhstackr¤   rq   r�   rŽ   r�   rþ   r¾   r+   rÌ   rœ   rÖ   r�   r¹  s        r†   Ú(test_with_only_one_non_constant_featuresr½    se  € Ý
Œ	•2”8˜c˜U S E¨C¨5°3°%Ð8Ñ9Ô9½2¼8ÀIÑ;NÔ;NÐOÑPÔP€Aå
ŒÐ%Ð%Ð%Ñ&Ô&€AÝ(ŸšÑ0Ô0ð Gð GÑˆˆmØˆm¨¸Ð;Ñ;Ô;ˆØ�Š��1‰ŒˆØŒyÔ" aÒ'Ð'Ð'Ð'Ý˜3×,Ò,¨QÑ/Ô/µ´¸ÀÑ1EÔ1EÑFÔFÐFÐFå(ŸšÑ0Ô0ð ?ð ?ÑˆˆmØˆm¨¸Ð;Ñ;Ô;ˆØ�Š��1‰ŒˆØŒyÔ" aÒ'Ð'Ð'Ð'Ý˜3Ÿ;š; q™>œ>­2¬7°4¸Ñ+=Ô+=Ñ>Ô>Ð>Ð>ð	?ð ?rˆ   c                  óF  — t          j        dd¦  «                             t           j        ¦  «                             dd¦  «        } t          ¦   «         }t          j        t          d¬¦  «        5  | 	                    | g d¢¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Ng¥\Ãñ)c=Hr<   rC   r=   r  r
  )r   r=   r   r=   )
ry   Úrepeatr-  r‚  Úreshaper   rº   rù   rú   r�   )re   r•   s     r†   Útest_big_inputrÁ  #  sÏ   € å
Œ	�(˜AÑÔ×%Ò%¥b¤jÑ1Ô1×9Ò9¸"¸aÑ@Ô@€AÝ
 Ñ
"Ô
"€CÝ	Œ•z¨Ð	3Ñ	3Ô	3ð !ð !Ø�Š��<�<�<Ñ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   Á0BÂBÂBc                  óŠ   — ddl m}  t          j        t          ¦  «        5   | ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr   ©Ú_realloc_test)Úsklearn.tree._utilsrÄ  rº   rù   ÚMemoryErrorrÃ  s    r†   Útest_reallocrÇ  +  s“   € Ø1Ð1Ð1Ð1Ð1Ð1å	Œ•{Ñ	#Ô	#ð ð Øˆ‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s    8¸<¿<c                  ó>  — dt          j        d¦  «        z  } t          j                             dd¦  «        }t          j                             ddd¦  «        }d| dz   z  }t          d|¬¦  «        }t          j        t          ¦  «        5  | 
                    ||¦  «         d d d ¦  «         n# 1 swxY w Y   d| dz
  z  dz
  }t          d|¬¦  «        }t          j        t          ¦  «        5  | 
                    ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	NrP   ÚPrH   rQ   r   r=   Úbest)Úsplitterrñ   )ÚstructÚcalcsizery   r�  ÚrandnrŠ  r   rº   rù   Ú	Exceptionr�   rÆ  )Ún_bitsre   rf   Úhuger•   s        r†   Útest_huge_allocationsrÒ  2  sˆ  € Ø•” Ñ%Ô%Ñ%€Få
Œ	�Š˜˜AÑÔ€AÝ
Œ	×Ò˜!˜Q Ñ#Ô#€Að �˜!‘Ñ€DÝ
 ¨&ÀÐ
FÑ
FÔ
F€CÝ	Œ•yÑ	!Ô	!ð ð Ø�Š��1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 �˜!‘Ñ˜qÑ €DÝ
 ¨&ÀÐ
FÑ
FÔ
F€CÝ	Œ•{Ñ	#Ô	#ð ð Ø�Š��1‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   ÂB.Â.B2Â5B2Ã.DÄDÄDc                 óÀ  — t           |          }t          |         d         }t          |         d         }|dv r$|j        d         dz  }|d |…         }|d |…         }t          t          z   t
          z   D �]i} ||¦  «        } |d|¬¦  «                             ||¦  «        }	 |d|¬¦  «                             ||¦  «        }
t          |	j        |
j        d 	                    | ¦  «        ¦  «         |	 
                    |¦  «        }| t          v r*|	                     |¦  «        }|	                     |¦  «        }t          t
          z   t          z   D ]‹} ||t          j        ¬¦  «        }t!          |
 
                    |¦  «        |¦  «         | t          v rFt!          |
                     |¦  «        |¦  «         t!          |
                     |¦  «        |¦  «         ŒŒ�Œkd S )	Nre   rf   )ri   rh   r   r?   ©r\   r¾   ú5{0} with dense and sparse format gave different treesr  )r;   r,  r­   r/   r0   r1   r�   r‡   rþ   rv   r�   r�   rÌ   rÏ   ry   r  r*   )r
   Údatasetr¾   r  re   rf   r]   r2  ÚX_sparser�   r‚   Úy_predÚy_probaÚy_log_probaÚsparse_container_testÚX_sparse_tests                   r†   Úcheck_sparse_inputrÝ  G  sê  € Ý˜d”O€MÝ�Ô˜#Ô€AÝ�Ô˜#Ô€Að Ð(Ð(Ð(Ø”G˜A”J !‘Oˆ	ØˆjˆyˆjŒMˆØˆjˆyˆjŒMˆå*­^Ñ;½nÑLð ñ ÐØ#Ð# AÑ&Ô&ˆð ˆM q°IÐ>Ñ>Ô>×BÒBÀ1ÀaÑHÔHˆØˆM q°IÐ>Ñ>Ô>×BÒBÀ8ÈQÑOÔOˆåØŒGØŒGØC×JÒJÈ4ÑPÔPñ	
ô 	
ð 	
ð —’˜1‘”ˆØ•9ÐÐØ—o’o aÑ(Ô(ˆGØ×-Ò-¨aÑ0Ô0ˆKå%3µnÑ%DÅ~Ñ%Uð 		ð 		Ð!Ø1Ð1°(Å"Ä*ÐMÑMÔMˆMå% a§i¢i°Ñ&>Ô&>ÀÑGÔGÐGà•yÐ Ð Ý)¨!¯/ª/¸-Ñ*HÔ*HÈ'ÑRÔRÐRÝ)Ø×'Ò'¨Ñ6Ô6¸ñô ð øñ		ð%ð rˆ   Ú	tree_typerÖ  )rk   rj   ri   rm   rn   ro   rp   rq   c                 ó<   — |dk    rdnd }t          | ||¦  «         d S )Nri   r@   ©rÝ  )rÞ  rÖ  r¾   s      r†   Útest_sparse_inputrá  p  s/   € ð  Ò(Ð(��¨d€IÝ�y '¨9Ñ5Ô5Ð5Ð5Ð5rˆ   rh   rl   c                 ó(   — t          | |d¦  «         d S )NrQ   rà  )rÞ  rÖ  s     r†   Útest_sparse_input_reg_treesrã  ƒ  s   € õ
 �y '¨1Ñ-Ô-Ð-Ð-Ð-rˆ   )rn   ro   rp   rq   c                 óò  — t           |          }t          |         d         } ||¦  «        }t          |         d         } |ddd¬¦  «                             ||¦  «        } |ddd¬¦  «                             ||¦  «        }t          |j        |j        d                     | ¦  «        ¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «          |ddd¬	¦  «                             ||¦  «        } |ddd¬	¦  «                             ||¦  «        }t          |j        |j        d                     | ¦  «        ¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «          |d|j        d         dz  ¬
¦  «                             ||¦  «        } |d|j        d         dz  ¬
¦  «                             ||¦  «        }t          |j        |j        d                     | ¦  «        ¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «          |dd¬¦  «                             ||¦  «        } |dd¬¦  «                             ||¦  «        }t          |j        |j        d                     | ¦  «        ¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «         d S )Nre   rf   r   r=   rQ   )r\   rŒ   r¾   rÕ  rH   )r\   rŒ   r  )r\   r#  r@   rð   )	r;   r,  r�   r‡   rþ   rv   r*   r�   r­   )	rÞ  rÖ  r=  r  re   r×  rf   r�   r‚   s	            r†   Útest_sparse_parametersrå  ‹  sè  € õ ˜iÔ(€MÝ�Ô˜#Ô€AØˆ}˜QÑÔ€HÝ�Ô˜#Ô€Að 	ˆ 1°1ÀÐBÑBÔB×FÒFÀqÈ!ÑLÔL€AØˆ 1°1ÀÐBÑBÔB×FÒFÀxÐQRÑSÔS€AÝØ	ŒØ	ŒØ?×FÒFÀyÑQÔQñô ð õ
 ˜aŸiši¨™lœl¨A¯IªI°a©L¬LÑ9Ô9Ð9ð 	ˆ 1°1ÈÐKÑKÔK×OÒOÐPQÐSTÑUÔU€AØˆ 1°1ÈÐKÑKÔK×OÒOØ�!ñ	ô 	€Aõ Ø	ŒØ	ŒØ?×FÒFÀyÑQÔQñô ð õ
 ˜aŸiši¨™lœl¨A¯IªI°a©L¬LÑ9Ô9Ð9ð 	ˆ 1°x´~ÀaÔ7HÈAÑ7MÐNÑNÔN×RÒRÐSTÐVWÑXÔX€AØˆ 1°x´~ÀaÔ7HÈAÑ7MÐNÑNÔN×RÒRØ�!ñ	ô 	€Aõ Ø	ŒØ	ŒØ?×FÒFÀyÑQÔQñô ð õ
 ˜aŸiši¨™lœl¨A¯IªI°a©L¬LÑ9Ô9Ð9ð 	ˆ 1°QÐ7Ñ7Ô7×;Ò;¸A¸qÑAÔA€AØˆ 1°QÐ7Ñ7Ô7×;Ò;¸HÀaÑHÔH€AÝØ	ŒØ	ŒØ?×FÒFÀyÑQÔQñô ð õ
 ˜aŸiši¨™lœl¨A¯IªI°a©L¬LÑ9Ô9Ð9Ð9Ð9rˆ   ztree_type, criterionc                 ó$   — g | ]}|t           v ¯|‘ŒS rÀ   )rÖ   ©r]  r
   s     r†   ú
<listcomp>rè  Å  s"   € ÐEÐEÐE˜4°4½9Ð3DÐ3D�$Ð3DÐ3DÐ3Drˆ   c                 ó$   — g | ]}|t           v ¯|‘ŒS rÀ   )r�   rç  s     r†   rè  rè  Ç  s"   € ÐDÐDÐD˜$°$½)Ð2CÐ2C�Ð2CÐ2CÐ2Crˆ   c                 óÒ  — t           |          }t          |         d         } ||¦  «        }t          |         d         } |dd|¬¦  «                             ||¦  «        } |dd|¬¦  «                             ||¦  «        }	t          |j        |	j        d                     | ¦  «        ¦  «         t          |	                     |¦  «        |                     |¦  «        ¦  «         d S )Nre   rf   r   r@   ©r\   r¾   rž   rÕ  )r;   r,  r�   r‡   rþ   rv   r*   r�   )
rÞ  rÖ  r=  rž   r  re   r×  rf   r�   r‚   s
             r†   Útest_sparse_criteriarì  Â  sá   € õ ˜iÔ(€MÝ�Ô˜#Ô€AØˆ}˜QÑÔ€HÝ�Ô˜#Ô€Aàˆ 1°¸YÐGÑGÔG×KÒKÈAÈqÑQÔQ€AØˆ 1°¸YÐGÑGÔG×KÒKÈHÐVWÑXÔX€AåØ	ŒØ	ŒØ?×FÒFÀyÑQÔQñô ð õ
 ˜aŸiši¨™lœl¨A¯IªI°a©L¬LÑ9Ô9Ð9Ð9Ð9rˆ   zcsc_container,csr_containerc                 ó
  — t           |          }d}d}|}t          j        |¦  «        }t          d¦  «        }g }	g }
d}|g}t	          |¦  «        D ]•}|                     |d¦  «        }|                     |¦  «        d |…         }|	                     |¦  «         |                     dd|f¬¦  «        dz
  }|
                     |¦  «         ||z  }|                     |¦  «         Œ–t          j        |	¦  «         	                    t          j
        ¦  «        }	t          j        |t          j
        ¬¦  «        }t          j        t          j        |
¦  «        t          j        ¬¦  «        }
 ||
|	|f||f¬¦  «        }|                     ¦   «         } ||
|	|f||f¬¦  «        }|                     ¦   «         }|                     dd|f¬¦  «        }|                     ¦   «         }|j        d	k                         ¦   «         dk    sJ ‚|j        d	k                         ¦   «         dk    sJ ‚ |d|¬
¦  «                             ||¦  «        } |d|¬
¦  «                             ||¦  «        }t'          |j        |j        d                     t,          ¦  «        ¦  «         ||f}t/          ||¦  «        D �]N\  }}t1          |j                             |¦  «        |j                             |¦  «        ¦  «         t1          |                     |¦  «        |                     |¦  «        ¦  «         t1          |                     |¦  «        |j                             |¦  «        ¦  «         t1          |j                             |¦  «                             ¦   «         |j                             |¦  «                             ¦   «         ¦  «         t1          |                     |¦  «                             ¦   «         |                     |¦  «                             ¦   «         ¦  «         t1          |                     |¦  «                             ¦   «         |j                             |¦  «                             ¦   «         ¦  «         t1          |                     |¦  «        |                     |¦  «        ¦  «         t,          t8          v r6t1          |                     |¦  «        |                     |¦  «        ¦  «         �ŒPd S )Nr@   rH   r   rO   r`   r=   r  ©r­   rX   rÔ  rÕ  )r;   ry   rÔ   r4   rO  ÚbinomialÚpermutationÚappendÚconcatenater-  Úint32r¤   r  ÚtoarrayrŠ  Úcopyr¶   r~   r�   r‡   rþ   rv   r
   r   r*   r  Údecision_pathr�   r�   rÌ   )rÞ  r=  r„  r  r¾   r^   r]   Úsamplesr\   r¬   r¶   ÚoffsetÚindptrÚiÚn_nonzero_iÚ	indices_iÚdata_ir×  re   rÜ  ÚX_testrf   r�   r‚   ÚXsÚX1r  s                              r†   Útest_explicit_sparse_zerosr  Ý  sœ  € õ
 ˜iÔ(€MØ€IØ€Jð €IÝŒi˜	Ñ"Ô"€Gõ & aÑ(Ô(€LØ€GØ€DØ€FØˆX€FÝ�:ÑÔð ð ˆØ"×+Ò+¨I°sÑ;Ô;ˆØ ×,Ò,¨WÑ5Ô5°l°{°lÔCˆ	Ø�Š�yÑ!Ô!Ð!Ø×&Ò& q¨#°[°NÐ&ÑCÔCÀaÑGˆØ�Š�FÑÔÐØ�+ÑˆØ�Š�fÑÔÐÐåŒn˜WÑ%Ô%×,Ò,­R¬XÑ6Ô6€GÝŒX�f¥B¤HÐ-Ñ-Ô-€FÝŒ8•B”N 4Ñ(Ô(µ´
Ð;Ñ;Ô;€DØˆ}˜d G¨VÐ4¸YÈ
Ð<SÐTÑTÔT€HØ×ÒÑÔ€AØ!�MØ	ˆw˜Ð¨	°:Ð'>ðñ ô €Mð ×"Ò"Ñ$Ô$€FØ×Ò˜Q ¨¨ÐÑ5Ô5€Að "×&Ò&Ñ(Ô(€Mð ŒM˜SÒ ×%Ò%Ñ'Ô'¨!Ò+Ð+Ð+Ð+ØÔ #Ò%×*Ò*Ñ,Ô,¨qÒ0Ð0Ð0Ð0ð 	ˆ 1°	Ð:Ñ:Ô:×>Ò>¸qÀ!ÑDÔD€AØˆ 1°	Ð:Ñ:Ô:×>Ò>¸xÈÑKÔK€AåØ	ŒØ	ŒØ?×FÒFÅtÑLÔLñô ð ð �-Ð	 €BÝ˜"˜b‘/”/ð Pñ P‰ˆˆBÝ! !¤'§-¢-°Ñ"3Ô"3°Q´W·]²]À2Ñ5FÔ5FÑGÔGÐGÝ! !§'¢'¨"¡+¤+¨q¯wªw°r©{¬{Ñ;Ô;Ð;Ý! !§'¢'¨"¡+¤+¨q¬w¯}ª}¸RÑ/@Ô/@ÑAÔAÐAå!ØŒG×!Ò! "Ñ%Ô%×-Ò-Ñ/Ô/°´×1FÒ1FÀrÑ1JÔ1J×1RÒ1RÑ1TÔ1Tñ	
ô 	
ð 	
õ 	"Ø�OŠO˜BÑÔ×'Ò'Ñ)Ô)¨1¯?ª?¸2Ñ+>Ô+>×+FÒ+FÑ+HÔ+Hñ	
ô 	
ð 	
õ 	"Ø�OŠO˜BÑÔ×'Ò'Ñ)Ô)¨1¬7×+@Ò+@ÀÑ+DÔ+D×+LÒ+LÑ+NÔ+Nñ	
ô 	
ð 	
õ 	" !§)¢)¨B¡-¤-°·²¸2±´Ñ?Ô?Ð?å•9ÐÐÝ% a§o¢o°bÑ&9Ô&9¸1¿?º?È2Ñ;NÔ;NÑOÔOÐOùð%Pð Prˆ   c                 óP  — t           |          }t          j        d d …df                              ¦   «         }t          j        d d …df                              d¦  «        }t          j        }t          j        t          ¦  «        5   |d¬¦  «         	                    ||¦  «         d d d ¦  «         n# 1 swxY w Y    |d¬¦  «        }| 	                    ||¦  «         t          j        t          ¦  «        5  | 
                    |g¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rŸ  rŠ   )r;   rg   r¶   r¯   rÀ  r·   rº   rù   rú   r�   r�   )r”   r  re   ÚX_2drf   r  s         r†   Úcheck_raise_error_on_1d_inputr  ,  sŠ  € Ý˜d”O€MåŒ	�!�!�!�Q�$Œ×ÒÑÔ€AÝŒ9�Q�Q�Q˜�TŒ?×"Ò" 7Ñ+Ô+€DÝŒ€Aå	Œ•zÑ	"Ô	"ð 0ð 0Øˆ 1Ð%Ñ%Ô%×)Ò)¨!¨QÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð ˆ- QÐ
'Ñ
'Ô
'€CØ‡G‚GˆD�!ÑÔÐÝ	Œ•zÑ	"Ô	"ð ð Ø�Š�Q�CÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   Â!B1Â1B5Â8B5Ã7DÄDÄ"Dc                 ór   — t          ¦   «         5  t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©N)r-   r  r;  s    r†   Útest_1d_inputr  <  s€   € å	Ñ	Ô	ð ,ð ,Ý% dÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   �,¬0³0r2  c                 ó`  — t           |          }t          j        dgdgdgdgdgg¦  «        }g d¢}g d¢}|� ||¦  «        } |d¬¦  «        }|                     |||¬¦  «         |j        j        dk    sJ ‚ |dd¬¦  «        }|                     |||¬¦  «         |j        j        dk    sJ ‚d S )	Nr   r=   )r   r   r   r   r=   )rB   rB   rB   rB   rB   rŠ   r˜   gš™™™™™Ù?)r\   r*  )r;   ry   r¤   r�   rþ   r¾   )r”   r2  r  re   rf   r™   r  s          r†   Ú test_min_weight_leaf_split_levelr	  B  sã   € õ ˜d”O€Må
Œ�1�#˜�s˜Q˜C !  q cÐ*Ñ+Ô+€AØˆˆ€AØ-Ð-Ð-€MØÐ#ØÐ˜QÑÔˆà
ˆ- QÐ
'Ñ
'Ô
'€CØ‡G‚GˆAˆq €GÑ.Ô.Ð.ØŒ9Ô !Ò#Ð#Ð#Ð#à
ˆ- QÀÐ
EÑ
EÔ
E€CØ‡G‚GˆAˆq €GÑ.Ô.Ð.ØŒ9Ô !Ò#Ð#Ð#Ð#Ð#Ð#rˆ   c                 ó:  — t                                t          j        d¬¦  «        }t	          |          ¦   «         }|                     t           t          ¦  «         t          |                     t           ¦  «        |j	                             |¦  «        ¦  «         d S ©NF©rõ  ©
ÚX_smallr-  ry   r  r;   r�   Úy_smallr+   r  rþ   )r”   Ú	X_small32r  s      r†   Útest_public_apply_all_treesr  V  sl   € å—’�rœz°�Ñ6Ô6€Iå
�DŒ/Ñ
Ô
€CØ‡G‚G�G•WÑÔÐÝ�s—y’y¥Ñ)Ô)¨3¬9¯?ª?¸9Ñ+EÔ+EÑFÔFÐFÐFÐFrˆ   r„  c                 óL  —  |t                                t          j        d¬¦  «        ¦  «        }t	          |          ¦   «         }|                     t           t          ¦  «         t          |                     t           ¦  «        |j	                             |¦  «        ¦  «         d S r  r  )r”   r„  r  r  s       r†   Útest_public_apply_sparse_treesr  _  sx   € ð ��gŸnšn­R¬Z¸e˜nÑDÔDÑEÔE€Iå
�DŒ/Ñ
Ô
€CØ‡G‚G�G•WÑÔÐÝ�s—y’y¥Ñ)Ô)¨3¬9¯?ª?¸9Ñ+EÔ+EÑFÔFÐFÐFÐFrˆ   c                  ó€  — t           j        } t           j        }t          dd¬¦  «                             | |¦  «        }|                     | d d…         ¦  «                             ¦   «         }t          |g d¢g d¢g¦  «         dt          j	        t          j	        ddg} g d¢}t          j
        | ¦  «                             d	d¦  «        } t          d¬
¦  «                             | |¦  «        } |j        | ¦  «                             ¦   «                              d¬¦  «        }t          ||j        j        ¦  «         d S )Nr   r=   rÔ  rQ   )r=   r=   r   ©r=   r   r=   r@   ©r   r   r   r=   r=   rC   rŠ   ©Úaxis)rg   r¶   r·   r   r�   rö  rô  r+   ry   Únanr¤   rÀ  r   r~   rþ   r}   )re   rf   r  Únode_indicatorr
   r}   s         r†   Útest_decision_path_hardcodedr  i  s  € åŒ	€AÝŒ€AÝ
 ¨a¸1Ð
=Ñ
=Ô
=×
AÒ
AÀ!ÀQÑ
GÔ
G€CØ×&Ò& q¨¨!¨¤uÑ-Ô-×5Ò5Ñ7Ô7€NÝ�~¨	¨	¨	°9°9°9Ð'=Ñ>Ô>Ð>ð
 
�BŒF•B”F˜A˜qÐ!€AØˆˆ€AÝ
Œ�‰Œ×Ò˜B Ñ"Ô"€AÝ ¨aÐ0Ñ0Ô0×4Ò4°Q¸Ñ:Ô:€DØ'�TÔ'¨Ñ*Ô*×2Ò2Ñ4Ô4×8Ò8¸aÐ8Ñ@Ô@€NÝ�~ t¤zÔ'@ÑAÔAÐAÐAÐArˆ   c                 óæ  ‡— t           j        }t           j        }|j        d         }t          |          } |dd¬¦  «        }|                     ||¦  «         |                     |¦  «        }|                     ¦   «         Š‰j        ||j        j	        fk    sJ ‚| 
                    |¦  «        }ˆfd„t          |¦  «        D ¦   «         }t          |t          j        |¬¦  «        ¦  «         |j        j        t           k    }	t          t          j        ‰|	¦  «        t          j        |¬¦  «        ¦  «         ‰                     d¬¦  «                             ¦   «         }
|j        j        |
k    sJ ‚d S )Nr   rQ   rÔ  c                 ó*   •— g | ]\  }}‰||f         ‘ŒS rÀ   rÀ   )r]  rú  Újr  s      €r†   rè  z&test_decision_path.<locals>.<listcomp>Œ  s&   ø€ ÐJÐJÐJ±°°1�~ a¨ dÔ+ÐJÐJÐJrˆ   rî  r=   r  )rg   r¶   r·   r­   r;   r�   rö  rô  rþ   ru   r  Ú	enumerater*   ry   rš   rx   r    r  r~   rC  r¾   )r”   re   rf   r]   r  r  Únode_indicator_csrÚleavesÚleave_indicatorÚ
all_leavesr¾   r  s              @r†   Útest_decision_pathr$  |  s]  ø€ åŒ	€AÝŒ€AØ”˜”
€Iå˜d”O€MØ
ˆ- Q°!Ð
4Ñ
4Ô
4€CØ‡G‚GˆAˆq�M„M€Mà×*Ò*¨1Ñ-Ô-ÐØ'×/Ò/Ñ1Ô1€NØÔ I¨s¬yÔ/CÐ#DÒDÐDÐDÐDð �YŠY�q‰\Œ\€FØJÐJÐJÐJ½	À&Ñ8IÔ8IÐJÑJÔJ€OÝ˜o­r¬w¸YÐ/GÑ/GÔ/GÑHÔHÐHð ”Ô(­IÒ5€JÝÝ
Œˆ~˜zÑ*Ô*­B¬G¸)Ð,DÑ,DÔ,Dñô ð ð
 ×"Ò"¨Ð"Ñ*Ô*×.Ò.Ñ0Ô0€IØŒ9Ô )Ò+Ð+Ð+Ð+Ð+Ð+rˆ   c                 óò   — t            |t          ¦  «        }}t          |          }t          j        t
          ¦  «        5   |d¬¦  «                             ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   rŠ   )ÚX_multilabelÚy_multilabelr;   rº   rù   r’  r�   )r”   r„  re   rf   r  s        r†   Útest_no_sparse_y_supportr)  š  s·   € õ ˜˜¥|Ñ4Ô4€q€AÝ˜d”O€MÝ	Œ•yÑ	!Ô	!ð 0ð 0Øˆ 1Ð%Ñ%Ô%×)Ò)¨!¨QÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   ¾!A,Á,A0Á3A0c                  óÎ  — t          ddd¬¦  «        } |                      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¢¦  «         |                      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¢¦  «         |                      dgdgdgdgdggg d¢¬¦  «         t          | j        j        g d¢¦  «         t          | j        j        j        g d¢¦  «         t          ddd¬¦  «        } dgdgdgdgdgg}|                      |g d¢g d¢¬
¦  «         t          |  
                    |¦  «        g d¢¦  «         t          | j        j        g d¢¦  «         t          | j        j        j        g d¢¦  «         dS )aP  Check MAE criterion produces correct results on small toy datasets:

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

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

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

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

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

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

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

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

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

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

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

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

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

    The best split is between X values of 2 and 3, with:
    - left node being the first 2 data points, both with y=1
      => AE and impurity is 0
    - right node being the last 3 data points, weighted median is 2.
      Total error = (Absolute(2 - 3) * 2)
                  + (Absolute(2 - 1) * 1)
                  + (Absolute(2 - 2) * 2)
                  = 3
    r   r8   rQ   )r\   rž   rñ   r@   r?   rP   )rN   r¿   r@   r<   r@   )ç333333ã?ç333333Ó?rï   rS   r,  )re   rf   r™   )g²�…,dñ?gÜ¶mÛ¶mÛ?gÿÿÿÿÿÿç?)ç      @g      @r-  )çffffffö?rR   gUUUUUUõ?)r<   rY   r-  rd   r=   )r\   rž   r¾   r<   )r=   r=   r@   r=   rQ   )r@   r@   rQ   r=   rQ   )r=   r=   rQ   rQ   rQ   )gtÑE]tá?r   r+  )r=   r=   rQ   N)r   r�   r   rþ   r   r+   r€   r¬  ry   rš   r�   )Údt_maere   s     r†   Útest_maer0  ¤  sB  € õH #ØÐ"2À1ðñ ô €Fð
 ‡J‚JØˆ3���a�S˜1˜# ˜sÐ
#Ø
ˆ/ˆ/Ø/Ð/Ð/ð ñ ô ð õ
 �F”LÔ)Ð+LÐ+LÐ+LÑMÔMÐMÝ�v”|Ô)Ô.°°°Ñ@Ô@Ð@ð ‡J‚J�1�#˜�s˜Q˜C !  q cÐ*¨o¨o¨oÍRÌWÐUVÉZÌZ€JÑXÔXÐXÝ�v”|Ô,Ð.CÐ.CÐ.CÑDÔDÐDÝ�v”|Ô)Ô.°°°Ñ>Ô>Ð>ð
 ‡J‚J�1�#˜�s˜Q˜C !  q cÐ*¨o¨o¨o€JÑ>Ô>Ð>Ý�v”|Ô,Ð.CÐ.CÐ.CÑDÔDÐDÝ�v”|Ô)Ô.°°°Ñ>Ô>Ð>å"ØØ"Øðñ ô €Fð
 ˆˆqˆc�A�3˜˜˜a˜SÐ!€AØ
‡J‚JØ
Ø
ˆ/ˆ/Ø%�o�oð ñ ô ð õ
 �F—N’N 1Ñ%Ô%   Ñ7Ô7Ð7Ý�F”LÔ)Ð+=Ð+=Ð+=Ñ>Ô>Ð>Ý�v”|Ô)Ô.°	°	°	Ñ:Ô:Ð:Ð:Ð:rˆ   c                  ó(  — d} t          j        dt           j        ¬¦  «        }d}d„ }t          j        t          j        |fD ]Ð}t          j        ¦   «         D ]W\  }} || |¦  «        } ||¦  «                             ¦   «         }|\  }	\  }
}}||	k    sJ ‚| |
k    sJ ‚t          ||¦  «         ŒXt          j        ¦   «         D ]O\  }} || |¦  «        } ||¦  «                             ¦   «         }|\  }	\  }
}}||	k    sJ ‚| |
k    sJ ‚||k    sJ ‚ŒPŒÑd S )Nr@   r  rK  c                 óN   — t          j        t          j        | ¦  «        ¦  «        S r  )r`  rb  ra  )Úobjs    r†   Ú_pickle_copyz)test_criterion_copy.<locals>._pickle_copy8  s   € ÝŒ|�FœL¨Ñ-Ô-Ñ.Ô.Ð.rˆ   )
ry   rÔ   Úintprõ  Údeepcopyr   rŽ   Ú
__reduce__r+   r   )Ú	n_outputsrZ  r]   r4  Ú	copy_funcÚ_ÚtypenameÚcriteriaÚresultÚ	typename_Ú
n_outputs_rt  Ú
n_samples_s                r†   Útest_criterion_copyrA  1  s{  € ð €IÝ”	˜!¥2¤7Ð+Ñ+Ô+€IØ€Ið/ð /ð /õ ”i¥¤°Ð=ð +ð +ˆ	Ý'Ô-Ñ/Ô/ð 	6ð 	6‰KˆAˆxØ�x 	¨9Ñ5Ô5ˆHØ�Y˜xÑ(Ô(×3Ò3Ñ5Ô5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ð(Ø 
Ò*Ð*Ð*Ð*Ý˜y¨*Ñ5Ô5Ð5Ð5å'Ô-Ñ/Ô/ð 	+ð 	+‰KˆAˆxØ�x 	¨9Ñ5Ô5ˆHØ�Y˜xÑ(Ô(×3Ò3Ñ5Ô5ˆFØ5;Ñ2ˆIÑ/˜
 J°Ø˜yÒ(Ð(Ð(Ð(Ø 
Ò*Ð*Ð*Ð*Ø 
Ò*Ð*Ð*Ð*Ð*ð	+ð+ð +rˆ   c                 óÖ  — t           j                             d¦  «                             dd¦  «        dz  }t	          j        |                     d¦  «        ¦  «        }|d d …d d…f         }| � | |¦  «        }|d d …df         }t          d¬¦  «                             ||¦  «        } |j	        |¦  «        }t          t          j        |j        j        t          k    ¦  «        d         ¦  «        }|                     |¦  «        }t          j        t          j        |j        j        ¦  «         ¦  «        d         }t%          |¦  «        dk    sJ ‚t%          |¦  «        dk    sJ ‚d S )Nr   rK  rM   g±¡*ÓÎâGr  rC   rŠ   )ry   r�  ÚRandomStaterÎ  r(   Ú
nan_to_numr-  r   r�   r  ÚsetÚwhererþ   rx   r    Ú
differenceÚisfiniter|   r›   )	r2  r¶   re   rf   r
   Úterminal_regionsÚ	left_leafÚ
empty_leafÚinfinite_thresholds	            r†   Ú"test_empty_leaf_infinite_thresholdrM  M  sM  € õ Œ9× Ò  Ñ#Ô#×)Ò)¨#¨rÑ2Ô2°TÑ9€DÝŒ>˜$Ÿ+š+ iÑ0Ô0Ñ1Ô1€DØˆQˆQˆQ���ˆVŒ€AØÐ#ØÐ˜QÑÔˆØˆQˆQˆQ�ˆUŒ€Aå ¨aÐ0Ñ0Ô0×4Ò4°Q¸Ñ:Ô:€DØ!�t”z !‘}”}ÐÝ•B”H˜TœZÔ5½ÒBÑCÔCÀAÔFÑGÔG€IØ×%Ò%Ð&6Ñ7Ô7€JÝœ¥2¤;¨t¬zÔ/CÑ#DÔ#DÐ"DÑEÔEÀaÔHÐÝÐ!Ñ"Ô" aÒ'Ð'Ð'Ð'Ýˆz‰?Œ?˜aÒÐÐÐÐÐrˆ   c                 óv  — t           |          } | d         | d         }} |dd¬¦  «        }|                     ||¦  «        }|j        }|j        }t	          j        t	          j        |¦  «        dk    ¦  «        sJ ‚t	          j        t	          j        |¦  «        dk    ¦  «        sJ ‚t          ||||¦  «         d S ©Nre   rf   r_   r   )rñ   r\   ©r,  Úcost_complexity_pruning_pathÚ
ccp_alphasÚ
impuritiesry   rå   ÚdiffÚassert_pruning_creates_subtree©rÖ  r²  re   rf   r  ÚinfoÚpruning_pathrS  s           r†   Ú'test_prune_tree_classifier_are_subtreesrY  `  sº   € õ
 �wÔ€GØ�3Œ<˜ œ€q€AØ
ˆ( "°1Ð
5Ñ
5Ô
5€CØ×+Ò+¨A¨qÑ1Ô1€Dà”?€LØ”€JÝŒ6•"”'˜,Ñ'Ô'¨1Ò,Ñ-Ô-Ð-Ð-Ð-ÝŒ6•"”'˜*Ñ%Ô%¨Ò*Ñ+Ô+Ð+Ð+Ð+å" 8¨Q°°<Ñ@Ô@Ð@Ð@Ð@rˆ   c                 óv  — t           |          } | d         | d         }} |dd¬¦  «        }|                     ||¦  «        }|j        }|j        }t	          j        t	          j        |¦  «        dk    ¦  «        sJ ‚t	          j        t	          j        |¦  «        dk    ¦  «        sJ ‚t          ||||¦  «         d S rO  rP  rV  s           r†   Ú'test_prune_tree_regression_are_subtreesr[  r  sº   € õ �wÔ€GØ�3Œ<˜ œ€q€Aà
ˆ( "°1Ð
5Ñ
5Ô
5€CØ×+Ò+¨A¨qÑ1Ô1€Dà”?€LØ”€JÝŒ6•"”'˜,Ñ'Ô'¨1Ò,Ñ-Ô-Ð-Ð-Ð-ÝŒ6•"”'˜*Ñ%Ô%¨Ò*Ñ+Ô+Ð+Ð+Ð+å" 8¨Q°°<Ñ@Ô@Ð@Ð@Ð@rˆ   c                  óì   — t          d¬¦  «        } |                      dgdggddg¦  «         t          dd¬¦  «        }|                     dgdggddg¦  «         t          | j        |j        ¦  «         d S )Nr   rŠ   r=   rH   )r\   Ú	ccp_alpha)r   r�   Úassert_is_subtreerþ   )r™  rö   s     r†   Útest_prune_single_node_treer_  ƒ  s€   € å!¨qÐ1Ñ1Ô1€DØ‡H‚Hˆqˆc�A�3ˆZ˜!˜Q˜Ñ Ô Ð õ "¨q¸BÐ?Ñ?Ô?€DØ‡H‚Hˆqˆc�A�3ˆZ˜!˜Q˜Ñ Ô Ð å�d”j $¤*Ñ-Ô-Ð-Ð-Ð-rˆ   c                 óà   — g }|D ]9} | d|d¬¦  «                              ||¦  «        }|                     |¦  «         Œ:t          |¦  «        D ]\  }}t          |j        |j        ¦  «         Œ d S )Nr_   r   )rñ   r]  r\   )r�   rñ  r   r^  rþ   )	Úestimator_clsre   rf   rX  Ú
estimatorsr]  r  Úprev_estÚnext_ests	            r†   rU  rU  �  sš   € à€JØ!ð ð ˆ	Øˆm¨2¸ÐQRÐSÑSÔS×WÒWØˆqñ
ô 
ˆð 	×Ò˜#ÑÔÐÐõ ' zÑ2Ô2ð :ð :Ñˆ�(Ý˜(œ.¨(¬.Ñ9Ô9Ð9Ð9ð:ð :rˆ   c                 ó8  — | j         |j         k    sJ ‚| j        |j        k    sJ ‚| j        }| j        }|j        }|j        }dg}|�rS|                     ¦   «         \  }}t          | j        |         |j        |         ¦  «         t          | j        |         |j        |         ¦  «         t          | j	        |         |j	        |         ¦  «         t          | j
        |         |j
        |         ¦  «         ||         ||         k    r!t          t          |j        |         ¦  «         nlt          | j        |         |j        |         ¦  «         |                     ||         ||         f¦  «         |                     ||         ||         f¦  «         |�°Qd S d S )N)r   r   )ru   r¾   rx   rw   Úpopr*   r€   r)   r   r}   rN  r!   r|   rñ  )	r
   ÚsubtreeÚtree_c_leftÚtree_c_rightÚsubtree_c_leftÚsubtree_c_rightÚstackÚtree_node_idxÚsubtree_node_idxs	            r†   r^  r^  ž  sÝ  € ØŒ?˜gÔ0Ò0Ð0Ð0Ð0ØŒ>˜WÔ.Ò.Ð.Ð.Ð.àÔ$€KØÔ&€LØÔ*€NØÔ,€OàˆH€EØ
ñ Ø*/¯)ª)©+¬+Ñ'ˆÐ'Ý!ØŒJ�}Ô% w¤}Ð5EÔ'Fñ	
ô 	
ð 	
õ 	ØŒM˜-Ô(¨'Ô*:Ð;KÔ*Lñ	
ô 	
ð 	
õ 	ØÔ Ô.°Ô0FÐGWÔ0Xñ	
ô 	
ð 	
õ 	ØÔ(¨Ô7ØÔ+Ð,<Ô=ñ	
ô 	
ð 	
ð
 Ð*Ô+¨Ð?OÔ/PÒPÐPå¥°Ô0AÐBRÔ0SÑTÔTÐTÐTõ  Ø”˜}Ô-¨wÔ/@ÐAQÔ/Rñô ð ð �LŠL˜+ mÔ4°nÐEUÔ6VÐWÑXÔXÐXØ�LŠLØ˜mÔ,¨oÐ>NÔ.OÐPñô ð ð3 ñ ð ð ð ð rˆ   rË  rÊ  r�  c                 óL  — t           d         }|d                              t          j        d¬¦  «        }|€t	          |¦  «        }no ||d         ¦  «        }t          j        |j        t          j        ¬¦  «        |_        t	          |j        |j        |j        f¦  «        \  |_        |_        |_        t	          t          j        t          t          j        ¬¦  «        ¦  «        }t          |          |¬¦  «        }|                     ||¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «         t          |                     |¦  «                             ¦   «         |                     |¦  «                             ¦   «         ¦  «         d S )Nrk   re   Fr  r  )rË  )r,  r-  ry   r  r,   r¤   r¶   r¬   rù  r  r;   r�   r+   r�   rö  Útodense)r”   rË  r2  rÖ  r  Ú
X_readonlyÚ
y_readonlyr  s           r†   Ú"test_apply_path_readonly_all_treesrs  Æ  sk  € õ �{Ô#€GØ�cŒl×!Ò!¥"¤*°5Ð!Ñ9Ô9€GØÐÝ.¨wÑ7Ô7ˆ
ˆ
à%Ð% g¨c¤lÑ3Ô3ˆ
åœ( :¤?½"¼*ÐEÑEÔEˆ
Œõ
 &ØŒ_˜jÔ0°*Ô2CÐDñ
ô 
ñ		
ØŒOØÔØÔõ
 +­2¬8µGÅ2Ä:Ð+NÑ+NÔ+NÑOÔO€JÝ
�DŒ/ 8Ð
,Ñ
,Ô
,€CØ‡G‚GˆJ˜
Ñ#Ô#Ð#Ý�s—{’{ :Ñ.Ô.°·²¸GÑ0DÔ0DÑEÔEÐEÝØ×Ò˜*Ñ%Ô%×-Ò-Ñ/Ô/°×1BÒ1BÀ7Ñ1KÔ1K×1SÒ1SÑ1UÔ1Uñô ð ð ð rˆ   )r7   r9   r:   c                 ó  — t           j        t           j        }} || ¬¦  «        }|                     ||¦  «         t	          j        |                     |¦  «        ¦  «        t          j        t	          j        |¦  «        ¦  «        k    sJ ‚d S )Nr	  )	rh   r¶   r·   r�   ry   r~   r�   rº   r»   )rž   r&   re   rf   r¨   s        r†   Útest_balance_propertyru  ä  sq   € õ Œ=�(œ/€q€AØ
ˆ$˜Ð
#Ñ
#Ô
#€CØ‡G‚GˆAˆq�M„M€MÝŒ6�#—+’+˜a‘.”.Ñ!Ô!¥V¤]µ2´6¸!±9´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| ¬¦  «        }|                     ||¦  «         t          j        |                     |¦  «        ¦  «        dk    sJ ‚t          d| ¬¦  «        }|                     ||¦  «         t          j        |                     |¦  «        dk    ¦  «        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| ¬¦  «        }|                     ||¦  «         t          j        |                     |¦  «        dk    ¦  «        sJ ‚d S )Nr   r=   rQ   r@   ©r   r   r   r   r=   rQ   r@   r<   r7   r    r:   rH   r+  r  )Úeffective_rankÚtail_strengthr]   r^   rë   r\   rC   )	r   r�   ry   Úaminr�   rå   r	   Úmake_regressionr¢   )rv  re   rf   r¨   r^   s        r†   Útest_poisson_zero_nodesr}  ó  s‘  € ð ˆQˆ�!�Q�˜!˜Q˜ ! Q ¨!¨Q¨°!°Q°¸!¸Q¸À!ÀQÀÐH€AØ Ð Ð €Aõ  ¨/ÈÐ
MÑ
MÔ
M€CØ‡G‚GˆAˆq�M„M€MÝŒ7�3—;’;˜q‘>”>Ñ"Ô" aÒ'Ð'Ð'Ð'å
¨)À$Ð
GÑ
GÔ
G€CØ‡G‚GˆAˆq�M„M€MÝŒ6�#—+’+˜a‘.”. 1Ò$Ñ%Ô%Ð%Ð%Ð%ð €JÝÔ#Ø! A‘~¨Ñ*ØØØØ  1‘n¨Ñ)Øðñ ô �D€A€qð €A€rˆA‚v�!�a’%ÑÑå
Œˆq‰	Œ	€AÝ
¨)À$Ð
GÑ
GÔ
G€CØ‡G‚GˆAˆq�M„M€MÝŒ6�#—+’+˜a‘.”. 1Ò$Ñ%Ô%Ð%Ð%Ð%Ð%Ð%rˆ   c            	      ó¤  — t           j                             d¦  «        } d\  }}}t          j        ||z   || ¬¦  «        }|                      dd|¬¦  «        t          j        |d¬¦  «        z  }|                      t          j        ||z  ¦  «        ¬	¦  «        }t          |||| ¬
¦  «        \  }}}	}
t          dd| ¬¦  «        }t          dd| ¬¦  «        }|                     ||	¦  «         |                     ||	¦  «         t          d¬¦  «                             ||	¦  «        }||	df||
dffD ]Ÿ\  }}}t          ||                     |¦  «        ¦  «        }t          |t          j        |                     |¦  «        dd ¦  «        ¦  «        }t          ||                     |¦  «        ¦  «        }|dk    r|d|z  k     sJ ‚|d|z  k     sJ ‚Œ d S )NrÊ   )éô  r  rH   ©r]   r^   r\   rF   rQ   )ÚlowÚhighra   r   r  )Úlam)Ú	test_sizer\   r:   rH   )rž   r  r\   r7   Úmean)ÚstrategyÚtrainÚtestgVçž¯Ò<rO   g      è?)ry   r�  rC  r	   Úmake_low_rank_matrixÚuniformrC  r:   rÎ   r   r   r�   r   r   r�   Úclip)r.  Ún_trainÚn_testr^   re   Úcoefrf   ÚX_trainrþ  r¦   r§   Útree_poiÚtree_mseÚdummyÚvalÚ
metric_poiÚ
metric_mseÚmetric_dummys                     r†   Útest_poisson_vs_mser—    s  € õ
 Œ)×
Ò
 Ñ
#Ô
#€CØ".Ñ€GˆV�ZÝÔ%Ø˜FÑ"¨zÈð	ñ 	ô 	€Að
 �;Š;˜2 A¨Jˆ;Ñ7Ô7½"¼&ÀÈÐ:KÑ:KÔ: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ÔA€Eà ¨Ð1°F¸FÀFÐ3KÐLð 
0ð 
0‰	ˆˆ1ˆcÝ*¨1¨h×.>Ò.>¸qÑ.AÔ.AÑBÔBˆ
å*¨1­b¬g°h×6FÒ6FÀqÑ6IÔ6IÈ5ÐRVÑ.WÔ.WÑXÔXˆ
Ý,¨Q°·²¸aÑ0@Ô0@ÑAÔAˆð �&Š=ˆ=Ø  jÑ 0Ò0Ð0Ð0Ð0Ø˜D <Ñ/Ò/Ð/Ð/Ð/Ð/ð
0ð 
0rˆ   rZ  c                 óv  — d\  }}t          j        ||||dd¬¦  «        \  }} | dd¬¦  «                             ||¦  «        } | dd¬¦  «                             ||¦  «        }t          |j        |j        | ›d	�¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «         d
S )z3Test that criterion=entropy gives same as log_loss.)r‡  r?   r   rÊ   )rZ  r]   r^   rë   rì   r\   r6   é+   r    Úentropyz> with criterion 'entropy' and 'log_loss' gave different trees.N)r	   rò   r�   r‡   rþ   r   r�   )r&   rZ  r]   r^   re   rf   Útree_log_lossÚtree_entropys           r†   Ú'test_criterion_entropy_same_as_log_lossr�  ?  sã   € ð "Ñ€IˆzÝÔ'ØØØØ ØØðñ ô �D€A€qð �D :¸BÐ?Ñ?Ô?×CÒCÀAÀqÑIÔI€MØ�4 )¸"Ð=Ñ=Ô=×AÒAÀ!ÀQÑGÔG€LåØÔØÔØÐQÐQÐQñô ð õ
 �M×)Ò)¨!Ñ,Ô,¨l×.BÒ.BÀ1Ñ.EÔ.EÑFÔFÐFÐFÐFrˆ   c                  óX  ‡‡— t          j        d¬¦  «        \  } }t          dd¬¦  «        Š‰                     | |¦  «         ‰                     | |¦  «        }d„ Šˆˆfd„}t          j         |¦   «         ¦  «        }|                     | |¦  «        }t          j        ||¦  «        sJ ‚d S )Nr   rŠ   r@   rÔ  c                 ó¢   — |                       ¦   «                              | j                             ¦   «         ¦  «                             ¦   «         S r  )ÚbyteswapÚviewr  Únewbyteorderr7  )Úarrs    r†   Úreduce_ndarrayz8test_different_endianness_pickle.<locals>.reduce_ndarray^  s8   € Ø�|Š|‰~Œ~×"Ò" 3¤9×#9Ò#9Ñ#;Ô#;Ñ<Ô<×GÒGÑIÔIÐIrˆ   c                  ó  •— t          j        ¦   «         } t          j        | ¦  «        }t          j                             ¦   «         |_        ‰|j        t          j        <   | 	                    ‰¦  «         |  
                    d¦  «         | S ©Nr   )ÚioÚBytesIOr`  ÚPicklerÚcopyregÚdispatch_tablerõ  ry   ÚndarrayÚdumpÚseek)ÚfÚpr•   r¤  s     €€r†   Ú get_pickle_non_native_endiannesszJtest_different_endianness_pickle.<locals>.get_pickle_non_native_endiannessa  sf   ø€ ÝŒJ‰LŒLˆÝŒN˜1ÑÔˆÝ"Ô1×6Ò6Ñ8Ô8ˆÔØ'5ˆÔ�œÑ$à	�Šˆs‰ŒˆØ	�Šˆq‰	Œ	ˆ	Øˆrˆ   )	r	   rò   r   r�   r°   r`  Úloadry   Úisclose)re   rf   r°   r±  Únew_clfÚ	new_scorer•   r¤  s         @@r†   Ú test_different_endianness_pickler¶  W  sË   øø€ ÝÔ'°QÐ7Ñ7Ô7�D€A€qå
 ¨a¸1Ð
=Ñ
=Ô
=€CØ‡G‚GˆAˆq�M„M€MØ�IŠI�a˜‰OŒO€EðJð Jð Jðð ð ð ð ð õ ŒkÐ:Ð:Ñ<Ô<Ñ=Ô=€GØ—’˜a Ñ#Ô#€IÝŒ:�e˜YÑ'Ô'Ð'Ð'Ð'Ð'Ð'rˆ   c                  óx  ‡‡— t          j        d¬¦  «        \  } }t          dd¬¦  «        Š‰                     | |¦  «         ‰                     | |¦  «        } G d„ dt
          ¦  «        Šˆˆfd„}t          j         |¦   «         ¦  «        }|                     | |¦  «        }t          j	        ||¦  «        sJ ‚d S )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        ¦  «        r>|                     ¦   «                              |j                             ¦   «         ¦  «        }t          ¦   «                              |¦  «         d S r  )	Ú
isinstancery   r¬  r   r¡  r  r¢  ÚsuperÚsave)Úselfr3  rd  s     €r†   r½  zUtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPickler.savex  s]   ø€ Ý˜#�rœzÑ*Ô*ð DØ—l’l‘n”n×)Ò)¨#¬)×*@Ò*@Ñ*BÔ*BÑCÔC�Ý‰GŒG�LŠL˜ÑÔÐÐÐrˆ   )Ú__name__Ú
__module__Ú__qualname__r½  Ú__classcell__)rd  s   @r†   ÚNonNativeEndiannessNumpyPicklerr¹  w  s8   ø€ € € € € ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rˆ   rÃ  c                  ó˜   •— t          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}  sA   ø€ ÝŒJ‰LŒLˆØ+Ð+¨AÑ.Ô.ˆà	�Šˆs‰ŒˆØ	�Šˆq‰	Œ	ˆ	Øˆrˆ   )
r	   rò   r   r�   r°   r   Újoblibr²  ry   r³  )re   rf   r°   rÅ  r´  rµ  rÃ  r•   s         @@r†   Ú'test_different_endianness_joblib_picklerÇ  p  sã   øø€ ÝÔ'°QÐ7Ñ7Ô7�D€A€qå
 ¨a¸1Ð
=Ñ
=Ô
=€CØ‡G‚GˆAˆq�M„M€MØ�IŠI�a˜‰OŒO€Eðð ð ð ð ­,ñ ô ð ðð ð ð ð ð õ ŒkÐAÐAÑCÔCÑDÔD€GØ—’˜a Ñ#Ô#€IÝŒ:�e˜YÑ'Ô'Ð'Ð'Ð'Ð'Ð'rˆ   c                 ó„  — t           rt          j        nt          j        }g d¢}d„ | j        j                             ¦   «         D ¦   «         }|D ]}|||<   Œt          j        t          |                     ¦   «         ¦  «        t          | 	                    ¦   «         ¦  «        dœ¦  «        }|  
                    |d¬¦  «        S )N)Ú
left_childÚright_childr{   r}   c                 ó    — i | ]\  }\  }}||“ŒS rÀ   rÀ   ©r]  r”   r  r:  s       r†   r_  z6get_different_bitness_node_ndarray.<locals>.<dictcomp>�  ó/   € ð ð ð Ù(˜™j˜u aˆˆeðð ð rˆ   ©ÚnamesÚformatsÚ	same_kind©Úcasting)r.   ry   Úint64ró  r  ÚfieldsrŽ   Úlistr  Úvaluesr-  )Únode_ndarrayÚnew_dtype_for_indexing_fieldsÚindexing_field_namesÚnew_dtype_dictr”   Ú	new_dtypes         r†   Ú"get_different_bitness_node_ndarrayrÝ  Š  sÑ   € Ý09Ð$G¥B¤H H½r¼xÐ!ð VÐUÐUÐðð Ø,8Ô,>Ô,E×,KÒ,KÑ,MÔ,Mðñ ô €Nð %ð =ð =ˆØ<ˆ�tÑÐå”Ý�~×*Ò*Ñ,Ô,Ñ-Ô-½$¸~×?TÒ?TÑ?VÔ?VÑ:WÔ:WÐXÐXñô €Ið ×Ò˜y°+ÐÑ>Ô>Ð>rˆ   c                 ó”  — d„ | j         j                             ¦   «         D ¦   «         }d„ | j         j                             ¦   «         D ¦   «         }d„ |D ¦   «         }t	          j         t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        |dœ¦  «        }|                      |d¬¦  «        S )Nc                 ó    — i | ]\  }\  }}||“ŒS rÀ   rÀ   rÌ  s       r†   r_  z8get_different_alignment_node_ndarray.<locals>.<dictcomp>�  rÍ  rˆ   c                 ó   — g | ]\  }}|‘ŒS rÀ   rÀ   )r]  r  rø  s      r†   rè  z8get_different_alignment_node_ndarray.<locals>.<listcomp>   s   € ÐNÐNÐN™-˜% ˆvÐNÐNÐNrˆ   c                 ó   — g | ]}d |z   ‘ŒS )rP   rÀ   )r]  rø  s     r†   rè  z8get_different_alignment_node_ndarray.<locals>.<listcomp>¡  s   € Ð8Ð8Ð8 f�q˜6‘zÐ8Ð8Ð8rˆ   )rÏ  rÐ  ÚoffsetsrÑ  rÒ  )r  rÕ  rŽ   r×  ry   rÖ  r  r-  )rØ  rÛ  râ  Úshifted_offsetsrÜ  s        r†   Ú$get_different_alignment_node_ndarrayrä  œ  sÔ   € ðð Ø,8Ô,>Ô,E×,KÒ,KÑ,MÔ,Mðñ ô €Nð OÐN¨<Ô+=Ô+D×+KÒ+KÑ+MÔ+MÐNÑNÔN€GØ8Ð8°Ð8Ñ8Ô8€Oå”å˜.×-Ò-Ñ/Ô/Ñ0Ô0Ý˜N×1Ò1Ñ3Ô3Ñ4Ô4Ø&ð	
ð 	
ñô €Ið ×Ò˜y°+ÐÑ>Ô>Ð>rˆ   c                 ó  — t           rt          j        nt          j        } | j        ¦   «         \  }\  }}}}|                     |d¬¦  «        }|                     ¦   «         }t          |d         ¦  «        |d<   ||||f|fS )NrÑ  rÒ  Únodes)r.   ry   rÔ  ró  r7  r-  rõ  rÝ  )	r
   rÜ  r²  r^   rZ  r8  ÚstateÚnew_n_classesÚ	new_states	            r†   Ú"reduce_tree_with_different_bitnessrê  ­  s�   € Ý%Ð3•”�­2¬8€IØ:I¸$¼/Ñ:KÔ:KÑ7€HÑ0ˆz˜9 i°%Ø×$Ò$ Y¸Ð$ÑDÔD€Mà—
’
‘”€IÝ;¸IÀgÔ<NÑOÔO€IˆgÑà�z =°)Ð<¸iÐHÐHrˆ   c                  óT  ‡— t          j        d¬¦  «        \  } }t          dd¬¦  «        Š‰                     | |¦  «         ‰                     | |¦  «        }ˆfd„}t          j         |¦   «         ¦  «        }|                     | |¦  «        }|t          j        |¦  «        k    sJ ‚d S )Nr   rŠ   r@   rÔ  c                  ó  •— t          j        ¦   «         } t          j        | ¦  «        }t          j                             ¦   «         |_        t          |j        t          <   | 	                    ‰¦  «         |  
                    d¦  «         | S r¦  )r§  r¨  r`  r©  rª  r«  rõ  rê  Ú
CythonTreer­  r®  ©r¯  r°  r•   s     €r†   Ú"pickle_dump_with_different_bitnesszItest_different_bitness_pickle.<locals>.pickle_dump_with_different_bitness¿  sd   ø€ ÝŒJ‰LŒLˆÝŒN˜1ÑÔˆÝ"Ô1×6Ò6Ñ8Ô8ˆÔÝ'IˆÔ�Ñ$à	�Šˆs‰ŒˆØ	�Šˆq‰	Œ	ˆ	Øˆrˆ   )	r	   rò   r   r�   r°   r`  r²  rº   r»   )re   rf   r°   rï  r´  rµ  r•   s         @r†   Útest_different_bitness_picklerð  ¸  s¶   ø€ ÝÔ'°QÐ7Ñ7Ô7�D€A€qå
 ¨a¸1Ð
=Ñ
=Ô
=€CØ‡G‚GˆAˆq�M„M€MØ�IŠI�a˜‰OŒO€Eðð ð ð ð õ ŒkÐ<Ð<Ñ>Ô>Ñ?Ô?€GØ—’˜a Ñ#Ô#€IØ•F”M )Ñ,Ô,Ò,Ð,Ð,Ð,Ð,Ð,rˆ   c                  óT  ‡— t          j        d¬¦  «        \  } }t          dd¬¦  «        Š‰                     | |¦  «         ‰                     | |¦  «        }ˆfd„}t          j         |¦   «         ¦  «        }|                     | |¦  «        }|t          j        |¦  «        k    sJ ‚d S )Nr   rŠ   r@   rÔ  c                  ó  •— t          j        ¦   «         } t          | ¦  «        }t          j                             ¦   «         |_        t          |j        t          <   |                     ‰¦  «         |  	                    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Ú  s`   ø€ ÝŒJ‰LŒLˆÝ˜‰OŒOˆÝ"Ô1×6Ò6Ñ8Ô8ˆÔÝ'IˆÔ�Ñ$à	�Šˆs‰ŒˆØ	�Šˆq‰	Œ	ˆ	Øˆrˆ   )	r	   rò   r   r�   r°   rÆ  r²  rº   r»   )re   rf   r°   ró  r´  rµ  r•   s         @r†   Ú$test_different_bitness_joblib_picklerô  Î  s¸   ø€ õ Ô'°QÐ7Ñ7Ô7�D€A€qå
 ¨a¸1Ð
=Ñ
=Ô
=€CØ‡G‚GˆAˆq�M„M€MØ�IŠI�a˜‰OŒO€Eðð ð ð ð õ ŒkÐ<Ð<Ñ>Ô>Ñ?Ô?€GØ—’˜a Ñ#Ô#€IØ•F”M )Ñ,Ô,Ò,Ð,Ð,Ð,Ð,Ð,rˆ   c                  ó   — t           rt          j        t          j        ¦  «        nt          j        t          j        ¦  «        } t          j        t          j        ¦  «        t          j        t          j        ¦  «        g}|d„ |D ¦   «         z  }t          j        ddg| ¬¦  «        }|D ]%}t          |                     |¦  «        | ¦  «         Œ&t          j	        t          d¬¦  «        5  t          j        ddgg| ¬¦  «        }t          || ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        t          d¬¦  «        5  |                     t          j        ¦  «        }t          || ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS rÀ   )r¢  )r]  Údts     r†   rè  z(test_check_n_classes.<locals>.<listcomp>ì  s"   € ÐBÐBÐB¨R�r—’Ñ(Ô(ÐBÐBÐBrˆ   r   r=   r  zWrong dimensions.+n_classesr
  zn_classes.+incompatible dtype)r.   ry   r  ró  rÔ  r¤   r#   r-  rº   rù   rú   r‚  )Úexpected_dtypeÚallowed_dtypesrZ  r÷  Úwrong_dim_n_classesÚwrong_dtype_n_classess         r†   Útest_check_n_classesrü  é  sú  € Ý+4ÐL•R”X�bœhÑ'Ô'Ð'½"¼(Å2Ä8Ñ:LÔ:L€NÝ”h�rœxÑ(Ô(­"¬(µ2´8Ñ*<Ô*<Ð=€NØÐBÐB°>ÐBÑBÔBÑB€Nå”˜!˜Q˜ ~Ð6Ñ6Ô6€IØð ?ð ?ˆÝ˜×)Ò)¨"Ñ-Ô-¨~Ñ>Ô>Ð>Ð>å	Œ•zÐ)FÐ	GÑ	GÔ	Gð >ð >Ý œh¨¨A¨ x°~ÐFÑFÔFÐÝÐ,¨nÑ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >õ 
Œ•zÐ)HÐ	IÑ	IÔ	Ið @ð @Ø )× 0Ò 0µ´Ñ <Ô <ÐÝÐ.°Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s$   Ã**D Ä D$Ä'D$Å0FÆFÆ
Fc                  ó   — t          j        t           j        ¦  «        } d}t          j        || ¬¦  «        }| |                      ¦   «         g}|D ]}t          |||¬¦  «         Œt          j        t          d¬¦  «        5  t          || d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |d d …d d …d d…f         t          j	        |¦  «        fD ]L}t          j        t          d¬¦  «        5  t          || |j
        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   ŒMt          j        t          d	¬¦  «        5  t          |                     t           j        ¦  «        | |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
N)r?   r=   rQ   r  )rø  Úexpected_shapezWrong shape.+value arrayr
  )r=   rQ   r=   zvalue array.+C-contiguouszvalue array.+incompatible dtype)ry   r  r‚  rq   r¢  r%   rº   rù   rú   r  r­   r-  r  )rø  rþ  Úvalue_ndarrayrù  r÷  Úproblematic_arrs         r†   Útest_check_value_ndarrayr  û  sr  € Ý”X�bœjÑ)Ô)€NØ€NÝ”H˜^°>ÐBÑBÔB€Mà$ n×&AÒ&AÑ&CÔ&CÐD€Nàð 
ð 
ˆÝØ¨"¸^ð	
ñ 	
ô 	
ð 	
ð 	
õ 
Œ•zÐ)CÐ	DÑ	DÔ	Dð 
ð 
ÝØ¨.Èð	
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð
 *¨!¨!¨!¨Q¨Q¨Q°°°¨(Ô3µRÔ5FÀ}Ñ5UÔ5UÐVð ð ˆÝŒ]�:Ð-HÐIÑIÔIð 	ð 	Ý ØØ-Ø.Ô4ðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øõ 
Œ•zÐ)JÐ	KÑ	KÔ	Kð 
ð 
ÝØ× Ò ¥¤Ñ,Ô,Ø)Ø)ð	
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s6   Á?BÂB"Â%B"Ã+DÄD	ÄD	Ä60E3Å3E7Å:E7c                  ó°  — t           } t          j        d| ¬¦  «        }|t          |¦  «        t	          |¦  «        g}|d„ |D ¦   «         z  }|D ]}t          || ¬¦  «         Œt          j        t          d¬¦  «        5  t          j        d| ¬¦  «        }t          || ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |d d d	…         }t          || ¬¦  «         d d d ¦  «         n# 1 swxY w Y   d
„ |j	        j
                             ¦   «         D ¦   «         }|                     ¦   «         }t          j        |d<   t          j	        t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        dœ¦  «        }|                     |¦  «        }t          j        t          d¬¦  «        5  t          || ¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }t          j        |d<   t          j	        t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        dœ¦  «        }|                     |¦  «        }t          j        t          d¬¦  «        5  t          || ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r?   r  c                 óf   — g | ].}|                      |j                             ¦   «         ¦  «        ‘Œ/S rÀ   )r-  r  r¢  )r]  r£  s     r†   rè  z+test_check_node_ndarray.<locals>.<listcomp>&	  s?   € ð ð ð Ø14ˆ�
Š
�3”9×)Ò)Ñ+Ô+Ñ,Ô,ðð ð rˆ   )rø  zWrong dimensions.+node arrayr
  )r?   rQ   znode array.+C-contiguousrQ   c                 ó    — i | ]\  }\  }}||“ŒS rÀ   rÀ   rÌ  s       r†   r_  z+test_check_node_ndarray.<locals>.<dictcomp>5	  s#   € ÐXÐXÐXÑ"2 $©
¨°�$˜ÐXÐXÐXrˆ   r|   rÎ  znode array.+incompatible dtyperÉ  )r   ry   rq   rÝ  rä  r$   rº   rù   rú   r  rÕ  rŽ   rõ  rÔ  rÖ  r  r×  r-  r‚  )rø  rØ  Úvalid_node_ndarraysr£  Úproblematic_node_ndarrayÚ
dtype_dictrÛ  rÜ  s           r†   Útest_check_node_ndarrayr  	  s   € Ý€Nå”8˜D¨Ð7Ñ7Ô7€Lð 	Ý*¨<Ñ8Ô8Ý,¨\Ñ:Ô:ðÐð
 ð ð Ø8Kðñ ô ñ Ðð #ð Ið IˆÝ˜L¸ÐHÑHÔHÐHÐHå	Œ•zÐ)GÐ	HÑ	HÔ	Hð Uð UÝ#%¤8¨F¸.Ð#IÑ#IÔ#IÐ ÝÐ4À^ÐTÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uõ 
Œ•zÐ)CÐ	DÑ	DÔ	Dð Uð UØ#/°°°!°Ô#4Ð ÝÐ4À^ÐTÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð YÐX°lÔ6HÔ6O×6UÒ6UÑ6WÔ6WÐXÑXÔX€Jð  —_’_Ñ&Ô&€NÝ"$¤(€N�;Ñå”Ý�~×*Ò*Ñ,Ô,Ñ-Ô-½$¸~×?TÒ?TÑ?VÔ?VÑ:WÔ:WÐXÐXñô €Ið  ,×2Ò2°9Ñ=Ô=Ðå	Œ•zÐ)IÐ	JÑ	JÔ	Jð Uð UÝÐ4À^ÐTÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð  —_’_Ñ&Ô&€NÝ#%¤:€N�<Ñ Ý”Ý�~×*Ò*Ñ,Ô,Ñ-Ô-½$¸~×?TÒ?TÑ?VÔ?VÑ:WÔ:WÐXÐXñô €Ið  ,×2Ò2°9Ñ=Ô=Ðå	Œ•zÐ)IÐ	JÑ	JÔ	Jð Uð UÝÐ4À^ÐTÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð UsH   Á=(B1Â1B5Â8B5ÃD Ä DÄDÇG9Ç9G=È G=Ê,KËKËKÚSplitterc                 ól  — t           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 ‚d	S )z&Check that splitters are serializable.rÊ   rH   rQ   r@   r  r5   r?   rO   N)Úmonotonic_cst)ry   r�  rC  r¤   r5  r   r`  ra  rb  rŒ   r»  )	r	  r.  rŒ   r8  rZ  rž   rË  Úsplitter_serializeÚsplitter_backs	            r†   Útest_splitter_serializabler  P	  s¼   € õ
 Œ)×
Ò
 Ñ
#Ô
#€CØ€LØ�bœh¨¨1 vµR´WÐ=Ñ=Ô=ˆy€Iå˜VÔ$ Y°	Ñ:Ô:€IØˆx˜	 <°°C¸ÈDÐQÑQÔQ€HÝœ hÑ/Ô/Ðå”LÐ!3Ñ4Ô4€MØÔ%¨Ò5Ð5Ð5Ð5Ý�m XÑ.Ô.Ð.Ð.Ð.Ð.Ð.rˆ   c                 ó6  — t          |                      d¦  «        ¦  «        }t          d¬¦  «        }|                     t          t
          ¦  «         t          j        ||¦  «         t          j        |d¬¦  «        }t          |j
        |j
        d¦  «         dS )zhCheck that Trees can be deserialized with read only buffers.

    Non-regression test for gh-25584.
    z
clf.joblibr   rŠ   Úr)Ú	mmap_modez?The trees of the original and loaded classifiers are not equal.N)ÚstrÚjoinr   r�   r  r  rÆ  r­  r²  r‡   rþ   )ÚtmpdirÚpickle_pathr•   Ú
loaded_clfs       r†   Ú/test_tree_deserialization_from_read_only_bufferr  b	  s‘   € õ
 �f—k’k ,Ñ/Ô/Ñ0Ô0€KÝ
 ¨aÐ
0Ñ
0Ô
0€CØ‡G‚G�G•WÑÔÐå
„K��[Ñ!Ô!Ð!Ý”˜[°CÐ8Ñ8Ô8€JåØÔØŒ	ØIñô ð ð ð rˆ   c                 óL  — t          j        ddgddgg¦  «        }t          j        ddg¦  «        } | d¬¦  «                             ||¦  «          | d¬¦  «        }d}t          j        t
          |¬¦  «        5   |j        ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zhCheck that an error is raised when min_sample_split=1.

    non-regression test for issue gh-25481.
    r   r=   rS   )r  zb'min_samples_split' .* must be an int in the range \[2, inf\) or a float in the range \(0.0, 1.0\]r
  N)ry   r¤   r�   rº   rù   rú   )r&   re   rf   r
   Úmsgs        r†   Útest_min_sample_split_1_errorr  u	  s  € õ 	Œ�1�a�&˜1˜a˜&Ð!Ñ"Ô"€AÝ
Œ�!�Q�ÑÔ€Að 	€D˜3ÐÑÔ×#Ò# A qÑ)Ô)Ð)ð ˆ4 !Ð$Ñ$Ô$€Dð	0ð õ 
Œ•z¨Ð	-Ñ	-Ô	-ð ð ØˆŒ��A‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á:BÂBÂ Bc                 óz  — t          j        g d¢g¦  «        j        }t          j        g d¢¦  «        }| dk    rt           j        nt           j        }t          dd| ¬¦  «        }|                     ||¦  «         |                     t           j        gg¦  «        }t          | ||dd…         ¦  «        g¦  «         |dd	…         }|dd	…         }t          dd| ¬¦  «        }|                     ||¦  «         |                     t           j        gg¦  «        }t          | ||d
d…         ¦  «        g¦  «         dS )z=Check missing values goes to correct node during predictions.©	r   r=   rQ   r@   rP   r  rM   é   é   ©	rï   rB   r,  rB   r.  r.  rR   gš™™™™™ù?gÍÌÌÌÌÌ@r8   rÊ   r=   rë  rA   NrC   r>   )
ry   r¤   r‘   Úmedianr…  r   r�   r�   r  r   )rž   re   rf   Únode_value_funcÚdtcrØ  ÚX_equalÚy_equals           r†   Ú;test_missing_values_best_splitter_on_equal_nodes_no_missingr%  Œ	  s9  € õ 	ŒÐ0Ð0Ð0Ð1Ñ2Ô2Ô4€AÝ
ŒÐ>Ð>Ð>Ñ?Ô?€AØ#,Ð0@Ò#@Ð#@•b”i�iÅbÄg€Oå
¨R¸1È	Ð
RÑ
RÔ
R€CØ‡G‚GˆAˆq�M„M€Mð �[Š[�2œ6˜(˜Ñ$Ô$€FÝ�F˜_˜_¨Q¨r¨s¨s¬VÑ4Ô4Ð5Ñ6Ô6Ð6ð ���Œf€GØ���Œf€Gå
¨R¸1È	Ð
RÑ
RÔ
R€CØ‡G‚GˆG�WÑÔÐð �[Š[�2œ6˜(˜Ñ$Ô$€FÝ�F˜_˜_¨W°R°S°S¬\Ñ:Ô:Ð;Ñ<Ô<Ð<Ð<Ð<rˆ   c                 ó@  — t          j        g d¢g¦  «        j        }t          j        g d¢¦  «        }t          |d| ¬¦  «        }|                     ||¦  «         |j        j        d         }|j        j        d         }|j        j        |         }|j        j        |         }||k    }	|j        j	        |         d         }
|j        j	        |         d         }| 
                    t           j        gg¦  «        }|	rt          |
|¦  «         dS t          ||¦  «         dS )zÝCheck missing values go to the correct node during predictions for ExtraTree.

    Since ETC use random splits, we use different seeds to verify that the
    left/right node is chosen correctly when the splits occur.
    r  r  r=   rë  r   N)ry   r¤   r‘   r   r�   rþ   rx   rw   rN  r€   r�   r  r   )rž   rv  re   rf   ÚetrrÉ  rÊ  Úleft_samplesÚright_samplesÚ	went_leftÚy_pred_leftÚy_pred_rightrØ  s                r†   Ú=test_missing_values_random_splitter_on_equal_nodes_no_missingr-  ©	  s  € õ 	ŒÐ0Ð0Ð0Ð1Ñ2Ô2Ô4€AÝ
ŒÐ>Ð>Ð>Ñ?Ô?€Aå
¨$¸!ÀyÐ
QÑ
QÔ
Q€CØ‡G‚GˆAˆq�M„M€Mð ”Ô(¨Ô+€JØ”)Ô*¨1Ô-€Kð ”9Ô4°ZÔ@€LØ”IÔ5°kÔB€MØ˜}Ò,€Ið ”)”/ *Ô-¨aÔ0€KØ”9”? ;Ô/°Ô2€Lð �[Š[�2œ6˜(˜Ñ$Ô$€FØð .Ý˜ VÑ,Ô,Ð,Ð,Ð,å˜ fÑ-Ô-Ð-Ð-Ð-rˆ   rš  r5   c                 óž  — d}t          j        t           j        gdz  g d¢z   g¦  «        j        }t          j        |gdz  dgdz  z   dgdz  z   ¦  «        }t	          dd| ¬¦  «        }|                     ||¦  «         t          j        t           j        dd	gg¦  «        j        }|                     |¦  «        }t          ||ddg¦  «         d
S )zITest when missing values are uniquely present in a class among 3 classes.r   r<   )r   r=   rQ   r@   rP   r  rM   r  r=   rQ   rÊ   rë  r@   r  N©ry   r¤   r  r‘   r   r�   r�   r+   )rž   Úmissing_values_classre   rf   r"  rþ  Ú
y_nan_preds          r†   Ú/test_missing_values_best_splitter_three_classesr2  Í	  sÒ   € ð ÐÝ
Œ•2”6�(˜Q‘,Ð!;Ð!;Ð!;Ñ;Ð<Ñ=Ô=Ô?€AÝ
ŒÐ&Ð'¨!Ñ+¨q¨c°A©gÑ5¸¸¸a¹Ñ?Ñ@Ô@€AÝ
 ¨b¸AÈÐ
SÑ
SÔ
S€CØ‡G‚GˆAˆq�M„M€MåŒ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| ¬¦  «        }|                     ||¦  «         t          j        t           j        d	t           j        gg¦  «        j        }|                     |¦  «        }t          |g d
¢¦  «         dS )zŠMissing values spanning only one class at fit-time must make missing
    values at predict-time be classified has belonging to this class.r<   ©r   r=   rQ   r@   r<   r?   r   r=   rN   rÊ   rQ   rë  r?   )r   r=   r   Nr/  ©rž   re   rf   r"  rþ  rØ  s         r†   Ú)test_missing_values_best_splitter_to_leftr6  Ü	  s½   € õ 	Œ•2”6�(˜Q‘,Ð!3Ð!3Ð!3Ñ3Ð4Ñ5Ô5Ô7€AÝ
Œ�!��q‘˜A˜3 ™7Ñ"Ñ#Ô#€Aå
 ¨b¸AÈÐ
SÑ
SÔ
S€CØ‡G‚GˆAˆq�M„M€MåŒX�œ ¥2¤6Ð*Ð+Ñ,Ô,Ô.€FØ�[Š[˜Ñ Ô €Få�v˜y˜y˜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| ¬¦  «        }|                     ||¦  «         t          j        t           j        dd	gg¦  «        j        }|                     |¦  «        }t          |g d
¢¦  «         dS )zŸMissing values and non-missing values sharing one class at fit-time
    must make missing values at predict-time be classified has belonging
    to this class.r<   r4  r=   r   rQ   rÊ   rë  rT   g333333@r  Nr/  r5  s         r†   Ú*test_missing_values_best_splitter_to_rightr8  ì	  sÆ   € õ
 	Œ•2”6�(˜Q‘,Ð!3Ð!3Ð!3Ñ3Ð4Ñ5Ô5Ô7€AÝ
Œ�!��q‘˜A˜3 ™7Ñ" a S¨1¡WÑ,Ñ-Ô-€Aå
 ¨b¸AÈÐ
SÑ
SÔ
S€CØ‡G‚GˆAˆq�M„M€MåŒX�œ  SÐ)Ð*Ñ+Ô+Ô-€FØ�[Š[˜Ñ Ô €Få�v˜y˜y˜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| ¬¦  «        }|                     ||¦  «         t          j        t           j        ddgg¦  «        j        }|                     |¦  «        }t          |g d¢¦  «         dS )zNCheck behavior of missing value when there is one missing value in each class.r=   rQ   r@   r?   rH   r_   r[   é<   r   rÊ   rë  gffffff@gš™™™™A@r  Nr/  r5  s         r†   Ú>test_missing_values_best_splitter_missing_both_classes_has_nanr;  ý	  sÂ   € õ 	Œ�1�a˜˜A�rœv r¨2¨r°2µr´vÐ>Ð?Ñ@Ô@ÔB€AÝ
Œ�!��q‘˜A˜3 ™7Ñ"Ñ#Ô#€Aå
 ¨b¸AÈÐ
SÑ
SÔ
S€CØ‡G‚GˆAˆq�M„M€MÝŒX�œ  TÐ*Ð+Ñ,Ô,Ô.€FØ�[Š[˜Ñ Ô €Fõ �v˜y˜y˜yÑ)Ô)Ð)Ð)Ð)rˆ   r
   c                 óT  — 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¦  «         dS # 1 swxY w Y   dS )z4Check unsupported configurations for missing values.r=   rQ   r@   r?   rH   r_   r[   r:  r   zInput X contains NaNr
  N)ry   r¤   r  r‘   rº   rù   rú   r�   )r2  r
   re   rf   s       r†   Útest_missing_value_errorsr=  
  sí   € õ 	Œ�1�a˜˜A�rœv r¨2¨r°2µr´vÐ>Ð?Ñ@Ô@ÔB€AÝ
Œ�!��q‘˜A˜3 ™7Ñ"Ñ#Ô#€AàÐ˜ÑÔ€Aå	Œ•zÐ)?Ð	@Ñ	@Ô	@ð ð ØˆŒ��A‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á>BÂB!Â$B!c                 óN  — t           j                             ¦   «         t           j        }}t          j        |ddd…df<   t          j        |ddd…df<    | dd¬¦  «        }|                     ||¦  «         |                     |¦  «        }|d	k                         ¦   «         sJ ‚dS )
z5Smoke test for poisson regression and missing values.Nr?   r   rN   rC   r:   rÊ   r    rX   )	rh   r¶   rõ  r·   ry   r  r�   r�   rå   )r&   re   rf   r¨   rØ  s        r†   Útest_missing_values_poissonr?  !
  sŸ   € õ Œ=×ÒÑÔ¥¤€q€Aõ ”€A€c€cˆ€cˆ1€f�IÝ”€A€c€cˆ€cˆ2€g�Jà
ˆ$˜°Ð
4Ñ
4Ô
4€CØ‡G‚GˆAˆq�M„M€Mà�[Š[˜‰^Œ^€FØ�cŠM×ÒÑ Ô Ð Ð Ð Ð Ð rˆ   c                  ó>   — t          j        | i |¤Ž\  }}|dk    }||fS )Né   )r	   Úmake_friedman1)ÚargsrÄ   re   rf   s       r†   Úmake_friedman1_classificationrD  1
  s-   € ÝÔ" DÐ3¨FÐ3Ð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|¬¦  «        \  }}|                      ¦   «         }	t          j                             |¦  «        }
t          j        |	|
                     ddg|j        ddg¬¦  «        <   t          |	||¬	¦  «        \  }}}}|d
k    r t          j        |j        d         ¦  «        }nd}d} |||¬¦  «        }| 	                    |||¬¦  «         | 
                    ||¦  «        }t          t          ¦   «          |||¬¦  «        ¦  «        }| 	                    ||¦  «         | 
                    ||¦  «        }||z   |k    sJ d|›d|› d|› �¦   «         ‚dS )zFCheck that trees can deal with missing values have decent performance.)ré   rH   rS   )r]   r^   Únoiser\   FTrZ   rï   ©ra   r°  rŠ   rš   r   NrH   rÓ   r˜   zscore_native_tree=z + z! should be strictly greater than )rõ  ry   r�  rC  r  Úchoicer­   r   rš   r�   r°   r   r   )Ú	make_datar&   rE  rÃ   Ú	tolerancer]   r^   re   rf   Ú	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_resiliencerS  7
  sÃ  € ð( &Ñ€IˆzØˆ9ØØØØ'ð	ñ ô �D€A€qð —’‘”€IÝ
Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝGIÄv€Iˆc�jŠj˜% ˜¨Q¬W¸¸c¸
ˆjÑCÔCÑDÝ7GØ�1Ð#5ð8ñ 8ô 8Ñ4€O�^ W¨fð ˜fÒ$Ð$Ýœ Ô 5°aÔ 8Ñ9Ô9ˆˆàˆð €IØ�$ Ð9KÐLÑLÔL€KØ‡O‚O�O W¸M€OÑJÔJÐJØ#×)Ò)¨.¸&ÑAÔAÐå%Ý‰Œ˜˜¨	Ð@RÐSÑSÔSñô Ðð ×Ò˜/¨7Ñ3Ô3Ð3Ø/×5Ò5°nÀfÑMÔMÐà˜yÑ(Ð+BÒBÐBÐBð	&Ðð 	&ð 	& )ð 	&ð 	&Ø#ð	&ð 	&ñ CÔBÐBÐBÐBrˆ   zTree, expected_scoreg333333ë?gö(\�Âõà?c                 óŠ  — t           j                             d¦  «        }d}|                     |df¬¦  «        }t          j        t          j        |dz  ¦  «        t          j        |dz  ¦  «        g¦  «        }|                     ddg|dd	g¬
¦  «        }|                     ¦   «          	                    t          ¦  «        }||          ||<   |                     |¬¦  «        }	t           j        |	|<   |	|dd…df<    | |¬¦  «        }
t          |
||d¬¦  «                             ¦   «         }||k    sJ d|› d|› �¦   «         ‚dS )z@Check the tree learns when only the missing value is predictive.r   r  r_   r`   rQ   FTgffffffî?rU   rH  Nr?   rŠ   )ÚcvzExpected CV score: z	 but got )ry   r�  rC  Ústandard_normalrò  rq   rš   rI  rõ  r-  Úboolr  r   r…  )r&   Úexpected_scorerÃ   r.  r]   re   rf   ÚX_random_maskÚy_maskÚX_predictiver
   Útree_cv_scores               r†   Ú test_missing_value_is_predictiver]  t
  sP  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ€Ià×Ò )¨R ÐÑ1Ô1€AÝ
Œ�œ ¨a¡Ñ0Ô0µ"´'¸)Àq¹.Ñ2IÔ2IÐJÑKÔK€Að —J’J  t˜}°9ÀÀtÀ�JÑMÔM€MØ�VŠV‰XŒX�_Š_�TÑ"Ô"€FØ# MÔ2Ð2€Fˆ=Ñà×&Ò&¨IÐ&Ñ6Ô6€LÝœ6€L�Ñà€A€a€a€aˆ€d�Gàˆ4Ð/Ð0Ñ0Ô0€Dõ $ D¨!¨Q°1Ð5Ñ5Ô5×:Ò:Ñ<Ô<€MØ˜NÒ*Ð*Ð*ØF˜nÐFÐF°}ÐFÐFñ +Ô*Ð*Ð*Ð*rˆ   zmake_data, Treec                 ó>  — t           j                             d¦  «        }d\  }} | |||¬¦  «        \  }}t           j        ||                     ddg|j        ddg¬¦  «        <   t          j        |j        d         ¦  «        }d	|d
d
d…<    |d¬¦  «        }|                     |||¬¦  «          |d¬¦  «        }	|	                     |dd
d…d
d
…f         |dd
d…         ¦  «         t          |	 	                    |¦  «        | 	                    |¦  «        ¦  «         d
S )z=Check sample weight is correctly handled with missing values.r   )r  rH   r€  FTrZ   rï   rH  rX   NrQ   rŠ   r˜   r=   )
ry   r�  rC  r  rI  r­   rš   r�   r   r�   )
rJ  r&   r.  r]   r^   re   rf   r™   Útree_with_swÚtree_samples_removeds
             r†   Útest_sample_weight_non_uniformra  ’
  s5  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ$Ñ€IˆzØˆ9˜y°ZÈcÐRÑRÔR�D€A€qõ @B¼v€A€c‡j‚j�%˜� Q¤W°°c°
€jÑ;Ô;Ñ<õ ”G˜AœG AœJÑ'Ô'€MØ€M�#�#�A�#Ñà�4 QÐ'Ñ'Ô'€LØ×Ò�Q˜¨ÐÑ7Ô7Ð7à˜4¨QÐ/Ñ/Ô/ÐØ×Ò˜Q˜q˜t !˜t Q Q Q˜wœZ¨¨1¨4¨a¨4¬Ñ1Ô1Ð1åÐ(×0Ò0°Ñ3Ô3°\×5IÒ5IÈ!Ñ5LÔ5LÑMÔMÐMÐMÐMrˆ   c                  óF  — t          d¬¦  «                             t          j        t          j        ¦  «        } t          d¬¦  «                             t          j        t          j        ¦  «        }t          j        | ¦  «        }t          j        |¦  «        }||k    sJ ‚d S r&  )r   r�   rg   r¶   r·   r`  ra  )Útree1Útree2Úpickle1Úpickle2s       r†   Útest_deterministic_picklerg  ¯
  s�   € õ #°Ð2Ñ2Ô2×6Ò6µt´yÅ$Ä+ÑNÔN€EÝ"°Ð2Ñ2Ô2×6Ò6µt´yÅ$Ä+ÑNÔN€EåŒl˜5Ñ!Ô!€GÝŒl˜5Ñ!Ô!€Gà�gÒÐÐÐÐÐrˆ   re   r?   rN   c                 ó¢  — |                      dd¦  «        }t          j        dd¦  «        } | ||¬¦  «                             ||¦  «        }t	          |¦  «                             |                      dd¦  «        |¦  «        }|j        j        }t          |dk    ¦  «        sJ |                     ¦   «         ¦   «         ‚| t          u r4t          |j        j        dd…         |j        j        dd…         ¦  «         t          j        |j        j        dk    |j        j        dk    z  ¦  «        }t          |j        j        |         d¦  «         dS )	a“  Check that regression trees correctly handle missing values in impurity
    calculations.

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

    Non-regression test for:
    - Missing values handling in regression criteria:
      https://github.com/scikit-learn/scikit-learn/issues/28254
      https://github.com/scikit-learn/scikit-learn/issues/28316
    - Incorrect/negative impurites for the Poisson criterion with missing values:
      https://github.com/scikit-learn/scikit-learn/issues/32870
    rC   r=   r¿   r    r   NrQ   rX   )rÀ  ry   rÔ   r�   r   rþ   r   rå   r£   r   r   Úflatnonzerorx   r}   )	r&   re   rž   rÃ   rf   r
   Útree_refr   Ú
leaves_idxs	            r†   Ú'test_regression_tree_missing_values_toyrl  ½
  s/  € ð< 	
�	Š	�"�aÑÔ€AÝ
Œ	�!�Q‰Œ€Aàˆ4˜)Ð2DÐEÑEÔE×IÒIÈ!ÈQÑOÔO€DÝ�T‰{Œ{�Š˜qŸyšy¨¨QÑ/Ô/°Ñ3Ô3€HàŒzÔ"€HÝˆx˜1Š}ÑÔÐ-Ð-˜xŸ|š|™~œ~Ñ-Ô-Ðð Õ$Ð$Ð$å˜œ
Ô+¨B¨Q¨BÔ/°´Ô1HÈÈ!ÈÔ1LÑMÔMÐMõ ”Ø	ŒÔ	! RÒ	'¨D¬JÔ,EÈÒ,JÑKñô €Jõ �D”JÔ'¨
Ô3°SÑ9Ô9Ð9Ð9Ð9rˆ   c                 óÈ  — t           j                             | ¦  «        }d}t          j        |t           j        ¬¦  «                             dd¦  «        }t           j        |dd …d d …f<   |                     |¦  «         t          j        |¦  «        }t          | d¬¦  «         	                    ||¦  «        }|j
        j        }t          |dk    ¦  «        s
J |¦   «         ‚d S )	NrK  r  rC   r=   iìÿÿÿr?   rÔ  r   )ry   r�  rC  rÔ   r‚  rÀ  r  rî   r   r�   rþ   r   rå   )rÃ   r.  r]   re   rf   r
   r   s          r†   Ú-test_regression_extra_tree_missing_values_toyrn  ñ
  sÍ   € Ý
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ€IÝ
Œ	�)¥2¤:Ð.Ñ.Ô.×6Ò6°r¸1Ñ=Ô=€AÝ”€A€c€d€dˆAˆAˆA€g�JØ‡K‚K��N„N€NÝ
Œ	�)ÑÔ€AåÐ+=ÈÐKÑKÔK×OÒOÐPQÐSTÑUÔU€DàŒzÔ"€HÝˆx˜1Š}ÑÔÐ'Ð'˜xÑ'Ô'ÐÐ'Ð'rˆ   c                  ó$  — t          j        d¬¦  «        \  } }t          j                             d¦  «        }|                      ¦   «         }|                     t          j        dt          j        ¬¦  «        | dd…dgf         dz  ¬	¦  «         	                    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¦  «         dS )aØ  Check that we properly handle missing values in classification trees using a toy
    dataset.

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

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

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28254
    T)Ú
return_X_yrÊ   )r=   r<   )r­   r  NrQ   rP   )Únr°  é   rŠ   )prQ   éQ   é'   éa   é[   é&   é.   é   ée   rr  éY   éR   rK  rÊ   éE   é   rs  é   éI   éJ   é3   é/   ék   é   éK   én   r_   r  éh   é9   é   r  r†  éO   é#   éM   éZ   r‚  rx  rr  é^   rv  é   rP   é]   r‘  r€  r�  r  rr  r�  ém   r‡  é   rH   r�  rˆ  r~  é\   é4   r_   r’  rP   rP   é   r~  rŒ  r  r  r¿   r™  r   r[   ry  éN   r  r“  éi   r‡  r   r€  r  éf   r˜  rr  ry  r=   r}  rM   é    r†  rŽ  éj   r�  r:  é8   rŒ  r…  é>   éU   rs  rt  éP   r  é?   rN   rŸ  éT   r@   r@   éL   r—  r  r@   r  iH¼nrË   r   rC   r=   rX   )r	   Ú	load_irisry   r�  rC  rõ  rï  rš   ró  r-  rW  r  r   r¤   r   r�   rå   rþ   r   ri  rx   r}   r   )re   rf   r.  rL  Úmaskr�  r:  r¦   r¬   r
   rk  s              r†   Ú+test_classification_tree_missing_values_toyr¥  ÿ
  s�  € õ Ô¨Ð.Ñ.Ô.�D€A€qå
Œ)×
Ò
 Ñ
#Ô
#€CØ—’‘”€IØ�<Š<Ý
Œ'˜¥b¤hÐ
/Ñ
/Ô
/°1°Q°Q°Q¸¸°V´9¸q±=ð ñ ô ç‚f�T�l„lð 	õ ”f€Iˆd�OÝ-¨i¸ÈÐLÑLÔLÑ€GˆQ�˜õ Œhð ð ð õ ŒXðñ ô €Gõ "Ø &°zðñ ô €Dð €D„HˆW�WÔ˜w wÔ/Ñ0Ô0Ð0ÝˆtŒzÔ" aÒ'Ñ(Ô(Ð(Ð(Ð(å”Ø	ŒÔ	! RÒ	'¨D¬JÔ,EÈÒ,JÑKñô €Jõ �D”JÔ'¨
Ô3°SÑ9Ô9Ð9Ð9Ð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¦  «         n# 1 swxY w Y   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        ¦  «         dS )zHTest pruning a tree with the Python caller of the Cythonized prune tree.r   r=   rÔ  r  r@   N)r   r�   rg   r¶   r·   ry   Ú
atleast_1drt  rí  Ún_features_in_r?  rq   rþ   ru   Úuint8r"   rº   rù   ÚAssertionErrorr+   r€   ©r
   rZ  Úpruned_treeÚleave_in_subtrees       r†   Útest_build_pruned_tree_pyr®  .  s  € å!¨q¸AÐ>Ñ>Ô>€DØ€D„H�TŒY�œÑ$Ô$Ð$å”˜dœoÑ.Ô.€IÝ˜TÔ0°)¸T¼_ÑMÔM€Kõ ”x ¤
Ô 5½R¼XÐFÑFÔFÐØÐ�QÑÝ˜+ t¤zÐ3CÑDÔDÐDàŒ:Ô  AÒ%Ð%Ð%Ð%ØÔ! QÒ&Ð&Ð&Ð&Ý	Œ•~Ñ	&Ô	&ð @ð @Ý˜4œ:Ô+¨[Ô->Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @å�t”zÔ'¨Ô*¨KÔ,=¸aÔ,@ÑAÔAÐAõ ˜TÔ0°)¸T¼_ÑMÔM€KÝ”x ¤
Ô 5½R¼XÐFÑFÔFÐØÐ�Q�R�RÑõ ˜+ t¤zÐ3CÑDÔDÐDØŒ:Ô  AÒ%Ð%Ð%Ð%ØÔ! QÒ&Ð&Ð&¨Ô(>Ñ&Ô&Ð&Ý�t”zÔ'¨Ô):Ñ;Ô;Ð;Ð;Ð;s   Ã( DÄDÄD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¦  «         dS # 1 swxY w Y   dS )z8Test pruning a tree does not result in an infinite loop.r   r=   rÔ  r  z,Node has reached a leaf in the original treer
  N)r   r�   rg   r¶   r·   ry   r§  rt  rí  r¨  r?  rq   rþ   ru   r©  rº   rù   rú   r"   r«  s       r†   Ú$test_build_pruned_tree_infinite_loopr°  M  s*  € õ "¨q¸AÐ>Ñ>Ô>€DØ€D„H�TŒY�œÑ$Ô$Ð$Ý”˜dœoÑ.Ô.€IÝ˜TÔ0°)¸T¼_ÑMÔM€Kõ ”x ¤
Ô 5½R¼XÐFÑFÔFÐØÐ�QÑÝ	ŒÝÐHð
ñ 
ô 
ð Ið Iõ 	˜k¨4¬:Ð7GÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið Is   Â5CÃCÃ Cc                 ó8  ‡— d„ Šdˆfd„	}t           j                             | ¦  «        }dD ]í}|                     |df¬¦  «        }|                     |¦  «        }|d|                     dd	¦  «        z  z  }t          j        |¦  «        } ||||¦  «          ||t          j        |¦  «        |¦  «          |||                     ¦   «         dz   |¦  «          ||||d
¬¦  «         |                     |¦  «        } ||||¦  «          ||||d
¬¦  «         ŒîdS )a“  
    Test the main bit of logic of the MAE(RegressionCriterion) class
    (used by DecisionTreeRegressor(criterion="absolute_error")).

    The implementation of the criterion relies on an efficient precomputation
    of left/right children absolute error for each split. This test verifies this
    part of the computation, in case of major refactor of the MAE class,
    it can be safely removed.
    c                 óR  ‡ ‡— ‰                       ¦   «                              ¦   «         Š ˆˆ fd„t          d‰ j        dz   ¦  «        D ¦   «         }ˆˆ fd„t	          t          d‰ j        dz   ¦  «        |¦  «        D ¦   «         }t          j        |¦  «        t          j        |¦  «        fS )Nc                 óV   •— g | ]%}t          ‰d |…         ‰d |…         dd¬¦  «        ‘Œ&S )Nr‡  T©Úaverager2   )r]  rú  Úwrf   s     €€r†   rè  zitest_absolute_errors_precomputation_function.<locals>.compute_prefix_abs_errors_naive.<locals>.<listcomp>l  sJ   ø€ ð 
ð 
ð 
àõ !  2 A 2¤¨¨"¨1¨"¬¨r¸4Ð@Ñ@Ô@ð
ð 
ð 
rˆ   r=   c                 óŽ   •— g | ]A\  }}t          j        ‰d |…         |z
  ¦  «        ‰d |…         z                       ¦   «         ‘ŒBS r  )ry   r¢   r~   )r]  rú  Úmr¶  rf   s      €€r†   rè  zitest_absolute_errors_precomputation_function.<locals>.compute_prefix_abs_errors_naive.<locals>.<listcomp>p  s\   ø€ ð 
ð 
ð 
á��1õ ŒV�A�b�q�b”E˜A‘IÑÔ  2 A 2¤Ñ&×+Ò+Ñ-Ô-ð
ð 
ð 
rˆ   )r¯   rõ  rO  ra   Úzipry   r¤   )rf   r¶  ÚmediansÚerrorss   ``  r†   Úcompute_prefix_abs_errors_naivezUtest_absolute_errors_precomputation_function.<locals>.compute_prefix_abs_errors_naivej  sÀ   øø€ Ø�GŠG‰IŒI�NŠNÑÔˆð
ð 
ð 
ð 
ð 
å˜1˜aœf q™jÑ)Ô)ð
ñ 
ô 
ˆð
ð 
ð 
ð 
ð 
å�E ! Q¤V¨a¡ZÑ0Ô0°'Ñ:Ô:ð
ñ 
ô 
ˆõ Œx˜ÑÔ¥¤¨'Ñ!2Ô!2Ð2Ð2rˆ   Fc                 óJ  •— | j         d         }|r|dz
  dfnd|f}t          | ||g|¢|‘R Ž \  }}| |         }||         }	|r|d d d…         }|	d d d…         }	 ‰||	¦  «        \  }
}|r|
d d d…         }
|d d d…         }t          ||
d¬¦  «         t          ||d¬¦  «         d S )Nr   r=   rC   g•dyáý¥=)Úatol)r­   r   r   )rf   r¶  r¬   Úreverserq  rC  Ú
abs_errorsrº  Úy_sortedÚw_sortedÚabs_errors_Úmedians_r¼  s               €r†   Úassert_same_resultszItest_absolute_errors_precomputation_function.<locals>.assert_same_resultsv  sò   ø€ ØŒG�AŒJˆØ%Ð1��A‘�rˆ{ˆ{¨A¨q¨6ˆÝ<¸QÀÀ7ÐUÈTÐUÐSTÐUÐUÐUÑˆ
�GØ�W”:ˆØ�W”:ˆØð 	&Ø   " ”~ˆHØ   " ”~ˆHØ ?Ð ?ÀÈ(Ñ SÔ SÑˆ�XØð 	&Ø% d d¨ dÔ+ˆKØ   " ”~ˆHÝ˜
 K°eÐ<Ñ<Ô<Ð<Ý˜ °Ð6Ñ6Ô6Ð6Ð6Ð6rˆ   )r@   r?   rH   r_   r‡  rK  r=   r`   g      $@rA   r?   T)r¿  N)F)ry   r�  Údefault_rngrŠ  rÔ   rš   Úroundrð  )rÃ   rÅ  r.  rq  rf   r¶  r¬   r¼  s          @r†   Ú,test_absolute_errors_precomputation_functionrÈ  _  sa  ø€ ð
3ð 
3ð 
3ð7ð 7ð 7ð 7ð 7ð 7õ  Œ)×
Ò
Ð 2Ñ
3Ô
3€Cà$ð 9ð 9ˆØ�KŠK˜a ˜VˆKÑ$Ô$ˆØ�JŠJ�q‰MŒMˆØ	ˆT�S—[’[  QÑ'Ô'Ñ'Ñ'ˆÝ”)˜A‘,”,ˆØÐ˜A˜q 'Ñ*Ô*Ð*ØÐ˜A�rœw q™zœz¨7Ñ3Ô3Ð3ØÐ˜A˜qŸwšw™yœy¨1™}¨gÑ6Ô6Ð6ØÐ˜A˜q '°4Ð8Ñ8Ô8Ð8Ø—/’/ !Ñ$Ô$ˆØÐ˜A˜q 'Ñ*Ô*Ð*ØÐ˜A˜q '°4Ð8Ñ8Ô8Ð8Ð8ð9ð 9rˆ   c                 ó  — t           j                             | ¦  «        }t          d¦  «        }|                     |¬¦  «        }|                     dd|¬¦  «        |                     dd|¬¦  «        z  }t          dd¬¦  «                             t          j	        |j
        d         df¬¦  «        ||¬	¦  «        j        j                             ¦   «         d         }t          ||d
d¬¦  «        }t          ||¦  «         dS )z„
    Test that the weighted-median computed under-the-hood when
    building a tree with criterion="absolute_error" is correct.
    g     jø@r`   r   r@   r=   r8   )rž   r¾   rî  r˜   r‡  Tr´  N)ry   r�  rÆ  r  Ú	lognormalÚintegersrŠ  r   r�   rš   r­   rþ   r€   r¯   r3   r   )rÃ   r.  rq  r¶   r+  Útree_leaf_weighted_medianÚweighted_medians          r†   Ú7test_absolute_error_accurately_predicts_weighted_medianrÎ  –  sì   € õ
 Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝˆC‰Œ€AØ�=Š=˜aˆ=Ñ Ô €Dà�lŠl˜1˜a aˆlÑ(Ô(¨3¯;ª;°q¸!À!¨;Ñ+DÔ+DÑD€Gõ 	Ð(8ÀAÐFÑFÔFß	Š�RŒW˜DœJ qœM¨1Ð-Ð.Ñ.Ô.°ÀGˆÑ	LÔ	LÜ	Œu—U’U‘W”W˜Qô	 ð õ
 +¨4°¸"ÀdÐKÑKÔK€OåÐ-¨Ñ?Ô?Ð?Ð?Ð?rˆ   c                  óŠ  — t          j        g d¢g d¢g¦  «                             dd¦  «                             t          ¦  «        } g d¢}t           j        | | dk    <   t          d¦  «        D ]U}t          d|¬¦  «                             | |¦  «        }t          |j
        j        t          j        g d¢¦  «        ¦  «         ŒVd S )	Nrx  )r=   rQ   r=   rQ   r=   rQ   r=   rQ   r   r=   )r   r   r   r   r=   r=   r=   r=   r_   rÓ   )rb   rX   rX   )ry   r®   Úswapaxesr-  Úfloatr  rO  r   r�   r+   rþ   r   r¤   )re   rf   rú  r
   s       r†   Ú"test_splitting_with_missing_valuesrÒ  «  sÍ   € õ 	Œ	Ð+Ð+Ð+Ð-EÐ-EÐ-EÐFÑGÔGß	Š�!�Q‰Œß	Š•‰Œð ð
 	!Ð Ð €AÝ”€A€aˆ1‚f�Iõ �2‰YŒYð Lð LˆÝ$¨q¸qÐAÑAÔA×EÒEÀaÈÑKÔKˆÝ˜4œ:Ô.µ´Ð9IÐ9IÐ9IÑ0JÔ0JÑKÔKÐKÐKðLð Lrˆ   c                  ó8  — dddt           j        t           j        g} g d¢}t          j        | ¦  «                             dd¦  «        } t	          ¦   «                              | |¦  «        }t           |j        | ¦  «        |¦  «         |j        j	        dk    sJ ‚d S )Nr   r  rC   r=   r@   )
ry   r  r¤   rÀ  r   r�   r+   r�   rþ   ru   )re   rf   r
   s      r†   Ú$test_missing_values_and_constant_toyrÔ  ¿  s‘   € ð 
ˆAˆq•"”&�"œ&Ð!€AØˆˆ€AÝ
Œ�‰Œ×Ò˜B Ñ"Ô"€AÝ!Ñ#Ô#×'Ò'¨¨1Ñ-Ô-€Dõ �|�t”| A‘”¨Ñ*Ô*Ð*àŒ:Ô  AÒ%Ð%Ð%Ð%Ð%Ð%rˆ   c                  óŽ   — t          j        t          d¬¦  «        5  t          d¬¦  «        } d d d ¦  «         d S # 1 swxY w Y   d S )Nr9   r
  r	  )rº   ÚwarnsÚFutureWarningr   )r:  s    r†   Útest_friedman_mse_deprecationrØ  Î  s‹   € Ý	Œ•m¨>Ð	:Ñ	:Ô	:ð <ð <Ý!¨NÐ;Ñ;Ô;ˆð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   œ:º>Á>zX,yrS   r˜  )rX   rS   r˜  g      @)rX   rS   rX   zmultiple-non-missingzsingle-non-missing)Úidsc                 ót  — t          dd¬¦  «        } |j        | |¦  «         |j        j        d         t          k    sJ ‚|j        j        d         }| t          j        | ¦  «                  }t          j        |¦  «        sJ ‚| 	                    ¦   «         |cxk    r| 
                    ¦   «         k    sn J ‚dS )z×
    Check random-split thresholds are finite when the first sample is missing.

    Non-regression test for a subtle bug, see
    https://github.com/scikit-learn/scikit-learn/pull/32119#issuecomment-3765288780
    r=   r   rÓ   N)r   r�   rþ   rx   r    r|   ry   ÚisnanrH  r£   rC  )re   rf   r
   r|   Únon_missings        r†   Ú<test_random_splitter_missing_values_uses_non_missing_min_maxrÝ  Ó  s¹   € õ ¨¸Ð:Ñ:Ô:€DØ€D„HˆQ��N„N€NàŒ:Ô# AÔ&­)Ò3Ð3Ð3Ð3Ø”
Ô$ QÔ'€IØ•R”X˜a‘[”[�L”/€KåŒ;�yÑ!Ô!Ð!Ð!Ð!Ø�?Š?ÑÔ 	Ð>Ð>Ò>Ð>¨[¯_ª_Ñ->Ô->Ò>Ð>Ð>Ð>Ð>Ð>Ð>Ð>rˆ   r  )úÚ__doc__rõ  rª  r§  r`  r�  rÌ  Ú	itertoolsr   r   r   rÆ  Únumpyry   rº   Újoblib.numpy_pickler   Únumpy.testingr   Úsklearnr   r	   r
   Úsklearn.dummyr   Úsklearn.exceptionsr   Úsklearn.imputer   Úsklearn.metricsr   r   r   r   Úsklearn.model_selectionr   r   Úsklearn.pipeliner   Úsklearn.random_projectionr   Úsklearn.treer   r   r   r   Úsklearn.tree._classesr   r   r   r   Úsklearn.tree._criterionr   Úsklearn.tree._treer   r    r!   r"   r#   r$   r%   r&   rí  Úsklearn.utilsr'   Úsklearn.utils._array_apir(   Úsklearn.utils._testingr)   r*   r+   r,   r-   Úsklearn.utils.fixesr.   r/   r0   r1   Úsklearn.utils.statsr3   Úsklearn.utils.validationr4   rµ   ÚREG_CRITERIONSr�   rÖ   rÁ   r;   Ú__annotations__ÚupdateÚSPARSE_TREESr¤   r  r  Úy_small_regre   rf   r‘   r’   r£  rg   r�  rC  r.  rð  r·   ra   Úpermr¶   Úload_diabetesrh   Úload_digitsri   r\   Úmake_multilabel_classificationr'  r(  rŠ  ÚX_sparse_posrŠ  Úy_randomrô  ÚX_sparse_mixrq   r,  r‡   r–   r�   ÚmarkÚfilterwarningsÚparametrizer×  r©   r³   r¸   rŽ   r¼   rÈ   rÑ   rØ   rÜ   rç   r÷   rü   rÿ   r  r  r!  r(  r7  r<  rA  rD  rG  rI  rV  rj  rr  rw  r}  r…  r�  r”  r�  r   r§  rª  r®  r±  rµ  rº  r½  rÁ  rÇ  rÒ  rÝ  rá  ÚsortedrE  Úintersectionrã  rå  rÖ  rì  r¹  r  r  r  r	  r  r  r  r$  r)  r0  rA  rM  r  rY  r[  r_  rU  r^  rs  ru  rO  r}  r—  r�  r¶  rÇ  rÝ  rä  rê  rð  rô  rü  r  r  r  r  r  r%  r-  r2  r6  r8  r;  r=  r?  rD  rB  rS  r]  r|  rò   ra  rg  r  rl  rn  r¥  r®  r°  rÈ  rÎ  rÒ  rÔ  rØ  rÝ  rÀ   rˆ   r†   ú<module>r     s$  ððð ð ð €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø Ð Ð Ð Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (Ø -Ð -Ð -Ð -Ð -Ð -Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð FÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ *Ð *Ð *Ð *Ð *Ð *Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7à%€ØO€ð 5Ø.ðð €	ð 3Ø,ðð €	ð
 �$‘&”&€	ˆ4Ð Ð Ñ Ø 	× Ò �Ñ Ô Ð Ø 	× Ò �Ñ Ô Ð ðð ð €ð ˆ"Œ(à5Ð5Ð5Ø6Ð6Ð6Ø<Ð<Ð<Ø9Ð9Ð9Ø4Ð4Ð4Ø:Ð:Ð:Ø@Ð@Ð@Ø>Ð>Ð>Ø>Ð>Ð>Ø@Ð@Ð@Ø7Ð7Ð7Ø4Ð4Ð4Ø5Ð5Ð5Ø4Ð4Ð4Ø5Ð5Ð5Ø?Ð?Ð?Ø@Ð@Ð@ØAÐAÐAØ8Ð8Ð8Ø4Ð4Ð4Ø5Ð5Ð5Ø4Ð4Ð4Ø4Ð4Ð4ð/ñô €ð8 PÐ
OÐ
O€ðð ð €ð6 	ˆ"€X��Bˆx˜"˜b˜ A q 6¨A¨q¨6°A°q°6Ð:€ØÐÐ€Øˆ"€X��1ˆv˜˜1�vÐ€Øˆjˆj€ð €xÔÑÔ€Ø„i×Ò˜AÑÔ€Ø
‡‚�t”{Ô'Ñ(Ô(€ØŒI�dŒO€„	ØŒk˜$Ô€„ð "ˆ8Ô!Ñ#Ô#€Ø
‡‚�x”Ô+Ñ,Ô,€Ø”˜dÔ#€„Ø”/ $Ô'€„à	ˆÔ	Ñ	Ô	€Ø
‡‚�v”}Ô)Ñ*Ô*€ØŒk˜$Ô€„Ø”˜dÔ#€„à!Ð! !Ñ$Ô$€ØD˜XÔDØ˜b¨Rðñ ô Ñ €ˆlð
 ×#Ò#¨Ð#Ñ1Ô1€Ø$'€ˆ\˜SÒ Ñ !Ø×Ò  1¨5ÐÑ1Ô1€Ø$Ð$ R¨°TÈÐJÑJÔJ×RÒRÑTÔT€ð ”) $¤+Ð.Ð.Ø”m¨(¬/Ð:Ð:Ø”K f¤mÐ4Ð4Ø˜ÐÐØ WÐ-Ð-Ø [Ð1Ð1Ø$¨<Ð8Ð8Ø$¨8Ð4Ð4Ø%˜¨HÐ5Ð5Ø$¨8Ð4Ð4Ø�2”8˜GÑ$Ô$¨8Ð4Ð4ðð €ð$ð $ð $ðN	Xð 	Xð 	Xð	Xð 	Xð 	Xð „×ÒÐCÑDÔDØ„×Ò˜ ×!1Ò!1Ñ!3Ô!3Ñ4Ô4Ø„×Ò˜ nÑ5Ô5ð,ð ,ñ 6Ô5ñ 5Ô4ñ EÔDð,ð*Fð Fð Fð*
ð 
ð 
ð& „×ÒÐCÑDÔDØ„×Ò˜ y§¢Ñ'8Ô'8Ñ9Ô9Ø„×Ò˜ nÑ5Ô5ðð ñ 6Ô5ñ :Ô9ñ EÔDðð „×ÒÐCÑDÔDØ„×Ò˜ ×!1Ò!1Ñ!3Ô!3Ñ4Ô4Ø„×ÒØà	Ð,Ð-Ø	Ð.Ð/Ø	Ð+Ð,Ø	Ð)Ð*ð	ñô ð
<ð 
<ñô ñ 5Ô4ñ EÔDð
<ð
ð 
ð 
ð4ð ð ðWð Wð Wð ð ð ð2Lð Lð Lð>-ð -ð -ðKð Kð Kð<!7ð !7ð !7ðH?+ð ?+ð ?+ðDHð Hð Hð>Fð Fð FðB8
ð 8
ð 8
ð 8
ðv „×Ò˜ Ñ+Ô+ð1ð 1ñ ,Ô+ð1ð „×Ò˜ Ñ.Ô.Ø„×Ò˜¨.Ñ9Ô9ðWð Wñ :Ô9ñ /Ô.ðWð
 &*ð:
ð :
ð :
ð :
ðz „×Ò˜ Ñ+Ô+ðGð Gñ ,Ô+ðGð „×Ò˜ Ñ.Ô.Ø„×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ñ /Ô.ðð „×ÒÐCÑDÔDØ„×ÒØðØ	ˆ�×!Ò!Ñ#Ô# ^Ñ	4Ô	4ðà	ˆ�×!Ò!Ñ#Ô# ^Ñ	4Ô	4ðñô ð!Gð !Gñô ñ EÔDð!GðH0ð 0ð 0ðh „×ÒÐCÑDÔDØ„×ÒØðØ	ˆ�×!Ò!Ñ#Ô# ^Ñ	4Ô	4ðà	ˆ�×!Ò!Ñ#Ô# ^Ñ	4Ô	4ðñô ð@%ð @%ñô ñ EÔDð@%ðF=ð =ð =ð(	Eð 	Eð 	Eð*8ð *8ð *8ðZ1ð 1ð 1ðh3ð 3ð 3ð0 „×Ò˜ Ñ+Ô+ð,Nð ,Nñ ,Ô+ð,Nð^ „×Ò˜ Ñ+Ô+ð	ð 	ñ ,Ô+ð	ð+ð +ð +ð$ð $ð $ðKð Kð Kð$(ð (ð (ð „×Ò˜ Y×%5Ò%5Ñ%7Ô%7Ñ8Ô8ð+ð +ñ 9Ô8ð+ð(-ð -ð -ð?ð ?ð ?ð"!ð !ð !ðð ð ðð ð ð*&ð &ð &ð &ðR „×Ò˜ lÑ3Ô3Ø„×ÒØð	ñô ð6ð 6ñô ñ 4Ô3ð6ð
 „×Ò˜ f f¨S¨S°Ñ->Ô->×-KÒ-KÈIÑ-VÔ-VÑ&WÔ&WÑXÔXØ„×Ò˜ Z°Ð$=Ñ>Ô>ð.ð .ñ ?Ô>ñ YÔXð.ð „×Ò˜ lÑ3Ô3Ø„×Ò˜Ð$WÐ$WÐ$WÑXÔXØ„×Ò˜¨.Ñ9Ô9ð0:ð 0:ñ :Ô9ñ YÔXñ 4Ô3ð0:ðh „×ÒÐCÑDÔDØ„×ÒØØ€DˆˆÐEÐE <ÐEÑEÔEÀ~Ñ	VÔ	VÑWÔWØ
€dØˆÐDÐD ,ÐDÑDÔDÀnÑUÔUñô ññô ð „×Ò˜Ð$WÐ$WÐ$WÑXÔXØ„×Ò˜¨.Ñ9Ô9ð:ð :ñ :Ô9ñ YÔXñô ñ EÔDð:ð" „×Ò˜ lÑ3Ô3Ø„×ÒØ! 3 3 ~°~Ñ#FÔ#Fñô ðHPð HPñô ñ 4Ô3ðHPðVð ð ð  „×Ò˜ Ñ+Ô+ð,ð ,ñ ,Ô+ð,ð
 „×Ò˜ Ñ+Ô+Ø„×ÒÐ+¨d¨V°nÑ-DÑEÔEð$ð $ñ FÔEñ ,Ô+ð$ð$ „×Ò˜ Ñ+Ô+ðGð Gñ ,Ô+ðGð „×Ò˜ Ñ.Ô.Ø„×Ò˜¨.Ñ9Ô9ðGð Gñ :Ô9ñ /Ô.ðGðBð Bð Bð& „×Ò˜ Ñ+Ô+ð,ð ,ñ ,Ô+ð,ð: „×Ò˜ Ñ+Ô+Ø„×Ò˜¨.Ñ9Ô9ð0ð 0ñ :Ô9ñ ,Ô+ð0ðJ;ð J;ð J;ðZ+ð +ð +ð8 „×ÒÐ+¨d¨V°nÑ-DÑEÔEð ð  ñ FÔEð ð$ „×ÒØˆvˆv�c�c˜(Ÿ-š-™/œ/Ñ*Ô*¨k¸:Ð-FÑFÑGÔGñô ð „×Ò˜Ð&<Ð>QÐ%RÑSÔSðAð Añ TÔSñô ðAð „×Ò˜ H§M¢M¡O¤OÑ4Ô4Ø„×Ò˜Ð&;Ð=OÐ%PÑQÔQðAð Añ RÔQñ 5Ô4ðAð	.ð 	.ð 	.ð:ð :ð :ð%ð %ð %ðP „×Ò˜ Ñ+Ô+Ø„×Ò˜ f¨hÐ%7Ñ8Ô8Ø„×ÒÐ+¨d¨V°nÑ-DÀ~Ñ-UÑVÔVðð ñ WÔVñ 9Ô8ñ ,Ô+ðð6 „×ÒÐCÑDÔDØ„×Ò˜Ð&RÐ&RÐ&RÑSÔSØ„×Ò˜ ×!1Ò!1Ñ!3Ô!3Ñ4Ô4ð	>ð 	>ñ 5Ô4ñ TÔSñ EÔDð	>ð „×Ò˜   q¡¤Ñ*Ô*ð&ð &ñ +Ô*ð&ðB'0ð '0ð '0ðT „×Ò˜Ð"8Ð:MÐ!NÑOÔOØ„×Ò˜ q¨! fÑ-Ô-ðGð Gñ .Ô-ñ PÔOðGð,(ð (ð (ð2(ð (ð (ð4?ð ?ð ?ð$?ð ?ð ?ð"Ið Ið Ið-ð -ð -ð,-ð -ð -ð6@ð @ð @ð$
ð 
ð 
ðB1Uð 1Uð 1Uðh „×ÒØ��Ð,�oÔ,Ñ.Ô.Ð0GÐ0@Ô0GÑ0IÔ0IÑJÔJñô ð/ð /ñô ð/ðð ð ð& „×Ò˜ ×!1Ò!1Ñ!3Ô!3Ñ4Ô4ðð ñ 5Ô4ðð, „×ÒÐCÑDÔDØ„×Ò˜ nÑ5Ô5ð=ð =ñ 6Ô5ñ EÔDð=ð6 „×ÒÐCÑDÔDØ„×Ò˜   q¡¤Ñ*Ô*Ø„×Ò˜ nÑ5Ô5ð.ð .ñ 6Ô5ñ +Ô*ñ EÔDð.ðB „×Ò˜ y°&Ð&9Ñ:Ô:ðAð Añ ;Ô:ðAð „×Ò˜ y°&Ð&9Ñ:Ô:ð*ð *ñ ;Ô:ð*ð „×Ò˜ y°&Ð&9Ñ:Ô:ð*ð *ñ ;Ô:ð*ð  „×Ò˜ y°&Ð&9Ñ:Ô:ð*ð *ñ ;Ô:ð*ð „×ÒÐ+¨^Ñ<Ô<Ø„×ÒØ
àÐÑÔØÐÑÔðñô ð	ð 	ñô ñ =Ô<ð	ð „×Ò˜ ×!1Ò!1Ñ!3Ô!3Ñ4Ô4ð!ð !ñ 5Ô4ð!ðð ð ð „×ÒØ ð 
Ô	 Ð"7¸Ð;Ø	Ô	 Ð"4°dÐ;Ø	&Ð(>ÀÐEØ	&Ð(;¸TÐBðñô ð „×ÒÐ.°°v°Ñ?Ô?ð'ð 'ñ @Ô?ñô ð 'ðZ „×ÒÐ/°°°Y×5EÒ5EÑ5GÔ5GÈ$ÐPTÈÑ1VÔ1VÑWÔWðð ñ XÔWðð: „×ÒØà	Ô	!Ð#8Ð9Ø	Ô	%Ð'=Ð>ðñô ðNð Nñô ðNð,
ð 
ð 
ð „×ÒÐCÑDÔDØ„×Ò˜Ð"7Ð9KÐ!LÑMÔMØ„×ÒØð 	ˆŒ�"”&˜!˜RœV Q¨¨1Ð-Ñ.Ô.ØˆŒ�"”&˜"œ& ! Q¨¨1Ð-Ñ.Ô.àˆŒ�!�Q˜˜1˜bœf b¤fÐ-Ñ.Ô.ØˆŒ�!�Q˜˜2œ6 1 b¤fÐ-Ñ.Ô.ðñ
ô 
ð „×Ò˜ nÑ5Ô5ð#:ð #:ñ 6Ô5ñ
ô 
ñ NÔMñ EÔDð#:ðL(ð (ð (ð,:ð ,:ð ,:ð^<ð <ð <ð>Ið Ið Ið$49ð 49ð 49ðn@ð @ð @ð*Lð Lð Lð(&ð &ð &ð<ð <ð <ð
 „×ÒØ	à	ˆŒ�B”F�8˜c˜U S E¨C¨5Ð1Ñ	2Ô	2°H°B´HÐ=QÐ=QÐ=QÑ4RÔ4RÐSØ	ˆŒ�B”F�8˜c˜U R¤V HÐ-Ñ	.Ô	.°°´¸¸¸Ñ0IÔ0IÐJðð 
 Ð!5Ð6ð ñ ô ð?ð ?ñô ð?ð ?ð ?rˆ   