o
    ×tBh†P ã                   @   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¡ g d-¢ZJe
 Kg d.¢g d/¢g d0¢g d1¢g d2¢g d3¢g d4¢g d5¢g d6¢g d7¢g d8¢g d9¢g d:¢g d;¢g d<¢g d=¢g d>¢g d?¢g d@¢g dA¢g dB¢g dC¢g dD¢g¡ZLg dE¢ZMg dF¢ZNdGdHgdHdHgdHdGgdIdIgdIdJgdJdIggZOg dK¢ZPdHdHgdJdJgdLdJggZQg dM¢ZRe@ S¡ ZTe
jU VdI¡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dNdOdP\ZcZdeajedQdRZfdSefefdTk< eajgddUdVdRZhedWdOdXddY i¡ ZjeTj\eTjYdZœe^j\e^jYdZœe`j\e`jYdZœeOePdZœeLeMdZœeLeNdZœeceddZœefehdZœef ehdZœejehdZœe
 kd[¡ehdZœd\œZlelD ]Zmeelem d] ƒelem d^< qQd_d`„ Zndadb„ Zodcdd„ Zpejq rdeeE s¡ ¡ejq rdfeC¡dgdh„ ƒƒZtdidj„ Zudkdl„ Zvejq rdmeE w¡ ¡ejq rdfeC¡dndo„ ƒƒZxe$ejq rdmeE w¡ ¡ejq rdpdqdredsfdtdWedsfdudredsfdvdredNfg¡dwdx„ ƒƒƒZydydz„ Zzd{d|„ Z{d}d~„ Z|dd€„ Z}dd‚„ Z~dƒd„„ Zd…d†„ Z€ejq d‡¡dˆd‰„ ƒZ‚dŠd‹„ Zƒejq rdmeG w¡ ¡ejq rdŒddHie„dŽfddie…dfd‘die„d’fd‘dSie„d“fd‘d”ie…d•fd–dIie„d—fd–dSie„d˜fd–die„d™fd–d”ie…dšfd›dHie„dœfd›die„džfd›d”ie…dŸfd die„d¡fd dSie„d¢fd die„d£fd d¤ie„d¥fd¦die„d§fd¦d¨ie…d©fdªdHie„d«fdªd”ie…d¬fd­d®ie„d¯fd­d”ie…d°fg¡d±d²„ ƒƒZ†d³d´„ Z‡dµd¶„ Zˆdad¸d¹„Z‰ejq rdºeG¡d»d¼„ ƒZŠejq rdºeJ¡d½d¾„ ƒZ‹dad¿dÀ„ZŒejq rdºeG¡dÁdÂ„ ƒZejq rdºeJ¡dÃdÄ„ ƒZŽdÅdÆ„ ZdÇdÈ„ ZdÉ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â„ Zdãdä„ Zždådæ„ ZŸdçdè„ Z dédê„ Z¡dëdì„ Z¢dídî„ Z£dbdï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òg dþ¢¡ejq rdÿeªe«g¡d d„ ƒƒƒZ¬dcd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 rdfeB¡ejq rdòe¦e§el À¡ ƒd÷döh ƒ¡ejq rd(e.e0g¡d)d*„ ƒƒƒZÁejq rdfeC¡ejq rdòel À¡ ¡ejq rd(e/e1g¡d+d,„ ƒƒƒZÂd-d.„ ZÃd/d0„ ZÄd1d2„ ZÅd3d4„ ZÆejq rdºeG¡d5d6„ ƒZÇejq rdfg d7¢¡ejq rdeeE s¡ ¡d8d9„ ƒƒZÈejq rd:eÉdLƒ¡d;d<„ ƒZÊd=d>„ ZËejq rdfeC¡d?d@„ ƒZÌejq rdee.e0g¡ejq rdAdJdUg¡dBdC„ ƒƒZÍejq rdDdEdqe/fdEdqe1fdFdte/fdFdte1fg¡dGdH„ ƒZÎejq rdeeG s¡ ¡dIdJ„ ƒZÏdKdL„ ZÐdMdN„ ZÑdOdP„ ZÒdQdR„ ZÓdSdT„ ZÔdUdV„ ZÕdWdX„ ZÖdYdZ„ Z×d[d\„ ZØd]d^„ ZÙd_d`„ ZÚdS (d  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_TREES)r   r   r   r   )r   r   é   r   r   r   é   iòÿÿÿr   éüÿÿÿr   r   r   r   )r   r   é   é   r   r1   r   r   r0   éûÿÿÿçš™™™™™É?r   r/   r0   )éÿÿÿÿr6   r   r   ç      Àr   r   çÍÌÌÌÌÌ @r0   r   r   r7   r   r0   )r6   r6   r   g333333ó¿r   r   r   r   r   r   r5   r   r   r0   )r6   r6   r   r   r   r   r   r3   r   r   r   r   r   r0   )r6   éþÿÿÿr   r/   éýÿÿÿé
   r/   r   çš™™™™™	Àr   r/   r3   r1   r0   )çáz®Gá @r   éúÿÿÿç      à¿r   é   r   r   r<   é   ç      à?r   r:   r0   )r=   r   r>   r?   r   r@   r   r   r<   rA   r   r   r9   r0   )r=   é   r>   r?   r   r@   r   r   r<   rA   r   r   r9   r0   )r=   rC   r>   r?   r   r@   r   r   r<   rA   rB   r   r6   r   )é   rC   r2   r0   rB   r1   r;   r   r0   r4   r3   r   rD   r   )rD   r   r0   r0   r0   r6   r0   r   r   r9   r3   r   r0   r   )rD   r   r0   rD   r3   r6   r;   rD   r   r6   r0   rD   rD   r   )r0   r0   r   rD   rD   r6   r0   rD   r   r4   r0   rD   r3   r   )r3   r0   r   r3   r   r1   r;   r   r0   r4   r3   r   r3   r0   )r=   rC   r>   r?   r   r0   r   r   r<   rA   rB   r   r:   r0   )r=   rC   r>   r?   r   r0   r   r   r<   rA   ç      ø?r0   r6   r6   )r=   rC   r>   r?   r   r;   r   r   r<   rA   rB   r   r6   r6   )rD   r   r2   r0   rB   r9   r;   r   r0   r4   r3   r0   r   r6   )rD   r   r0   r0   r0   r9   r0   r   r   r9   r   r   r   r0   )rD   r0   r0   r0   rD   r6   r;   rD   r   r6   r   rD   r0   r0   )r0   r0   r   r   r0   r:   r0   rD   r   r4   r0   rD   r0   r0   )r3   r0   r   r0   r   r1   r0   r   r0   r9   r   r   r0   r   )r0   r0   r   r   r   r   r0   r0   r0   r0   r0   r0   r   r   r   r0   r   r   r0   r   r   r   r   )ç      ð?r8   ç333333ó?çš™™™™™©?r;   g333333@çÍÌÌÌÌÌ@g)\Âõ(ð?ç{®Gáz„?g×£p=
×@rI   çš™™™™™ñ?ç        rG   rD   r@   r   r   ç      @gî|?5^ºÉ?gö(\Âõð?çÍÌÌÌÌÌì?r   r9   r6   r0   rD   )r6   r6   r6   r0   r0   r0   r3   )r6   r0   r0   é   r;   )Úrandom_stateÚ	n_samplesÚ
n_features)é   r2   ©ÚsizerL   gš™™™™™é?r/   )rS   rS   g      Ð?)ÚdensityrP   ©ÚXÚy)rS   r3   )ÚirisÚdiabetesÚdigitsÚtoyÚ	clf_smallÚ	reg_smallÚ
multilabelú
sparse-posú
sparse-negú
sparse-mixÚzerosrX   ÚX_sparsec                 C   sþ   |j | j ksJ 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Úformatr   Úchildren_rightÚchildren_leftr   ÚnpÚlogical_notÚfeatureÚ	thresholdÚn_node_samplesÚsumr   Úimpurityr   Úvalue)ÚdÚsÚmessageÚexternalÚinternal© ry   ús/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/tree/tests/test_tree.pyÚassert_tree_equalÈ   s>   
ÿÿÿÿ

