U
    ½mœdÉE ã                &   @   sÚ  U d Z ddlZddlZddlm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 ddlmZ ddlmZ ddlmZ ddlZddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl-m/Z/ ddl-m0Z0 ddl-m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl4m7Z8 dd l4m9Z9 dd!l4m:Z: dd"l4m;Z; dd#l4m<Z< dd$l=m>Z> dd%l=m?Z? dd&l2m@Z@ dd'l)mAZA d(ZBd)ZCe.e0d*œZDe/e1d+œZEeFƒ ZGeFeHd,< eG IeD¡ eG IeE¡ d-d.d/d0gZJe
 Kddd1dddd2d3dd4ddddgddd5d6dd4ddd2d7d8dd1d2gd9d9ddd:ddd;d2ddd:dd2gd9d9dd<ddddddd8ddd2gd9d9dddddd6dddddd2gd9d=dd1d>d?d1dd@dd1d6d4d2gdAddBdCddDddd@dEdFdd>d2gdAddBdCddDddd@dEddd=d2gdAdGdBdCddDddd@dEddd=d2gdAdGdBdCddDddd@dEdFdd9dgdHdGd5d2dFd4d?dd2d7d6ddHdgdHdd2d2d2d9d2ddd=d6dd2dgdHdd2dHd6d9d?dHdd9d2dHdHdgd2d2ddHdHd9d2dHdd7d2dHd6dgd6d2dd6dd4d?dd2d7d6dd6d2gdAdGdBdCdd2ddd@dEdFdd>d2gdAdGdBdCdd2ddd@dEdId2d9d9gdAdGdBdCdd?ddd@dEdFdd9d9gdHdd5d2dFd=d?dd2d7d6d2dd9gdHdd2d2d2d=d2ddd=dddd2gdHd2d2d2dHd9d?dHdd9ddHd2d2gd2d2ddd2d>d2dHdd7d2dHd2d2gd6d2dd2dd4d2dd2d=ddd2dgg¡ZLd2d2ddddd2d2d2d2d2d2dddd2ddd2ddddgZMdJd;dKdLd?dMdNdOdPdQdNdRdSdKdHdDdddTdUdVdWdgZNd=d9gd9d9gd9d=gd2d2gd2dHgdHd2ggZOd9d9d9d2d2d2gZPd9d9gdHdHgd6dHggZQd9d2d2gZRe@ S¡ ZTe
jU Vd2¡ZWeW XeTjYjZ¡Z[eTj\e[ eT_\eTjYe[ eT_Ye@ ]¡ Z^eW Xe^jYjZ¡Z[e^j\e[ e^_\e^jYe[ e^_Ye@ _¡ Z`eW Xe`jYjZ¡Z[e`j\e[ e`_\e`jYe[ e`_Ye(dƒZae@jbddXd?dY�\ZcZdeajedZd[�ZfdSefefd\k< eajgdd1d]d[�Zhed^d?d_dd`� i¡ ZjeTj\eTjYdaœe^j\e^jYdaœe`j\e`jYdaœeOePdaœeLeMdaœeLeNdaœeceddaœefehdaœef ehdaœejehdaœe
 kdb¡ehdaœdcœZlelD ]Zmeelem dd ƒelem de< �q,dfdg„ Zndhdi„ Zodjdk„ Zpejq rdleE s¡ ¡ejq rdmeC¡dndo„ ƒƒZtdpdq„ Zudrds„ Zvejq rdteE w¡ ¡ejq rdmeC¡dudv„ ƒƒZxe$ejq rdteE w¡ ¡ejq rdwdxdyedzfd{d^edzfd|dyedzfd}dyedXfg¡d~d„ ƒƒƒZyd€d�„ Zzd‚dƒ„ Z{d„d…„ Z|d†d‡„ Z}dˆd‰„ Z~dŠd‹„ ZdŒd�„ Z€ejq �dŽ¡d�d�„ ƒZ‚d‘d’„ Zƒd“d”„ Z„d•d–„ Z…�dEd˜d™„Z†ejq rdšeG¡d›dœ„ ƒZ‡ejq rdšeJ¡d�dž„ ƒZˆ�dFdŸd „Z‰ejq rdšeG¡d¡d¢„ ƒZŠejq rdšeJ¡d£d¤„ ƒZ‹d¥d¦„ ZŒd§d¨„ Z�d©dª„ ZŽd«d¬„ Z�d­d®„ Z�d¯d°„ Z‘d±d²„ Z’d³d´„ Z“dµd¶„ Z”ejq rdšeD¡d·d¸„ ƒZ•d¹dº„ Z–ejq rdšeD¡d»d¼„ ƒZ—d½d¾„ Z˜d¿dÀ„ Z™dÁdÂ„ ZšdÃdÄ„ Z›dÅdÆ„ ZœdÇdÈ„ Z�dÉdÊ„ ZždËdÌ„ ZŸdÍdÎ„ Z �dGdÏdÐ„Z¡ejq rdÑeJ¡ejq rdÒdÓ¡dÔdÕ„ ƒƒZ¢ejq rdÑe£e¤eJƒ ¥eE¡ƒ¡ejq rdÒdÖd×g¡dØdÙ„ ƒƒZ¦dÚdÛ„ Z§dÜdÝ„ Z¨ejq rdÑeJ¡ejq rdÒdÞdßdàdág¡ejq rdâe§e¨g¡dãdä„ ƒƒƒZ©�dHdådæ„Zªejq rdÑeJ¡dçdè„ ƒZ«e#dédê„ ƒZ¬ejq rdšeG¡dëdì„ ƒZ­dídî„ Z®dïdð„ Z¯ejq rdšeG¡dñdò„ ƒZ°dódô„ Z±dõdö„ Z²ejq rdšeG¡d÷dø„ ƒZ³ejq rdšeJ¡dùdú„ ƒZ´dûdü„ Zµdýdþ„ Z¶ejq rdšeG¡dÿ�d „ ƒZ·�d�d„ Z¸ejq rdšeG¡�d�d„ ƒZ¹�d�d„ Zº�d�d„ Z»�d	�d
„ Z¼ejq rdmeB¡ejq rdÒe£e¤el ½¡ ƒd×dÖh ƒ¡ejq r�de.e0g¡�d�d„ ƒƒƒZ¾ejq rdmeC¡ejq rdÒel ½¡ ¡ejq r�de/e1g¡�d�d„ ƒƒƒZ¿�d�d„ ZÀ�d�d„ ZÁ�d�d„ ZÂejq rdšeG¡ejq r�d�d�dg¡ejq r�d�d�d�dg¡�d�d„ ƒƒƒZÃejq rdmdxd|d}g¡ejq rdleE s¡ ¡�d�d „ ƒƒZÄejq r�d!eÅd6ƒ¡�d"�d#„ ƒZÆ�d$�d%„ ZÇejq rdmeC¡�d&�d'„ ƒZÈejq rdle.e0g¡ejq r�d(dHd1g¡�d)�d*„ ƒƒZÉ�d+�d,„ ZÊ�d-�d.„ ZË�d/�d0„ ZÌ�d1�d2„ ZÍ�d3�d4„ ZÎ�d5�d6„ ZÏ�d7�d8„ ZÐ�d9�d:„ ZÑ�d;�d<„ ZÒ�d=�d>„ ZÓ�d?�d@„ ZÔ�dA�dB„ ZÕejq rdleG s¡ ¡�dC�dD„ ƒZÖdS (I  z-
Testing for the tree module (sklearn.tree).
é    N)Úproduct)Úassert_allclose)Ú
csc_matrix)Ú
csr_matrix)Ú
coo_matrix)ÚNumpyPickler)Ú_sparse_random_matrix)ÚDummyRegressor)Úaccuracy_score)Úmean_squared_error)Úmean_poisson_deviance)Útrain_test_split)Úassert_array_equal)Úassert_array_almost_equal)Úassert_almost_equal)Úcreate_memmap_backed_data)Úignore_warnings)Úskip_if_32bit)Úcheck_sample_weights_invariance)Úcheck_random_state)Ú	_IS_32BIT)ÚNotFittedError)ÚDecisionTreeClassifier)ÚDecisionTreeRegressor)ÚExtraTreeClassifier)ÚExtraTreeRegressor)Útree)Ú	TREE_LEAFÚTREE_UNDEFINED)ÚTree)Ú_check_n_classes)Ú_check_value_ndarray)Ú_check_node_ndarray)Ú
NODE_DTYPE)ÚCRITERIA_CLF)ÚCRITERIA_REG)Údatasets)Úcompute_sample_weight)ÚginiÚlog_loss)Úsquared_errorÚabsolute_errorÚfriedman_mseÚpoisson)r   r   )r   r   Ú	ALL_TREESr   r   r   r   é   é   iòÿÿÿéüÿÿÿé   é   éûÿÿÿçš™™™™™É?éÿÿÿÿg      ÀgÍÌÌÌÌÌ @g333333ó¿éþÿÿÿéýÿÿÿé
   gš™™™™™	Àgáz®Gá @iúÿÿÿg      à¿é   é   ç      à?é   é   ç      ø?ç      ð?g333333ó?çš™™™™™©?g333333@gÍÌÌÌÌÌ@g)\�Âõ(ð?ç{®Gáz„?g×£p=
×@gš™™™™™ñ?ç        ç      @gî|?5^ºÉ?gö(\�Âõð?çÍÌÌÌÌÌì?é   )Úrandom_stateÚ	n_samplesÚ
n_features)é   r2   ©Úsizegš™™™™™é?)rJ   rJ   g      Ð?)ZdensityrG   ©ÚXÚy)rJ   r3   )ÚirisÚdiabetesÚdigitsÚtoyÚ	clf_smallÚ	reg_smallÚ
multilabelú
sparse-posú
sparse-negú
sparse-mixÚzerosrN   ÚX_sparsec                 C   sþ   |j | j ks"td ||j | j ¡ƒ‚t| j|j|d ƒ t| j|j|d ƒ | jtk}t |¡}t| j	| |j	| |d ƒ t| j
| |j
| |d ƒ t| j ¡ |j ¡ |d ƒ t| j|j|d ƒ t| j|j|d d	� t| j| |j| |d
 d	� 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ÚAssertionErrorÚformatr   Úchildren_rightÚchildren_leftr   ÚnpZlogical_notÚfeatureÚ	thresholdÚn_node_samplesÚsumr   Úimpurityr   Úvalue)ÚdÚsÚmessageZexternalÚinternal© rn   úU/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/tree/tests/test_tree.pyÚassert_tree_equalÈ   s\    
ÿ  ÿþ  ÿ  ÿ

  ÿ  ÿý  ÿ  ÿrp   c                  C   st   t  ¡ D ]f\} }|dd�}| tt¡ t| t¡td 	| ¡ƒ |ddd�}| tt¡ t| t¡td 	| ¡ƒ qd S )Nr   ©rG   úFailed with {0}r0   )Úmax_featuresrG   )
Ú	CLF_TREESÚitemsÚfitrN   rO   r   ÚpredictÚTÚtrue_resultr`   ©Únamer   Úclfrn   rn   ro   Útest_classification_toyï   s    
r}   c                  C   s†   t  ¡ D ]x\} }|dd�}|jttt ttƒ¡d� t| 	t
¡td | ¡ƒ |jttt ttƒd¡d� t| 	t
¡td | ¡ƒ qd S )Nr   rq   ©Úsample_weightrr   r<   )rt   ru   rv   rN   rO   rc   ÚonesÚlenr   rw   rx   ry   r`   Úfullrz   rn   rn   ro   Ú test_weighted_classification_toyû   s    
rƒ   r   Ú	criterionc                 C   s˜   |dkr:t  t  t¡¡d }t  t¡| }t  t¡| }nt}t}| |dd�}| t|¡ t| 	t
¡|ƒ | |ddd�}| t|¡ t| 	t
¡|ƒ d S )Nr-   r0   ©r„   rG   ©r„   rs   rG   )rc   ÚabsÚminrO   Úarrayry   rv   rN   r   rw   rx   )r   r„   ÚaÚy_trainÚy_testÚregr|   rn   rn   ro   Útest_regression_toy  s    rŽ   c                  C   sâ   t  d¡} d| d d…d d…f< d| dd …dd …f< t  | j¡\}}t  | ¡ | ¡ g¡j}|  ¡ } t ¡ D ]r\}}|dd�}| 	|| ¡ | 
|| ¡dks¦td |¡ƒ‚|ddd�}| 	|| ¡ | 
|| ¡dksjtd |¡ƒ‚qjd S )	N)r9   r9   r0   r2   r   rq   r@   rr   ©rG   rs   )rc   rZ   ÚindicesÚshapeÚvstackÚravelrx   rt   ru   rv   Úscorer_   r`   )rO   ZgridxZgridyrN   r{   r   r|   rn   rn   ro   Útest_xor  s    

r•   c                  C   s¶   t t ¡ tƒD ]¢\\} }}||dd�}| tjtj¡ t| 	tj¡tjƒ}|dksdt
d | ||¡ƒ‚||ddd�}| tjtj¡ t| 	tj¡tjƒ}|dkst
d | ||¡ƒ‚qd S )Nr   r…   rE   z0Failed with {0}, criterion = {1} and score = {2}r>   r†   r<   )r   rt   ru   ÚCLF_CRITERIONSrv   rP   ÚdataÚtargetr
   rw   r_   r`   )r{   r   r„   r|   r”   rn   rn   ro   Ú	test_iris3  s"      ÿ  ÿr™   z
name, Treec                 C   s\   ||dd�}|  tjtj¡ ttj| tj¡ƒ}|t d¡ksXtd| › d|› d|› �ƒ‚d S )Nr   r…   zFailed with z, criterion = z and score = )	rv   rQ   r—   r˜   r   rw   ÚpytestÚapproxr_   )r{   r   r„   r�   r”   rn   rn   ro   Útest_diabetes_overfitE  s    ÿþrœ   z&criterion, max_depth, metric, max_lossr*   é   é<   r+   r,   r-   c                 C   sR   |||ddd�}|  tjtj¡ |tj| tj¡ƒ}d|  k rH|k sNn t‚d S )Nr;   r   )r„   Ú	max_depthrs   rG   )rv   rQ   r—   r˜   rw   r_   )r{   r   r„   rŸ   ZmetricZmax_lossr�   Zlossrn   rn   ro   Útest_diabetes_underfitR  s    r    c                  C   sº   t  ¡ D ]¬\} }|dddd�}| tjtj¡ | tj¡}tt 	|d¡t 
tjjd ¡d | ¡d� tt |d¡| tj¡d | ¡d� t| tj¡t | tj¡¡dd | ¡d� qd S )Nr0   é*   )rŸ   rs   rG   r   rr   r\   r=   )rt   ru   rv   rP   r—   r˜   Úpredict_probar   rc   rg   r€   r‘   r`   r   Zargmaxrw   r   ÚexpÚpredict_log_proba)r{   r   r|   Zprob_predictrn   rn   ro   Útest_probabilityg  s(    
ý

ý
ür¥   c                  C   sP   t  d¡d d …t jf } t  d¡}t ¡ D ] \}}|d dd�}| | |¡ q*d S )Né'  r   ©rŸ   rG   )rc   ÚarangeÚnewaxisÚ	REG_TREESru   rv   ©rN   rO   r{   r   r�   rn   rn   ro   Útest_arrayrepr�  s
    
