§
    ¥˜ºh�b ã                   ó&  — 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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mZ ddlmZ dd	lmZ dd
lmZmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl.m5Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZD dZEdZFe%e'dœZGe&e(dœZH eI¦   «         ZJeIeKd<   eJ L                    eG¦  «         eJ L                    eH¦  «         g d¢ZM ejN        g d¢g d¢g d¢g d¢g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g¦  «        ZOg d1¢ZPg d2¢ZQd3d4gd4d4gd4d3gd5d5gd5d6gd6d5ggZRg d7¢ZSd4d4gd6d6gd8d6ggZTg d9¢ZU ejV        ¦   «         ZWejX         Y                    d5¦  «        ZZeZ [                    eWj\        j]        ¦  «        Z^eWj_        e^         eW__        eWj\        e^         eW_\         ej`        ¦   «         ZaeZ [                    eaj\        j]        ¦  «        Z^eaj_        e^         ea__        eaj\        e^         ea_\         ejb        ¦   «         ZceZ [                    ecj\        j]        ¦  «        Z^ecj_        e^         ec__        ecj\        e^         ec_\         eDd¦  «        Zd eje        dd:d;¬<¦  «        \  ZfZged h                    d=¬>¦  «        Zid?eieid@k    <   ed j                    ddAdB¬>¦  «        Zk e#dCd;dDd¬E¦  «         l                    ¦   «         ZmeWj_        eWj\        dFœeaj_        eaj\        dFœecj_        ecj\        dFœeReSdFœeOePdFœeOeQdFœefegdFœeiekdFœei ekdFœemekdFœ ejn        dG¦  «        ekdFœdHœZoeoD ]"Zp eeoep         dI         ¦  «        eoep         dJ<   Œ#dK„ ZqdL„ ZrdM„ Zsejt         u                    dNeH v                    ¦   «         ¦  «        ejt         u                    dOeF¦  «        dP„ ¦   «         ¦   «         ZwdQ„ ZxdR„ Zyejt         u                    dSeH z                    ¦   «         ¦  «        ejt         u                    dOeF¦  «        dT„ ¦   «         ¦   «         Z{e@ejt         u                    dSeH z                    ¦   «         ¦  «        ejt         u                    dUdVdWedXfdYdCedXfdZdWedXfd[dWed:fg¦  «        d\„ ¦   «         ¦   «         ¦   «         Z|d]„ Z}d^„ Z~d_„ Zd`„ Z€da„ Z�db„ Z‚dc„ Zƒdd„ Z„de„ Z…df„ Z†dg„ Z‡dÜdi„Zˆejt         u                    djeJ¦  «        dk„ ¦   «         Z‰ejt         u                    djeM¦  «        dl„ ¦   «         ZŠdÜdm„Z‹ejt         u                    djeJ¦  «        dn„ ¦   «         ZŒejt         u                    djeM¦  «        do„ ¦   «         Z�dp„ ZŽdq„ Z�dr„ Z�ds„ Z‘dt„ Z’du„ Z“dv„ Z”dw„ Z•dx„ Z–ejt         u                    djeG¦  «        dy„ ¦   «         Z—dz„ Z˜ejt         u                    djeG¦  «        d{„ ¦   «         Z™d|„ Zšd}„ Z›d~„ Zœd„ Z�d€„ Zžd�„ ZŸd‚„ Z dƒ„ Z¡d„„ Z¢dÝd…„Z£ejt         u                    d†eM¦  «        ejt         u                    d‡dˆ¦  «        d‰„ ¦   «         ¦   «         Z¤ejt         u                    d† e¥ e¦eM¦  «         §                    eH¦  «        ¦  «        ¦  «        ejt         u                    d‡dŠd‹g¦  «        dŒ„ ¦   «         ¦   «         Z¨d�„ Z©dŽ„ Zªejt         u                    d†eM¦  «        ejt         u                    d‡g d�¢¦  «        ejt         u                    d�e©eªg¦  «        d‘„ ¦   «         ¦   «         ¦   «         Z«dÞd’„Z¬ejt         u                    d†eM¦  «        d“„ ¦   «         Z­e?d”„ ¦   «         Z®ejt         u                    djeJ¦  «        d•„ ¦   «         Z¯d–„ Z°d—„ Z±ejt         u                    djeJ¦  «        d˜„ ¦   «         Z²d™„ Z³dš„ Z´ejt         u                    djeJ¦  «        d›„ ¦   «         Zµejt         u                    djeM¦  «        dœ„ ¦   «         Z¶d�„ Z·dž„ Z¸ejt         u                    djeJ¦  «        dŸ„ ¦   «         Z¹d „ Zºejt         u                    djeJ¦  «        d¡„ ¦   «         Z»d¢„ Z¼d£„ Z½d¤„ Z¾ejt         u                    dOeE¦  «        ejt         u                    d‡ e¥ e¦eo ¿                    ¦   «         ¦  «        d‹dŠhz
  ¦  «        ¦  «        ejt         u                    d¥e%e'g¦  «        d¦„ ¦   «         ¦   «         ¦   «         ZÀejt         u                    dOeF¦  «        ejt         u                    d‡eo ¿                    ¦   «         ¦  «        ejt         u                    d¥e&e(g¦  «        d§„ ¦   «         ¦   «         ¦   «         ZÁd¨„ ZÂd©„ ZÃdª„ ZÄejt         u                    djeJ¦  «        ejt         u                    d«d¬d­g¦  «        ejt         u                    d®g d¯¢¦  «        d°„ ¦   «         ¦   «         ¦   «         ZÅejt         u                    dOg d±¢¦  «        ejt         u                    dNeH v                    ¦   «         ¦  «        d²„ ¦   «         ¦   «         ZÆejt         u                    d³ eÇd8¦  «        ¦  «        d´„ ¦   «         ZÈdµ„ ZÉejt         u                    dOeF¦  «        d¶„ ¦   «         ZÊejt         u                    dNe%e'g¦  «        ejt         u                    d·d6dAg¦  «        d¸„ ¦   «         ¦   «         ZËd¹„ ZÌdº„ ZÍd»„ ZÎd¼„ ZÏd½„ ZÐd¾„ ZÑd¿„ ZÒdÀ„ ZÓdÁ„ ZÔdÂ„ ZÕejt         u                    dÃ e e,jv        ¦   «          e-jv        ¦   «         ¦  «        ¦  «        dÄ„ ¦   «         ZÖdÅ„ Z×ejt         u                    dNeJ v                    ¦   «         ¦  «        dÆ„ ¦   «         ZØejt         u                    dOdVdZg¦  «        dÇ„ ¦   «         ZÙejt         u                    dOdÈdÉg¦  «        dÊ„ ¦   «         ZÚejt         u                    dOdÈdÉg¦  «        dË„ ¦   «         ZÛejt         u                    dOdÈdÉg¦  «        dÌ„ ¦   «         ZÜejt         u                    dOdÈdÉg¦  «        dÍ„ ¦   «         ZÝejt         u                    dÎdÏdhg¦  «        ejt         u                    dÐ e%d­¬Ñ¦  «         e&dY¬Ò¦  «        g¦  «        dÓ„ ¦   «         ¦   «         ZÞdÔ„ Zßejt         u                    dÕejà        e&fejá        e%fg¦  «        ejt         u                    dÖdd×g¦  «        dØ„ ¦   «         ¦   «         ZâdÙ„ Zãejt         u                    dÕejà        e&fejá        e%fg¦  «        dÚ„ ¦   «         ZädÛ„ ZådS )ßz-