ÿÿýÿ
ÿr{   c                  C   st   t  ¡ D ]3\} }|dd}| tt¡ t| t¡td 	| ¡ƒ |ddd}| tt¡ t| t¡td 	| ¡ƒ qd S )Nr   ©rP   úFailed with {0}r0   )Úmax_featuresrP   )
Ú	CLF_TREESÚitemsÚfitrX   rY   r   ÚpredictÚTÚtrue_resultri   ©Únamer   Úclfry   ry   rz   Útest_classification_toyï   s   
ùrˆ   c                  C   s†   t  ¡ D ]<\} }|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   r|   ©Úsample_weightr}   rB   )r   r€   r   rX   rY   rl   ÚonesÚlenr   r‚   rƒ   r„   ri   Úfullr…   ry   ry   rz   Ú 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   rP   ©r   r~   rP   )rl   ÚabsÚminrY   Úarrayr„   r   rX   r   r‚   rƒ   )r   r   ÚaÚy_trainÚy_testÚregr‡   ry   ry   rz   Ú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 ]9\}}|dd}| 	|| ¡ | 
|| ¡dksSJ d |¡ƒ‚|ddd}| 	|| ¡ | 
|| ¡dksnJ d |¡ƒ‚q5d S )	N)r;   r;   r0   r2   r   r|   rF   r}   ©rP   r~   )rl   rd   ÚindicesÚshapeÚvstackÚravelrƒ   r   r€   r   Úscoreri   )rY   ÚgridxÚgridyrX   r†   r   r‡   ry   ry   rz   Útest_xor  s   

 ùr¢   c                  C   s¶   t t ¡ tƒD ]Q\\} }}||dd}| tjtj¡ t| 	tj¡tjƒ}|dks2J d 
| ||¡ƒ‚||ddd}| tjtj¡ t| 	tj¡tjƒ}|dksXJ d 
| ||¡ƒ‚qd S )Nr   r   rN   z0Failed with {0}, criterion = {1} and score = {2}rD   r‘   rB   )r   r   r€   ÚCLF_CRITERIONSr   rZ   ÚdataÚtargetr
   r‚   ri   )r†   r   r   r‡   rŸ   ry   ry   rz   Ú	test_iris3  s   ÿÿõr¦   z
name, Treec                 C   s\   ||dd}|  tjtj¡ ttj| tj¡ƒ}|t 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Ÿ   ry   ry   rz   Útest_diabetes_overfitE  s   ÿþr©   z&criterion, max_depth, metric, max_lossr*   é   é<   r+   r,   r-   c                 C   sT   |||ddd}|  tjtj¡ |tj| tj¡ƒ}d|  k r%|k s(J ‚ J ‚d S )NrA   r   )r   Ú	max_depthr~   rP   )r   r[   r¤   r¥   r‚   )r†   r   r   r¬   ÚmetricÚmax_lossr˜   Úlossry   ry   rz   Útest_diabetes_underfitR  s    r°   c                  C   sº   t  ¡ D ]V\} }|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¬   r~   rP   r   r}   rf   rC   )r   r€   r   rZ   r¤   r¥   Úpredict_probar   rl   rq   r‹   rœ   ri   r   Úargmaxr‚   r   ÚexpÚpredict_log_proba)r†   r   r‡   Úprob_predictry   ry   rz   Ú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¬   rP   )rl   ÚarangeÚnewaxisÚ	REG_TREESr€   r   ©rX   rY   r†   r   r˜   ry   ry   rz   Ú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} g d¢}t  ¡ D ]\}}|dd}| | |¡ t| | ¡|d |¡d	 qt ¡ D ]\}}|dd}| | |¡ t| | ¡|d |¡d	 q=d S )
Nr9   r6   r0   rD   )r0   r0   r0   r0   r0   r0   r   r|   r}   rf   )r   r€   r   r   r‚   ri   r¼   r   )rX   rY   r†   ÚTreeClassifierr‡   ÚTreeRegressorr˜   ry   ry   rz   Útest_pure_setŒ  s   (

ýrÁ   c               
   C   sÈ   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¡} t  g d¢¡}t jd	d
3 t ¡ D ]%\}}|dd}| | |¡ | | | ¡ | |  |¡ | |  | ¡ q,W d   ƒ d S 1 s]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Ä   )rF   g¿½A‹wæ?gtúQ?5?á?rL   g7G€¶í?g”ÞÛº¼Þ?g™¥b'Âß?Úraise)Úallr   r|   )rl   r”   Úerrstater¼   r€   r   r½   ry   ry   rz   Útest_numerical_stabilityœ  s(   ùÿ
û"ÿrË   c               	   C   sØ   t jdddddddd\} }t ¡ D ]2\}}|dd}| | |¡ |j}t |dk¡}|jd dks9J d	 	|¡ƒ‚|dksDJ 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ˆ  r;   r3   r   F©rQ   rR   Ún_informativeÚn_redundantÚ
n_repeatedÚshufflerP   r|   çš™™™™™¹?r}   ©rP   Úmax_leaf_nodes)r&   Úmake_classificationr   r€   r   Úfeature_importances_rl   rq   rœ   ri   r   rZ   r¤   r¥   rŒ   r   )rX   rY   r†   r   r‡   ÚimportancesÚn_importantÚclf2ry   ry   rz   Útest_importancesµ  s*   
ù


rÙ   c                  C   s@   t ƒ } t t¡ t| dƒ W d   ƒ d S 1 sw   Y  d S )NrÕ   )r   r§   ÚraisesÚ
ValueErrorÚgetattr©r‡   ry   ry   rz   Ú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Ð  r;   r3   r   FrÌ   r(   r2   )r   r¬   rP   r*   )r&   rÔ   r   r   r   r   rÕ   r   Útree_rn   rk   rj   rp   )rX   rY   r‡   r˜   ry   ry   rz   Ú)test_importances_gini_equal_squared_errorÛ  s,   
ùÿÿþrà   z7ignore:`max_features='auto'` has been deprecated in 1.1c                  C   s  t  ¡ D ]\} }|dd}| tjtj¡ |jtjjd ks J ‚qt ¡ D ]\} }|dd}| t	jt	j¡ |jdks=J ‚q%t
 ¡ D ]Ç\} }|dd}| t	jt	j¡ |jtt t	jjd ¡ƒkscJ ‚|dd}| t	jt	j¡ |jtt t	jjd ¡ƒks€J ‚|dd}| t	jt	j¡ |jdks”J ‚|dd}| t	jt	j¡ |jdks¨J ‚|dd}| t	jt	j¡ |jdks¼J ‚|d	d}| t	jt	j¡ |jtd	t	jjd  ƒksØJ ‚|d
d}| t	jt	j¡ |jt	jjd ksðJ ‚|d d}| t	jt	j¡ |jt	jjd ks	J ‚qBd S )NÚauto©r~   r0   rD   ÚsqrtÚlog2r3   rJ   rB   rF   )r¼   r€   r   r[   r¤   r¥   Úmax_features_rœ   r   rZ   r.   Úintrl   rã   rä   )r†   rÀ   r˜   r¿   r‡   ÚTreeEstimatorÚestry   ry   rz   Útest_max_featuresú  sD   


 
 





áré   c            	   	   C   s†  t  ¡ D ]o\} }|ƒ }t t¡ | t¡ W d   ƒ n1 s!w   Y  | tt¡ g d¢g}t t	¡ | |¡ W d   ƒ n1 sFw   Y  |ƒ }td d… }t t	¡ | t|¡ W d   ƒ n1 sjw   Y  t
 t¡}|ƒ }| |t¡ t| t¡tƒ |ƒ }t t¡ | t¡ W d   ƒ n1 sw   Y  | tt¡ t
 t¡}t t	¡ | |d d …dd …f ¡ W d   ƒ n1 sÊw   Y  t
 t¡j}|ƒ }| t
 t|¡t¡ t t	¡ | t¡ W d   ƒ n1 s÷w   Y  t t	¡ | t¡ W d   ƒ n	1 sw   Y  |ƒ }| tt¡ t t	¡ | |¡ W d   ƒ n	1 s6w   Y  t t	¡ | |¡ W d   ƒ n	1 sQw   Y  |ƒ }t t¡ | t¡ W d   ƒ n	1 sow   Y  qtdd}tjt	dd | g d¢gg d	¢¡ W d   ƒ n	1 s˜w   Y  tjt	d