r¬   c                  C   sÀ   ddgddgddgddgddgddgg} ddddddg}t  ¡ D ]8\}}|dd�}| | |¡ t| | ¡|d |¡d� q@t ¡ D ]8\}}|dd�}| | |¡ t| | ¡|d |¡d� q‚d S )	Nr7   r6   r0   r>   r   rq   rr   r\   )rt   ru   rv   r   rw   r`   rª   r   )rN   rO   r{   ÚTreeClassifierr|   ÚTreeRegressorr�   rn   rn   ro   Útest_pure_setŒ  s    (

r¯   c                  C   sØ   t  ddddgddddgd	dddgd
dddgddddgddddgddddgg¡} t  dddddddg¡}t jdd��Z t ¡ D ]J\}}|dd�}| | |¡ | | | ¡ | |  |¡ | |  | ¡ q~W 5 Q R X d S )Ngsþ_—c@gdÀ	�a@g±› `8`@gëÆý?õüc@gŒÁý_9Ða@gþ 8ú`@g-Výßu]@g    @Xd@gSW jÒ_@gÓ Ù‹`@g4Tÿÿ÷a@g	£þlKa@gÁ{ýÿ»c@gç|@�ÆY@g~G`÷a@gwIÿ?lKa@g/"þ»c@gƒ÷úÿ�í_@g®û¿‘:^@r@   g¿½A‹wæ?gtúQ?5?á?rC   g7G€¶í?g”�ÞÛº¼Þ?g™¥b'Âß?Úraise)Úallr   rq   )rc   r‰   Zerrstaterª   ru   rv   r«   rn   rn   ro   Útest_numerical_stabilityœ  s$    