Testing for the tree module (sklearn.tree).
é    N)ÚchainÚproduct)ÚNumpyPickler)Úassert_allclose)Ú
coo_matrixÚ
csc_matrixÚ
csr_matrix)ÚdatasetsÚtree)ÚDummyRegressor)ÚNotFittedError)Úaccuracy_scoreÚmean_poisson_devianceÚmean_squared_error)Útrain_test_split)Ú_sparse_random_matrix)ÚDecisionTreeClassifierÚDecisionTreeRegressorÚExtraTreeClassifierÚExtraTreeRegressor)ÚCRITERIA_CLFÚCRITERIA_REGÚDENSE_SPLITTERSÚSPARSE_SPLITTERS)Ú
NODE_DTYPEÚ	TREE_LEAFÚTREE_UNDEFINEDÚ_check_n_classesÚ_check_node_ndarrayÚ_check_value_ndarray)ÚTree)Ú	_IS_32BITÚcompute_sample_weight)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚcreate_memmap_backed_dataÚignore_warningsÚskip_if_32bit)Úcheck_sample_weights_invariance)Ú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   r5   r   r   r4   éûÿÿÿçš™™™™™É?r   r3   r4   )éÿÿÿÿr:   r   r   ç      Àr   r   çÍÌÌÌÌÌ @r4   r   r   r;   r   r4   )r:   r:   r   g333333ó¿r   r   r   r   r   r   r9   r   r   r4   )r:   r:   r   r   r   r   r   r7   r   r   r   r   r   r4   )r:   éþÿÿÿr   r3   éýÿÿÿé
   r3   r   çš™™™™™	Àr   r3   r7   r5   r4   )çáz®Gá @r   éúÿÿÿç      à¿r   é   r   r   r@   é   ç      à?r   r>   r4   )rA   r   rB   rC   r   rD   r   r   r@   rE   r   r   r=   r4   )rA   é   rB   rC   r   rD   r   r   r@   rE   r   r   r=   r4   )rA   rG   rB   rC   r   rD   r   r   r@   rE   rF   r   r:   r   )é   rG   r6   r4   rF   r5   r?   r   r4   r8   r7   r   rH   r   )rH   r   r4   r4   r4   r:   r4   r   r   r=   r7   r   r4   r   )rH   r   r4   rH   r7   r:   r?   rH   r   r:   r4   rH   rH   r   )r4   r4   r   rH   rH   r:   r4   rH   r   r8   r4   rH   r7   r   )r7   r4   r   r7   r   r5   r?   r   r4   r8   r7   r   r7   r4   )rA   rG   rB   rC   r   r4   r   r   r@   rE   rF   r   r>   r4   )rA   rG   rB   rC   r   r4   r   r   r@   rE   ç      ø?r4   r:   r:   )rA   rG   rB   rC   r   r?   r   r   r@   rE   rF   r   r:   r:   )rH   r   r6   r4   rF   r=   r?   r   r4   r8   r7   r4   r   r:   )rH   r   r4   r4   r4   r=   r4   r   r   r=   r   r   r   r4   )rH   r4   r4   r4   rH   r:   r?   rH   r   r:   r   rH   r4   r4   )r4   r4   r   r   r4   r>   r4   rH   r   r8   r4   rH   r4   r4   )r7   r4   r   r4   r   r5   r4   r   r4   r=   r   r   r4   r   )r4   r4   r   r   r   r   r4   r4   r4   r4   r4   r4   r   r   r   r4   r   r   r4   r   r   r   r   )ç      ð?r<   ç333333ó?çš™™™™™©?r?   g333333@çÍÌÌÌÌÌ@g)\�Âõ(ð?ç{®Gáz„?g×£p=
×@rM   gš™™™™™ñ?ç        rK   rH   rD   r   r   ç      @gî|?5^ºÉ?gö(\�Âõð?çÍÌÌÌÌÌì?r   r=   r:   r4   rH   )r:   r:   r:   r4   r4   r4   r7   )r:   r4   r4   é   r?   )Úrandom_stateÚ	n_samplesÚ
n_features)é   r6   ©ÚsizerO   gš™™™™™é?r3   )rV   rV   g      Ð?)ÚdensityrS   ©ÚXÚy)rV   r7   )ÚirisÚdiabetesÚdigitsÚtoyÚ	clf_smallÚ	reg_smallÚ
multilabelú
sparse-posú
sparse-negú
sparse-mixÚzerosr[   ÚX_sparsec                 ó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        úd/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/tree/tests/test_tree.pyÚassert_tree_equalr~   Á   sÈ  € à	Œ˜œÒ$Ð$Ð$Ø1×8Ò8Ø�”˜qœ|ñô ñ 	%Ô$Ð$õ
 Ø	Ô˜!Ô*¨GÐ6PÑ,Pñô ð õ Ø	Œ˜œ¨'Ð4MÑ*Mñô ð ð Ô¥9Ò,€HÝŒ~˜hÑ'Ô'€HåØ	Œ	�(Ô˜QœY 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   ©rS   úFailed with {0}r4   )Úmax_featuresrS   )
Ú	CLF_TREESÚitemsÚfitr[   r\   r&   ÚpredictÚTÚtrue_resultrm   ©Ú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‚   rF   )r„   r…   r†   r[   r\   rp   ÚonesÚlenr&   r‡   rˆ   r‰   rm   Ú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   r!   Ú	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 )Nr1   r4   ©r•   rS   ©r•   rƒ   rS   )rp   ÚabsÚminr\   Úarrayr‰   r†   r[   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)r?   r?   r4   r6   r   r�   rJ   r‚   ©rS   rƒ   )rp   rg   ÚindicesÚshapeÚvstackÚravelrˆ   r„   r…   r†   Úscorerm   )r\   ÚgridxÚgridyr[   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—   rQ   z0Failed with {0}, criterion = {1} and score = {2}rH   r˜   rF   )r   r„   r…   ÚCLF_CRITERIONSr†   r]   ÚdataÚtargetr   r‡   rm   )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†   r^   r­   r®   r   r‡   ÚpytestÚapprox)r‹   r!   r•   rŸ   r§   s        r}   Útest_diabetes_overfitr³   >  s¦   € ð
 ˆ$˜°Ð
3Ñ
3Ô
3€CØ‡G‚G�HŒM�8œ?Ñ+Ô+Ð+Ý�xœ°·²½H¼MÑ0JÔ0JÑKÔK€EØ•F”MØ	ñô ò ð ð àI�dÐIÐI¨)ÐIÐIÀ%ÐIÐIñô ð ð ð r   z&criterion, max_depth, metric, max_lossr.   é   é<   r/   r0   r1   c                 ó   —  |||dd¬¦  «        }|                      t          j        t          j        ¦  «          |t          j        |                     t          j        ¦  «        ¦  «        }d|cxk     r|k     sn J ‚d S )NrE   r   )r•   Ú	max_depthrƒ   rS   )r†   r^   r­   r®   r‡   )r‹   r!   r•   r·   ÚmetricÚmax_lossrŸ   Úlosss           r}   Útest_diabetes_underfitr»   K  s�   € ð ˆ$˜¨iÀaÐVWÐ
XÑ
XÔ
X€CØ‡G‚G�HŒM�8œ?Ñ+Ô+Ð+Øˆ6•(”/ 3§;¢;­x¬}Ñ#=Ô#=Ñ>Ô>€DØˆtÐÐÒÐ�hÒÐÐÐÐÐÐÐ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 )Nr4   é*   )r·   rƒ   rS   r   r‚   rj   rG   )r„   r…   r†   r]   r­   r®   Úpredict_probar%   rp   ru   r‘   r¤   rm   r&   Úargmaxr‡   r$   ÚexpÚpredict_log_proba)r‹   r!   rŒ   Úprob_predicts       r}   Útest_probabilityrÃ   `  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·   rS   )rp   ÚarangeÚnewaxisÚ	REG_TREESr…   r†   ©r[   r\   r‹   r!   rŸ   s        r}   Útest_arrayreprrÊ   z  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 )
Nr=   r:   r4   rH   )r4   r4   r4   r4   r4   r4   r   r�   r‚   rj   )r„   r…   r†   r&   r‡   rm   rÈ   r$   )r[   r\   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Ò   )rJ   g¿½A‹wæ?gtúQ?5?á?rO   g7G€¶í?g”�ÞÛº¼Þ?g™¥b'Âß?Úraise)Úallr   r�   )rp   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 )Niˆ  r?   r7   r   F©rT   rU   Ún_informativeÚn_redundantÚ
n_repeatedÚshufflerS   r�   çš™™™™™¹?r‚   ©rS   Úmax_leaf_nodes)r
   Úmake_classificationr„   r…   r†   Úfeature_importances_rp   ru   r¤   rm   r   r]   r­   r®   r’   r&   )r[   r\   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Ð  r?   r7   r   FrÛ   r,   r6   )r•   r·   rS   r.   )r
   rã   r   r†   r   r$   rä   r&   Útree_rr   ro   rn   rt   )r[   r\   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ƒ   r4   Úlog2r7   rN   rF   rJ   )r2   r…   r†   r]   r­   r®   Úmax_features_Úintrp   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)r=   r:   r4   r:   r4   r1   ©r•   zy is not positive.*Poisson©Úmatch©r   r4   rH   )r   r   r   zSome.*y are negative.*Poisson)r6   gš™™™™™¹¿rH   )r„   r…   r±   rê   r   r¾   r[   r†   r\   rë   rp   Ú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        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éè  r?   r   )Úmin_samples_splitrâ   rS   r:   é	   r‚   r9   N)rp   rþ   r]   r­   r   Ú_treeÚDTYPEr®   r   r2   Úkeysr†   rï   rt   ro   rš   rm   )r[   r\   râ   r‹   rö   r÷   Únode_sampless          r}   Útest_min_samples_splitr  X  sc  € å
Ô�$œ)­4¬:Ô+;Ð<Ñ<Ô<€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                  ó@  — t          j        t          j        t          j        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  r6   r   )Úmin_samples_leafrâ   rS   r3   r‚   rà   )rp   rþ   r]   r­   r   r  r  r®   r   r2   r  r†   rï   r  Úbincountrš   rm   )	r[   r\   râ   r‹   rö   r÷   ÚoutÚnode_countsÚ
leaf_counts	            r}   Útest_min_samples_leafr  w  s“  € å
Ô�$œ)­4¬:Ô+;Ð<Ñ<Ô<€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   Fc                 óˆ  — |r1t           |         d                              t          j        ¦  «        }n0t           |         d                              t          j        ¦  «        }t           |         d         }t                               |j        d         ¦  «        }t          j        |¦  «        }t          |          }t          dt          j
        ddd¦  «        ¦  «        D ]Ù\  }}	 ||	|d¬¦  «        }
|
                     |||¬	¦  «         |r-|
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¬¦  «        }
|
                     ||¦  «         |r-|
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 setrh   r[   r\   r   r  rF   rE   )Úmin_weight_fraction_leafrâ   rS   r�   )Úweightsz,Failed with {0} min_weight_fraction_leaf={1}N)ÚDATASETSÚastyperp   Úfloat32ÚrngÚrandr¤   ru   r2   r   Úlinspacer†   rï   r  Útocsrr  rš   r  rm   )r‹   r
   Úsparser[   r\   r  Útotal_weightrö   râ   Úfracr÷   r  Únode_weightsÚleaf_weightss                 r}   Úcheck_min_weight_fraction_leafr*  ˜  s©  € ð ð 7Ý�XÔ˜zÔ*×1Ò1µ"´*Ñ=Ô=ˆˆå�XÔ˜sÔ#×*Ò*­2¬:Ñ6Ô6ˆÝ�Ô˜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ˆåŒF�<Ñ Ô  L°3Ô3OÑ$OÒOÐOÐOØ9×@Ò@Ø�#Ô.ñ