d | g d¢gg d¢¡ W d   ƒ d S 1 s¼w   Y  d S )N)r9   r6   r0   r6   r0   r-   ©r   zy is not positive.*Poisson©Úmatch©r   r0   rD   )r   r   r   zSome.*y are negative.*Poisson)r2   gš™™™™™¹¿rD   )r   r€   r§   rÚ   r   r²   rX   r   rY   rÛ   rl   Úasfortranarrayr   r‚   rƒ   r„   Úasarrayr”   ÚdotÚapplyr   )	r†   rç   rè   ÚX2Úy2ÚXfÚtÚXtr‡   ry   ry   rz   Ú
test_error)  sr   ÿ
ÿÿ
ÿ
ÿÿÿÿÿÿ€
ÿ$ÿr÷   zparams, err_type, err_msgr¬   zmax_depth == -1, must be >= 1rK   z$max_depth must be an instance of intÚmin_samples_leafz#min_samples_leaf == 0, must be >= 1z$min_samples_leaf == 0.0, must be > 0Úfooz-min_samples_leaf must be an instance of floatÚmin_samples_splitz$min_samples_split == 1, must be >= 2z'min_samples_split == 0.0, must be > 0.0z(min_samples_split == 1.1, must be <= 1.0z.min_samples_split must be an instance of floatÚmin_weight_fraction_leafz.min_weight_fraction_leaf == -1, must be >= 0.0ç333333ã?z/min_weight_fraction_leaf == 0.6, must be <= 0.5z5min_weight_fraction_leaf must be an instance of floatr~   zmax_features == 0, must be >= 1z"max_features == 0.0, must be > 0.0z#max_features == 1.1, must be <= 1.0ÚfoobarzInvalid value for max_features.rÓ   z!max_leaf_nodes == 0, must be >= 2rE   z)max_leaf_nodes must be an instance of intÚmin_impurity_decreasez+min_impurity_decrease == -1, must be >= 0.0z2min_impurity_decrease must be an instance of floatÚ	ccp_alphag      ð¿z!ccp_alpha == -1.0, must be >= 0.0z&ccp_alpha must be an instance of floatc                 C   st   d| v rt jt j}}ntjtj}}|di |¤Ž}tj||d | ||¡ W d  ƒ dS 1 s3w   Y  dS )z‚Check parameter validation in DecisionTreeClassifier, DecisionTreeRegressor,
    ExtraTreeClassifier, and ExtraTreeRegressor.
    Ú
Classifierrë   Nry   )rZ   r¤   r¥   r[   r§   rÚ   r   )r†   r   ÚparamsÚerr_typerg   rX   rY   rè   ry   ry   rz   Útest_tree_params_validationk  s   P"ÿr  c                  C   sÒ   t jtjtjjd} tj}tdt	 
¡ ƒD ]R\}}t	| }|d|dd}| | |¡ |jj|jjdk }t  |¡dksAJ d |¡ƒ‚|d	|dd}| | |¡ |jj|jjdk }t  |¡dksfJ d |¡ƒ‚qd
S )z Test min_samples_split parameter©Údtype©Néè  r;   r   )rú   rÓ   rP   r6   é	   r}   r5   N)rl   rî   rZ   r¤   r   Ú_treeÚDTYPEr¥   r   r.   Úkeysr   rß   rp   rk   r“   ri   )rX   rY   rÓ   r†   rç   rè   Únode_samplesry   ry   rz   Útest_min_samples_splitÄ  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sHJ d |¡ƒ‚|d|dd}| | |¡ |j | ¡}t  |¡}||dk }t  |¡dkstJ d |¡ƒ‚qd S )	Nr  r  r2   r   )rø   rÓ   rP   r/   r}   rÑ   )rl   rî   rZ   r¤   r   r	  r
  r¥   r   r.   r  r   rß   rñ   Úbincountr“   ri   )	rX   rY   rÓ   r†   rç   rè   ÚoutÚnode_countsÚ
leaf_country   ry   rz   Útest_min_samples_leafã  s*   ÿ
ÿ
é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d}
|
j|||d	 |rV|
j | ¡ ¡}n|
j |¡}tj||d
}||dk }t |¡||
j ks|J d | |
j¡ƒ‚q8|jd }t	dt 
ddd¡ƒD ]@\}}	||	|dd}
|
 ||¡ |r¨|
j | ¡ ¡}n|
j |¡}t |¡}||dk }t |¡||
j ksÌJ d | |
j¡ƒ‚qŒdS )zPTest if leaves contain at least min_weight_fraction_leaf of the
    training setre   rX   rY   r   r  rB   rA   )rû   rÓ   rP   r‰   )Úweightsz,Failed with {0} min_weight_fraction_leaf={1}N)ÚDATASETSÚastyperl   Úfloat32ÚrngÚrandrœ   rq   r.   r   Úlinspacer   rß   rñ   Útocsrr  r“   rû   ri   )r†   r&   ÚsparserX   rY   r  Útotal_weightrç   rÓ   Úfracrè   r  Únode_weightsÚleaf_weightsry   ry   rz   Úcheck_min_weight_fraction_leaf  sN   
ÿÿÿ
ÿ
ÿÿñr   r†   c                 C   ó   t | dƒ d S ©NrZ   ©r   ©r†   ry   ry   rz   Ú,test_min_weight_fraction_leaf_on_dense_inputA  ó   r%  c                 C   ó   t | ddƒ d S ©Nr`   Tr#  r$  ry   ry   rz   Ú-test_min_weight_fraction_leaf_on_sparse_inputF  ó   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 ]F\}}|||ddd	}	|	 ||¡ |rM|	j	 
| ¡ ¡}
n|	j	 
|¡}
t |
¡}||dk }t |¡t||	j dƒksvJ d
 | |	j|	j¡ƒ‚q0tdt ddd¡ƒD ]I\}}|||ddd	}	|	 ||¡ |rž|	j	 
| ¡ ¡}
n|	j	 
|¡}
t |
¡}||dk }t |¡t||	j ||	j ƒksÊJ d
 | |	j|	j¡ƒ‚qdS )zzTest the interaction between min_weight_fraction_leaf and
    min_samples_leaf when sample_weights is not provided in fit.re   rX   rY   r   r  rB   r3   r2   )rû   rÓ   rø   rP   zBFailed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}rÑ   N)r  r  rl   r  rœ   r.   r   r  r   rß   rñ   r  r  r“   Úmaxrû   ri   rø   )r†   r&   r  rX   rY   r  rç   rÓ   r  rè   r  r  r  ry   ry   rz   Ú4check_min_weight_fraction_leaf_with_min_samples_leafK  s`   
ü


ÿ
ÿþü

þ
ÿýîr,  c                 C   r!  r"  ©r,  r$  ry   ry   rz   ÚBtest_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_input‡  r&  r.  c                 C   r'  r(  r-  r$  ry   ry   rz   ÚCtest_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_inputŒ  r*  r/  c                  C   s–  t jddd\} }tdt ¡ ƒD ]¸\}}t| }||dd}||ddd}||d	dd}||d
dd}|df|df|d	f|d
ffD ]†\}	}
|	j|
ksSJ d |	j|
¡ƒ‚|	 | |¡ t|	j	j
ƒD ]g}|	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ÆJ d ||
¡ƒ‚q_qAqd S )Nr¸   r±   ©rQ   rP   r  r   ©rÓ   rP   rH   )rÓ   rþ   rP   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þ   ri   r   Úrangerß   rh   rk   r   rr   Úweighted_n_node_samplesrj   rœ   )rX   rY   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_decreasery   ry   rz   Útest_min_impurity_decrease‘  sh   ÿÿÿüÿÿÿÿ
ÿÿ€ãôîrG  c               	      sð   t  ¡ D ]q\} }d| v rtjtj}}ntjtj}}|dd‰ ˆ  ||¡ ˆ  ||¡}g d¢}‡ fdd„|D ƒ}t 	ˆ ¡}t 
|¡}t|ƒˆ jksLJ ‚| ||¡}	||	ks]J d | ¡ƒ‚|D ]}
tt|j|
ƒ||
 d|