ùÿ
r²   c               	   C   sØ   t jdddddddd�\} }t ¡ D ]d\}}|dd�}| | |¡ |j}t |dk¡}|jd dksrt	d	 
|¡ƒ‚|dks$t	d	 
|¡ƒ‚q$tdd�}| tjtj¡ tdttjƒd
�}| tjtj¡ t|j|jƒ d S )Niˆ  r9   r3   r   F©rH   rI   Ún_informativeÚn_redundantZ
n_repeatedÚshufflerG   rq   çš™™™™™¹?rr   ©rG   Úmax_leaf_nodes)r&   Úmake_classificationrt   ru   rv   Úfeature_importances_rc   rg   r‘   r_   r`   r   rP   r—   r˜   r�   r   )rN   rO   r{   r   r|   ZimportancesZn_importantÚclf2rn   rn   ro   Útest_importancesµ  s*    ù



r½   c               	   C   s*   t ƒ } t t¡� t| dƒ W 5 Q R X d S )Nr»   )r   rš   ÚraisesÚ
ValueErrorÚgetattr©r|   rn   rn   ro   Útest_importances_raisesÔ  s    rÂ   c               	   C   s¢   t jdddddddd�\} }tdddd	� | |¡}td
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Ð  r9   r3   r   Fr³   r(   r2   )r„   rŸ   rG   r*   )r&   rº   r   rv   r   r   r»   r   Útree_rd   rb   ra   rf   )rN   rO   r|   r�   rn   rn   ro   Ú)test_importances_gini_equal_squared_errorÛ  s4    ù
 ÿ  ÿ þrÄ   z7ignore:`max_features='auto'` has been deprecated in 1.1c                  C   s$  t  ¡ D ]8\} }|dd�}| tjtj¡ |jtjjd kst‚qt	 ¡ D ]0\} }|dd�}| t
jt
j¡ |jdksJt‚qJt ¡ D �]˜\} }|dd�}| t
jt
j¡ |jtt t
jjd ¡ƒksÈt‚|dd�}| t
jt
j¡ |jtt t
jjd ¡ƒk�st‚|dd�}| t
jt
j¡ |jdk�s.t‚|dd�}| t
jt
j¡ |jdk�sXt‚|dd�}| t
jt
j¡ |jdk�s‚t‚|d	d�}| t
jt
j¡ |jtd	t
jjd  ƒk�s¼t‚|d
d�}| t
jt
j¡ |jt
jjd k�sît‚|d d�}| t
jt
j¡ |jt
jjd ks„t‚q„d S )NÚauto©rs   r0   r>   ÚsqrtÚlog2r3   rB   r<   r@   )rª   ru   rv   rQ   r—   r˜   Zmax_features_r‘   r_   rt   rP   r.   Úintrc   rÇ   rÈ   )r{   r®   r�   r­   r|   ÚTreeEstimatorÚestrn   rn   ro   Útest_max_featuresú  sB    


 
"



 

rÌ   c            	   
   C   s’  t  ¡ D �]\} }|ƒ }t t¡� | t¡ W 5 Q R X | tt¡ dddgg}t t	¡� | |¡ W 5 Q R X |ƒ }td d… }t t	¡� | t|¡ W 5 Q R X t
 t¡}|ƒ }| |t¡ t| t¡tƒ |ƒ }t t¡� | t¡ W 5 Q R X | tt¡ t
 t¡}t t	¡�  | |d d …dd …f ¡ W 5 Q R X t
 t¡j}|ƒ }| t
 t|¡t¡ t t	¡� | t¡ W 5 Q R X t t	¡� | t¡ W 5 Q R X |ƒ }| tt¡ t t	¡� | |¡ W 5 Q R X t t	¡� | |¡ W 5 Q R X |ƒ }t t¡� | t¡ W 5 Q R X qtdd�}tjt	dd��  | ddd	ggdddg¡ W 5 Q R X tjt	d
d��  | ddd	ggddd	g¡ W 5 Q R X d S )Nr7   r6   r0   r-   ©r„   zy is not positive.*Poisson©Úmatchr   r>   zSome.*y are negative.*Poissonr2   gš™™™™™¹¿)rt   ru   rš   r¾   r   r¢   rN   rv   rO   r¿   rc   Úasfortranarrayr   rw   rx   ry   Úasarrayr‰   ÚdotÚapplyr   )	r{   rÊ   rË   ÚX2Úy2ZXfÚtZXtr|   rn   rn   ro   Ú
test_error)  sX    

$
$r×   c                  C   sÒ   t jtjtjjd�} tj}tdt	 
¡ ƒD ]¤\}}t	| }|d|dd�}| | |¡ |jj|jjdk }t  |¡dks‚td |¡ƒ‚|d	|dd�}| | |¡ |jj|jjdk }t  |¡dks(td |¡ƒ‚q(d
S )z Test min_samples_split parameter©Údtype©Néè  r9   r   )Úmin_samples_splitr¹   rG   r6   é	   rr   r5   N)rc   rÐ   rP   r—   r   Ú_treeÚDTYPEr˜   r   r.   Úkeysrv   rÃ   rf   rb   rˆ   r_   r`   )rN   rO   r¹   r{   rÊ   rË   Znode_samplesrn   rn   ro   Útest_min_samples_splitk  s(      ÿ  ÿrá   c            	      C   sî   t jtjtjjd�} tj}tdt	 
¡ ƒD ]À\}}t	| }|d|dd�}| | |¡ |j | ¡}t  |¡}||dk }t  |¡dks�td |¡ƒ‚|d|dd�}| | |¡ |j | ¡}t  |¡}||dk }t  |¡dks(td |¡ƒ‚q(d S )	NrØ   rÚ   r2   r   )Úmin_samples_leafr¹   rG   r/   rr   r·   )rc   rÐ   rP   r—   r   rÞ   rß   r˜   r   r.   rà   rv   rÃ   rÓ   Úbincountrˆ   r_   r`   )	rN   rO   r¹   r{   rÊ   rË   ÚoutZnode_countsZ
leaf_countrn   rn   ro   Útest_min_samples_leafŠ  s0      ÿ
  ÿ
rå   Fc                 C   s¤  |rt | d  tj¡}nt | d  tj¡}t | d }t |jd ¡}t |¡}t|  }t	dt 
ddd¡ƒD ]ˆ\}}	||	|dd�}
|
j|||d	� |r¬|
j | ¡ ¡}n|
j |¡}tj||d
�}||dk }t |¡||
j ksptd | |
j¡ƒ‚qp|jd }t	dt 
ddd¡ƒD ]†\}}	||	|dd�}
|
 ||¡ |�rR|
j | ¡ ¡}n|
j |¡}t |¡}||dk }t |¡||
j k�std | |
j¡ƒ‚�qdS )zPTest if leaves contain at least min_weight_fraction_leaf of the
    training setr[   rN   rO   r   rÚ   r<   r;   )Úmin_weight_fraction_leafr¹   rG   r~   )Úweightsz,Failed with {0} min_weight_fraction_leaf={1}N)ÚDATASETSÚastyperc   Úfloat32ÚrngÚrandr‘   rg   r.   r   Úlinspacerv   rÃ   rÓ   Útocsrrã   rˆ   ræ   r_   r`   )r{   r&   ÚsparserN   rO   rç   Útotal_weightrÊ   r¹   ÚfracrË   rä   Únode_weightsÚleaf_weightsrn   rn   ro   Úcheck_min_weight_fraction_leaf«  s\    
  ÿÿ ÿþ
  ÿ
ÿ ÿþrô   r{   c                 C   s   t | dƒ d S ©NrP   ©rô   ©r{   rn   rn   ro   Ú,test_min_weight_fraction_leaf_on_dense_inputè  s    rø   c                 C   s   t | ddƒ d S ©NrV   Trö   r÷   rn   rn   ro   Ú-test_min_weight_fraction_leaf_on_sparse_inputí  s    rú   c                 C   s   |rt | d  tj¡}nt | d  tj¡}t | d }|jd }t|  }tdt ddd¡ƒD ]Œ\}}|||ddd	�}	|	 ||¡ |rš|	j	 
| ¡ ¡}
n|	j	 
|¡}
t |
¡}||dk }t |¡t||	j dƒks`td
 | |	j|	j¡ƒ‚q`tdt ddd¡ƒD ]˜\}}|||ddd	�}	|	 ||¡ |�r>|	j	 
| ¡ ¡}
n|	j	 
|¡}
t |
¡}||dk }t |¡t||	j ||	j ƒk�std
 | |	j|	j¡ƒ‚�qdS )zzTest the interaction between min_weight_fraction_leaf and
    min_samples_leaf when sample_weights is not provided in fit.r[   rN   rO   r   rÚ   r<   r3   r2   )ræ   r¹   râ   rG   zBFailed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}r·   N)rè   ré   rc   rê   r‘   r.   r   rí   rv   rÃ   rÓ   rî   rã   rˆ   Úmaxræ   r_   r`   râ   )r{   r&   rï   rN   rO   rð   rÊ   r¹   rñ   rË   rä   rò   ró   rn   rn   ro   Ú4check_min_weight_fraction_leaf_with_min_samples_leafò  sh    
ü

 ÿ  ÿþü

þ
  ÿýrü   c                 C   s   t | dƒ d S rõ   ©rü   r÷   rn   rn   ro   ÚBtest_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_input.  s    rþ   c                 C   s   t | ddƒ d S rù   rý   r÷   rn   rn   ro   ÚCtest_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_input3  s    rÿ   c                  C   sš  t jddd�\} }tdt ¡ ƒD �]r\}}t| }||dd�}||ddd�}||d	dd�}||d
dd�}|df|df|d	f|d
ffD �]\}	}
|	j|
ksªtd |	j|
¡ƒ‚|	 | |¡ t	|	j
jƒD ]Î}|	j
j| tkrÂ|	j
j| }|	j
j| }|	j
j| }|	j
j| }|	j
j| }|| }|	j
j| }|	j
j| }|	j
j| }|| }|| }|| }|	j
j| | jd  }|||  }||
ksÂtd ||
¡ƒ‚qÂq„q d S )Nr¦   r¡   ©rH   rG   rÚ   r   ©r¹   rG   rA   )r¹   Úmin_impurity_decreaserG   g-Cëâ6?r·   gH¯¼šò×z>z)Failed, min_impurity_decrease = {0} > {1}z2Failed with {0} expected min_impurity_decrease={1})r&   rº   r   r.   rà   r  r_   r`   rv   ÚrangerÃ   r^   rb   r   rh   Úweighted_n_node_samplesra   r‘   )rN   rO   r¹   r{   rÊ   Zest1Úest2Zest3Zest4rË   Zexpected_decreaseÚnodeZ
imp_parentZ
wtd_n_nodeÚleftZ
wtd_n_leftZimp_leftZwtd_imp_leftÚrightZwtd_n_rightZ	imp_rightZwtd_imp_rightZwtd_avg_left_right_impZfractional_node_weightZactual_decreasern   rn   ro   Útest_min_impurity_decrease8  st      ÿ  ÿ  ÿüÿ ÿþÿÿÿ ÿþr	  c                     s  t  ¡ D ]ø\} }d| kr(tjtj }}ntjtj }}|dd�‰ ˆ  ||¡ ˆ  ||¡}dddddd	d
ddddddg}‡ fdd„|D ƒ}t 	ˆ ¡}t 
|¡}t|ƒˆ jks®t‚| ||¡}	||	ksÐtd | ¡ƒ‚|D ]*}
tt|j|
ƒ||
 d|