ô 
ñ PÔOÐOÐOð ”7˜1”:€Lå '¨µb´kÀ!ÀSÈ!Ñ6LÔ6LÑ MÔ Mð 
ð 
Ñˆ˜ØˆmØ%)¸.ÐWXð
ñ 
ô 
ˆð 	�Š��1‰Œˆàð 	%Ø”)—/’/ !§'¢'¡)¤)Ñ,Ô,ˆCˆCà”)—/’/ !Ñ$Ô$ˆCå”{ 3Ñ'Ô'ˆà# L°AÒ$5Ô6ˆåŒF�<Ñ Ô  L°3Ô3OÑ$OÒOÐOÐOØ9×@Ò@Ø�#Ô.ñ
ô 
ñ PÔOÐOÐOð
ð 
r   r‹   c                 ó&   — t          | d¦  «         d S ©Nr]   ©r*  ©r‹   s    r}   Ú,test_min_weight_fraction_leaf_on_dense_inputr/  Õ  s   € å" 4¨Ñ0Ô0Ð0Ð0Ð0r   c                 ó(   — t          | dd¦  «         d S ©Nrc   Tr-  r.  s    r}   Ú-test_min_weight_fraction_leaf_on_sparse_inputr2  Ú  s   € å" 4¨°tÑ<Ô<Ð<Ð<Ð<r   c                 ór  — |r1t           |         d                              t          j        ¦  «        }n0t           |         d                              t          j        ¦  «        }t           |         d         }|j        d         }t
          |          }t          dt          j        ddd¦  «        ¦  «        D ]ê\  }} |||dd¬	¦  «        }	|	                     ||¦  «         |r-|	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¬	¦  «        }	|	                     ||¦  «         |r-|	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.rh   r[   r\   r   r  rF   r7   r6   )r  râ   r  rS   zBFailed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}rà   N)r  r  rp   r   r¤   r2   r   r#  r†   rï   r  r$  r  rš   Úmaxr  rm   r  )r‹   r
   r%  r[   r\   r&  rö   râ   r'  r÷   r  r(  r)  s                r}   Ú4check_min_weight_fraction_leaf_with_min_samples_leafr5  ß  sÇ  € ð ð 7Ý�XÔ˜zÔ*×1Ò1µ"´*Ñ=Ô=ˆˆå�XÔ˜sÔ#×*Ò*­2¬:Ñ6Ô6ˆÝ�Ô˜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 r,  ©r5  r.  s    r}   ÚBtest_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_inputr8    s   € å8¸¸vÑFÔFÐFÐFÐFr   c                 ó(   — t          | dd¦  «         d S r1  r7  r.  s    r}   ÚCtest_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_inputr:     s   € å8¸¸|ÈTÑRÔRÐRÐRÐRr   c                 ó$  — t          j        d| ¬¦  «        \  }}t          dt                               ¦   «         ¦  «        D �]Í\  }}t          |         } ||d¬¦  «        } ||dd¬¦  «        } ||dd¬¦  «        } ||d	d¬¦  «        }	|d
f|df|df|	d	ffD �]s\  }
}|
j        |k    s#J d                     |
j        |¦  «        ¦   «         ‚|
                     ||¦  «         t          |
j	        j
        ¦  «        D �]}|
j	        j        |         t          k    rð|
j	        j        |         }|
j	        j        |         }|
j	        j        |         }|
j	        j        |         }|
j	        j        |         }||z  }|
j	        j        |         }|
j	        j        |         }|
j	        j        |         }||z  }||z   }||z  }|
j	        j        |         |j        d         z  }|||z
  z  }||k    sJ d                     ||¦  «        ¦   «         ‚�Œ�Œu�ŒÏd S )Néd   ©rT   rS   r  r   ©râ   rS   rL   )râ   Úmin_impurity_decreaserS   g-Cëâ6?rà   gH¯¼šò×z>z)Failed, min_impurity_decrease = {0} > {1}z2Failed with {0} expected min_impurity_decrease={1})r
   rã   r   r2   r  r?  rm   r†   Úrangerï   rl   ro   r   rv   Úweighted_n_node_samplesrn   r¤   )Úglobal_random_seedr[   r\   râ   r‹   rö   Úest1Úest2Úest3Úest4r÷   Úexpected_decreaseÚnodeÚ
imp_parentÚ
wtd_n_nodeÚleftÚ
wtd_n_leftÚimp_leftÚwtd_imp_leftÚrightÚwtd_n_rightÚ	imp_rightÚwtd_imp_rightÚwtd_avg_left_right_impÚfractional_node_weightÚactual_decreases                             r}   Útest_min_impurity_decreaserV  %  s›  € õ Ô'°#ÐDVÐWÑWÔW�D€A€qõ !(¨µi·n²nÑ6FÔ6FÑ GÔ Gð >ñ >Ñˆ˜Ý! $œˆð ˆ}¨NÈÐKÑKÔKˆàˆ}Ø)ÀÐTUð
ñ 
ô 
ˆð ˆ}Ø)ÀÐVWð
ñ 
ô 
ˆð ˆ}Ø)ÀÐSTð
ñ 
ô 
ˆð
 �4ˆLØ�4ˆLØ�6ˆNØ�3ˆKð	'
ð ,	ñ ,	Ñ"ˆCÐ"ð Ô)Ð->Ò>Ð>Ð>Ø:×AÒAØÔ)Ð+<ñô ñ ?Ô>Ð>ð �GŠG�A�q‰MŒMˆMÝ˜cœiÔ2Ñ3Ô3ð  ñ  �ð ”9Ô*¨4Ô0µIÒ=Ð=Ø!$¤Ô!3°DÔ!9�JØ!$¤Ô!BÀ4Ô!H�Jàœ9Ô2°4Ô8�DØ!$¤Ô!BÀ4Ô!H�JØ"œyÔ1°$Ô7�HØ#-°Ñ#8�LàœIÔ4°TÔ:�EØ"%¤)Ô"CÀEÔ"J�KØ #¤	Ô 2°5Ô 9�IØ$/°)Ñ$;�Mà-:¸\Ñ-IÐ*Ø*¨jÑ8Ð*ð œ	Ô9¸$Ô?À!Ä'È!Ä*ÑLð +ð '=Ø"Ð%;Ñ;ñ'�Oð
 (Ð+<Ò<Ð<Ð<ØK×RÒRØ'Ð):ñô ñ =Ô<Ð<ùñ; ñ,	ð%>ð >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·   rl   ÚcapacityÚ	n_classesro   rn   Ún_leavesrr   rs   rv   rt   rA  rw   c                 ó<   •— i | ]}|t          ‰j        |¦  «        “ŒS © )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 rj   N)r2   r…   r]   r­   r®   r^   r†   r§   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__rm   r&   rì   rï   )r‹   rö   r[   r\   r§   Ú
attributesÚfitted_attributeÚserialized_objectrD  Úscore2r_  r÷   s              @r}   Útest_picklerj  m  s™  ø€ å(ŸšÑ0Ô0ð .ñ .ÑˆˆmØ˜4ÐÐÝ”9�dœkˆqˆAˆAå”=¥(¤/ˆqˆAàˆm¨Ð+Ñ+Ô+ˆØ�Š��1‰ŒˆØ—	’	˜!˜Q‘”ˆð
ð 
ð 
ˆ
ð
ð 
ð 
ð 
ØFPð
ñ 
ô 
Ðõ #œL¨Ñ-Ô-ÐÝŒ|Ð-Ñ.Ô.ˆÝ�D‰zŒz˜Sœ]Ò*Ð*Ð*Ð*à—’˜A˜qÑ!Ô!ˆà�VŠOˆOˆOØC×JÒJÈ4ÑPÔPñ ŒOˆOà)ð 	ð 	ˆIÝÝ˜œ
 IÑ.Ô.Ø  Ô+ð¸ð ð Øðð ð	ñ ô ð ð ñ	ðM.ð .r   c                  óÚ  — ddgddgddgddgddgddgddgddgddgddgddgddgg} ddgddgddgddgddgddgddgddgddgddgddgddgg}ddgddgddgddgg}ddgddgddgddgg}t                                ¦   «         D ]÷\  }} |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 ‚Œøt                               ¦   «         D ]W\  }}
 |
d¬¦  «        }|                     | |¦  «                             |¦  «        }t          ||¦  «         |j        dk    sJ ‚ŒXd S )
Nr=   r:   r4   rH   r   r7   r�   ©r3   rH   )r3   r3   )r„   r…   r†   r‡   r&   r¤   r¾   r’   rÁ   rÈ   r$   )r[   r\   rˆ   Úy_truer‹   rÌ   rŒ   Úy_hatÚprobaÚ	log_probarÍ   rŸ   s               r}   Útest_multioutputrq     s   € ð 
ˆRˆØ	ˆRˆØ	ˆRˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆBˆØ	
ˆBˆØ	
ˆBˆð	€Að  
ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	ˆQˆØ	ˆQˆØ	ˆQˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆð	€Að ˆbˆ�A�q�6˜B ˜7 Q¨ GÐ,€AØ�1ˆg˜˜1�v  A˜w¨¨A¨Ð/€Fõ !*§¢Ñ 1Ô 1ð ,ð ,ÑˆˆnØˆn¨!Ð,Ñ,Ô,ˆØ—’˜˜1‘”×%Ò% aÑ(Ô(ˆÝ˜5 &Ñ)Ô)Ð)ØŒ{˜fÒ$Ð$Ð$Ð$à×!Ò! !Ñ$Ô$ˆÝ�5‰zŒz˜QŠˆˆˆØ�QŒxŒ~ Ò'Ð'Ð'Ð'Ø�QŒxŒ~ Ò'Ð'Ð'Ð'à×)Ò)¨!Ñ,Ô,ˆ	Ý�9‰~Œ~ Ò"Ð"Ð"Ð"Ø˜Œ|Ô! VÒ+Ð+Ð+Ð+Ø˜Œ|Ô! VÒ+Ð+Ð+Ð+Ð+õ  )ŸšÑ0Ô0ð %ð %ÑˆˆmØˆm¨Ð+Ñ+Ô+ˆØ—’˜˜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�   rH   r:   r4   r=   )r„   r…   r†   r[   r\   Ú
n_classes_r&   Úclasses_rp   r¥   r›   rˆ   r’   )r‹   rÌ   rŒ   Ú_ys       r}   Útest_classes_shaperv  Ü  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�   )	r]   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                  ó,  — 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          t          j        |¬¦  «        }t          j	        }t          |                     ||¦  «                             |¦  «        |¦  «         t          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
  ÚFr7   )r   r2   r…   rp   Úfloat64r   rÿ   r]   r­   r®   r&   r†   r‡   Úascontiguousarrayr	   r   )r‹   rö   r
  r÷   r[   r\   s         r}   Útest_memory_layoutrƒ  ü  st  € å(/Ý�ŠÑÔ�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õ •t”y¨Ð.Ñ.Ô.ˆÝŒKˆÝ˜3Ÿ7š7 1 a™=œ=×0Ò0°Ñ3Ô3°QÑ7Ô7Ð7õ •t”y¨Ð.Ñ.Ô.ˆÝŒKˆÝ˜3Ÿ7š7 1 a™=œ=×0Ò0°Ñ3Ô3°QÑ7Ô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ðM&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 )Nr<  rO   é2   r   r�   r�   éÈ   r4   rH   gR¸…ëQà?rÅ   g     °b@rF   g     ÀH@)Ú	minlength)rp   rÆ   rÇ   r‘   r   r†   r&   r‡   rg   rï   rs   r]   r­   r®   r!  Úrandintr¤   r  ro   r   r  r   r%   )r[   r\   r�   rŒ   Ú
duplicatesrç   r|   s          r}   Útest_sample_weightrŠ  '  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                  óB  — 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¦  «        }d}t          j        t          |¬	¦  «        5  | 
                    | ||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr<  rO   r…  r   r�   r4   r�   z3Singleton.* cannot be considered a valid collectionrû   )rp   rÆ   rÇ   r‘   r   Úrandomr"  r±   rê   rë   r†   r›   Ú	TypeError)r[   r\   rŒ   r�   Úexpected_errs        r}   Útest_sample_weight_invalidr�  [  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ØI€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 )z5Check class_weights resemble sample_weights behavior.r   r�   ry  ©Úclass_weightrS   g       @rJ   rý   r4   r<  g      Y@rH   N)r„   r†   r]   r­   r®   r$   rä   rp   r¥   rˆ   r‘   r¤   )	r‹   rÌ   Úclf1rç   Ú