› d	| › d
 q_qdS )z8Test pickling preserves Tree properties and performance.r   r   r|   )r¬   rh   ÚcapacityÚ	n_classesrk   rj   Ún_leavesrn   ro   rr   rp   r3  rs   c                    s   i | ]	}|t ˆ j|ƒ“qS ry   )rÜ   rß   )Ú.0Ú	attribute©rè   ry   rz   Ú
<dictcomp>õ  ó    ÿztest_pickle.<locals>.<dictcomp>z6Failed to generate same score  after pickling with {0}z"Failed to generate same attribute z after pickling with rf   N)r.   r€   rZ   r¤   r¥   r[   r   rŸ   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__ri   r   rÜ   rß   )r†   rç   rX   rY   rŸ   Ú
attributesÚfitted_attributeÚserialized_objectr5  Úscore2rL  ry   rM  rz   Útest_pickleÙ  s8   

ÿ


ÿ
ÿüÿÚrY  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Š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 ‚qlt	 ¡ D ]\}}
|
dd}| | |¡ |¡}t
||ƒ |jdksëJ ‚qÍd S )
Nr9   r6   r0   rD   r   r3   r|   ©r/   rD   )r/   r/   )r   r€   r   r‚   r   rœ   r²   rŒ   rµ   r¼   r   )rX   rY   rƒ   Úy_truer†   r¿   r‡   Úy_hatÚprobaÚ	log_probarÀ   r˜   ry   ry   rz   Útest_multioutput  s^   ôô





ür_  c                  C   sÆ   t  ¡ D ]\\} }|dd}| tt¡ |jdksJ ‚t|jddgƒ t 	tt 
t¡d f¡j}|dd}| t|¡ t|jƒdksCJ ‚t|jƒdksLJ ‚t|jddgƒ t|jddgddggƒ qd S )Nr   r|   rD   r6   r0   r9   )r   r€   r   rX   rY   Ú
n_classes_r   Úclasses_rl   r   r”   rƒ   rŒ   )r†   r¿   r‡   Ú_yry   ry   rz   Útest_classes_shapeH  s   

ñrc  c                  C   sf   t jd d… } t jd d… }td|ƒ}t ¡ D ]\}}|dd}|j| ||d t| | ¡|ƒ qd S )Né}   Úbalancedr   r|   r‰   )	rZ   r¤   r¥   r'   r   r€   r   r   r‚   )Úunbalanced_XÚunbalanced_yrŠ   r†   r¿   r‡   ry   ry   rz   Útest_unbalanced_iris\  s   

ýrh  c                  C   sˆ  t t ¡ tjtjgƒD ]¶\\} }}|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   r|   r  ÚC)Úorderr  ÚFr3   )r   r.   r€   rl   Úfloat64r  rï   rZ   r¤   r¥   r   r   r‚   Úascontiguousarrayr   r   )r†   rç   r  rè   rX   rY   ry   ry   rz   Útest_memory_layouth  s4   ÿ
Úrn  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‚J ‚d||d	k< tddd}|j| ||d |j	j
d dks J ‚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   rL   é2   r   r|   r‰   éÈ   r0   rD   gR¸…ëQà?r¹   g     °b@rB   g     ÀH@)Ú	minlength)rl   rº   r»   r‹   r   r   r   r‚   rd   rß   ro   rZ   r¤   r¥   r  Úrandintrœ   r  rk   r   r	  r   r   )rX   rY   rŠ   r‡   Ú
duplicatesrØ   rx   ry   ry   rz   Útest_sample_weight“  sD   






ÿru  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 d   ƒ n1 s;w   Y  t  d¡}d}tjt|d	 |j
| ||d W d   ƒ d S 1 sbw   Y  d S )
Nro  rL   rp  r   r|   r0   r‰   z3Singleton.* cannot be considered a valid collectionrë   )rl   rº   r»   r‹   r   Úrandomr  r§   rÚ   rÛ   r   r”   Ú	TypeError)rX   rY   r‡   rŠ   Úexpected_errry   ry   rz   Útest_sample_weight_invalidÇ  s   

ÿ
"ÿry  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   r|   re  ©Úclass_weightrP   g       @rF   rí   r0   ro  g      Y@rD   N)r   r   rZ   r¤   r¥   r   rÕ   rl   r   rƒ   r‹   rœ   )	r†   r¿   Úclf1rØ   Ú
iris_multiÚclf3Úclf4rŠ   r{  ry   ry   rz   Úcheck_class_weightsÙ  s@   



ýú

r€  c                 C   ó   t | ƒ d S ©N)r€  r$  ry   ry   rz   Útest_class_weights  ó   rƒ  c                 C   s,  t |  }t tt t¡d f¡j}|ddd}t t¡ | 	t
t¡ W d   ƒ n1 s-w   Y  t t¡ | 	t
|¡ W d   ƒ n1 sHw   Y  |ddd}t t¡ | 	t
|¡ W d   ƒ n1 siw   Y  |dddœgdd}t t¡ | 	t
|¡ W d   ƒ d S 1 sw   Y  d S )	NrD   z	the larchr   rz  r0   rB   rF   ©r6   r0   )r   rl   r   rY   r”   rƒ   r§   rÚ   rÛ   r   rX   )r†   r¿   rb  r‡   ry   ry   rz   Úcheck_class_weight_errors  s"   ÿÿÿ"ÿr†  c                 C   r  r‚  )r†  r$  ry   ry   rz   Útest_class_weight_errors$  r„  r‡  c                  C   sX   t jddd\} }d}t ¡ D ]\}}|d |d d | |¡}| ¡ |d ks)J ‚qd S ©Nro  r0   r0  r/   )r¬   rÓ   )r&   Úmake_hastie_10_2r.   r€   r   Úget_n_leaves©rX   rY   Úkr†   rç   rè   ry   ry   rz   Útest_max_leaf_nodes)  s   þr  c                  C   sP   t jddd\} }d}t ¡ D ]\}}|d|d | |¡}| ¡ dks%J ‚qd S rˆ  )r&   r‰  r.   r€   r   Ú	get_depthr‹  ry   ry   rz   Útest_max_leaf_nodes_max_depth2  s   þr  c                  C   sZ   dD ](} t tƒ  dgdggddg¡j| ƒ}d|jd   kr%dk s*J dƒ‚ J dƒ‚qd S )N)rI  rs   rk   rj   ro   rr   rn   rp   r   r0   r:   r3   z Array points to arbitrary memory)rÜ   r   r   rß   Úflat)Úattrrs   ry   ry   rz   Útest_arrays_persist;  s   "
,ôr’  c                  C   s\   t dƒ} t d¡}|  ddd¡}t ¡ D ]\}}|dd}| ||¡ |jjdks+J ‚qd S )Nr   )r;   rS   rD   )r;   r|   )	r   rl   rd   rs  r.   r€   r   rß   r¬   )rP   rX   rY   r†   rç   rè   ry   ry   rz   Útest_only_constant_featuresM  s   