› d| › �d� qÔqdS )z8Test pickling preserves Tree properties and performance.Ú
Classifierr   rq   rŸ   r^   ÚcapacityÚ	n_classesrb   ra   Zn_leavesrd   re   rh   rf   r  ri   c                    s   i | ]}|t ˆ j|ƒ“qS rn   )rÀ   rÃ   )Ú.0Ú	attribute©rË   rn   ro   Ú
<dictcomp>œ  s     ztest_pickle.<locals>.<dictcomp>z6Failed to generate same score  after pickling with {0}z"Failed to generate same attribute z after pickling with r\   N)r.   ru   rP   r—   r˜   rQ   rv   r”   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__r_   r`   r   rÀ   rÃ   )r{   rÊ   rN   rO   r”   Ú
attributesZfitted_attributeZserialized_objectr  Zscore2r  rn   r  ro   Útest_pickle€  sL    
ó
ÿ

ÿþ
ür  c                  C   sì  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d�}| | |¡ |¡}t||ƒ |jdk�st‚| |¡}t|ƒdk�s2t‚|d jdk�sFt‚|d jd	k�sZt‚| 	|¡}	t|	ƒdk�svt‚|	d jdk�sŠt‚|	d jd	ksØt‚qØt
 ¡ D ]@\}}
|
dd�}| | |¡ |¡}t||ƒ |jdk�s¦t‚�q¦d S )
Nr7   r6   r0   r>   r   r3   rq   ©r/   r>   )r/   r/   )rt   ru   rv   rw   r   r‘   r_   r¢   r�   r¤   rª   r   )rN   rO   rx   Zy_truer{   r­   r|   Zy_hatZprobaZ	log_probar®   r�   rn   rn   ro   Útest_multioutput³  s\    ôô





r  c                  C   sÆ   t  ¡ D ]¸\} }|dd�}| tt¡ |jdks4t‚t|jddgƒ t	 
tt	 t¡d f¡j}|dd�}| t|¡ t|jƒdks†t‚t|jƒdks˜t‚t|jddgƒ t|jddgddggƒ qd S )Nr   rq   r>   r6   r0   r7   )rt   ru   rv   rN   rO   Ú
n_classes_r_   r   Zclasses_rc   r’   r‰   rx   r�   )r{   r­   r|   Ú_yrn   rn   ro   Útest_classes_shapeï  s    

r  c                  C   sf   t jd d… } t jd d… }td|ƒ}t ¡ D ]2\}}|dd�}|j| ||d� t| | ¡|ƒ q.d S )Né}   Úbalancedr   rq   r~   )	rP   r—   r˜   r'   rt   ru   rv   r   rw   )Zunbalanced_XZunbalanced_yr   r{   r­   r|   rn   rn   ro   Útest_unbalanced_iris  s    

r  c                  C   sŠ  t t ¡ tjtjgƒD �]l\\} }}|dd�}tjtj|d�}tj	}t
| ||¡ |¡|ƒ tjtjd|d�}tj	}t
| ||¡ |¡|ƒ tjtjd|d�}tj	}t
| ||¡ |¡|ƒ tjtj|d�}tj	}t
| ||¡ |¡|ƒ ttj|d�}tj	}t
| ||¡ |¡|ƒ ttj|d�}tj	}t
| ||¡ |¡|ƒ tjtjd d d… |d�}tj	d d d… }t
| ||¡ |¡|ƒ qd S )Nr   rq   rØ   ÚC)ÚorderrÙ   ÚFr3   )r   r.   ru   rc   Úfloat64rê   rÑ   rP   r—   r˜   r   rv   rw   Zascontiguousarrayr   r   )r{   rÊ   rÙ   rË   rN   rO   rn   rn   ro   Útest_memory_layout  s4     
ÿ
r$  c                  C   sÞ  t  d¡d d …t jf } t  d¡}d|d d…< t  d¡}d||dk< tdd�}|j| ||d� t| | ¡t  d¡ƒ t  d¡d d …t jf } t  d¡}d|dd…< d	|dd…< d| dd…df< t  d¡}d
||d	k< tddd�}|j| ||d� |j	j
d dk�st‚d||d	k< tddd�}|j| ||d� |j	j
d dk�sDt‚tj} tj}t d| jd d¡}tdd�}| | | || ¡ t j|| jd d�}tdd�}|j| ||d� |j	jtjjk}t|j	j
| |j	j
| ƒ d S )Néd   rC   é2   r   rq   r~   éÈ   r0   r>   gR¸…ëQà?r§   g     °b@r<   g     ÀH@)Z	minlength)rc   r¨   r©   r€   r   rv   r   rw   rZ   rÃ   re   r_   rP   r—   r˜   rë   Úrandintr‘   rã   rb   r   rÞ   r   r   )rN   rO   r   r|   Ú
duplicatesr¼   rm   rn   rn   ro   Útest_sample_weight:  sF    







 
ÿr*  c               	   C   s¨   t  d¡d d …t jf } t  d¡}d|d d…< tdd�}t j dd¡}t t	¡� |j
| ||d� W 5 Q R X t  d¡}d}tjt|d	�� |j
| ||d� W 5 Q R X d S )
Nr%  rC   r&  r   rq   r0   r~   z3Singleton.* cannot be considered a valid collectionrÎ   )rc   r¨   r©   r€   r   Úrandomrì   rš   r¾   r¿   rv   r‰   Ú	TypeError)rN   rO   r|   r   Zexpected_errrn   rn   ro   Útest_sample_weight_invalidn  s    


r-  c           	      C   s˜  t |  }|dd�}| tjtj¡ |ddd�}| tjtj¡ t|j|jƒ t tjtjtjf¡j	}|ddddœddddœddddœgdd�}| tj|¡ t|j|jƒ |ddd�}| tj|¡ t|j|jƒ t 
tjj¡}|tjdk  d	9  < dd
ddœ}|dd�}| tjtj|¡ ||dd�}| tjtj¡ t|j|jƒ |dd�}| tjtj|d ¡ ||dd�}| tjtj|¡ t|j|jƒ dS )z5Check class_weights resemble sample_weights behavior.r   rq   r  ©Úclass_weightrG   g       @r@   )r   r0   r>   r0   r%  g      Y@r>   N)rt   rv   rP   r—   r˜   r   r»   rc   r’   rx   r€   r‘   )	r{   r­   Úclf1r¼   Z
iris_multiZclf3Zclf4r   r/  rn   rn   ro   Úcheck_class_weights€  s@    



ýú

r1  c                 C   s   t | ƒ d S ©N)r1  r÷   rn   rn   ro   Útest_class_weights¯  s    r3  c              	   C   sd   t |  }t tt t¡d f¡j}|dddœgdd�}d}tjt|d�� | 	t
|¡ W 5 Q R X d S )	Nr>   r<   r@   ©r6   r0   r   r.  zBnumber of elements in class_weight should match number of outputs.rÎ   )rt   rc   r’   rO   r‰   rx   rš   r¾   r¿   rv   rN   )r{   r­   r  r|   r]   rn   rn   ro   Úcheck_class_weight_errors´  s    r5  c                 C   s   t | ƒ d S r2  )r5  r÷   rn   rn   ro   Útest_class_weight_errorsÀ  s    r6  c                  C   sX   t jddd�\} }d}t ¡ D ]4\}}|d |d d� | |¡}| ¡ |d kst‚qd S ©Nr%  r0   r   r/   )rŸ   r¹   )r&   Úmake_hastie_10_2r.   ru   rv   Zget_n_leavesr_   ©rN   rO   Úkr{   rÊ   rË   rn   rn   ro   Útest_max_leaf_nodesÅ  s
    r;  c                  C   sP   t jddd�\} }d}t ¡ D ],\}}|d|d� | |¡}| ¡ dkst‚qd S r7  )r&   r8  r.   ru   rv   Z	get_depthr_   r9  rn   rn   ro   Útest_max_leaf_nodes_max_depthÎ  s
    r<  c                  C   sT   dD ]J} t tƒ  dgdggddg¡j| ƒ}d|jd   krDdk sn tdƒ‚qd S )N)r  ri   rb   ra   re   rh   rd   rf   r   r0   r8   r3   z Array points to arbitrary memory)rÀ   r   rv   rÃ   Úflatr_   )Úattrri   rn   rn   ro   Útest_arrays_persist×  s    