iris_multiÚclf3Úclf4r�   r’  s	            r}   Úcheck_class_weightsr—  m  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                 ó$   — t          | ¦  «         d S ©N)r—  r.  s    r}   Útest_class_weightsrš  œ  ó   € å˜ÑÔÐÐÐr   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 )	NrH   rF   rJ   ©r:   r4   r   r‘  zBnumber of elements in class_weight should match number of outputs.rû   )r„   rp   r¥   r\   r›   rˆ   r±   rê   rë   r†   r[   )r‹   rÌ   ru  rŒ   rk   s        r}   Úcheck_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          | ¦  «         d S r™  )rž  r.  s    r}   Útest_class_weight_errorsr   ­  ó   € å˜dÑ#Ô#Ð#Ð#Ð#r   c                  óü   — t          j        dd¬¦  «        \  } }d}t                               ¦   «         D ]F\  }} |d |dz   ¬¦  «                             | |¦  «        }|                     ¦   «         |dz   k    sJ ‚ŒGd S ©Nr<  r4   r=  r3   )r·   râ   )r
   Úmake_hastie_10_2r2   r…   r†   Úget_n_leaves©r[   r\   Ú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¤  r2   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  rw   ro   rn   rs   rv   rr   rt   r   r4   r>   r7   z Array points to arbitrary memory)rì   r   r†   rï   Úflat)Úattrrw   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   )r?   rV   rH   )r?   r�   )	r+   rp   rg   rˆ  r2   r…   r†   rï   r·   )rS   r[   r\   r‹   rö   r÷   s         r}   Útest_only_constant_featuresr±  Ö  s™   € Ý% aÑ(Ô(€LÝ
Œ�ÑÔ€AØ×Ò˜Q  5Ñ)Ô)€AÝ(ŸšÑ0Ô0ð (ð (ÑˆˆmØˆm¨Ð+Ñ+Ô+ˆØ�Š��1‰ŒˆØŒyÔ" 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   r4   rH   r3   r6   rE   é   )r3   rD   )r   r   r   r4   r4   rH   rH   rH   r7   r7   r7   Ú	ExtraTreer   r4   r¢   rH   r6   )
rp   Ú	transposer¥   rg   r2   r…   r†   rï   r·   rl   ©r[   r\   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 )NrJ   rO   )r3   r  )rO   rJ   rO   rJ   r   r4   r¢   rl  rF   )r3   )rp   Úhstackr›   rg   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=Hr3   r:   r4   r   rû   )r   r4   r   r4   )
rp   Úrepeatr  r�  Úreshaper   r±   rê   rë   r†   )r[   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 )	NrG   ÚPr?   rH   r   r4   Úbest)Úsplitterrâ   )ÚstructÚcalcsizerp   rŒ  Úrandnrˆ  r   r±   rê   Ú	Exceptionr†   rÃ  )Ún_bitsr[   r\   ÚhugerŒ   s        r}   Útest_huge_allocationsrÏ    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         }t          |         d         }|dv r.|j        d         dz  }|d |…         }|d |…         }|d |…         }t          t          t
          fD �]f} ||¦  «        } |d|¬¦  «                             ||¦  «        }	 |d|¬¦  «                             ||¦  «        }
t          |	j        |
j        d 	                    | ¦  «        ¦  «         |	 
                    |¦  «        }| t          v r*|	                     |¦  «        }|	                     |¦  «        }t          t          t
          fD ]‹} ||t          j        ¬	¦  «        }t!          |
 
                    |¦  «        |¦  «         | t          v rFt!          |
                     |¦  «        |¦  «         t!          |
                     |¦  «        |¦  «         ŒŒ�Œhd S )
Nr[   rh   r\   )r_   r^   r   r6   ©rS   r·   ú5{0} with dense and sparse format gave different treesr	  )r2   r  r¤   r	   r   r   r†   r~   rï   rm   r‡   r„   r¾   rÁ   rp   r   r%   )r   Údatasetr·   rö   r[   rh   r\   rT   Úsparse_formatrx   ry   Úy_predÚy_probaÚy_log_probaÚsparse_matrixÚX_sparse_tests                   r}   Úcheck_sparse_inputrÚ  #  sý  € Ý˜d”O€MÝ�Ô˜#Ô€AÝ˜Ô  Ô,€HÝ�Ô˜#Ô€Að Ð(Ð(Ð(Ø”G˜A”J !‘Oˆ	ØˆjˆyˆjŒMˆØ˜J˜Y˜JÔ'ˆØˆjˆyˆjŒMˆå$¥jµ*Ð=ð ñ ˆØ �= Ñ*Ô*ˆð ˆ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å(­*µjÐAð 		ð 		ˆMØ)˜M¨(½"¼*ÐEÑEÔEˆMå% a§i¢i°Ñ&>Ô&>ÀÑGÔGÐGà•yÐ Ð Ý)¨!¯/ª/¸-Ñ*HÔ*HÈ'ÑRÔRÐRÝ)Ø×'Ò'¨Ñ6Ô6¸ñô ð øñ		ð%ð r   Ú	tree_typerÓ  )ra   r`   r_   rc   rd   re   rf   rg   c                 ó<   — |dk    rdnd }t          | ||¦  «         d S )Nr_   r7   ©rÚ  )rÛ  rÓ  r·   s      r}   Útest_sparse_inputrÞ  N  s/   € ð  Ò(Ð(��¨d€IÝ�y '¨9Ñ5Ô5Ð5Ð5Ð5r   r^   rb   c                 ó(   — t          | |d¦  «         d S )NrH   rÝ  )rÛ  rÓ  s     r}   Útest_sparse_input_reg_treesrà  a  s   € õ
 �y '¨1Ñ-Ô-Ð-Ð-Ð-r   c                 ó  — t           |          }t          |         d         }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 )Nr[   rh   r\   r   r4   rH   )rS   rƒ   r·   rÒ  r?   )rS   rƒ   r  )rS   r  r7   rá   )	r2   r  r†   r~   rï   rm   r%   r‡   r¤   )r   rÓ  rö   r[   rh   r\   rx   ry   s           r}   Úcheck_sparse_parametersrâ  i  så  € Ý˜d”O€MÝ�Ô˜#Ô€AÝ˜Ô  Ô,€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ÀtÑLÔLñô ð õ
 ˜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ÀtÑLÔLñô ð õ
 ˜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ÀtÑLÔLñô ð õ
 ˜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ÀtÑLÔLñô ð õ
 ˜aŸiši¨™lœl¨A¯IªI°a©L¬LÑ9Ô9Ð9Ð9Ð9r   c                 ó  — t           |          }t          |         d         }t          |         d         }t          |         d         }| t          v rt          nt          }|D ]ª} |dd|¬¦  «                             ||¦  «        } |dd|¬¦  «                             ||¦  «        }	t          |j        |	j        d                     | ¦  «        ¦  «         t          |	 
                    |¦  «        | 
                    |¦  «        ¦  «         Œ«d S )Nr[   rh   r\   r   r7   ©rS   r·   r•   rÒ  )r2   r  rÈ   ÚREG_CRITERIONSr¬   r†   r~   rï   rm   r%   r‡   )
r   rÓ  rö   r[   rh   r\   Ú
CRITERIONSr•   rx   ry   s
             r}   Úcheck_sparse_criterionrç  œ  s  € Ý˜d”O€MÝ�Ô˜#Ô€AÝ˜Ô  Ô,€HÝ�Ô˜#Ô€Að $(­9Ð#4Ð#4•�½.€JØð >ð >ˆ	ØˆM q°AÀÐKÑKÔK×OÒOÐPQÐSTÑUÔUˆØˆM q°AÀÐKÑKÔK×OÒOØ�añ
ô 
ˆõ 	ØŒGØŒGØC×JÒJÈ4ÑPÔPñ	
ô 	
ð 	
õ
 	" !§)¢)¨A¡,¤,°·	²	¸!±´Ñ=Ô=Ð=Ð=ð>ð >r   )rd   re   rf   rg   Úcheckc                 ó   —  || |¦  «         d S r™  r]  )rÛ  rÓ  rè  s      r}   Útest_sparserê  ²  s   € ð 