ýr“  c                  C   s~   t  t  g d¢gt  d¡f¡¡} g d¢}t ¡ D ]$\}}d|vr<|ddd}| | |¡ |jjdks4J ‚|jj	d	ks<J ‚qd S )
N)r   r   r   r   r   r0   rD   r/   r2   rA   é   )r/   r@   )r   r   r   r0   r0   rD   rD   rD   r3   r3   r3   Ú	ExtraTreer   r0   rš   rD   r2   )
rl   Ú	transposer   rd   r.   r€   r   rß   r¬   rh   ©rX   rY   r†   rç   rè   ry   ry   rz   Ú,test_behaviour_constant_feature_after_splitsW  s   ÿ€úr˜  c                  C   sà   t  t  dgdgdgdgg¡t  d¡g¡} t  g d¢¡}t ¡ D ]$\}}|ddd}| | |¡ |jjdks8J ‚t	| 
| ¡t  dd	¡ƒ q t ¡ D ]$\}}|ddd}| | |¡ |jjdksaJ ‚t	| | ¡t  d
d	¡ƒ qId S )NrF   rL   )r/   r  )rL   rF   rL   rF   r   r0   rš   rZ  rB   )r/   )rl   Úhstackr”   rd   r   r€   r   rß   r¬   r   r²   r   r¼   r‚   r—  ry   ry   rz   Ú(test_with_only_one_non_constant_featurese  s   *ürš  c               
   C   sp   t  dd¡ t j¡ dd¡} tƒ }z| | g d¢¡ W d S  ty7 } zdt|ƒv s,J ‚W Y d }~d S d }~ww )Ng¥\Ãñ)c=Hr/   r6   r0   )r   r0   r   r0   r  )	rl   Úrepeatr  rl  Úreshaper   r   rÛ   Ústr)rX   r‡   Úery   ry   rz   Útest_big_inputv  s   €ÿrŸ  c                  C   sB   ddl m}  t t¡ | ƒ  W d   ƒ d S 1 sw   Y  d S )Nr   ©Ú_realloc_test)Úsklearn.tree._utilsr¡  r§   rÚ   ÚMemoryErrorr   ry   ry   rz   Útest_realloc€  s   "ÿr¤  c                  C   sÒ   dt  d¡ } tj dd¡}tj ddd¡}d| d  }td|d}t t	¡ | 
||¡ W d   ƒ n1 s8w   Y  d| d  d }td|d}t t¡ | 
||¡ W d   ƒ d S 1 sbw   Y  d S )	NrC   ÚPr;   rD   r   r0   Úbest)ÚsplitterrÓ   )ÚstructÚcalcsizerl   rv  Úrandnrs  r   r§   rÚ   Ú	Exceptionr   r£  )Ún_bitsrX   rY   Úhuger‡   ry   ry   rz   Útest_huge_allocations‡  s   ÿ"ÿr®  c                 C   s<  t |  }t| d }t| d }t| d }|dv r3|jd d }|d |… }|d |… }|d |… }tttfD ]c}||ƒ}|d|d ||¡}	|d|d ||¡}
t|	j|
jd 	| ¡ƒ |	 
|¡}| tv rp|	 |¡}|	 |¡}tttfD ]%}||tjd	}t|
 
|¡|ƒ | tv ršt|
 |¡|ƒ t|
 |¡|ƒ quq8d S )
NrX   re   rY   )r\   r[   r   r2   ©rP   r¬   ú5{0} with dense and sparse format gave different treesr  )r.   r  rœ   r   r   r   r   r{   rß   ri   r‚   r   r²   rµ   rl   r  r   )r   Údatasetr¬   rç   rX   re   rY   rQ   Úsparse_formatrt   ru   Úy_predÚy_probaÚy_log_probaÚsparse_matrixÚX_sparse_testry   ry   rz   Úcheck_sparse_inputœ  sB   ý