"r?  c                  C   s\   t dƒ} t d¡}|  ddd¡}t ¡ D ].\}}|dd�}| ||¡ |jjdks(t	‚q(d S )Nr   )r9   rJ   r>   )r9   rq   )
r   rc   rZ   r(  r.   ru   rv   rÃ   rŸ   r_   )rG   rN   rO   r{   rÊ   rË   rn   rn   ro   Útest_only_constant_featuresé  s    

r@  c                  C   s¢   t  t  dddddddddddggt  d¡f¡¡} ddddddddd	d	d	g}t ¡ D ]H\}}d
|krT|ddd�}| | |¡ |jjdksŒt	‚|jj
dksTt	‚qTd S )Nr   r0   r>   r/   r2   r;   é   )r/   r:   r3   Z	ExtraTreer�   )rc   Z	transposer’   rZ   r.   ru   rv   rÃ   rŸ   r_   r^   ©rN   rO   r{   rÊ   rË   rn   rn   ro   Ú,test_behaviour_constant_feature_after_splitsó  s    *ÿrC  c                  C   sä   t  t  dgdgdgdgg¡t  d¡g¡} t  ddddg¡}t ¡ D ]H\}}|ddd�}| | |¡ |jjdkstt	‚t
| | ¡t  dd¡ƒ qDt ¡ D ]H\}}|ddd�}| | |¡ |jjdksÆt	‚t
| | ¡t  d	d¡ƒ q–d S )
Nr@   rC   )r/   rÛ   r   r0   r�   r  r<   )r/   )rc   Zhstackr‰   rZ   rt   ru   rv   rÃ   rŸ   r_   r   r¢   r‚   rª   rw   rB  rn   rn   ro   Ú(test_with_only_one_non_constant_features  s    *rD  c               	   C   sT   t  dd¡ t j¡ dd¡} tƒ }tjtdd�� | 	| ddddg¡ W 5 Q R X d S )Ng¥\Ãñ)c=Hr/   r6   r0   rê   rÎ   r   )
rc   Úrepeatré   r#  Úreshaper   rš   r¾   r¿   rv   )rN   r|   rn   rn   ro   Útest_big_input  s    rG  c               	   C   s,   ddl m}  t t¡� | ƒ  W 5 Q R X d S )Nr   ©Ú_realloc_test)Zsklearn.tree._utilsrI  rš   r¾   ÚMemoryErrorrH  rn   rn   ro   Útest_realloc  s    rK  c               	   C   s¨   dt  d¡ } tj dd¡}tj ddd¡}d| d  }td|d�}t t	¡� | 
||¡ W 5 Q R X d| d  d }td|d�}t t¡� | 
||¡ W 5 Q R X d S )	Nr=   ÚPr9   r>   r   r0   Úbest)Úsplitterr¹   )ÚstructÚcalcsizerc   r+  Úrandnr(  r   rš   r¾   Ú	Exceptionrv   rJ  )Zn_bitsrN   rO   Zhuger|   rn   rn   ro   Útest_huge_allocations!  s    rS  c                 C   s<  t |  }t| d }t| d }t| d }|dkrf|jd d }|d |… }|d |… }|d |… }tttfD ]Æ}||ƒ}|d|d� ||¡}	|d|d� ||¡}
t|	j|
jd 	| ¡ƒ |	 
|¡}| tkrà|	 |¡}|	 |¡}tttfD ]J}||tjd	�}t|
 
|¡|ƒ | tkrêt|
 |¡|ƒ t|
 |¡|ƒ qêqpd S )
NrN   r[   rO   )rR   rQ   r   r2   ©rG   rŸ   ú5{0} with dense and sparse format gave different treesrØ   )r.   rè   r‘   r   r   r   rv   rp   rÃ   r`   rw   rt   r¢   r¤   rc   rê   r   )r   ÚdatasetrŸ   rÊ   rN   r[   rO   rH   Zsparse_formatrj   rk   Zy_predZy_probaZy_log_probaZsparse_matrixÚX_sparse_testrn   rn   ro   Úcheck_sparse_input6  s>    ý


 ÿrX  Ú	tree_typerV  )rT   rS   rR   rV   rW   rX   rY   rZ   c                 C   s    |dkrdnd }t | ||ƒ d S )NrR   r3   ©rX  )rY  rV  rŸ   rn   rn   ro   Útest_sparse_inputa  s    r[  rQ   rU   c                 C   s   t | |dƒ d S )Nr>   rZ  )rY  rV  rn   rn   ro   Útest_sparse_input_reg_treest  s    r\  c                 C   sœ  t |  }t| d }t| d }t| d }|dddd� ||¡}|dddd� ||¡}t|j|jd | ¡ƒ t| |¡| |¡ƒ |ddd	d
� ||¡}|ddd	d
� ||¡}t|j|jd | ¡ƒ t| |¡| |¡ƒ |d|jd d d� ||¡}|d|jd d d� ||¡}t|j|jd | ¡ƒ t| |¡| |¡ƒ |ddd� ||¡}|ddd� ||¡}t|j|jd | ¡ƒ t| |¡| |¡ƒ d S )NrN   r[   rO   r   r0   r>   )rG   rs   rŸ   rU  r9   )rG   rs   rÜ   )rG   râ   r3   r¸   )	r.   rè   rv   rp   rÃ   r`   r   rw   r‘   )r   rV  rÊ   rN   r[   rO   rj   rk   rn   rn   ro   Úcheck_sparse_parameters|  sT    ý ÿý ÿýýr]  c           
      C   s¢   t |  }t| d }t| d }t| d }| tkr8tnt}|D ]\}|dd|d� ||¡}|dd|d� ||¡}	t|j|	jd | ¡ƒ t	|	 
|¡| 
|¡ƒ q@d S )NrN   r[   rO   r   r3   )rG   rŸ   r„   rU  )r.   rè   rª   ÚREG_CRITERIONSr–   rv   rp   rÃ   r`   r   rw   )
r   rV  rÊ   rN   r[   rO   Z
CRITERIONSr„   rj   rk   rn   rn   ro   Úcheck_sparse_criterion¯  s"     ÿýr_  rW   rX   rY   rZ   Úcheckc                 C   s   || |ƒ d S r2  rn   )rY  rV  r`  rn   rn   ro   Útest_sparseÅ  s    ra  c                 C   s|  t |  }|}t |¡}tdƒ}g }g }d}	|	g}
t|ƒD ]^}| |d¡}| |¡d |… }| |¡ |jdd|fd�d }| |¡ |	|7 }	|
 |	¡ q8t |¡}tj	t |¡tj