€Eˆ)�WÑÔÐÐÐr   c                 ó~	  — t           |          }|}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          |||
f||f¬¦  «        }|                     ¦   «         }t          |||
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
                     | ¦  «        ¦  «         ||f}t-          ||¦  «        D �]I\  }}t/          |j                             |¦  «        |j                             |¦  «        ¦  «         t/          |                     |¦  «        |                     |¦  «        ¦  «         t/          |                     |¦  «        |j                             |¦  «        ¦  «         t/          |j                             |¦  «                             ¦   «         |j                             |¦  «                             ¦   «         ¦  «         t/          |                     |¦  «                             ¦   «         |                     |¦  «                             ¦   «         ¦  «         t/          |                     |¦  «                             ¦   «         |j                             |¦  «                             ¦   «         ¦  «         t/          |                     |¦  «        |                     |¦  «        ¦  «         | t6          v r6t/          |                     |¦  «        |                     |¦  «        ¦  «         �ŒKd S )Nr   rF   r7   rW   r4   r	  ©r¤   rO   rÑ  rÒ  )r2   rp   rÆ   r+   r@  ÚbinomialÚpermutationÚappendÚconcatenater›   r   r   Útoarrayr	   rˆ  Úcopyr­   ru   r†   r~   rï   rm   r   r%   r  Údecision_pathr‡   r„   r¾   )r   r·   rU   rö   rT   ÚsamplesrS   r£   r­   ÚoffsetÚindptrÚiÚn_nonzero_iÚ	indices_iÚdata_irh   r[   rÙ  ÚX_testr\   rx   ry   ÚXsÚX1r  s                            r}   Úcheck_explicit_sparse_zerosrþ  ¹  s\  € Ý˜d”O€Mð €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Ñ%Ô%€GÝŒ8•B”N 4Ñ(Ô(µ´
Ð;Ñ;Ô;€DÝ˜4 ¨&Ð1¸)ÀZÐ9PÐQÑQÔQ€HØ×ÒÑÔ€AÝ  g¨vÐ6¸yÈ*Ð>UÐVÑVÔV€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                 ó$   — t          | ¦  «         d S r™  )rþ  )rÛ  s    r}   Útest_explicit_sparse_zerosr   ÿ  s   € å 	Ñ*Ô*Ð*Ð*Ð*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�   )r2   r]   r­   r¦   r½  r®   r±   rê   rë   r†   r‡   )r‹   rö   r[   ÚX_2dr\   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 r™  )r(   r  r.  s    r}   Útest_1d_inputr    s€   € å	Ñ	Ô	ð ,ð ,Ý% dÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   �,¬0³0c                 óà   —  | d¬¦  «        }|                      |||¬¦  «         |j        j        dk    sJ ‚ | dd¬¦  «        }|                      |||¬¦  «         |j        j        dk    sJ ‚d S )Nr   r�   r�   r4   gš™™™™™Ù?)rS   r  )r†   rï   r·   )rö   r[   r\   r�   r÷   s        r}   Ú"_check_min_weight_leaf_split_levelr    sŠ   € Ø
ˆ- 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gdgdgdgdgg¦  «        }g d¢}g d¢}t          ||||¦  «         t          |t	          |¦  «        ||¦  «         d S )Nr   r4   )r   r   r   r   r4   )r9   r9   r9   r9   r9   )r2   rp   r›   r  r   )r‹   rö   r[   r\   r�   s        r}   Ú!check_min_weight_leaf_split_levelr	  %  sw   € Ý˜d”O€Må
Œ�1�#˜�s˜Q˜C !  q cÐ*Ñ+Ô+€AØˆˆ€AØ-Ð-Ð-€MÝ& }°a¸¸MÑJÔJÐJå& }µjÀ±m´mÀQÈÑVÔVÐVÐVÐVr   c                 ó$   — t          | ¦  «         d S r™  )r	  r.  s    r}   Ú test_min_weight_leaf_split_levelr  0  s   € å% dÑ+Ô+Ð+Ð+Ð+r   c                 óD  — t                                t          j        j        d¬¦  «        }t          |          ¦   «         }|                     t           t          ¦  «         t          | 	                    t           ¦  «        |j
         	                    |¦  «        ¦  «         d S ©NF©rò  )ÚX_smallr  r   r  r  r2   r†   Úy_smallr&   r  rï   ©r‹   Ú	X_small32r÷   s      r}   Úcheck_public_applyr  5  so   € Ý—’�tœzÔ/°e�Ñ<Ô<€Iå
�DŒ/Ñ
Ô
€CØ‡G‚G�G•WÑÔÐÝ�s—y’y¥Ñ)Ô)¨3¬9¯?ª?¸9Ñ+EÔ+EÑFÔFÐFÐFÐFr   c                 ó^  — t          t                               t          j        j        d¬¦  «        ¦  «        }t          |          ¦   «         }|                     t          t          ¦  «         t          | 
                    t          ¦  «        |j         
                    |¦  «        ¦  «         d S r  )r	   r  r  r   r  r  r2   r†   r  r&   r  rï   r  s      r}   Úcheck_public_apply_sparser  =  sw   € Ý�7Ÿ>š>­$¬*Ô*:À˜>ÑGÔGÑHÔH€Iå
�DŒ/Ñ
Ô
€CØ‡G‚G�G•WÑÔÐÝ�s—y’y¥Ñ)Ô)¨3¬9¯?ª?¸9Ñ+EÔ+EÑFÔFÐFÐFÐFr   c                 ó$   — t          | ¦  «         d S r™  )r  r.  s    r}   Útest_public_apply_all_treesr  E  s   € å�tÑÔÐÐÐr   c                 ó$   — t          | ¦  «         d S r™  )r  r.  s    r}   Útest_public_apply_sparse_treesr  J  r¡  r   c                  ó
  — t           j        } t           j        }t          dd¬¦  «                             | |¦  «        }|                     | d d…         ¦  «                             ¦   «         }t          |g d¢g d¢g¦  «         d S )Nr   r4   rÑ  rH   )r4   r4   r   ©r4   r   r4   )r]   r­   r®   r   r†   ró  rñ  r&   )r[   r\   r÷   Únode_indicators       r}   Útest_decision_path_hardcodedr  O  s|   € ÝŒ	€AÝŒ€AÝ
 ¨a¸1Ð
=Ñ
=Ô
=×
AÒ
AÀ!ÀQÑ
GÔ
G€CØ×&Ò& q¨¨!¨¤uÑ-Ô-×5Ò5Ñ7Ô7€NÝ�~¨	¨	¨	°9°9°9Ð'=Ñ>Ô>Ð>Ð>Ð>r   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   rH   rÑ  c                 ó*   •— g | ]\  }}‰||f         ‘ŒS r]  r]  )r^  r÷  Újr  s      €r}   ú
<listcomp>z'check_decision_path.<locals>.<listcomp>f  s&   ø€ ÐJÐJÐJ±°°1�~ a¨ dÔ+ÐJÐJÐJr   rì  r4   ©Úaxis)r]   r­   r®   r¤   r2   r†   ró  rñ  rï   rl   r  Ú	enumerater%   rp   r‘   ro   r   r   ru   r4  r·   )r‹   r[   r\   rT   rö   r÷   Únode_indicator_csrÚleavesÚleave_indicatorÚ
all_leavesr·   r  s              @r}   Úcheck_decision_pathr)  W  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          | ¦  «         d S r™  )r)  r.  s    r}   Útest_decision_pathr+  t  r›  r   c                 óú   — t           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_multilabelr	   Úy_multilabelr2   r±   rê   r�  r†   )r‹   r[   r\   rö   s       r}   Úcheck_no_sparse_y_supportr0  y  s³   € Ý�¥LÑ1Ô1€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   Á!A0Á0A4Á7A4c                 ó$   — t          | ¦  «         d S r™  )r0  r.  s    r}   Útest_no_sparse_y_supportr2  €  s   € õ ˜dÑ#Ô#Ð#Ð#Ð#r   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¢¦  «         dS )aQ	  Check MAE criterion produces correct results on small toy dataset:

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

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

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

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

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

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

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

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

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

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

    Right Impurity = Total error / total weight
            = 1.2 / 1.6
            = 0.75
            ------
    r   r/   rH   )rS   r•   râ   r7   r6   rG   )rE   r³  r7   r3   r7   )ç333333ã?ç333333Ó?rà   rJ   r5  )r[   r\   r�   )g²�…,dñ?gÜ¶mÛ¶mÛ?gÿÿÿÿÿÿç?)ç      @g      @r6  )çffffffö?rI   gUUUUUUõ?)r3   rP   r6  rZ   N)
r   r†   r   rï   rv   r&   rw   r­  rp   r‘   )Údt_maes    r}   Útest_maer9  †  sƒ  € õT #ØÐ"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”|Ô)Ô.°°°Ñ>Ô>Ð>Ð>Ð>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 )Nr7   r	  r<  c                 óN   — t          j        t          j        | ¦  «        ¦  «        S r™  )ra  rc  rb  )Úobjs    r}   Ú_pickle_copyz)test_criterion_copy.<locals>._pickle_copyñ  s   € ÝŒ|�FœL¨Ñ-Ô-Ñ.Ô.Ð.r   )
rp   rÆ   Úintprò  Údeepcopyr   r…   Ú
__reduce__r&   r   )Ú	n_outputsrZ  rT   r=  Ú	copy_funcÚ_ÚtypenameÚcriteriaÚresultÚ	typename_Ú
n_outputs_rs  Ú
n_samples_s                r}   Útest_criterion_copyrJ  ê  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         }t          |¦  «        }| d d …df         }||fD ]æ}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   r<  rD   g±¡*ÓÎâGr   r:   r�   )rp   rŒ  ÚRandomStaterË  Ú
nan_to_numr  r   r   r†   r  ÚsetÚwhererï   ro   r   Ú
differenceÚisfiniters   r’   )
r­   ÚX_fullrh   r\   r[   r   Úterminal_regionsÚ	left_leafÚ
empty_leafÚinfinite_thresholds
             r}   Ú"test_empty_leaf_infinite_thresholdrW    s]  € åŒ9× Ò  Ñ#Ô#×)Ò)¨#¨rÑ2Ô2°TÑ9€DÝŒ=˜Ÿš YÑ/Ô/Ñ0Ô0€DØ�!�!�!�S�b�S�&Œ\€FÝ˜&Ñ!Ô!€HØˆQˆQˆQ�ˆUŒ€AØ�hÐð $ð $ˆÝ$°!Ð4Ñ4Ô4×8Ò8¸¸AÑ>Ô>ˆØ%˜4œ: a™=œ=ÐÝ�œ ¤Ô!9½YÒ!FÑGÔGÈÔJÑKÔKˆ	Ø×)Ò)Ð*:Ñ;Ô;ˆ