ÿ€ùîr¸  Ú	tree_typer±  )r^   r]   r\   r`   ra   rb   rc   rd   c                 C   s    |dkrdnd }t | ||ƒ d S )Nr\   r3   ©r¸  )r¹  r±  r¬   ry   ry   rz   Útest_sparse_inputÇ  s   r»  r[   r_   c                 C   s   t | |dƒ d S )NrD   rº  )r¹  r±  ry   ry   rz   Útest_sparse_input_reg_treesÚ  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 )NrX   re   rY   r   r0   rD   )rP   r~   r¬   r°  r;   )rP   r~   rú   )rP   rø   r3   rÒ   )	r.   r  r   r{   rß   ri   r   r‚   rœ   )r   r±  rç   rX   re   rY   rt   ru   ry   ry   rz   Úcheck_sparse_parametersâ  sP   ýÿýÿýýr½  c           
      C   s¢   t |  }t| d }t| d }t| d }| tv rtnt}|D ].}|dd|d ||¡}|dd|d ||¡}	t|j|	jd | ¡ƒ t	|	 
|¡| 
|¡ƒ q d S )NrX   re   rY   r   r3   )rP   r¬   r   r°  )r.   r  r¼   ÚREG_CRITERIONSr£   r   r{   rß   ri   r   r‚   )
r   r±  rç   rX   re   rY   Ú
CRITERIONSr   rt   ru   ry   ry   rz   Úcheck_sparse_criterion  s"   ÿýõrÀ  )ra   rb   rc   rd   Úcheckc                 C   s   || |ƒ d S r‚  ry   )r¹  r±  rÁ  ry   ry   rz   Útest_sparse+  s   rÂ  c                 C   sv  t |  }|}t |¡}tdƒ}g }g }d}	|	g}
t|ƒD ]/}| |d¡}| |¡d |… }| |¡ |jdd|fdd }| |¡ |	|7 }	|
 |	¡ qt |¡}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’J ‚|jdk ¡ dksJ ‚|d|d	 ||¡}|d|d	 ||¡}t|j|jd
 | ¡ƒ ||f}t||ƒD ]s\}}t|j |¡|j |¡ƒ t| |¡| |¡ƒ t| |¡|j |¡ƒ t|j |¡ ¡ |j |¡ ¡ ƒ t| |¡ ¡ | |¡ ¡ ƒ t| |¡ ¡ |j |¡ ¡ ƒ t| |¡| |¡ƒ | tv r8t| |¡| |¡ƒ qÅd S )Nr   rB   r3   rT   r0   r  ©rœ   rL   r¯  r°  )r.   rl   rº   r   r2  ÚbinomialÚpermutationÚappendÚconcatenater”   r  r   Útoarrayr   rs  Úcopyr¤   rq   r   r{   rß   ri   r   r   rñ   Údecision_pathr‚   r   r²   )r   r¬   rR   rç   rQ   ÚsamplesrP   r›   r¤   ÚoffsetÚindptrÚiÚn_nonzero_iÚ	indices_iÚdata_ire   rX   r·  ÚX_testrY   rt   ru   ÚXsÚX1rò   ry   ry   rz   Úcheck_explicit_sparse_zeros2  sh   



ýÿÿÿ
€îrÕ  c                 C   r  r‚  )rÕ  )r¹  ry   ry   rz   Útest_explicit_sparse_zerosx  r„  rÖ  c                 C   sÊ   t |  }tjd d …df  ¡ }tjd d …df  d¡}tj}t t¡ |dd 	||¡ W d   ƒ n1 s7w   Y  |dd}| 	||¡ t t¡ | 
|g¡ W d   ƒ d S 1 s^w   Y  d S )Nr   r…  r|   )r.   rZ   r¤   rž   rœ  r¥   r§   rÚ   rÛ   r   r‚   )r†   rç   rX   ÚX_2drY   rè   ry   ry   rz   Úcheck_raise_error_on_1d_input}  s   ÿ
"ÿrØ  c                 C   s4   t ƒ  t| ƒ W d   ƒ d S 1 sw   Y  d S r‚  )r   rØ  r$  ry   ry   rz   Útest_1d_inputŽ  s   
"ÿrÙ  c                 C   sZ   | dd}|j |||d |jjdksJ ‚| ddd}|j |||d |jjdks+J ‚d S )Nr   r|   r‰   r0   gš™™™™™Ù?)rP   rû   )r   rß   r¬   )rç   rX   rY   rŠ   rè   ry   ry   rz   Ú"_check_min_weight_leaf_split_level”  s   
rÚ  c                 C   sZ   t |  }t dgdgdgdgdgg¡}g d¢}g d¢}t||||ƒ t|t|ƒ||ƒ d S )Nr   r0   )r   r   r   r   r0   )r5   r5   r5   r5   r5   )r.   rl   r”   rÚ  r   )r†   rç   rX   rY   rŠ   ry   ry   rz   Ú!check_min_weight_leaf_split_levelž  s   rÛ  c                 C   r  r‚  )rÛ  r$  ry   ry   rz   Ú test_min_weight_leaf_split_level©  r„  rÜ  c                 C   sD   t jtjjdd}t|  ƒ }| t t¡ t| 	t ¡|j
 	|¡ƒ d S ©NF©rÉ  )ÚX_smallr  r   r	  r
  r.   r   Úy_smallr   rñ   rß   ©r†   Ú	X_small32rè   ry   ry   rz   Úcheck_public_apply®  s   
rã  c                 C   sH   t tjtjjddƒ}t|  ƒ }| tt¡ t	| 
t¡|j 
|¡ƒ d S rÝ  )r   rß  r  r   r	  r
  r.   r   rà  r   rñ   rß   rá  ry   ry   rz   Úcheck_public_apply_sparse¶  s   
rä  c                 C   r  r‚  )rã  r$  ry   ry   rz   Útest_public_apply_all_trees¾  r„  rå  c                 C   r  r‚  )rä  r$  ry   ry   rz   Útest_public_apply_sparse_treesÃ  r„  ræ  c                  C   sP   t j} t j}tddd | |¡}| | d d… ¡ ¡ }t|g d¢g d¢gƒ d S )Nr   r0   r¯  rD   )r0   r0   r   )r0   r   r0   )rZ   r¤   r¥   r   r   rÊ  rÈ  r   )rX   rY   rè   Únode_indicatorry   ry   rz   Útest_decision_path_hardcodedÈ  s
   rè  c                    sÚ   t j}t j}|jd }t|  }|ddd}| ||¡ | |¡}| ¡ ‰ ˆ j||jj	fks/J ‚| 
|¡}‡ fdd„t|ƒD ƒ}t|tj|dƒ |jjtk}	tt ˆ |	¡tj|dƒ ˆ jdd ¡ }
|jj|
kskJ ‚d S )	Nr   rD   r¯  c                    s   g | ]
\}}ˆ ||f ‘qS ry   ry   )rK  rÎ  Új©rç  ry   rz   Ú
<listcomp>ß  s    z'check_decision_path.<locals>.<listcomp>rÃ  r0   ©Úaxis)rZ   r¤   r¥   rœ   r.   r   rÊ  rÈ  rß   rh   rñ   Ú	enumerater   rl   r‹   rk   r   rð   rq   r+  r¬   )r†   rX   rY   rQ   rç   rè   Únode_indicator_csrÚleavesÚleave_indicatorÚ
all_leavesr¬   ry   rê  rz   Úcheck_decision_pathÐ  s$   


ÿró  c                 C   r  r‚  )ró  r$  ry   ry   rz   Útest_decision_pathí  r„  rô  c                 C   sX   t ttƒ}}t|  }t t¡ |dd ||¡ W d   ƒ d S 1 s%w   Y  d S )Nr   r|   )ÚX_multilabelr   Úy_multilabelr.   r§   rÚ   rw  r   )r†   rX   rY   rç   ry   ry   rz   Úcheck_no_sparse_y_supportò  s
   "ÿr÷  c                 C   r  r‚  )r÷  r$  ry   ry   rz   Ú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g d¢g d	¢d
 t| jjg d¢ƒ t| jjjg d¢ƒ | jdgdgdgdgdggg d¢t 	d¡d
 t| jjg d¢ƒ t| jjjg d¢ƒ | jdgdgdgdgdggg d¢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+   rD   )rP   r   rÓ   r3   r2   rC   )rA   r”  r3   r/   r3   )rü   ç333333Ó?rÑ   rF   rù  )rX   rY   rŠ   )g²…,dñ?gÜ¶mÛ¶mÛ?gÿÿÿÿÿÿç?)ç      @g      @rú  )gffffffö?rE   gUUUUUUõ?)r/   rM   rú  rW   N)
r   r   r   rß   rr   r   rs   r  rl   r‹   )Údt_maery   ry   rz   Útest_maeÿ  s    Jÿý.&rü  c                  C   sê   d} t jdt jd}d}dd„ }tjtj|fD ][}t ¡ D ]'\}}|| |ƒ}||ƒ ¡ }|\}	\}
}}||	ks9J ‚| |
ks?J ‚t||ƒ qt	 ¡ D ](\}}|| |ƒ}||ƒ ¡ }|\}	\}
}}||	kseJ ‚| |
kskJ ‚||ksqJ ‚qIqd S )Nr3   r  ro  c                 S   s   t  t  | ¡¡S r‚  )rP  rR  rQ  )Úobjry   ry   rz   Ú_pickle_copyj  ó   z)test_criterion_copy.<locals>._pickle_copy)
rl   rº   ÚintprÉ  Údeepcopyr$   r€   Ú
__reduce__r   r%   )Ú	n_outputsrI  rQ   rþ  Ú	copy_funcÚ_ÚtypenameÚcriteriaÚresultÚ	typename_Ú
n_outputs_r`  Ú
n_samples_ry   ry   rz   Útest_criterion_copyc  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seJ ‚t|ƒdksmJ ‚q.d S )Nr   ro  r@   g±¡*ÓÎâGr  r6   r|   )rl   rv  ÚRandomStaterª  Ú
nan_to_numr  r   r   r   rñ   ÚsetÚwhererß   rk   r   Ú
differenceÚisfinitero   rŒ   )
r¤   ÚX_fullre   rY   rX   r   Úterminal_regionsÚ	left_leafÚ
empty_leafÚinfinite_thresholdry   ry   rz   Ú"test_empty_leaf_infinite_threshold  s   

ùr  Útree_clsc           	      C   ó€   t | }|d |d }}|ddd}| ||¡}|j}|j}t t |¡dk¡s+J ‚t t |¡dk¡s7J ‚t||||ƒ d S ©NrX   rY   rS   r   r1  ©r  Úcost_complexity_pruning_pathÚ
ccp_alphasÚ
impuritiesrl   rÉ   ÚdiffÚassert_pruning_creates_subtree©	r   r±  r  rX   rY   rè   ÚinfoÚpruning_pathr  ry   ry   rz   Ú'test_prune_tree_classifier_are_subtrees  s   r%  c           	      C   r  r  r  r"  ry   ry   rz   Ú'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   r|   r0   r;   )rP   rÿ   )r   r   Úassert_is_subtreerß   )r|  rØ   ry   ry   rz   Útest_prune_single_node_treeµ  s
   
r(  c           	      C   s\   g }|D ]}| d|dd  ||¡}| |¡ qt||dd … ƒD ]\}}t|j|jƒ q d S )NrS   r   )rÓ   rÿ   rP   r0   )r   rÆ  Úzipr'  rß   )	Úestimator_clsrX   rY   r$  Ú
estimatorsrÿ   rè   Úprev_estÚnext_estry   ry   rz   r!  Á  s   ÿÿr!  c           	      C   s  | j |j ksJ ‚| j|jksJ ‚| j}| j}|j}|j}dg}|r‰| ¡ \}}t| j| |j| ƒ t| j| |j| ƒ t| j	| |j	| ƒ t| j
| |j
| ƒ || || krdtt|j| ƒ n!t| j| |j| ƒ | || || f¡ | || || f¡ |s!d S d S )N)r   r   )rh   r¬   rk   rj   Úpopr   rs   r   rr   rp   r3  r   ro   rÆ  )	r   ÚsubtreeÚtree_c_leftÚtree_c_rightÚsubtree_c_leftÚsubtree_c_rightÚstackÚtree_node_idxÚsubtree_node_idxry   ry   rz   r'  Ð  s@   ÿÿÿþÿÿçr'  c                 C   sz   t tjtjjddƒ}t tjttjjdƒ}t	|  ƒ }| 
||¡ t| |¡| t¡ƒ t| |¡ ¡ | t¡ ¡ ƒ d S )NFrÞ  r  )r   rß  r  r   r	  r
  rl   r”   rà  r.   r   r   r‚   rÊ  Útodense)r†   Ú