d�}t|||
f||fd�}| ¡ }t|||
f||fd�}| ¡ }|jdd|fd�}| ¡ }|jdk ¡ dk�s&t‚|jdk ¡ dk�s>t‚|d|d	� ||¡}|d|d	� ||¡}t|j|jd
 | ¡ƒ ||f}t||ƒD ]è\}}t|j |¡|j |¡ƒ t| |¡| |¡ƒ t| |¡|j |¡ƒ t|j |¡ ¡ |j |¡ ¡ ƒ t| |¡ ¡ | |¡ ¡ ƒ t| |¡ ¡ |j |¡ ¡ ƒ t| |¡| |¡ƒ | tk�rŽt| |¡| |¡ƒ �qŽd S )Nr   r<   r3   rK   r0   rØ   ©r‘   rC   rT  rU  )r.   rc   r¨   r   r  ZbinomialÚpermutationÚappendÚconcatenater‰   rê   r   Útoarrayr   r(  Úcopyr—   rg   r_   rv   rp   rÃ   r`   r   r   rÓ   Údecision_pathrw   rt   r¢   )r   rŸ   rI   rÊ   rH   ZsamplesrG   r�   r—   ÚoffsetÚindptrÚiZn_nonzero_iZ	indices_iZdata_ir[   rN   rW  ÚX_testrO   rj   rk   ZXsZX1rÔ   rn   rn   ro   Úcheck_explicit_sparse_zerosÌ  sj    



ý ÿ ÿ ÿ
rm  c                 C   s   t | ƒ d S r2  )rm  )rY  rn   rn   ro   Útest_explicit_sparse_zeros  s    rn  c              	   C   s    t |  }tjd d …df  ¡ }tjd d …df  d¡}tj}t t¡� |dd� 	||¡ W 5 Q R X |dd�}| 	||¡ t t¡� | 
|g¡ W 5 Q R X d S )Nr   r4  rq   )r.   rP   r—   r“   rF  r˜   rš   r¾   r¿   rv   rw   )r{   rÊ   rN   ZX_2drO   rË   rn   rn   ro   Úcheck_raise_error_on_1d_input  s    
ro  c              	   C   s   t ƒ � t| ƒ W 5 Q R X d S r2  )r   ro  r÷   rn   rn   ro   Útest_1d_input(  s    rp  c                 C   sZ   | dd�}|j |||d� |jjdks*t‚| ddd�}|j |||d� |jjdksVt‚d S )Nr   rq   r~   r0   gš™™™™™Ù?)rG   ræ   )rv   rÃ   rŸ   r_   )rÊ   rN   rO   r   rË   rn   rn   ro   Ú"_check_min_weight_leaf_split_level.  s    
rq  c                 C   sf   t |  }t dgdgdgdgdgg¡}dddddg}dddddg}t||||ƒ t|t|ƒ||ƒ d S )Nr   r0   r5   )r.   rc   r‰   rq  r   )r{   rÊ   rN   rO   r   rn   rn   ro   Ú!check_min_weight_leaf_split_level8  s    rr  c                 C   s   t | ƒ d S r2  )rr  r÷   rn   rn   ro   Ú test_min_weight_leaf_split_levelC  s    rs  c                 C   sD   t jtjjdd�}t|  ƒ }| t t¡ t| 	t ¡|j
 	|¡ƒ d S ©NF©rg  )ÚX_smallré   r   rÞ   rß   r.   rv   Úy_smallr   rÓ   rÃ   ©r{   Z	X_small32rË   rn   rn   ro   Úcheck_public_applyH  s    
ry  c                 C   sH   t tjtjjdd�ƒ}t|  ƒ }| tt¡ t	| 
t¡|j 
|¡ƒ d S rt  )r   rv  ré   r   rÞ   rß   r.   rv   rw  r   rÓ   rÃ   rx  rn   rn   ro   Úcheck_public_apply_sparseP  s    
rz  c                 C   s   t | ƒ d S r2  )ry  r÷   rn   rn   ro   Útest_public_apply_all_treesX  s    r{  c                 C   s   t | ƒ d S r2  )rz  r÷   rn   rn   ro   Útest_public_apply_sparse_trees]  s    r|  c                  C   sT   t j} t j}tddd� | |¡}| | d d… ¡ ¡ }t|dddgdddggƒ d S )Nr   r0   rT  r>   )rP   r—   r˜   r   rv   rh  rf  r   )rN   rO   rË   Únode_indicatorrn   rn   ro   Útest_decision_path_hardcodedb  s
    r~  c                    sÚ   t j}t j}|jd }t|  }|ddd�}| ||¡ | |¡}| ¡ ‰ ˆ j||jj	fks^t
‚| |¡}‡ fdd„t|ƒD ƒ}t|tj|d�ƒ |jjtk}	tt ˆ |	¡tj|d�ƒ ˆ jdd� ¡ }
|jj|
ksÖt
‚d S )	Nr   r>   rT  c                    s   g | ]\}}ˆ ||f ‘qS rn   rn   )r  rk  Új©r}  rn   ro   Ú
<listcomp>y  s     z'check_decision_path.<locals>.<listcomp>rb  r0   ©Zaxis)rP   r—   r˜   r‘   r.   rv   rh  rf  rÃ   r^   r_   rÓ   Ú	enumerater   rc   r€   rb   r   rÒ   rg   rû   rŸ   )r{   rN   rO   rH   rÊ   rË   Znode_indicator_csrÚleavesZleave_indicatorZ
all_leavesrŸ   rn   r€  ro   Úcheck_decision_pathj  s&    



 
ÿr…  c                 C   s   t | ƒ d S r2  )r…  r÷   rn   rn   ro   Útest_decision_path‡  s    r†  c              	   C   sB   t ttƒ }}t|  }t t¡� |dd� ||¡ W 5 Q R X d S )Nr   rq   )ÚX_multilabelr   Úy_multilabelr.   rš   r¾   r,  rv   )r{   rN   rO   rÊ   rn   rn   ro   Úcheck_no_sparse_y_supportŒ  s    r‰  c                 C   s   t | ƒ d S r2  )r‰  r÷   rn   rn   ro   Útest_no_sparse_y_support“  s    rŠ  c                  C   s(  t dddd�} | jdgdgdgdgdggdd	dd
dgdddddgd� t| jjdddgƒ t| jjjdddgƒ | jdgdgdgdgdggdd	dd
dgt 	d¡d� t| jjdddgƒ t| jjjd
ddgƒ | jdgdgdgdgdggdd	dd
dgd� t| jjdddgƒ t| jjjd
ddgƒ 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+   r>   )rG   r„   r¹   r3   r2   r=   r;   rA  r/   ç333333ã?g333333Ó?r·   r@   )rN   rO   r   g²�…,dñ?gÜ¶mÛ¶mÛ?gÿÿÿÿÿÿç?g      @g      @gffffffö?r?   gUUUUUUõ?rD   rM   N)
r   rv   r   rÃ   rh   r   ri   r=  rc   r€   )Zdt_maern   rn   ro   Útest_mae™  s$    J  ÿý4,rŒ  c                  C   sê   d} t jdt jd�}d}dd„ }tjtj|fD ]¶}t ¡ D ]N\}}|| |ƒ}||ƒ ¡ }|\}	\}
}}||	ksrt‚| |
ks~t‚t	||ƒ q:t
 ¡ D ]P\}}|| |ƒ}||ƒ ¡ }|\}	\}
}}||	ksÊt‚| |
ksÖt‚||ks’t‚q’q.d S )Nr3   rØ   r%  c                 S   s   t  t  | ¡¡S r2  )r  r  r  )Úobjrn   rn   ro   Ú_pickle_copy  s    z)test_criterion_copy.<locals>._pickle_copy)rc   r¨   Zintprg  Údeepcopyr$   ru   Ú
__reduce__r_   r   r%   )Ú	n_outputsr  rH   rŽ  Z	copy_funcÚ_ÚtypenameÚcriteriaÚresultZ	typename_Z
n_outputs_r  Z
n_samples_rn   rn   ro   Útest_criterion_copyý  s&    

r–  c            
      C   sà   t j d¡ dd¡d } t  |  d¡¡} | d d …d d…f }t|ƒ}| d d …df }||fD ]~}tdd� ||¡}| 	|¡}t
t  |jjtk¡d ƒ}| |¡}t  t  |jj¡ ¡d }	t|	ƒdksÊt‚t|ƒdks\t‚q\d S )Nr   r%  r:   g±¡*ÓÎâGrê   r6   rq   )rc   r+  ÚRandomStaterQ  Z
nan_to_numré   r   r   rv   rÓ   ÚsetÚwhererÃ   rb   r   Ú
differenceÚisfinitere   r�   r_   )
r—   ZX_fullr[   rO   rN   r   Zterminal_regionsZ	left_leafZ
empty_leafZinfinite_thresholdrn   rn   ro   Ú"test_empty_leaf_infinite_threshold  s    

rœ  Útree_clsc           	      C   s€   t | }|d |d  }}|ddd�}| ||¡}|j}|j}t t |¡dk¡sVt‚t t |¡dk¡snt‚t||||ƒ d S ©NrN   rO   rJ   r   r  ©	rè   Zcost_complexity_pruning_pathZ
ccp_alphasÚ
impuritiesrc   r±   Údiffr_   Úassert_pruning_creates_subtree©	r„   rV  r�  rN   rO   rË   ÚinfoÚpruning_pathr   rn   rn   ro   Ú'test_prune_tree_classifier_are_subtrees*  s    r¦  c           	      C   s€   t | }|d |d  }}|ddd�}| ||¡}|j}|j}t t |¡dk¡sVt‚t t |¡dk¡snt‚t||||ƒ d S rž  rŸ  r£  rn   rn   ro   Ú'test_prune_tree_regression_are_subtrees=  s    r§  c                  C   sX   t dd�} |  dgdggddg¡ t ddd�}| dgdggddg¡ t| j|jƒ d S )Nr   rq   r0   r9   )rG   Ú	ccp_alpha)r   rv   Úassert_is_subtreerÃ   )r0  r¼   rn   rn   ro   Útest_prune_single_node_treeO  s
    
rª  c           	      C   s\   g }|D ]$}| d|dd�  ||¡}| |¡ qt||dd … ƒD ]\}}t|j|jƒ q@d S )NrJ   r   )r¹   r¨  rG   r0   )rv   rd  Úzipr©  rÃ   )	Zestimator_clsrN   rO   r¥  Z
estimatorsr¨  rË   Zprev_estZnext_estrn   rn   ro   r¢  [  s     ÿr¢  c           	      C   s  | j |j kst‚| j|jks t‚| j}| j}|j}|j}dg}|�r| ¡ \}}t| j| |j| ƒ t| j	| |j	| ƒ t| j
| |j
| ƒ t| j| |j| ƒ || || krÊtt|j| ƒ q>t| j| |j| ƒ | || || f¡ | || || f¡ q>d S )N)r   r   )r^   r_   rŸ   rb   ra   Úpopr   ri   r   rh   rf   r  r   re   rd  )	r   ZsubtreeZtree_c_leftZtree_c_rightZsubtree_c_leftZsubtree_c_rightÚstackZtree_node_idxZsubtree_node_idxrn   rn   ro   r©  j  sF     ÿ ÿ ÿþ ÿÿr©  rN  rM  r+  ÚX_formatÚdenseZcsrÚcscc                 C   sæ   t d }|d jtjjdd�}|dkr0t|ƒ}nN|d }|dkrH| ¡ }tj|j	tjjd�|_	t|j	|j
|jfƒ\|_	|_
|_ttjttjjd�ƒ}t|  |d	�}| ||¡ t| |¡| |¡ƒ t| |¡ ¡ | |¡ ¡ ƒ d S )
NrT   rN   Fru  r¯  r[   r°  rØ   )rN  )rè   ré   r   rÞ   rß   r   Ztocscrc   r‰   r—   r�   rj  rw  r.   rv   r   rw   rh  Ztodense)r{   rN  r®  rV  rv  Z
X_readonlyZ
y_readonlyrË   rn   rn   ro   Ú"test_apply_path_readonly_all_trees’  s.    
ÿü ÿr±  c                 C   sL   t jt j }}|| d�}| ||¡ t | |¡¡t t |¡¡ksHt	‚d S )NrÍ   )
rQ   r—   r˜   rv   rc   rg   rw   rš   r›   r_   )r„   r   rN   rO   r�   rn   rn   ro   Útest_balance_property²  s    
r²  Úseedc              	   C   s*  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ddddddg}t d| d�}| ||¡ t | |¡¡dksxt‚t d| d�}| ||¡ t | |¡dk¡s¨t‚d	}tj|d d d
d||d d | d�\}}d|d|k |dk @ < t 	|¡}t d| d�}| ||¡ t | |¡dk¡�s&t‚d S )Nr   r0   r>   r3   r/   r*   r…   r-   r9   r‹  rÛ   )Zeffective_rankZtail_strengthrH   rI   r´   rG   r6   )
r   rv   rc   Zaminrw   r_   r±   r&   Zmake_regressionr‡   )r³  rN   rO   r�   rI   rn   rn   ro   Útest_poisson_zero_nodesÀ  s,    4

ú
	
r´  c                  C   sF  t j d¡} d\}}}tj|| || d�}| jdd|d�t j|dd� }| jt  || ¡d	�}t	|||| d
�\}}}	}
t
dd| d�}t
dd| d�}| ||	¡ | ||	¡ tdd� ||	¡}||	df||
dffD ]p\}}}t|| |¡ƒ}t|t  | |¡dd ¡ƒ}t|| |¡ƒ}|dk�r0|d| k �s0t‚|d| k sÐt‚qÐd S )Nr¡   )éô  rµ  r9   )rH   rI   rG   r7   r>   )ÚlowÚhighrL   r   r‚  )Zlam)Z	test_sizerG   r-   r9   )r„   rÜ   rG   r*   Úmean)ZstrategyÚtrainÚtestgVçž¯Ò<r<   g      è?)rc   r+  r—  r&   Zmake_low_rank_matrixÚuniformrû   r-   r£   r   r   rv   r	   r   rw   Zclipr_   )rë   Zn_trainZn_testrI   rN   ZcoefrO   ZX_trainrl  r‹   rŒ   Ztree_poiZtree_mseÚdummyÚvalZ
metric_poiZ
metric_mseZmetric_dummyrn   rn   ro   Útest_poisson_vs_mseâ  sF    
  ÿ   ÿ  ÿ  ÿ
r¾  c                 C   s4  t | d�}tf |ddi—Ž}dD ]}td|  |dd� q tj d¡}d	\}}| ||¡}tj|d
d�| |¡ }|t |¡d 7 }tj	||d|d … gdd�}	t 	||d|d … g¡}
t 
t|ƒ¡}d|d|d …< tf |Žj|||d�}tf |Žj|	|
dd�}|jj|jjk�st‚t| |¡| |¡ƒ dS )z4Test that the impact of sample_weight is consistent.rÍ   rG   r¡   )rZ   r€   ZDecisionTreeRegressor_rZ   )Úkindr   )r9   r2   r0   r‚  r·   Nr>   r~   )Údictr   r   rc   r+  r—  rì   r¸  rˆ   re  r€   r�   rv   rÃ   r^   r_   r   rw   )r„   Ztree_paramsr   r¿  rë   rH   rI   rN   rO   rÔ   rÕ   Zsample_weight_1Ztree1Ztree2rn   rn   ro   Ú6test_decision_tree_regressor_sample_weight_consistency  s2    
  ÿ
  ÿrÁ  r  c                 C   sz   d\}}t j||||ddd�\}}| ddd� ||¡}| ddd� ||¡}t|j|j| ›d	�ƒ t| |¡| |¡ƒ d
S )z3Test that criterion=entropy gives same as log_loss.)r&  r2   r   r¡   )r  rH   rI   r´   rµ   rG   r)   é+   r…   Zentropyz> with criterion 'entropy' and 'log_loss' gave different trees.N)r&   rº   rv   rp   rÃ   r   rw   )r   r  rH   rI   rN   rO   Ztree_log_lossZtree_entropyrn   rn   ro   Ú'test_criterion_entropy_same_as_log_loss2  s"    ú
ýrÃ  c                     sv   t jdd�\} }tddd�‰ ˆ  | |¡ ˆ  | |¡}dd„ ‰‡ ‡fdd„}t |ƒ ¡}| | |¡}t ||¡srt	‚d S )	Nr   rq   r3   rT  c                 S   s   |   ¡  ¡  ¡ S r2  )ÚbyteswapÚnewbyteorderr�  )Úarrrn   rn   ro   Úreduce_ndarrayQ  s    z8test_different_endianness_pickle.<locals>.reduce_ndarrayc                     sB   t  ¡ } t | ¡}tj ¡ |_ˆ|jtj< | 	ˆ ¡ |  
d¡ | S ©Nr   )ÚioÚBytesIOr  ÚPicklerÚcopyregÚdispatch_tablerg  rc   ÚndarrayÚdumpÚseek©ÚfÚp©r|   rÇ  rn   ro   Ú get_pickle_non_native_endiannessT  s    


zJtest_different_endianness_pickle.<locals>.get_pickle_non_native_endianness)
r&   rº   r   rv   r”   r  Úloadrc   Úiscloser_   )rN   rO   r”   rÕ  Únew_clfÚ	new_scorern   rÔ  ro   Ú test_different_endianness_pickleJ  s    
rÚ  c                     s~   t jdd�\} }tddd�‰ˆ | |¡ ˆ | |¡}G dd„ dtƒ‰ ‡ ‡fdd„}t |ƒ ¡}| | |¡}t 	||¡szt
‚d S )	Nr   rq   r3   rT  c                       s   e Zd Z‡ fdd„Z‡  ZS )zPtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPicklerc                    s(   t |tjƒr| ¡  ¡ }tƒ  |¡ d S r2  )Ú
isinstancerc   rÎ  rÄ  rÅ  ÚsuperÚsave)Úselfr�  ©r  rn   ro   rÝ  k  s    zUtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPickler.save)Ú__name__Ú
__module__Ú__qualname__rÝ  Ú__classcell__rn   rn   rß  ro   ÚNonNativeEndiannessNumpyPicklerj  s   rä  c                     s(   t  ¡ } ˆ | ƒ}| ˆ¡ |  d¡ | S rÈ  )rÉ  rÊ  rÏ  rÐ  rÑ  ©rä  r|   rn   ro   Ú'get_joblib_pickle_non_native_endiannessp  s
    

zXtest_different_endianness_joblib_pickle.<locals>.get_joblib_pickle_non_native_endianness)r&   rº   r   rv   r”   r   ÚjoblibrÖ  rc   r×  r_   )rN   rO   r”   ræ  rØ  rÙ  rn   rå  ro   Ú'test_different_endianness_joblib_picklec  s    rè  c                 C   sr   t r
tjntj}ddddg}dd„ | jj ¡ D ƒ}|D ]}|||< q6t t| ¡ ƒt| 	¡ ƒdœ¡}| j
|dd	�S )
NÚ
left_childZright_childrd   rf   c                 S   s   i | ]\}\}}||“qS rn   rn   ©r  r{   rÙ   r’  rn   rn   ro   r  ƒ  s   
  z6get_different_bitness_node_ndarray.<locals>.<dictcomp>©ÚnamesÚformatsÚ	same_kind©Zcasting)r   rc   Úint64Úint32rÙ   Úfieldsru   Úlistrà   Úvaluesré   )Únode_ndarrayZnew_dtype_for_indexing_fieldsZindexing_field_namesÚnew_dtype_dictr{   Ú	new_dtypern   rn   ro   Ú"get_different_bitness_node_ndarray}  s    
ÿ
ÿrø  c                 C   sj   dd„ | j j ¡ D ƒ}dd„ | j j ¡ D ƒ}dd„ |D ƒ}t  t| ¡ ƒt| ¡ ƒ|dœ¡}| j|dd�S )	Nc                 S   s   i | ]\}\}}||“qS rn   rn   rê  rn   rn   ro   r  �  s   
  z8get_different_alignment_node_ndarray.<locals>.<dictcomp>c                 S   s   g | ]\}}|‘qS rn   rn   )r  rÙ   ri  rn   rn   ro   r�  “  s     z8get_different_alignment_node_ndarray.<locals>.<listcomp>c                 S   s   g | ]}d | ‘qS )r=   rn   )r  ri  rn   rn   ro   r�  ”  s     )rì  rí  Úoffsetsrî  rï  )rÙ   rò  ru   rô  rc   ró  rà   ré   )rõ  rö  rù  Zshifted_offsetsr÷  rn   rn   ro   Ú$get_different_alignment_node_ndarray�  s    
ÿ

ýÿrú  c           	      C   sZ   t r
tjntj}|  ¡ \}\}}}}|j|dd�}| ¡ }t|d ƒ|d< ||||f|fS )Nrî  rï  Znodes)r   rc   rð  rñ  r�  ré   rg  rø  )	r   r÷  r�  rI   r  r‘  ÚstateZnew_n_classesÚ	new_statern   rn   ro   Ú"reduce_tree_with_different_bitness   s    rý  c                     sn   t jdd�\} }tddd�‰ ˆ  | |¡ ˆ  | |¡}‡ fdd„}t |ƒ ¡}| | |¡}|t |¡ksjt	‚d S )Nr   rq   r3   rT  c                     s@   t  ¡ } t | ¡}tj ¡ |_t|jt< | 	ˆ ¡ |  
d¡ | S rÈ  )rÉ  rÊ  r  rË  rÌ  rÍ  rg  rý  Ú
CythonTreerÏ  rÐ  rÑ  rÁ   rn   ro   Ú"pickle_dump_with_different_bitness²  s    



zItest_different_bitness_pickle.<locals>.pickle_dump_with_different_bitness)
r&   rº   r   rv   r”   r  rÖ  rš   r›   r_   )rN   rO   r”   rÿ  rØ  rÙ  rn   rÁ   ro   Útest_different_bitness_pickle«  s    
r   c                     sn   t jdd�\} }tddd�‰ ˆ  | |¡ ˆ  | |¡}‡ fdd„}t |ƒ ¡}| | |¡}|t |¡ksjt	‚d S )Nr   rq   r3   rT  c                     s>   t  ¡ } t| ƒ}tj ¡ |_t|jt< | ˆ ¡ |  	d¡ | S rÈ  )
rÉ  rÊ  r   rÌ  rÍ  rg  rý  rþ  rÏ  rÐ  rÑ  rÁ   rn   ro   Ú"joblib_dump_with_different_bitnessÍ  s    


zPtest_different_bitness_joblib_pickle.<locals>.joblib_dump_with_different_bitness)
r&   rº   r   rv   r”   rç  rÖ  rš   r›   r_   )rN   rO   r”   r  rØ  rÙ  rn   rÁ   ro   Ú$test_different_bitness_joblib_pickleÁ  s    
r  c               	   C   sÞ   t rt tj¡n
t tj¡} t tj¡t tj¡g}|dd„ |D ƒ7 }tjddg| d�}|D ]}t| |¡| ƒ q\tj	t
dd��$ tjddgg| d�}t|| ƒ W 5 Q R X tj	t
dd�� | tj¡}t|| ƒ W 5 Q R X d S )	Nc                 S   s   g | ]}|  ¡ ‘qS rn   )rÅ  )r  Údtrn   rn   ro   r�  ß  s     z(test_check_n_classes.<locals>.<listcomp>r   r0   rØ   zWrong dimensions.+n_classesrÎ   zn_classes.+incompatible dtype)r   rc   rÙ   rñ  rð  r‰   r    ré   rš   r¾   r¿   r#  )Úexpected_dtypeÚallowed_dtypesr  r  Zwrong_dim_n_classesZwrong_dtype_n_classesrn   rn   ro   Útest_check_n_classesÜ  s    r  c               
   C   sò   t  t j¡} d}t j|| d�}| |  ¡ g}|D ]}t|||d� q.tjtdd�� t|| dd� W 5 Q R X |d d …d d …d d…f t  	|¡fD ].}tjtdd�� t|| |j
d� W 5 Q R X qŽtjtd	d�� t| t j¡| |d� W 5 Q R X d S )
N)r2   r0   r>   rØ   )r  Úexpected_shapezWrong shape.+value arrayrÎ   )r0   r>   r0   zvalue array.+C-contiguouszvalue array.+incompatible dtype)rc   rÙ   r#  rZ   rÅ  r!   rš   r¾   r¿   rÐ   r‘   ré   rê   )r  r  Zvalue_ndarrayr  r  Zproblematic_arrrn   rn   ro   Útest_check_value_ndarrayî  s:      ÿ  ÿ(ý
ýr  c               	   C   s’  t } tjd| d�}|t|ƒt|ƒg}|dd„ |D ƒ7 }|D ]}t|| d� q:tjtdd��  tjd| d�}t|| d� W 5 Q R X tjtd	d��  |d d d
… }t|| d� W 5 Q R X dd„ |j	j
 ¡ D ƒ}| ¡ }tj|d< t 	t| ¡ ƒt| ¡ ƒdœ¡}| |¡}tjtdd�� t|| d� W 5 Q R X | ¡ }tj|d< t 	t| ¡ ƒt| ¡ ƒdœ¡}| |¡}tjtdd�� t|| d� W 5 Q R X d S )N)r2   rØ   c                 S   s   g | ]}|  |j ¡ ¡‘qS rn   )ré   rÙ   rÅ  )r  rÆ  rn   rn   ro   r�  	  s    z+test_check_node_ndarray.<locals>.<listcomp>)r  zWrong dimensions.+node arrayrÎ   )r2   r>   znode array.+C-contiguousr>   c                 S   s   i | ]\}\}}||“qS rn   rn   rê  rn   rn   ro   r  (	  s    
  z+test_check_node_ndarray.<locals>.<dictcomp>re   rë  znode array.+incompatible dtyperé  )r#   rc   rZ   rø  rú  r"   rš   r¾   r¿   rÙ   rò  ru   rg  rð  ró  rà   rô  ré   r#  )r  rõ  Zvalid_node_ndarraysrÆ  Zproblematic_node_ndarrayZ
dtype_dictrö  r÷  rn   rn   ro   Útest_check_node_ndarray	  sD    ýÿ
ÿ

ÿ
r	  c               
   C   sˆ   t  ¡ D ]8} | dd�}d}tjt|d�� | tt¡ W 5 Q R X qt ¡ D ]8} | dd�}d}tjt|d�� | tt¡ W 5 Q R X qJd S )NrÅ   rÆ   zŽ`max_features='auto'` has been deprecated in 1.1 and will be removed in 1.3. To keep the past behaviour, explicitly set `max_features='sqrt'`.rÎ   zŒ`max_features='auto'` has been deprecated in 1.1 and will be removed in 1.3. To keep the past behaviour, explicitly set `max_features=1.0'`.)	rt   rô  rš   ZwarnsÚFutureWarningrv   rN   rO   rª   )r   r   Úmsgrn   rn   ro   Ú!test_max_features_auto_deprecatedD	  s    
ÿ
ÿr  c                 C   sR   t |  d¡ƒ}tdd�}| tt¡ t ||¡ tj|d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   rq   Úr)Z	mmap_modez?The trees of the original and loaded classifiers are not equal.N)ÚstrÚjoinr   rv   rv  rw  rç  rÏ  rÖ  rp   rÃ   )ZtmpdirZpickle_pathr|   Z
loaded_clfrn   rn   ro   Ú/test_tree_deserialization_from_read_only_bufferX	  s    
ýr  c              	   C   sn   t  ddgddgg¡}t  ddg¡}| dd� ||¡ | dd�}d}tjt|d�� | ||¡ W 5 Q R X dS )zhCheck that an error is raised when min_sample_split=1.

    non-regression test for issue gh-25481.
    r   r0   r@   )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)rc   r‰   rv   rš   r¾   r¿   )r   rN   rO   r   r  rn   rn   ro   Útest_min_sample_split_1_errork	  s    