ÝœX¥r¤{°4´:Ô3GÑ'HÔ'HÐ&HÑIÔIÈ!ÔLÐÝÐ%Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ý�:‰Œ !Ò#Ð#Ð#Ð#Ð#ð$ð $r   Útree_clsc                 ó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 ©Nr[   r\   rV   r   r>  ©r  Úcost_complexity_pruning_pathÚ
ccp_alphasÚ
impuritiesrp   r×   ÚdiffÚassert_pruning_creates_subtree©	r•   rÓ  rX  r[   r\   r÷   ÚinfoÚpruning_pathr^  s	            r}   Ú'test_prune_tree_classifier_are_subtreesrd    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 rZ  r[  ra  s	            r}   Ú'test_prune_tree_regression_are_subtreesrf  *  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�   r4   r?   )rS   Ú	ccp_alpha)r   r†   Úassert_is_subtreerï   )r“  rç   s     r}   Útest_prune_single_node_treerj  <  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d …         ¦  «        D ]\  }}t          |j        |j        ¦  «         Œ d S )NrV   r   )râ   rh  rS   r4   )r†   rï  Úzipri  rï   )	Úestimator_clsr[   r\   rc  Ú
estimatorsrh  r÷   Úprev_estÚnext_ests	            r}   r`  r`  H  s¤   € à€JØ!ð ð ˆ	Øˆm¨2¸ÐQRÐSÑSÔS×WÒWØˆqñ
ô 
ˆð 	×Ò˜#ÑÔÐÐõ " *¨j¸¸¸¬nÑ=Ô=ð :ð :Ñˆ�(Ý˜(œ.¨(¬.Ñ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   )rl   r·   ro   rn   Úpopr%   rw   r$   rv   rt   rA  r   rs   rï  )	r   ÚsubtreeÚtree_c_leftÚtree_c_rightÚsubtree_c_leftÚsubtree_c_rightÚstackÚtree_node_idxÚsubtree_node_idxs	            r}   ri  ri  W  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Œ  ÚX_format)ÚdenseÚcsrÚcscc                 ó”  — t           d         }|d                              t          j        j        d¬¦  «        }|dk    rt          |¦  «        }n…|d         }|dk    r|                     ¦   «         }t          j        |j	        t          j        j        ¬¦  «        |_	        t          |j	        |j
        |j        f¦  «        \  |_	        |_
        |_        t          t          j        t          t          j        j        ¬¦  «        ¦  «        }t          |          |¬	¦  «        }|                     ||¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «         t          |                     |¦  «                             ¦   «         |                     |¦  «                             ¦   «         ¦  «         d S )
Nra   r[   Fr  r|  rh   r~  r	  ©rÈ  )r  r  r   r  r  r'   Útocscrp   r›   r­   r£   rö  r  r2   r†   r&   r‡   ró  Útodense)r‹   rÈ  r{  rÓ  r  Ú
X_readonlyÚ
y_readonlyr÷   s           r}   Ú"test_apply_path_readonly_all_treesr…    s‹  € õ �{Ô#€GØ�cŒl×!Ò!¥$¤*Ô"2¸Ð!Ñ?Ô?€GØ�7ÒÐÝ.¨wÑ7Ô7ˆ
ˆ
à˜ZÔ(ˆ
Ø�uÒÐà#×)Ò)Ñ+Ô+ˆJåœ( :¤?½$¼*Ô:JÐKÑKÔKˆ
Œõ
 &ØŒ_˜jÔ0°*Ô2CÐDñ
ô 
ñ		
ØŒOØÔØÔõ
 +­2¬8µGÅ4Ä:ÔCSÐ+TÑ+TÔ+TÑUÔU€JÝ
�DŒ/ 8Ð
,Ñ
,Ô
,€CØ‡G‚GˆJ˜
Ñ#Ô#Ð#Ý�s—{’{ :Ñ.Ô.°·²¸GÑ0DÔ0DÑEÔEÐEÝØ×Ò˜*Ñ%Ô%×-Ò-Ñ/Ô/°×1BÒ1BÀ7Ñ1KÔ1K×1SÒ1SÑ1UÔ1Uñô ð ð ð r   )r.   r0   r1   c                 ó  — t           j        t           j        }} || ¬¦  «        }|                     ||¦  «         t	          j        |                     |¦  «        ¦  «        t          j        t	          j        |¦  «        ¦  «        k    sJ ‚d S )Nrú   )	r^   r­   r®   r†   rp   ru   r‡   r±   r²   )r•   r!   r[   r\   rŸ   s        r}   Útest_balance_propertyr‡  Ÿ  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   r4   rH   r7   )r   r   r   r   r4   rH   r7   r3   r.   r—   r1   r?   r4  r  )Úeffective_rankÚtail_strengthrT   rU   rÜ   rS   r:   )	r   r†   rp   Úaminr‡   r×   r
   Úmake_regressionr™   )rˆ  r[   r\   rŸ   rU   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�  r?   ©rT   rU   rS   r=   rH   )ÚlowÚhighrX   r   r"  )Úlam)Ú	test_sizerS   r1   r?   )r•   r  rS   r.   Úmean)ÚstrategyÚtrainÚtestgVçž¯Ò<rF   g      è?)rp   rŒ  rL  r
   Úmake_low_rank_matrixÚuniformr4  r1   rÀ   r   r   r†   r   r   r‡   Úclip)r!  Ún_trainÚn_testrU   r[   Úcoefr\   Ú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   c                 ó„  — t          | ¬¦  «        }t          di |¤ddi¤Ž}dD ]}t          d| z   |d¬¦  «         Œt          j                             d¦  «        }d	\  }}|                     ||¦  «        }t          j        |d
¬¦  «        |                     |¦  «        z   }|t          j        |¦  «        dz   z  }t          j	        ||d|dz  …         gd¬¦  «        }	t          j	        ||d|dz  …         g¦  «        }
t          j
        t          |¦  «        ¦  «        }d|d|dz  …<   t          di |¤Ž                     |||¬¦  «        }t          di |¤Ž                     |	|
d¬¦  «        }|j        j        |j        j        k    sJ ‚t          |                     |¦  «        |                     |¦  «        ¦  «         dS )z4Test that the impact of sample_weight is consistent.rú   rS   r½   )rg   r‘   ÚDecisionTreeRegressor_rg   )Úkindr   )r?   r6   r4   r"  rà   NrH   r�   r]  )Údictr   r*   rp   rŒ  rL  r"  r–  rš   rð  r‘   r’   r†   rï   rl   r   r‡   )r•   Útree_paramsr   r«  r!  rT   rU   r[   r\   r  r  Úsample_weight_1Útree1Útree2s                 r}   Ú6test_decision_tree_regressor_sample_weight_consistencyr±  ù  sð  € õ  Ð+Ñ+Ô+€KÝ Ð@Ð@ ;Ð@Ð@¸RÐ@Ð@Ð@€DØ!ð 
ð 
ˆÝ'Ø$ yÑ0°$¸Wð	
ñ 	
ô 	
ð 	
ð 	
õ Œ)×
Ò
 Ñ
"Ô
"€CØ!Ñ€Iˆzà�Š�˜JÑ'Ô'€AÝ
Œ�˜ÐÑÔ˜SŸXšX iÑ0Ô0Ñ0€Aà�Œ�‰Œ�S‰Ñ€Aõ 
Œ˜˜AÐ. 	¨Q¡Ð.Ô/Ð0°qÐ	9Ñ	9Ô	9€BÝ	Œ˜˜AÐ. 	¨Q¡Ð.Ô/Ð0Ñ	1Ô	1€BÝ”g�c !™fœf‘o”o€OØ()€OÐ$�i 1‘nÐ$Ñ%å!Ð0Ð0 KÐ0Ð0×4Ò4Ø	ˆ1˜Oð 5ñ ô €Eõ "Ð0Ð0 KÐ0Ð0×4Ò4°R¸È4Ð4ÑPÔP€EàŒ;Ô! U¤[Ô%;Ò;Ð;Ð;Ð;õ �E—M’M !Ñ$Ô$ e§m¢m°AÑ&6Ô&6Ñ7Ô7Ð7Ð7Ð7r   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…  r6   r   r½   )rZ  rT   rU   rÜ   rÝ   rS   r-   é+   r—   Úentropyz> with criterion 'entropy' and 'log_loss' gave different trees.N)r
   rã   r†   r~   rï   r   r‡   )r!   rZ  rT   rU   r[   r\   Ú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�   r7   rÑ  c                 ór   — |                       ¦   «                              ¦   «                              ¦   «         S r™  )ÚbyteswapÚnewbyteorderr@  )Úarrs    r}   Úreduce_ndarrayz8test_different_endianness_pickle.<locals>.reduce_ndarray>  s(   € Ø�|Š|‰~Œ~×*Ò*Ñ,Ô,×7Ò7Ñ9Ô9Ð9r   c                  ó  •— t          j        ¦   «         } t          j        | ¦  «        }t          j                             ¦   «         |_        ‰|j        t          j        <   | 	                    ‰¦  «         |  
                    d¦  «         | S ©Nr   )ÚioÚBytesIOra  ÚPicklerÚcopyregÚdispatch_tablerò  rp   Ú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§   ra  Úloadrp   Úisclose)r[   r\   r§   rÊ  Únew_clfÚ	new_scorerŒ   r½  s         @@r}   Ú test_different_endianness_picklerÏ  7  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ÝŒ:�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�   r7   rÑ  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )úPtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPicklerc                 óÊ   •— t          |t          j        ¦  «        r&|                     ¦   «                              ¦   «         }t          ¦   «                              |¦  «         d S r™  )Ú
isinstancerp   rÅ  rº  r»  ÚsuperÚsave)Úselfr<  re  s     €r}   rÖ  zUtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPickler.saveX  sL   ø€ Ý˜#�rœzÑ*Ô*ð 4Ø—l’l‘n”n×1Ò1Ñ3Ô3�Ý‰GŒG�LŠL˜ÑÔÐÐÐr   )Ú__name__Ú
__module__Ú__qualname__rÖ  Ú__classcell__)re  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Ë  rp   rÌ  )r[   r\   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_childrr   rt   c                 ó    — i | ]\  }\  }}||“ŒS r]  r]  ©r^  r‹   r
  rC  s       r}   r`  z6get_different_bitness_node_ndarray.<locals>.<dictcomp>p  ó/   € ð ð ð Ù(˜™j˜u aˆˆeðð ð r   ©ÚnamesÚformatsÚ	same_kind©Úcasting)r"   rp   Úint64Úint32r
  Úfieldsr…   Úlistr  Úvaluesr  )Únode_ndarrayÚnew_dtype_for_indexing_fieldsÚindexing_field_namesÚnew_dtype_dictr‹   Ú	new_dtypes         r}   Ú"get_different_bitness_node_ndarrayr÷  j  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 )rG   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ñ  rp   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"   rp   rí  rî  r@  r  rò  r÷  )	r   rö  rX  rU   rZ  rA  Ú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�   r7   rÑ  c                  ó  •— t          j        ¦   «         } t          j        | ¦  «        }t          j                             ¦   «         |_        t          |j        t          <   | 	                    ‰¦  «         |  
                    d¦  «         | S r¿  )rÀ  rÁ  ra  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§   ra  rË  r±   r²   )r[   r\   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�   r7   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²   )r[   r\   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   r4   r	  zWrong dimensions.+n_classesrû   zn_classes.+incompatible dtype)r"   rp   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)r6   r4   rH   r	  )r  Úexpected_shapezWrong shape.+value arrayrû   )r4   rH   r4   zvalue array.+C-contiguouszvalue array.+incompatible dtype)rp   r
  r�  rg   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)r6   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û   )r6   rH   znode array.+C-contiguousrH   c                 ó    — i | ]\  }\  }}||“ŒS r]  r]  rå  s       r}   r`  z+test_check_node_ndarray.<locals>.<dictcomp>	  s#   € ÐXÐXÐXÑ"2 $©