X_readonlyÚ
y_readonlyrè   ry   ry   rz   Úcheck_apply_path_readonlyø  s   
ÿr:  c                 C   r  r‚  )r:  r$  ry   ry   rz   Ú"test_apply_path_readonly_all_trees  r„  r;  )r*   r,   r-   c                 C   sL   t jt j}}|| d}| ||¡ t | |¡¡t t |¡¡ks$J ‚d S )Nrê   )	r[   r¤   r¥   r   rl   rq   r‚   r§   r¨   )r   r   rX   rY   r˜   ry   ry   rz   Ú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}g d¢}t d| d}| ||¡ t | |¡¡dks6J ‚t d| d}| ||¡ t | |¡dk¡sNJ ‚d	}tj|d d d
d||d d | d\}}d|d|k |dk @ < t |¡}t d| d}| ||¡ t | |¡dk¡sŒJ ‚d S )Nr   r0   rD   r3   )r   r   r   r   r0   rD   r3   r/   r*   r   r-   r;   rü   r  )Úeffective_rankÚtail_strengthrQ   rR   rÍ   rP   r6   )	r   r   rl   Úaminr‚   rÉ   r&   Úmake_regressionr’   )r=  rX   rY   r˜   rR   ry   ry   rz   Útest_poisson_zero_nodes  s,   4


ú	
rB  c                  C   sB  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 ]6\}}}t|| |¡ƒ}t|t  | |¡dd ¡ƒ}t|| |¡ƒ}|dkr–|d| k s–J ‚|d| k sžJ ‚qhd S )Nr±   )éô  rC  r;   )rQ   rR   rP   r9   rD   )ÚlowÚhighrU   r   rì  )Úlam)Ú	test_sizerP   r-   r;   )r   rú   rP   r*   Úmean)ÚstrategyÚtrainÚtestgVçž¯Ò<rB   g      è?)rl   rv  r  r&   Úmake_low_rank_matrixÚuniformr+  r-   r´   r   r   r   r	   r   r‚   Úclip)r  Ún_trainÚn_testrR   rX   ÚcoefrY   ÚX_trainrÒ  r–   r—   Útree_poiÚtree_mseÚdummyÚvalÚ
metric_poiÚ
metric_mseÚmetric_dummyry   ry   rz   Útest_poisson_vs_mse8  s6   

ÿÿÿÿörZ  c                 C   s>  t | d}tdi |¤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di |¤Žj|||d}tdi |¤Žj|	|
dd}|jj|jjks’J ‚t| |¡| |¡ƒ dS )z4Test that the impact of sample_weight is consistent.rê   rP   r±   )rd   r‹   ÚDecisionTreeRegressor_rd   )Úkindr   )r;   r2   r0   rì  rÑ   NrD   r‰   ry   )Údictr   r   rl   rv  r  r  rH  r“   rÇ  r‹   rŒ   r   rß   rh   r   r‚   )r   Útree_paramsr   r\  r  rQ   rR   rX   rY   rò   ró   Úsample_weight_1Útree1Útree2ry   ry   rz   Ú6test_decision_tree_regressor_sample_weight_consistencyb  s*   

ÿÿrb  rI  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.)rp  r2   r   r±   )rI  rQ   rR   rÍ   rÎ   rP   r)   é+   r   Úentropyz> with criterion 'entropy' and 'log_loss' gave different trees.N)r&   rÔ   r   r{   rß   r   r‚   )r   rI  rQ   rR   rX   rY   Útree_log_lossÚtree_entropyry   ry   rz   Ú'test_criterion_entropy_same_as_log_lossˆ  s"   
úýrg  z"old_criterion, new_criterion, TreeÚmseÚmaec                 C   sx   || d}t jtd| › dd | tt¡ W d   ƒ n1 s!w   Y  ||d tt¡}t| t¡| t¡ƒ d S )Nrê   zCriterion 'z' was deprecatedrë   )r§   ÚwarnsÚFutureWarningr   rX   rY   r   r‚   )Úold_criterionÚnew_criterionr   r   Útree_newry   ry   rz   Útest_criterion_deprecated   s   
ÿýro  c                 C   sH   d}t jt|d | ƒ  tt¡j W d   ƒ d S 1 sw   Y  d S )NzjThe attribute `n_features_` is deprecated in 1.0 and will be removed in 1.2. Use `n_features_in_` instead.rë   )r§   rj  rk  r   rX   rY   Ún_features_)r   Údepr_msgry   ry   rz   Útest_n_features_deprecated¶  s
   ÿ"ÿrr  c                     sv   t jdd\} }tddd‰ ˆ  | |¡ ˆ  | |¡}dd„ ‰‡ ‡fdd„}t |ƒ ¡}| | |¡}t ||¡s9J ‚d S )	Nr   r|   r3   r¯  c                 S   s   |   ¡  ¡  ¡ S r‚  )ÚbyteswapÚnewbyteorderr  )Úarrry   ry   rz   Úreduce_ndarrayÊ  rÿ  z8test_different_endianness_pickle.<locals>.reduce_ndarrayc                     sB   t  ¡ } t | ¡}tj ¡ |_ˆ|jtj< | 	ˆ ¡ |  
d¡ | S ©Nr   )ÚioÚBytesIOrP  ÚPicklerÚcopyregÚdispatch_tablerÉ  rl   ÚndarrayÚdumpÚseek©ÚfÚp©r‡   rv  ry   rz   Ú get_pickle_non_native_endiannessÍ  s   


zJtest_different_endianness_pickle.<locals>.get_pickle_non_native_endianness)	r&   rÔ   r   r   rŸ   rP  Úloadrl   Úisclose)rX   rY   rŸ   r„  Únew_clfÚ	new_scorery   rƒ  rz   Ú test_different_endianness_pickleÃ  s   
r‰  c                     s~   t jdd\} }tddd‰ˆ | |¡ ˆ | |¡}G dd„ dtƒ‰ ‡ ‡fdd„}t |ƒ ¡}| | |¡}t 	||¡s=J ‚d S )	Nr   r|   r3   r¯  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 r‚  )Ú
isinstancerl   r}  rs  rt  ÚsuperÚsave)Úselfrý  ©rT  ry   rz   rŒ  ä  s   zUtest_different_endianness_joblib_pickle.<locals>.NonNativeEndiannessNumpyPickler.save)Ú__name__Ú
__module__Ú__qualname__rŒ  Ú__classcell__ry   ry   rŽ  rz   ÚNonNativeEndiannessNumpyPicklerã  s    r“  c                     s(   t  ¡ } ˆ | ƒ}| ˆ¡ |  d¡ | S rw  )rx  ry  r~  r  r€  ©r“  r‡   ry   rz   Ú'get_joblib_pickle_non_native_endiannessé  s
   