ÿr  )F)F)N)r3   r9   )×Ú__doc__rg  r  Ú	itertoolsr   rO  rÉ  rÌ  rš   Únumpyrc   Znumpy.testingr   Zscipy.sparser   r   r   rç  Zjoblib.numpy_pickler   Zsklearn.random_projectionr   Zsklearn.dummyr	   Zsklearn.metricsr
   r   r   Zsklearn.model_selectionr   Zsklearn.utils._testingr   r   r   r   r   r   Zsklearn.utils.estimator_checksr   Zsklearn.utils.validationr   Zsklearn.utilsr   Zsklearn.exceptionsr   Zsklearn.treer   r   r   r   Zsklearnr   Zsklearn.tree._treer   r   r   rþ  r    r!   r"   r#   Zsklearn.tree._classesr$   r%   r&   r'   r–   r^  rt   rª   rÀ  r.   Ú__annotations__ÚupdateZSPARSE_TREESr‰   rv  rw  Zy_small_regrN   rO   rx   ry   Z	load_irisrP   r+  r—  rë   rc  r˜   rL   Úpermr—   Zload_diabetesrQ   Zload_digitsrR   rG   Zmake_multilabel_classificationr‡  rˆ  r»  ZX_sparse_posr(  Zy_randomrf  ZX_sparse_mixrZ   rè   r{   rp   r}   rƒ   ÚmarkZparametrizerô  rŽ   r•   r™   ru   rœ   r    r¥   r¬   r¯   r²   r½   rÂ   rÄ   ÚfilterwarningsrÌ   r×   rá   rå   rô   rø   rú   rü   rþ   rÿ   r	  r  r  r  r  r$  r*  r-  r1  r3  r5  r6  r;  r<  r?  r@  rC  rD  rG  rK  rS  rX  r[  Úsortedr˜  Úintersectionr\  r]  r_  ra  rm  rn  ro  rp  rq  rr  rs  ry  rz  r{  r|  r~  r…  r†  r‰  rŠ  rŒ  r–  rœ  rà   r¦  r§  rª  r¢  r©  r±  r²  r  r´  r¾  rÁ  rÃ  rÚ  rè  rø  rú  rý  r   r  r  r  r	  r  r  r  rn   rn   rn   ro   Ú<module>   sd  þþ

üéÿ2é(
  ÿ

õ'



üþ	


.B!=

<

H3<+4/

		
+þ3F






d ÿ(!*%!5