¨°�$˜ÐXÐXÐXr   rs   rç  znode array.+incompatible dtyperâ  )r   rp   rg   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                 óh  — t           j                             d¦  «        }d}dt          j        ddgt           j        ¬¦  «        }}t          d         ||¦  «        } | ||dd|¦  «        }t          j        |¦  «        }t          j        |¦  «        }|j	        |k    sJ ‚t          || ¦  «        sJ ‚d	S )
z&Check that splitters are serializable.r½   r?   rH   r7   r	  r,   r6   rF   N)rp   rŒ  rL  r›   r>  r   ra  rb  rc  rƒ   rÔ  )	r#  r!  rƒ   rA  rZ  r•   rÈ  Úsplitter_serializeÚsplitter_backs	            r}   Útest_splitter_serializabler'  0	  s·   € õ
 Œ)×
Ò
 Ñ
#Ô
#€CØ€LØ�bœh¨¨1 vµR´WÐ=Ñ=Ô=ˆy€Iå˜VÔ$ Y°	Ñ:Ô:€IØˆx˜	 <°°C¸Ñ=Ô=€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_bufferr0  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   r4   rJ   )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)rp   r›   r†   r±   rê   rë   )r!   r[   r\   r   Úmsgs        r}   Útest_min_sample_split_1_errorr3  U	  s  € õ 	Œ�1�a�&˜1˜a˜&Ð!Ñ"Ô"€AÝ
Œ�!�Q�ÑÔ€Að 	€D˜3ÐÑÔ×#Ò# A qÑ)Ô)Ð)ð ˆ4 !Ð$Ñ$Ô$€Dð	0ð õ 
Œ•z¨Ð	-Ñ	-Ô	-ð ð ØˆŒ��A‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á:BÂBÂ Bc                 ób  — t          j        g d¢g¦  «        j        }t          j        g d¢¦  «        }t          dd| ¬¦  «        }|                     ||¦  «         |                     t           j        gg¦  «        }t          |t          j        |dd…         ¦  «        g¦  «         |dd…         }|dd…         }t          dd| ¬¦  «        }|                     ||¦  «         |                     t           j        gg¦  «        }t          |t          j        |d	d…         ¦  «        g¦  «         dS )
z<Check missing values goes to correct node during predictions)	r   r4   rH   r7   rG   r  rD   é   r´   )	rà   r9   r5  r9   r7  r7  rI   gš™™™™™ù?gÍÌÌÌÌÌ@r½   r4   rä  r8   Nr:   r5   )	rp   r›   rˆ   r   r†   r‡   Únanr   r–  )r•   r[   r\   ÚdtcrÕ  ÚX_equalÚy_equals          r}   Ú-test_missing_values_on_equal_nodes_no_missingr:  k	  s  € õ 	ŒÐ0Ð0Ð0Ð1Ñ2Ô2Ô4€AÝ
ŒÐ>Ð>Ð>Ñ?Ô?€Aå
¨R¸1È	Ð
RÑ
RÔ
R€CØ‡G‚GˆAˆq�M„M€Mð �[Š[�2œ6˜(˜Ñ$Ô$€FÝ�F�RœW Q r s s¤V™_œ_Ð-Ñ.Ô.Ð.ð ���Œf€GØ���Œf€Gå
¨R¸1È	Ð
RÑ
RÔ
R€CØ‡G‚GˆG�WÑÔÐð �[Š[�2œ6˜(˜Ñ$Ô$€FÝ�F�RœW W¨R¨S¨S¤\Ñ2Ô2Ð3Ñ4Ô4Ð4Ð4Ð4r   r´  r,   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   r3   )r   r4   rH   r7   rG   r  rD   r5  r4   rH   r½   rä  r7   r5  N©rp   r›   r6  rˆ   r   r†   r‡   r&   )r•   Úmissing_values_classr[   r\   r7  rû  Ú
y_nan_preds          r}   Ú/test_missing_values_best_splitter_three_classesr?  …	  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.r3   ©r   r4   rH   r7   r3   r6   r   r4   rE   r½   rH   rä  r6   )r   r4   r   Nr<  ©r•   r[   r\   r7  rû  rÕ  s         r}   Ú)test_missing_values_best_splitter_to_leftrC  ”	  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.r3   rA  r4   r   rH   r½   rä  rK   g333333@r  Nr<  rB  s         r}   Ú*test_missing_values_best_splitter_to_rightrE  ¤	  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.r4   rH   r7   r6   r?   rV   rR   rµ   r   r½   rä  gffffff@gš™™™™A@r  Nr<  rB  s         r}   Ú0test_missing_values_missing_both_classes_has_nanrG  µ	  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   Ú	is_sparseTr   r€  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   ¦  «        }| rt	          |¦  «        }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.r4   rH   r7   r6   r?   rV   rR   rµ   r   zInput X contains NaNrû   N)	rp   r›   r6  rˆ   r	   r±   rê   rë   r†   )rH  r   r[   r\   s       r}   Útest_missing_value_errorsrJ  Å	  sð   € õ 	Œ�1�a˜˜A�rœv r¨2¨r°2µr´vÐ>Ð?Ñ@Ô@ÔB€AÝ
Œ�!��q‘˜A˜3 ™7Ñ"Ñ#Ô#€Aàð Ý�q‰MŒMˆå	Œ•zÐ)?Ð	@Ñ	@Ô	@ð ð ØˆŒ��A‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB#Â#B'Â*B'c                  óV  — t           j                             ¦   «         t           j        }} t          j        | ddd…df<   t          j        | ddd…df<   t          dd¬¦  «        }|                     | |¦  «         |                     | ¦  «        }|d	k     	                    ¦   «         sJ ‚dS )
z5Smoke test for poisson regression and missing values.Nr6   r   rE   r:   r1   r½   r—   rO   )
r^   r­   rò  r®   rp   r6  r   r†   r‡   r×   )r[   r\   rŸ   rÕ  s       r}   Útest_missing_values_poissonrL  Ú	  s›   € åŒ=×ÒÑÔ¥¤€q€Aõ ”€A€c€cˆ€cˆ1€f�IÝ”€A€c€cˆ€cˆ2€g�Jå
¨)À"Ð
EÑ
EÔ
E€CØ‡G‚GˆAˆq�M„M€Mà�[Š[˜‰^Œ^€FØ�cŠM×ÒÑ Ô Ð Ð Ð Ð Ð r   zmake_data, TreeÚsample_weight_trainr‘   c                 ó„  — t           j                             d¦  «        }d\  }} | |||¬¦  «        \  }}|                     ¦   «         }t           j        ||                     ddg|j        ddg¬¦  «        <   t          ||d¬	¦  «        \  }	}
}}|d
k    rt          j        |	j        d         ¦  «        } ||¬	¦  «        }| 	                    |	||¬¦  «         | 
                    |
|¦  «        }t          ||d¬	¦  «        \  }}}} ||¬	¦  «        } |j	        |||¬¦  «          |j
        ||¦  «        }|d|z  k    sJ ‚dS )zJCheck that trees can deal with missing values and have decent performance.r   )r  r…  r‘  FTrQ   rà   ©rX   rÉ  r�   r‘   r�   N)rp   rŒ  rL  rò  r6  Úchoicer¤   r   r‘   r†   r§   )Ú	make_datar!   rM  r!  rT   rU   r[   r\   Ú	X_missingÚX_missing_trainÚX_missing_testr�   rž   Útree_with_missingÚscore_with_missingr   rû  r   Úscore_without_missings                      r}   Ú!test_missing_values_is_resiliencerX  é	  s‚  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ$Ñ€IˆzØˆ9˜y°ZÈcÐRÑRÔR�D€A€qð —’‘”€IÝGIÄv€Iˆc�jŠj˜% ˜¨Q¬W¸¸c¸
ˆjÑCÔCÑDÝ7GØ�1 1ð8ñ 8ô 8Ñ4€O�^ W¨fð ˜fÒ$Ð$Ý œg oÔ&;¸AÔ&>Ñ?Ô?Ðð ˜¨#Ð.Ñ.Ô.ÐØ×Ò˜/¨7ÐBUÐÑVÔVÐVØ*×0Ò0°ÀÑHÔHÐõ (8¸¸1È1Ð'MÑ'MÔ'MÑ$€GˆV�W˜fØˆ4˜SÐ!Ñ!Ô!€DØ€D„HˆW�gÐ-@ÐAÑAÔAÐAØ&˜DœJ v¨vÑ6Ô6Ðð  Ð'<Ñ!<Ò<Ð<Ð<Ð<Ð<Ð<r   c                  ó~  — t           j                             d¦  «        } d}|                      |df¬¦  «        }|                      dd|¬¦  «        }|                      ddg|d	d
g¬¦  «        }|                     ¦   «                              t          ¦  «        }||          ||<   |                      |¬¦  «        }t           j	        ||<   ||dd…df<   t          ||| ¬¦  «        \  }}}	}
t          | ¬¦  «                             ||	¦  «        } |j        ||	¦  «        dk    sJ ‚ |j        ||
¦  «        dk    sJ ‚dS )z@Check the tree learns when only the missing value is predictive.r   r  r?   rW   rH   )r“  rX   FTgffffffî?rL   rO  Nr6   r�   g333333ë?)rp   rŒ  rL  Ústandard_normalrˆ  rP  rò  r  Úboolr6  r   r   r†   r§   )r!  rT   r[   r\   ÚX_random_maskÚy_maskÚX_predictiver   rû  r�   rž   r   s               r}   Ú test_missing_value_is_predictiver_  
  sM  € å
Œ)×
Ò
 Ñ