zXtest_different_endianness_joblib_pickle.<locals>.get_joblib_pickle_non_native_endianness)
r&   rÔ   r   r   rŸ   r   Újoblibr…  rl   r†  )rX   rY   rŸ   r•  r‡  rˆ  ry   r”  rz   Ú'test_different_endianness_joblib_pickleÜ  s   r—  c                 C   sn   t rtjntj}g d¢}dd„ | jj ¡ D ƒ}|D ]}|||< qt t| ¡ ƒt| 	¡ ƒdœ¡}| j
|ddS )N)Ú
left_childÚright_childrn   rp   c                 S   ó   i | ]	\}\}}||“qS ry   ry   ©rK  r†   r  r  ry   ry   rz   rN  ü  rO  z6get_different_bitness_node_ndarray.<locals>.<dictcomp>©ÚnamesÚformatsÚ	same_kind©Úcasting)r   rl   Úint64Úint32r  Úfieldsr€   Úlistr  Úvaluesr  )Únode_ndarrayÚnew_dtype_for_indexing_fieldsÚindexing_field_namesÚnew_dtype_dictr†   Ú	new_dtypery   ry   rz   Ú"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   rš  ry   ry   r›  ry   ry   rz   rN  		  rO  z8get_different_alignment_node_ndarray.<locals>.<dictcomp>c                 S   s   g | ]\}}|‘qS ry   ry   )rK  r  rÌ  ry   ry   rz   rë  	  ó    z8get_different_alignment_node_ndarray.<locals>.<listcomp>c                 S   s   g | ]}d | ‘qS )rC   ry   )rK  rÌ  ry   ry   rz   rë  	  r­  )r  rž  ÚoffsetsrŸ  r   )r  r¤  r€   r¦  rl   r¥  r  r  )r§  rª  r®  Úshifted_offsetsr«  ry   ry   rz   Ú$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   Únodes)r   rl   r¢  r£  r  r  rÉ  r¬  )	r   r«  r  rR   rI  r  ÚstateÚnew_n_classesÚ	new_statery   ry   rz   Ú"reduce_tree_with_different_bitness	  s   rµ  c                     ón   t jdd\} }tddd‰ ˆ  | |¡ ˆ  | |¡}‡ fdd„}t |ƒ ¡}| | |¡}|t |¡ks5J ‚d S )Nr   r|   r3   r¯  c                     s@   t  ¡ } t | ¡}tj ¡ |_t|jt< | 	ˆ ¡ |  
d¡ | S rw  )rx  ry  rP  rz  r{  r|  rÉ  rµ  Ú
CythonTreer~  r  r€  rÝ   ry   rz   Ú"pickle_dump_with_different_bitness+	  s   



zItest_different_bitness_pickle.<locals>.pickle_dump_with_different_bitness)	r&   rÔ   r   r   rŸ   rP  r…  r§   r¨   )rX   rY   rŸ   r¸  r‡  rˆ  ry   rÝ   rz   Útest_different_bitness_pickle$	  s   
r¹  c                     r¶  )Nr   r|   r3   r¯  c                     s>   t  ¡ } t| ƒ}tj ¡ |_t|jt< | ˆ ¡ |  	d¡ | S rw  )
rx  ry  r   r{  r|  rÉ  rµ  r·  r~  r  r€  rÝ   ry   rz   Ú"joblib_dump_with_different_bitnessF	  s   


zPtest_different_bitness_joblib_pickle.<locals>.joblib_dump_with_different_bitness)	r&   rÔ   r   r   rŸ   r–  r…  r§   r¨   )rX   rY   rŸ   rº  r‡  rˆ  ry   rÝ   rz   Ú$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 d   ƒ n1 sZw   Y  tj	t
dd | tj¡}t|| ƒ W d   ƒ d S 1 s}w   Y  d S )	Nc                 S   s   g | ]}|  ¡ ‘qS ry   )rt  )rK  Údtry   ry   rz   rë  X	  r­  z(test_check_n_classes.<locals>.<listcomp>r   r0   r  zWrong dimensions.+n_classesrë   zn_classes.+incompatible dtype)r   rl   r  r£  r¢  r”   r    r  r§   rÚ   rÛ   rl  )Úexpected_dtypeÚallowed_dtypesrI  r¼  Úwrong_dim_n_classesÚwrong_dtype_n_classesry   ry   rz   Útest_check_n_classesU	  s   þ"þrÁ  c               	   C   s0  t  t j¡} d}t j|| d}| |  ¡ g}|D ]	}t|||d qtjtdd t|| dd W d   ƒ n1 s:w   Y  |d d …d d …d d…f t  	|¡fD ]!}tjtdd t|| |j
d W d   ƒ n1 smw   Y  qQtjtd	d t| t j¡| |d W d   ƒ d S 1 s‘w   Y  d S )
N)r2   r0   rD   r  )r½  Úexpected_shapezWrong shape.+value arrayrë   )r0   rD   r0   zvalue array.+C-contiguouszvalue array.+incompatible dtype)rl   r  rl  rd   rt  r!   r§   rÚ   rÛ   rî   rœ   r  r  )r½  rÂ  Úvalue_ndarrayr¾  r¼  Úproblematic_arrry   ry   rz   Útest_check_value_ndarrayg	  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 d   ƒ n1 sEw   Y  tjtd	d |d d d
… }t|| d W d   ƒ n1 siw   Y  dd„ |j	j
 ¡ D ƒ}| ¡ }tj|d< t 	t| ¡ ƒt| ¡ ƒdœ¡}| |¡}tjtdd t|| d W d   ƒ n1 s¯w   Y  | ¡ }tj|d< t 	t| ¡ ƒt| ¡ ƒdœ¡}| |¡}tjtdd t|| d W d   ƒ d S 1 sëw   Y  d S )N)r2   r  c                 S   s   g | ]
}|  |j ¡ ¡‘qS ry   )r  r  rt  )rK  ru  ry   ry   rz   rë  ’	  s    ÿz+test_check_node_ndarray.<locals>.<listcomp>)r½  zWrong dimensions.+node arrayrë   )r2   rD   znode array.+C-contiguousrD   c                 S   rš  ry   ry   r›  ry   ry   rz   rN  ¡	  s    z+test_check_node_ndarray.<locals>.<dictcomp>ro   rœ  znode array.+incompatible dtyper˜  )r#   rl   rd   r¬  r°  r"   r§   rÚ   rÛ   r  r¤  r€   rÉ  r¢  r¥  r  r¦  r  rl  )r½  r§  Úvalid_node_ndarraysru  Úproblematic_node_ndarrayÚ
dtype_dictrª  r«  ry   ry   rz   Útest_check_node_ndarrayˆ	  sL   ýÿþþ
ÿ
ÿ
ÿ
"ÿrÉ  c               	   C   s°   t  ¡ D ]&} | dd}d}tjt|d | tt¡ W d   ƒ n1 s%w   Y  qt ¡ D ]&} | dd}d}tjt|d | tt¡ W d   ƒ n1 sPw   Y  q/d 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'`.)	r   r¦  r§   rj  rk  r   rX   rY   r¼   )r   r   Úmsgry   ry   rz   Ú!test_max_features_auto_deprecated½	  s"   
ÿÿ€
ÿÿ€úrË  )Fr‚  )r3   r;   )ÛÚ__doc__rÉ  rP  Ú	itertoolsr   r¨  rx  r{  r§   Únumpyrl   Únumpy.testingr   Úscipy.sparser   r   r   r–  Újoblib.numpy_pickler   Úsklearn.random_projectionr   Úsklearn.dummyr	   Úsklearn.metricsr
   r   r   Úsklearn.model_selectionr   Úsklearn.utils._testingr   r   r   r   r   r   Úsklearn.utils.estimator_checksr   Úsklearn.utils.validationr   Úsklearn.utilsr   Úsklearn.exceptionsr   Úsklearn.treer   r   r   r   Úsklearnr   Úsklearn.tree._treer   r   r   r·  r    r!   r"   r#   Úsklearn.tree._classesr$   r%   r&   r'   r£   r¾  r   r¼   r]  r.   Ú__annotations__ÚupdateÚSPARSE_TREESr”   rß  rà  Úy_small_regrX   rY   rƒ   r„   Ú	load_irisrZ   rv  r  r  rÅ  r¥   rU   Úpermr¤   Úload_diabetesr[   Úload_digitsr\   rP   Úmake_multilabel_classificationrõ  rö  rM  ÚX_sparse_posrs  Úy_randomrÈ  ÚX_sparse_mixrd   r  r†   r{   rˆ   rŽ   ÚmarkÚparametrizer¦  r™   r¢   r¦   r€   r©   r°   r·   r¾   rÁ   rË   rÙ   rÞ   rà   Úfilterwarningsré   r÷   rÛ   rw  r  r  r  r   r%  r)  r,  r.  r/  rG  rY  r_  rc  rh  rn  ru  ry  r€  rƒ  r†  r‡  r  r  r’  r“  r˜  rš  rŸ  r¤  r®  r¸  r»  Úsortedr  Úintersectionr¼  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<  r2  rB  rZ  rb  rg  ro  rr  r‰  r—  r¬  r°  rµ  r¹  r»  rÁ  rÅ  rÉ  rË  ry   ry   ry   rz   Ú<module>   s¸   þþ

éÿ(
ÿ
õ'



üþ	


.Býýýýýýýýýýýý¾þK!=

<

H3<+4/

		

+þ3F
dÿ(!*%



ûþ
!5