"Ô
"€CØ€Ià×Ò )¨R ÐÑ1Ô1€AØ�Š�A˜A IˆÑ.Ô.€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å'7¸¸1È3Ð'OÑ'OÔ'OÑ$€GˆV�W˜fÝ!¨sÐ3Ñ3Ô3×7Ò7¸ÀÑIÔI€Dàˆ4Œ:�g˜wÑ'Ô'¨4Ò/Ð/Ð/Ð/Øˆ4Œ:�f˜fÑ%Ô%¨Ò-Ð-Ð-Ð-Ð-Ð-r   c                 ó>  — 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  r?   r‘  FTrQ   rà   rO  rO   NrH   r�   r�   r4   )
rp   rŒ  rL  r6  rP  r¤   r‘   r†   r   r‡   )
rQ  r!   r!  rT   rU   r[   r\   r�   Útree_with_swÚtree_samples_removeds
             r}   Útest_sample_weight_non_uniformrc  *
  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†   r]   r­   r®   ra  rb  )r¯  r°  Úpickle1Úpickle2s       r}   Útest_deterministic_picklerg  G
  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   )Fr™  )r7   r?   )æÚ__doc__rò  rÃ  rÀ  ra  rÉ  Ú	itertoolsr   r   rß  Únumpyrp   r±   Újoblib.numpy_pickler   Únumpy.testingr   Úscipy.sparser   r   r	   Úsklearnr
   r   Úsklearn.dummyr   Úsklearn.exceptionsr   Úsklearn.metricsr   r   r   Úsklearn.model_selectionr   Úsklearn.random_projectionr   Úsklearn.treer   r   r   r   Úsklearn.tree._classesr   r   r   r   Úsklearn.tree._treer   r   r   r   r   r    r!   r  Úsklearn.utilsr"   r#   Úsklearn.utils._testingr$   r%   r&   r'   r(   r)   Úsklearn.utils.estimator_checksr*   Úsklearn.utils.validationr+   r¬   rå  r„   rÈ   r¬  r2   Ú__annotations__ÚupdateÚSPARSE_TREESr›   r  r  Úy_small_regr[   r\   rˆ   r‰   Ú	load_irisr]   rŒ  rL  r!  rî  r®   rX   Úpermr­   Úload_diabetesr^   Úload_digitsr_   rS   Úmake_multilabel_classificationr.  r/  r›  ÚX_sparse_posrˆ  Úy_randomrñ  ÚX_sparse_mixrg   r  r‹   r~   r�   r”   ÚmarkÚparametrizerñ  r    rª   r¯   r…   r³   r»   rÃ   rÊ   rÎ   rÙ   rè   rí   rð   rø   r  r  r  r*  r/  r2  r5  r8  r:  rV  rj  rq  rv  r|  rƒ  rŠ  r�  r—  rš  rž  r   r¨  r«  r¯  r±  r·  rº  r¾  rÄ  rÏ  rÚ  rÞ  ÚsortedrN  Úintersectionrà  râ  rç  rê  rþ  r   r  r  r  r	  r  r  r  r  r  r  r)  r+  r0  r2  r9  rJ  rW  r  rd  rf  rj  r`  ri  r…  r‡  r@  rŽ  r¨  r±  r·  rÏ  rà  r÷  rþ  r  r
  r  r  r  r"  r'  r0  r3  r:  r?  rC  rE  rG  rJ  rL  r�  rã   rX  r_  rc  rg  r]  r   r}   ú<module>r‹     så  ððð ð ð €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø (Ð (Ð (Ð (Ð (Ð (Ø -Ð -Ð -Ð -Ð -Ð -Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð KÐ JÐ JÐ JÐ JÐ JØ 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ðð €ð ð Að A€DØ!+ ¨H°T¬N¸3Ô,?Ñ!@Ô!@€HˆT„N�:ÑÐð$ð $ð $ðN	Xð 	Xð 	Xð	Xð 	Xð 	Xð „×Ò˜ ×!1Ò!1Ñ!3Ô!3Ñ4Ô4Ø„×Ò˜ nÑ5Ô5ð,ð ,ñ 6Ô5ñ 5Ô4ð,ð*Fð Fð Fð*
ð 
ð 
ð$ „×Ò˜ y§¢Ñ'8Ô'8Ñ9Ô9Ø„×Ò˜ nÑ5Ô5ðJð Jñ 6Ô5ñ :Ô9ðJð Ø„×Ò˜ y§¢Ñ'8Ô'8Ñ9Ô9Ø„×ÒØ,à	˜"Ð0°"Ð5Ø	˜2Ð1°2Ð6Ø	˜Ð/°Ð4Ø	�BÐ-¨rÐ2ð	ñô ðð ñô ñ :Ô9ñ „ðð
ð 
ð 
ð4ð ð ðWð Wð Wð ð ð ð2Lð Lð Lð>-ð -ð -ðKð Kð Kð<!7ð !7ð !7ðH?+ð ?+ð ?+ðDHð Hð Hð>Fð Fð FðB:
ð :
ð :
ð :
ðz „×Ò˜ Ñ+Ô+ð1ð 1ñ ,Ô+ð1ð „×Ò˜ Ñ.Ô.ð=ð =ñ /Ô.ð=ð9
ð 9
ð 9
ð 9
ðx „×Ò˜ Ñ+Ô+ðGð Gñ ,Ô+ðGð „×Ò˜ Ñ.Ô.ðSð Sñ /Ô.ðSðEð Eð EðP0ð 0ð 0ðf9%ð 9%ð 9%ðx=ð =ð =ð(	Eð 	Eð 	Eð(8ð (8ð (8ðV1ð 1ð 1ðh3ð 3ð 3ð$,Nð ,Nð ,Nð^ „×Ò˜ Ñ+Ô+ðð ñ ,Ô+ðð	ð 	ð 	ð „×Ò˜ Ñ+Ô+ð$ð $ñ ,Ô+ð$ð+ð +ð +ð$ð $ð $ðKð Kð Kð$(ð (ð (ð-ð -ð -ð?ð ?ð ?ð"!ð !ð !ðð ð ðð ð ð*(ð (ð (ð (ðV „×Ò˜ lÑ3Ô3Ø„×ÒØð	ñô ð6ð 6ñô ñ 4Ô3ð6ð
 „×Ò˜ f f¨S¨S°Ñ->Ô->×-KÒ-KÈIÑ-VÔ-VÑ&WÔ&WÑXÔXØ„×Ò˜ Z°Ð$=Ñ>Ô>ð.ð .ñ ?Ô>ñ YÔXð.ð0:ð 0:ð 0:ðf>ð >ð >ð, „×Ò˜ lÑ3Ô3Ø„×Ò˜Ð$WÐ$WÐ$WÑXÔXØ„×Ò˜Ð#:Ð<RÐ"SÑTÔTðð ñ UÔTñ YÔXñ 4Ô3ððCPð CPð CPð CPðL „×Ò˜ lÑ3Ô3ð+ð +ñ 4Ô3ð+ð ðð ñ „ðð  „×Ò˜ Ñ+Ô+ð,ð ,ñ ,Ô+ð,ð
$ð $ð $ðWð Wð Wð „×Ò˜ Ñ+Ô+ð,ð ,ñ ,Ô+ð,ðGð Gð GðGð Gð Gð „×Ò˜ Ñ+Ô+ðð ñ ,Ô+ðð „×Ò˜ Ñ.Ô.ð$ð $ñ /Ô.ð$ð?ð ?ð ?ð,ð ,ð ,ð: „×Ò˜ Ñ+Ô+ðð ñ ,Ô+ðð0ð 0ð 0ð „×Ò˜ Ñ+Ô+ð$ð $ñ ,Ô+ð$ð
a?ð a?ð a?ðH+ð +ð +ð8$ð $ð $ð" „×Ò˜ nÑ5Ô5Ø„×ÒØˆvˆv�c�c˜(Ÿ-š-™/œ/Ñ*Ô*¨k¸:Ð-FÑFÑGÔGñô ð „×Ò˜Ð&<Ð>QÐ%RÑSÔSðAð Añ TÔSñô ñ 6Ô5ð
Að „×Ò˜ nÑ5Ô5Ø„×Ò˜ H§M¢M¡O¤OÑ4Ô4Ø„×Ò˜Ð&;Ð=OÐ%PÑQÔQðAð Añ RÔQñ 5Ô4ñ 6Ô5ðAð	.ð 	.ð 	.ð:ð :ð :ð%ð %ð %ðP „×Ò˜ Ñ+Ô+Ø„×Ò˜ f¨hÐ%7Ñ8Ô8Ø„×Ò˜Ð%<Ð%<Ð%<Ñ=Ô=ðð ñ >Ô=ñ 9Ô8ñ ,Ô+ðð: „×Ò˜Ð&RÐ&RÐ&RÑSÔSØ„×Ò˜ ×!1Ò!1Ñ!3Ô!3Ñ4Ô4ð	>ð 	>ñ 5Ô4ñ TÔSð	>ð „×Ò˜   q¡¤Ñ*Ô*ð&ð &ñ +Ô*ð&ðB'0ð '0ð '0ðT „×Ò˜ nÑ5Ô5ð"8ð "8ñ 6Ô5ð"8ðJ „×Ò˜Ð"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ðð* „×Ò˜ ¸Ð&GÑHÔHð5ð 5ñ IÔHð5ð2 „×Ò˜ y°&Ð&9Ñ:Ô:ðAð Añ ;Ô:ðAð „×Ò˜ y°&Ð&9Ñ:Ô:ð*ð *ñ ;Ô:ð*ð „×Ò˜ y°&Ð&9Ñ:Ô:ð*ð *ñ ;Ô:ð*ð  „×Ò˜ y°&Ð&9Ñ:Ô:ð*ð *ñ ;Ô:ð*ð „×Ò˜ t¨U mÑ4Ô4Ø„×ÒØ
àÐ¨Ð1Ñ1Ô1ØÐÐ(8Ð9Ñ9Ô9ðñô ð
ð 
ñô ñ 5Ô4ð
ð!ð !ð !ð „×ÒØà	Ô	!Ð#8Ð9Ø	Ô	%Ð'=Ð>ðñô ð „×ÒÐ.°°v°Ñ?Ô?ð=ð =ñ @Ô?ñô ð=ð@.ð .ð .ð2 „×ÒØà	Ô	!Ð#8Ð9Ø	Ô	%Ð'=Ð>ðñô ðNð Nñô ðNð,
ð 
ð 
ð 
ð 
r   