
    _ndJ                        U d Z ddlZddl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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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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l0m1Z1m2Z2 ddl0m3Z3 ddl4m5Z5 dd l6m7Z7 dd!l8m9Z9 dd"lm:Z: dd#l;m<Z< d$d%gd%d%gd%d$gd&d&gd&d'gd'd&ggZ=g d(Z>d%d%gd'd'gd)d'ggZ?g d*Z@ e%j)        d+d,d)ddd-d.          \  ZAZB e%jC                    ZD e9d          ZEeEF                    eDjG        jH                  ZIeDjJ        eI         eD_J        eDjG        eI         eD_G         e%jK        d+d,d&/          \  ZLZM e%jN        d0d&1          \  ZOZPeOQ                    ejR                  ZOejS        T                                d         jU        ZVe+e-d2ZWe,e.d3ZXd4e/iZY eZ            Z[ee\ef         e]d5<   e[^                    eW           e[^                    eX           e[^                    eY           eW_                                Z`ee\ef         e]d6<   e`^                    eX           d7 Zaejb        c                    d8eW          d9             Zdd: Zeejb        c                    d8eW          ejb        c                    d;d<          d=                         Zfd> Zgejb        c                    d8eX          ejb        c                    d;d?          d@                         ZhdA Ziejb        c                    d;dB          dC             ZjdD Zkejb        c                    d8eX          dE             ZldF Zmejb        c                    d8eW          dG             ZndH Zoejb        c                    dIejp        ejR        f          ejb        c                    dJ ejq         e	eWdKdLg           e	eXg dM                              dN                         ZrdO Zsejb        c                    d8e[          dP             Ztejb        c                    dQeWu                                          ejb        c                    dRg dS          ejb        c                    dTg  e%j)        dUd'dV          dWR g  e%j)        dXd)dYdZ          d[R eDjJ        eDjG        d'z  d&z   d[fg  e%jv        dUd1          d\R g          d]                                     Zwejb        c                    d^eXu                                          ejb        c                    dRg dS          ejb        c                    d_g  e%jK        d+d,d&d`          daR g  e%jK        d+d,d'd`          dbR g          dc                                     Zxejb        c                    dde`u                                          de             Zyejb        c                    dde`u                                          ejb        c                    dfeDjJ        eDjG        dgd-dhdifeDjJ        eEz                    ddjeDjJ        j{        d         d'fk          dgdgdhdlfg          dm                         Z|ejb        c                    dndgd-g          do             Z}dp Z~ejb        c                    d8eW          dq             Zdr Zejb        c                    d8e`          ds             Zdt Zejb        c                    d8e`          du             Zdv Zejb        c                    d8e`          dw             Zejb        c                    d8eW          dx             Zdy Zejb        c                    d8eW          dz             Zd{ Zd| Ze!d}             Zd~ Zd Zd Zd Zejb        c                    d8e[          d             Zd Zejb        c                    d8e[          d             Zd Zejb        c                    d8e[          d             Zd Zejb        c                    d8e[          d             Zd Zejb        c                    d8e[          ejb        c                    deeef          d                         Zd Zejb        c                    d8e`          ejb        c                    dIejp        ejR        f          d                         Ze!d             Zejb        c                    d8e[          d             Zd Zejb        c                    d8eW          d             Zd Zejb        c                    d8eW          d             Zd Zejb        c                    d8eW          d             ZddZejb        c                    d8e[          d             Zd Zejb        c                    d8e[          d             Zd Zejb        c                    d8e[          d             Zd Zejb        c                    d8e[          d             Zd Zejb        c                    d8e`          d             ZddZd Zejb        c                    d8e`          d             Zd Zd Z G d deV          Z ej        de           e"d             Zd Zd Zejb        c                    d8e`          d             Zejb        c                    d8e`          d             Zejb        c                    d8eX          d             Zejb        c                    d8eW          d             Zd Zejb        c                    de-e.g          d             Zejb        c                    de+e,e-e.g          d             Zejb        c                    deX          d             Zd Zejb        c                    d8e[          d             Zd ZdS )z:
Testing for the forest module (sklearn.ensemble.forest).
    N)defaultdict)partial)combinations)product)DictAny)
csr_matrix)
csc_matrix)
coo_matrix)comb)DummyRegressor)mean_poisson_deviance)assert_almost_equal)assert_array_almost_equal)assert_array_equal)_convert_container)ignore_warnings)skip_if_no_parallel)NotFittedError)datasets)TruncatedSVD)make_classification)ExtraTreesClassifier)ExtraTreesRegressor)RandomForestClassifier)RandomForestRegressor)RandomTreesEmbedding)train_test_splitcross_val_score)GridSearchCV)	LinearSVC)Parallel)check_random_state)mean_squared_error)SPARSE_SPLITTERS      )r'   r'   r'   r(   r(   r(      )r'   r(   r(     
   F)	n_samples
n_featuresn_informativen_redundant
n_repeatedshufflerandom_stater-   r.   r3      r-   r3   )r   r   )r   r   r   FOREST_ESTIMATORSFOREST_CLASSIFIERS_REGRESSORSc                 ^   t           |          } |dd          }|                    t          t                     t	          |                    t                    t                     dt          |          k    sJ  |ddd          }|                    t          t                     t	          |                    t                    t                     dt          |          k    sJ |	                    t                    }|j
        t          t                    |j        fk    sJ dS )z&Check classification on a toy dataset.r,   r(   n_estimatorsr3   )r;   max_featuresr3   N)FOREST_CLASSIFIERSfitXyr   predictTtrue_resultlenapplyshaper;   )nameForestClassifierclfleaf_indicess       Blib/python3.11/site-packages/sklearn/ensemble/tests/test_forest.pycheck_classification_toyrL   x   s    )$/


;
;
;CGGAqMMMs{{1~~{333S>>>>


K
K
KCGGAqMMMs{{1~~{333S>>>> 99Q<<L#a&&#*:!;;;;;;;    rG   c                 $    t          |            d S N)rL   rG   s    rK   test_classification_toyrQ      s    T"""""rM   c                    t           |          } |d|d          }|                    t          j        t          j                   |                    t          j        t          j                  }|dk    sJ d||fz               |d|dd          }|                    t          j        t          j                   |                    t          j        t          j                  }|dk    sJ d||fz              d S )	Nr,   r(   r;   	criterionr3   ?z'Failed with criterion %s and score = %fr)   r;   rT   r<   r3         ?)r=   r>   irisdatatargetscore)rG   rT   rH   rI   r[   s        rK   check_iris_criterionr\      s    )$/

ia
P
P
PCGGDIt{###IIdi--E3;;;AYPUDVV;;;

911  C GGDIt{###IIdi--E3;;;AYPUDVV;;;;;rM   rT   )ginilog_lossc                 &    t          | |           d S rO   )r\   rG   rT   s     rK   	test_irisra      s     y)))))rM   c                    t           |          } |d|d          }|                    t          t                     |                    t          t                    }|dk    sJ d||fz               |d|dd          }|                    t          t                     |                    t          t                    }|dk    sJ d	||fz              d S )
N   r(   rS   g(\?z:Failed with max_features=None, criterion %s and score = %f   rV   gq=
ףp?z7Failed with max_features=6, criterion %s and score = %f)FOREST_REGRESSORSr>   X_regy_regr[   )rG   rT   ForestRegressorregr[   s        rK   check_regression_criterionrj      s    '-O
/qIA
N
N
NCGGE5IIeU##ECG  	 /)!!  C GGE5IIeU##E4<<<RV <<<<<rM   )squared_errorabsolute_errorfriedman_msec                 &    t          | |           d S rO   )rj   r`   s     rK   test_regressionro      s    
 tY/////rM   c            	         t           j                            d          } d\  }}}t          j        ||z   ||           }|                     dd|          t          j        |d          z  }|                     t          j        ||z            	          }t          |||| 
          \  }}}	}
t          ddd|           }t          ddd|           }|                    ||	           |                    ||	           t          d                              ||	          }||	df||
dffD ]\  }}}t          ||                    |                    }t          |t          j        |                    |          dd                    }t          ||                    |                    }|dk    r||k     sJ |d|z  k     sJ dS )zTest that random forest with poisson criterion performs better than
    mse for a poisson target.

    There is a similar test for DecisionTreeRegressor.
    *   r+   r+   r,   r4   r&   r)   lowhighsizer   axislam	test_sizer3   poissonr,   sqrt)rT   min_samples_leafr<   r3   rk   mean)strategytraintestgư>Ng?)nprandomRandomStater   make_low_rank_matrixuniformmaxr}   expr   r   r>   r   r   rA   clip)rngn_trainn_testr.   r?   coefr@   X_trainX_testy_trainy_test
forest_poi
forest_msedummy	data_name
metric_poi
metric_msemetric_dummys                     rK   test_poisson_vs_mser      s    )


#
#C".GVZ%F"z	 	 	A
 ;;2AJ;77"&:K:K:KKDq4x(())A'7	1S( ( ($GVWf 'bvTW  J '!	  J NN7G$$$NN7G$$$F+++//AAE$gw7&&&9QR / /1i*1j.@.@.C.CDD
 +rwz))!,,dD99
 

 -Qa0@0@AA 
****C,......#/ /rM   )r}   rk   c                 ,   t           j                            d          }d\  }}}t          j        ||z   ||          }|                    dd|          t          j        |d          z  }|                    t          j        ||z            	          }t          | d
d|          }|
                    ||           t          j        |                    |                    t          j        t          j        |                    k    sJ dS )z9 "Test that sum(y_pred)==sum(y_true) on the training set.rq   rr   r4   r&   r)   rs   r   rw   ry   r,   F)rT   r;   	bootstrapr3   N)r   r   r   r   r   r   r   r}   r   r   r>   sumrA   pytestapprox)	rT   r   r   r   r.   r?   r   r@   ri   s	            rK   #test_balance_property_random_forestr      s    )


#
#C".GVZ%F"z	 	 	A ;;2AJ;77"&:K:K:KKDq4x(())A
"C  C GGAqMMM6#++a..!!V]26!99%=%=======rM   c                     t          |          d          }t          |d          rJ t          |d          rJ |                    g dg dgddg           t          |d          rJ t          |d          rJ d S )	Nr   r3   classes_
n_classes_r(   r)   r*      rc   rd   r(   r)   )re   hasattrr>   )rG   rs     rK   check_regressor_attributesr     s    $Q///Aq*%%%%%q,'''''EE999iii
 1a&)))q*%%%%%q,'''''''rM   c                 $    t          |            d S rO   )r   rP   s    rK   test_regressor_attributesr     s    t$$$$$rM   c           	      v   t           |          }t          j        d          5   |dddd          }|                    t          j        t          j                   t          t          j        |	                    t          j                  d          t          j
        t          j        j        d                              t          |	                    t          j                  t          j        |                    t          j                                       d d d            d S # 1 swxY w Y   d S )Nignoredivider,   r(   )r;   r3   r<   	max_depthrw   r   )r=   r   errstater>   rX   rY   rZ   r   r   predict_probaonesrF   r   predict_log_proba)rG   rH   rI   s      rK   check_probabilityr   !  sK   )$/	H	%	%	% 

 

!!q
 
 
 		4;'''!F3$$TY//a888"'$)/RSBT:U:U	
 	
 	
 	"di(("&1F1Fty1Q1Q*R*R	
 	
 	


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s   C>D..D25D2c                 $    t          |            d S rO   )r   rP   s    rK   test_probabilityr   1      drM   c                    t                               |d          }t                              |d          }t          |          } |d|d          }|                    ||           |j        }t          j        |dk              }	|j        d         dk    sJ |	dk    sJ t          j	        |d d         dk              sJ |j        }|
                    d	           |j        }
t          ||
           t          d                              d
dt          |                    } |dd|          }|                    |||           |j        }t          j	        |dk              sJ dD ]a} |dd|          }|                    ||||z             |j        }t          j        ||z
                                            |k     sJ bd S )NFcopyr,   r   rS   皙?r*   r)   n_jobsr(   )r;   r3   rT   sample_weight        )rW   d   )X_largeastypey_larger7   r>   feature_importances_r   r   rF   all
set_paramsr   r#   randintrD   absr   )rG   rT   dtype	tolerancer?   r@   ForestEstimatorestimportancesn_importantimportances_parallelr   scaleimportances_biss                 rK   check_importancesr   6  s   u5))Au5))A'-O
/rYQ
O
O
OCGGAqMMM*K &s*++KQ2%%%%!6+bqb/C'((((( *KNN!N3k+?@@@ 'q))11!RQ@@M
/rY
O
O
OCGGAqG...*K6+$%%%%% H Ho2ASSS1EM$9:::2vkO34499;;iGGGGG	H HrM   r   zname, criterionr]   r^   )rk   rm   rl   c                 P    d}|t           v r|dk    rd}t          ||| |           d S )N{Gz?rl   g?)re   r   )r   rG   rT   r   s       rK   test_importancesr   \  s?     I   Y2B%B%B	dIui88888rM   c                    	
 d 	d 
	
fd} t          j        g dg dg dg dg dg d	g d
g dg dg dg
          }t          j        |d d d df         t                    |d d df         }}|j        d         }t          j        |          }t          |          D ]} | |||          ||<   t          dddd                              ||          }t          d |j	        D                       |j
        z  }t           
|          t          |                     t          j        ||z
                                            dk     sJ d S )Nc                 v    | dk     s| |k    rdn+t          t          |          t          |           d          S )Nr   T)exact)r   int)kns     rK   binomialz-test_importances_asymptotic.<locals>.binomialp  s7    EEQUUqqSVVSVV4(H(H(HHrM   c                     t          |           }d}t          j        |           D ]*}d|z  |z  }|dk    r||t          j        |          z  z  }+|S )Nr         ?r   )rD   r   bincountlog2)samplesr-   entropycountps        rK   r   z,test_importances_asymptotic.<locals>.entropys  s^    LL	[)) 	* 	*Eei'A1uu1rwqzz>)rM   c           
      P   j         \  }}t          t          |                    }|                    |            fdt          |          D             d}t          |          D ]7}d ||          ||z
  z  z  }t	          ||          D ]t          fdt          |          D              D ]}	t          j        |t                    }
t          |          D ]!}|
d d |         f         |	|         k    z  }
"|
d d f         ||
         }}t          |          dk    rog }|          D ]-}|d d | f         |k    }|
                    ||                    .||dz  |z  z   |          t          fd|D                       z
  z  z  }9|S )Nc                 L    g | ] }t          j        d d |f                   !S rO   )r   unique).0ir?   s     rK   
<listcomp>zGtest_importances_asymptotic.<locals>.mdi_importance.<locals>.<listcomp>  s/    @@@")AaaadG$$@@@rM   r   r   c                 ,    g | ]}|                  S  r   )r   jBvaluess     rK   r   zGtest_importances_asymptotic.<locals>.mdi_importance.<locals>.<listcomp>  s!    "B"B"BA6!A$<"B"B"BrM   r   r   c                 L    g | ] } |          t          |          z  z  !S r   )rD   )r   cr   n_samples_bs     rK   r   zGtest_importances_asymptotic.<locals>.mdi_importance.<locals>.<listcomp>  sA     %& %& %&,- )0

SVV(;k(I%& %& %&rM   )rF   listrangepopr   r   r   r   boolrD   appendr   )X_mr?   r@   r-   r.   featuresimpr   r   bmask_br   X_y_childrenximask_xir   r   r   r   r   s    `               @@@rK   mdi_importancez3test_importances_asymptotic.<locals>.mdi_importance~  s&    !	:j))**S@@@@eJ.?.?@@@z"" #	 #	A((1j11Z!^DED "(A..   "B"B"B"B"Bq"B"B"BC  AWYd;;;F"1XX 5 5!AAAqtG*!"44vqqqy\1V9B"%b''K"Q#%"(+ 9 9B&(CjB&6G$OOBwK8888 "[09<> !("%%& %& %& %& %&19%& %& %&#" #"!"
!@ 
rM   )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(   r   r(   r(   rc   )r(   r(   r   r(   r(   r(   r(   rd   )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;   r<   rT   r3   c              3   L   K   | ]}|j                             d           V   dS )F)	normalizeN)tree_compute_feature_importancesr   trees     rK   	<genexpr>z.test_importances_asymptotic.<locals>.<genexpr>  sI       
 
 J22U2CC
 
 
 
 
 
rM   r   )r   arrayr   rF   zerosr   r   r>   r   estimators_r;   r   r   r   )r  rY   r?   r@   r.   true_importancesr   rI   r   r   r   s            @@rK   test_importances_asymptoticr  k  s   
I I I	 	 	. . . . . .` 8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$	
 D 8DBQBKt,,,d111a4jqAJ x
++: 6 6,nQ155 qJQ  	c!Qii 
 	 
 

 
 
 	
 	
 
		  

C$4$45556"[01166884??????rM   c                     d                     |           }t          j        t          |          5  t	          t          |                      d           d d d            d S # 1 swxY w Y   d S )NzfThis {} instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.matchr   )formatr   raisesr   getattrr7   )rG   err_msgs     rK   !test_unfitted_feature_importancesr    s    	==CVD\\  
~W	5	5	5 C C!$'))+ABBBC C C C C C C C C C C C C C C C C Cs   #A!!A%(A%rH   X_type)r  
sparse_csr
sparse_csczX, y, lower_bound_accuracyi,  )r-   	n_classesr3   rU     rd   )r-   r"  r/   r3   g?g
ףp=
?c                    t          ||          }t          ||dd          \  }}}} | dddd          }	t          |	d          rJ t          |	d	          rJ |	                    ||           |	                    ||          }
t          |
|	j        z
            d
k    sJ |	j        |k    sJ t          |	d          sJ t          |	d          rJ t          |	d	          sJ |j        dk    r*|j        d         t          t          |                    f}n?|j        d         t          t          |dddf                             |j        d         f}|	j        j        |k    sJ dS )z5Check that OOB score is close to score on a test set.constructor_namerW   r   r{   (   Tr;   r   	oob_scorer3   
oob_score_oob_decision_function_r   oob_prediction_r(   N)r   r   r   r>   r[   r   r*  ndimrF   rD   setr+  )rH   r?   r@   r  lower_bound_accuracyr   r   r   r   
classifier
test_scoreexpected_shapes               rK   test_forest_classifier_oobr3    s   8 	1v666A'7			( ( ($GVWf "!	  J z<00000z#;<<<<<NN7G$$$!!&&11JzJ1122c9999 $88888:|,,,,,z#455555:788888v{{!-*CAKK8!-*CAaaadG,=,=qwqzJ,2nDDDDDDrM   rh   zX, y, lower_bound_r2)r-   r.   	n_targetsr3   ffffff?g?c                 V   t          ||          }t          ||dd          \  }}}} | dddd          }	t          |	d          rJ t          |	d	          rJ |	                    ||           |	                    ||          }
t          |
|	j        z
            d
k    sJ |	j        |k    sJ t          |	d          sJ t          |	d	          sJ t          |	d          rJ |j        dk    r|j        d         f}n|j        d         |j        f}|	j	        j        |k    sJ dS )z\Check that forest-based regressor provide an OOB score close to the
    score on a test set.r%  rW   r   r{   2   Tr(  r*  r,  r   r+  r(   N)
r   r   r   r>   r[   r   r*  r-  rF   r,  )rh   r?   r@   r  lower_bound_r2r   r   r   r   	regressorr1  r2  s               rK   test_forest_regressor_oobr:     s~   , 	1v666A'7			( ( ($GVWf  	  I y,/////y"344444MM'7###00JzI0011S8888>11119l+++++9/00000y":;;;;;v{{!-*,!-*AF3$*n<<<<<<rM   r   c                      | dddd          }t          j        t          d          5  |                    t          j        t          j                   ddd           dS # 1 swxY w Y   dS )zfCheck that a warning is raised when not enough estimator and the OOB
    estimates will be inaccurate.r(   Tr   )r;   r)  r   r3   z"Some inputs do not have OOB scoresr  N)r   warnsUserWarningr>   rX   rY   rZ   )r   	estimators     rK   test_forest_oob_warningr?  X  s      	  I 
k)M	N	N	N . .di---. . . . . . . . . . . . . . . . . .s   +A##A'*A'zX, y, params, err_msgT)r)  r   z6Out of bag estimation only available if bootstrap=Truerc   rs   z:The type of target cannot be used to compute OOB estimatesc                      | di |}t          j        t          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr  r   )r   r  
ValueErrorr>   )r   r?   r@   paramsr  r>  s         rK   test_forest_oob_errorrC  f  s    &  ))&))I	z	1	1	1  a                 s   AAAr)  c                 L   t          j        t          d          5  t          |            d d d            n# 1 swxY w Y   t          j        t          d          5  t                                          t          t                     d d d            d S # 1 swxY w Y   d S )Nz"got an unexpected keyword argumentr  r)  zOOB score not supported)r   r  	TypeErrorr   NotImplementedError_set_oob_score_and_attributesr?   r@   rE  s    rK   +test_random_trees_embedding_raise_error_oobrI  ~  s)   	y(L	M	M	M 2 2y11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	*2K	L	L	L C C<<QBBBC C C C C C C C C C C C C C C C C Cs   9= =-BB Bc                     t          |                      }t          |ddd          }|                    t          j        t          j                   d S )Nr(   r)   )r;   r   )r=   r    r>   rX   rY   rZ   )rG   forestrI   s      rK   check_gridsearchrM    sG    %''F
vVLL
M
MCGGDIt{#####rM   c                 $    t          |            d S rO   )rM  rP   s    rK   test_gridsearchrO    s     TrM   c                 `   t           |          } |ddd          }|                    ||           t          |          dk    sJ |                    d           |                    |          }|                    d           |                    |          }t          ||d           dS )	z-Check parallel computations in classificationr,   r*   r   r;   r   r3   r(   r   r)   N)r7   r>   rD   r   rA   r   )rG   r?   r@   r   rL  y1y2s          rK   check_parallelrT    s    '-O_"QQGGGF
JJq!v;;"
Q			B
Q			Bb"a(((((rM   c                     | t           v rt          j        }t          j        }n| t          v rt
          }t          }t          | ||           d S rO   )r=   rX   rY   rZ   re   rf   rg   rT  rG   r?   r@   s      rK   test_parallelrW    sL    !!!IK	"	"	"4ArM   c                 P   t           |          } |d          }|                    ||           |                    ||          }t          j        |          }t          j        |          }t          |          |j        k    sJ |                    ||          }||k    sJ d S )Nr   r   )r7   r>   r[   pickledumpsloadstype	__class__)	rG   r?   r@   r   objr[   pickle_objectobj2score2s	            rK   check_picklerb    s     (-O
/q
)
)
)CGGAqMMMIIaOOEL%%M<&&D::&&&&ZZ1FF??????rM   c                     | t           v rt          j        }t          j        }n| t          v rt
          }t          }t          | |d d d         |d d d                    d S )Nr)   )r=   rX   rY   rZ   re   rf   rg   rb  rV  s      rK   test_picklerd    s`    !!!IK	"	"	"q1vq1v&&&&&rM   c                 *   ddgddgddgddgddgddgddgddgddgddgddgddgg}ddgddgddgddgddgddgddgddgddgddgddgddgg}ddgddgddgddgg}ddgddgddgddgg}t          |          dd          }|                    ||                              |          }t          ||           | t          v rt          j        d	
          5  |                    |          }t          |          dk    sJ |d         j	        dk    sJ |d         j	        dk    sJ |
                    |          }t          |          dk    sJ |d         j	        dk    sJ |d         j	        dk    sJ 	 d d d            d S # 1 swxY w Y   d S d S )Nr&   r'   r(   r)   r   r*   Fr3   r   r   r   r   r)   r   r   )r7   r>   rA   r   r=   r   r   r   rD   rF   r   	rG   r   r   r   r   r   y_predproba	log_probas	            rK   check_multioutputrm    s~    
R	R	R	
A	
A	
A	Q	Q	Q	
B	
B	
BG 
Q	Q	Q	
A	
A	
A	Q	Q	Q	
A	
A	
AG 2hAQ!R1F1g1vAwA/F
D
!qE
B
B
BCWWWg&&..v66Fff---!!![))) 		0 		0%%f--Eu::????8>V++++8>V++++--f55Iy>>Q&&&&Q<%////Q<%/////		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 		0 "!s   B!FF
F
c                 $    t          |            d S rO   )rm  rP   s    rK   test_multioutputro    r   rM   c                    ddgddgddgddgddgddgddgddgddgddgddgddgg}ddgddgddgddgddgddgddgddgddgdd	gdd	gdd	gg}ddgddgddgddgg}ddgddgddgdd	gg}t          |          d
d          }|                    ||                              |          }t          ||           t	          j        d          5  |                    |          }t          |          dk    sJ |d
         j        dk    sJ |d         j        dk    sJ |	                    |          }t          |          dk    sJ |d
         j        dk    sJ |d         j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr&   r'   r(   r)   redbluegreenpurpleyellowr   Frf  r   r   rg  rh  )
r7   r>   rA   r   r   r   r   rD   rF   r   ri  s	            rK   test_multioutput_stringrv     s}   
 
R	R	R	
A	
A	
A	Q	Q	Q	
B	
B	
BG 
			'	'	'				(	(	(G 2hAQ!R1F		'		(	F D
!qE
B
B
BCWWWg&&..v66Fvv&&&	H	%	%	% 	, 	,!!&))5zzQQx~''''Qx~''''))&11	9~~""""|!V++++|!V+++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   B!E==FFc                    t           |          } |d                              t          t                    }|j        dk    sJ t          |j        ddg           t          j        t          t          j	        t                    dz  f          j
        } |d                              t          |          }t          |j        ddg           t          |j        ddgddgg           d S )Nr   r   r)   r'   r(   r&   )r=   r>   r?   r@   r   r   r   r   vstackr  rB   )rG   rH   rI   _ys       rK   check_classes_shaperz  8  s    )$/ 

*
*
*
.
.q!
4
4C>Qs|b!W--- 
Arx{{Q'	(	(	*B


*
*
*
.
.q"
5
5Cs~1v...s|r1gAw%788888rM   c                 $    t          |            d S rO   )rz  rP   s    rK   test_classes_shaper|  J      rM   c                      t          dd          } t          j        d          \  }}|                     |          }t	          |          t
          j        k    sJ d S )Nr,   F)r;   sparse_outputrW   factor)r   r   make_circlesfit_transformr\  r   ndarray)hasherr?   r@   X_transformeds       rK   test_random_trees_dense_typer  O  sc    
 "rGGGF ,,,DAq((++M "*,,,,,,rM   c                     t          ddd          } t          ddd          }t          j        d          \  }}|                     |          }|                    |          }t	          |                                |           d S )Nr,   Fr   )r;   r  r3   TrW   r  )r   r   r  r  r   toarray)hasher_densehasher_sparser?   r@   X_transformed_denseX_transformed_sparses         rK   test_random_trees_dense_equalr  \  s    
 (u1  L )t!  M  ,,,DAq&44Q77(66q99 +33557JKKKKKrM   c                     t          dd          } t          j        d          \  }}|                     |          }t          dd          } t	          |                     |                              |                                          |                                           |j        d         |j        d         k    sJ t	          |	                    d          | j
                   t          d	          }|                    |          }t                      }|                    ||           |                    ||          d
k    sJ d S )N   r(   r:   rW   r  r   rw   r)   )n_componentsr   )r   r   r  r  r   r>   	transformr  rF   r   r;   r   r!   r[   )r  r?   r@   r  svd	X_reduced
linear_clfs          rK   test_random_hasherr  p  s@    "rBBBF ,,,DAq((++M "rBBBFvzz!}}..q1199;;]=R=R=T=TUUU q!QWQZ////}((a(00&2EFFF
A
&
&
&C!!-00IJNN9a   Iq))S000000rM   c                  .   t          j        d          \  } }t          dd          }|                    |           }|                    t	          |                     }t          |                                |                                           d S )Nr   r   r  r(   r:   )r   make_multilabel_classificationr   r  r
   r   r  )r?   r@   r  r  r  s        rK   test_random_hasher_sparse_datar    s    2BBBDAq!rBBBF((++M!//
1>>+3355}7L7L7N7NOOOOOrM   c                  P  	 t          d          } d\  }}|                     ||          |                     dd|          		fddD             }|                     ||          fd|D             }t          ||dd                    D ]\  }}t	          ||           d S )	N!0  )P   r  r   r)   c                 \    g | ](}t          d |d                                        )S )r5   i90  rQ  )r   r>   )r   r   r   r   s     rK   r   z'test_parallel_train.<locals>.<listcomp>  sO         	BvERRRVVW	
 	
  rM   )r(   r)   r*   r	         c                 :    g | ]}|                               S r   )r   )r   rI   r   s     rK   r   z'test_parallel_train.<locals>.<listcomp>  s'    888Cc''888rM   r(   )r#   randnr   zipr   )
r   r-   r.   clfsprobasproba1proba2r   r   r   s
          @@@rK   test_parallel_trainr    s    
U
#
#C"Izii	:..Gkk!Q	**G     +	  D YYy*--F88884888FffQRRj11 2 2!&&11112 2rM   c                     t          d          } |                     ddd          }|                     d          }dt          d	                              ||          }t          t                    }|j        D ]S}d
                    d t          |j
        j        |j
        j                  D                       }||xx         dz  cc<   Tt          fd|                                D                       }t          |          dk    sJ d|d         d         k    sJ d|d         d         k    sJ d|d         d         k    sJ d|d         d         k    sJ |d         d         dk    sJ |d         d         dk    sJ t!          j        d          }t           j                            ddd          |d d df<   t           j                            ddd          |d d df<   |                     d          }t          dd                              ||          }t          t                    }|j        D ]S}d
                    d t          |j
        j        |j
        j                  D                       }||xx         dz  cc<   Td |                                D             }t          |          dk    sJ d S )Nr  r   r   )r#  r(   )rv   r#  r+   rq   r:    c              3   T   K   | ]#\  }}|d k    rd|t          |          fz  ndV  $dS r   z%d,%d/-Nr   r   fts      rK   r  z$test_distribution.<locals>.<genexpr>  V       
 
1 ()AvvXCFF##3
 
 
 
 
 
rM   r(   c                 *    g | ]\  }}d |z  z  |fS )r   r   )r   r  r   n_treess      rK   r   z%test_distribution.<locals>.<listcomp>  s+    WWWesU{W,d3WWWrM   rc   g?r)   r*   333333?z0,1/0,0/--0,2/--)r#  r)   )r<   r3   c              3   T   K   | ]#\  }}|d k    rd|t          |          fz  ndV  $dS r  r  r  s      rK   r  z$test_distribution.<locals>.<genexpr>  r  rM   c                     g | ]	\  }}||f
S r   r   )r   r  r   s      rK   r   z%test_distribution.<locals>.<listcomp>  s     @@@ut}@@@rM   r	  )r#   r   randr   r>   r   r   r  joinr  r  feature	thresholdsorteditemsrD   r   emptyr   )r   r?   r@   ri   uniquesr  r  s         @rK   test_distributionr    s   
U
#
#C 	Aqy))AAG
7
D
D
D
H
HA
N
NC#G  ww 
 
DJ.
0DEE
 
 
 
 

 	WWWWw}}WWWXXG w<<1'!*Q-'!*Q-'!*Q-'!*Q-1:a=31:a=..... 	Ai1d++AaaadGi1d++AaaadGA
11
=
=
=
A
A!Q
G
GC#G  ww 
 
DJ.
0DEE
 
 
 
 

 	@@@@@Gw<<1rM   c                 Z   t           t          }}t          |          } |dddd                              ||          }|j        d                                         dk    sJ  |ddd                              ||          }|j        d                                         dk    sJ d S )Nr(   r   r   )r   max_leaf_nodesr;   r3   )r   r;   r3   )hastie_Xhastie_yr7   r>   r  	get_depthrG   r?   r@   r   r   s        rK   check_max_leaf_nodes_max_depthr    s    XqA (-O
/AAA  	c!Qii  ?1''))Q....
/AAA
F
F
F
J
J1a
P
PC?1''))Q......rM   c                 $    t          |            d S rO   )r  rP   s    rK   test_max_leaf_nodes_max_depthr        "4(((((rM   c                    t           t          }}t          |          } |ddd          }|                    ||           |j        d         j        j        dk    }|j        d         j        j        |         }t          j	        |          t          |          dz  dz
  k    sJ d                    |                        |ddd          }|                    ||           |j        d         j        j        dk    }|j        d         j        j        |         }t          j	        |          t          |          dz  dz
  k    sJ d                    |                       d S )Nr,   r(   r   )min_samples_splitr;   r3   r'   rW   Failed with {0})r  r  r7   r>   r  r  children_leftn_node_samplesr   minrD   r  )rG   r?   r@   r   r   node_idxnode_sampless          rK   check_min_samples_splitr    sG   XqA'-O
/BQQ
O
O
OCGGAqMMMq!'5;H?1%+:8DL6,#a&&3,"22224E4L4LT4R4R222
/Caa
P
P
PCGGAqMMMq!'5;H?1%+:8DL6,#a&&3,"22224E4L4LT4R4R22222rM   c                 $    t          |            d S rO   )r  rP   s    rK   test_min_samples_splitr    s    D!!!!!rM   c                    t           t          }}t          |          } |ddd          }|                    ||           |j        d         j                            |          }t          j        |          }||dk             }t          j	        |          dk    sJ d
                    |                        |ddd          }|                    ||           |j        d         j                            |          }t          j        |          }||dk             }t          j	        |          t          |          dz  dz
  k    sJ d
                    |                       d S )Nrc   r(   r   )r   r;   r3   r   r  g      ?)r  r  r7   r>   r  r  rE   r   r   r  r  rD   )rG   r?   r@   r   r   outnode_counts
leaf_counts           rK   check_min_samples_leafr    sT   XqA (-O
/111
M
M
MCGGAqMMM
/!

"
(
(
+
+C+c""K[A-.J6*!!!#4#;#;D#A#A!!!
/4aa
P
P
PCGGAqMMM
/!

"
(
(
+
+C+c""K[A-.J6*A 11113D3K3KD3Q3Q11111rM   c                 $    t          |            d S rO   )r  rP   s    rK   test_min_samples_leafr        4     rM   c                    t           t          }}t          |          }t          j                            d          }|                    |j        d                   }t          j        |          }t          j	        ddd          D ]} ||dd          }d| v rd|_
        |                    |||           |j        d         j                            |          }	t          j        |	|	          }
|
|
dk             }t          j        |          ||j        z  k    s#J d
                    | |j                              d S )Nr   rW   rd   r(   )min_weight_fraction_leafr;   r3   RandomForestFr   )weightsz,Failed with {0} min_weight_fraction_leaf={1})r  r  r7   r   r   r   r  rF   r   linspacer   r>   r  r  rE   r   r  r  r  )rG   r?   r@   r   r   r  total_weightfracr   r  node_weightsleaf_weightss               rK   check_min_weight_fraction_leafr     sL   XqA (-O
)


"
"Chhqwqz""G6'??L AsA&& 
 
o%)
 
 
 T!!!CM1G,,,oa &,,Q//{3888#LA$56F<  L33O$OOOO9@@#.
 
 POOO
 
rM   c                 $    t          |            d S rO   )r  rP   s    rK   test_min_weight_fraction_leafr  ?  r  rM   c                 <   t           |          } |dd                              ||          } |dd                              ||          }t          |                    |          |                    |                     | t          v s	| t
          v rPt          |                    |          |                    |                     t          |j        |j                   | t          v rlt          |                    |          |                    |                     t          |	                    |          |	                    |                     | t          v rt          |                    |                                          |                    |                                                     t          |                    |                                          |                    |                                                     d S d S )Nr   r)   )r3   r   )r7   r>   r   rE   r=   re   rA   r   r   r   FOREST_TRANSFORMERSr  r  r  )rG   r?   X_sparser@   r   densesparses          rK   check_sparse_inputr  D  s   '-OOa888<<QBBE_!q999==hJJFfll1oou{{1~~>>>!!!T->%>%>!&.."3"3U]]15E5EFFF!')C	
 	
 	
 !!!!&"6"6q"9"95;N;Nq;Q;QRRR!$$Q'')@)@)C)C	
 	
 	
 """!Q''))5??1+=+=+E+E+G+G	
 	
 	
 	"  ##++--u/B/B1/E/E/M/M/O/O	
 	
 	
 	
 	
	 #"rM   sparse_matrixc                 n    t          j        dd          \  }}t          | | ||          |           d S )Nr   r7  )r3   r-   )r   r  r  )rG   r  r?   r@   s       rK   test_sparse_inputr  a  sA     2RPPPDAqtQa 0 0!44444rM   c                    t          |          dd          }t          j        t          j        |          }t          j        }t          |                    ||                              |          |           t          j        t          j        d|          }t          j        }t          |                    ||                              |          |           t          j        t          j        d|          }t          j        }t          |                    ||                              |          |           t          j	        t          j        |          }t          j        }t          |                    ||                              |          |           |j
        j        t          v rt          t          j        |          }t          j        }t          |                    ||                              |          |           t          t          j        |          }t          j        }t          |                    ||                              |          |           t          t          j        |          }t          j        }t          |                    ||                              |          |           t          j        t          j        d d d         |          }t          j        d d d         }t          |                    ||                              |          |           d S )	Nr   Frf  r   C)orderr   Fr*   )r7   r   asarrayrX   rY   rZ   r   r>   rA   ascontiguousarrayr>  splitterr%   r	   r
   r   )rG   r   r   r?   r@   s        rK   check_memory_layoutr  i  s    D
!qE
B
B
BC 	
49E***AAcggamm33A66::: 	
49Cu555AAcggamm33A66::: 	
49Cu555AAcggamm33A66::: 	TYe444AAcggamm33A66:::
}!111ty...K!#''!Q--"7"7":":A>>> ty...K!#''!Q--"7"7":":A>>> ty...K!#''!Q--"7"7":":A>>> 	
49SSqS>///ACCaCAcggamm33A66:::::rM   c                 &    t          | |           d S rO   )r  )rG   r   s     rK   test_memory_layoutr    s     e$$$$$rM   c                    t           |          }t          j        t                    5   |dd                              ||           d d d            n# 1 swxY w Y    |d          }|                    ||           | t
          v s	| t          v rIt          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S d S )Nr(   r   r:   r   )r7   r   r  rA  r>   r=   re   rA   )rG   r?   X_2dr@   r   r   s         rK   check_1d_inputr    sq   '-O	z	"	" B BQQ777;;AqAAAB B B B B B B B B B B B B B B /q
)
)
)CGGD!!!!T->%>%>]:&& 	 	KKNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &?%>s#   "AAA-CCCc                    t           j        d d df         }t           j        d d df                             d          }t           j        }t	                      5  t          | |||           d d d            d S # 1 swxY w Y   d S )Nr   r'   r(   )rX   rY   reshaperZ   r   r  )rG   r?   r  r@   s       rK   test_1d_inputr    s    	!!!Q$A9QQQT?""7++DA			 ) )tQa((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   A::A>A>c                    t           |          } |d          }|                    t          j        t          j                    |dd          }|                    t          j        t          j                   t          |j        |j                   t          j        t          j        t          j        t          j        f          j	        } |ddddddddddddgd          }|                    t          j        |           t          |j        |j                    |dd          }|                    t          j        |           t          |j        |j                   t          j
        t          j        j                  }|t          j        dk    xx         d	z  cc<   dd
dd} |d          }|                    t          j        t          j        |            ||d          }|                    t          j        t          j                   t          |j        |j                    |d          }|                    t          j        t          j        |dz              ||d          }|                    t          j        t          j        |           t          |j        |j                   d S )Nr   r   balancedclass_weightr3   g       @r   )r   r(   r)   r(   r   g      Y@r)   )r=   r>   rX   rY   rZ   r   r   r   rx  rB   r   rF   )	rG   rH   clf1clf2
iris_multiclf3clf4r   r  s	            rK   check_class_weightsr    s   )$/ +++DHHTY$$$!DDDDHHTY$$$143LMMM DKdkBCCEJ$$$$$$

   D 	HHTY
###143LMMM!DDDDHHTY
###143LMMM GDK-..M$+"###s*###u--L+++DHHTY]333AFFFDHHTY$$$143LMMM +++DHHTY]A%5666AFFFDHHTY]333143LMMMMMrM   c                 $    t          |            d S rO   )r  rP   s    rK   test_class_weightsr    r}  rM   c                    t           |          }t          j        t          t          j        t                    dz  f          j        } |dd          }|                    t          |            |ddddddgd          }|                    t          |            |d	d          }|                    t          |           d S )
Nr)   r  r   r  rW   r   r   )r&   r)   balanced_subsample)r=   r   rx  r@   r  rB   r>   r?   )rG   rH   ry  rI   s       rK   6check_class_weight_balanced_and_bootstrap_multi_outputr    s    )$/	Arx{{Q'	(	(	*B



C
C
CCGGArNNN

3''cc):):;!  C GGArNNN

(<1
M
M
MCGGArNNNNNrM   c                 $    t          |            d S rO   )r  rP   s    rK   5test_class_weight_balanced_and_bootstrap_multi_outputr    s    :4@@@@@rM   c                 L   t           |          }t          j        t          t          j        t                    dz  f          j        } |ddd          }|                    t          t                     d}t          j	        t          |          5  |                    t          |           d d d            n# 1 swxY w Y    |dd	d
gd          }t          j        t                    5  |                    t          |           d d d            d S # 1 swxY w Y   d S )Nr)   r  Tr   )r  
warm_startr3   JWarm-start fitting without increasing n_estimators does not fit new trees.r  rW   r   r   r  )r=   r   rx  r@   r  rB   r>   r?   r   r<  r=  r  rA  )rG   rH   ry  rI   warn_msgs        rK   check_class_weight_errorsr    s   )$/	Arx{{Q'	(	(	*B 

tRS
T
T
TCGGAqMMM 	U  
k	2	2	2  2               
cc):):(;!
L
L
LC	z	"	"  2                 s$   B;;B?B?0DD Dc                 $    t          |            d S rO   )r  rP   s    rK   test_class_weight_errorsr    s    d#####rM   rq   c                 8   t           t          }}t          |          }d }dD ]T}| |||d          }n|                    |           |                    ||           t          |          |k    sJ U |d|d          }|                    ||           t          d |D                       t          d |D                       k    sJ t          |                    |          |                    |          d		                    |           
           d S )N)rc   r,   T)r;   r3   r  r;   r,   Fc                     g | ]	}|j         
S r   r   r  s     rK   r   z$check_warm_start.<locals>.<listcomp>-  s    555d!555rM   c                     g | ]	}|j         
S r   r   r  s     rK   r   z$check_warm_start.<locals>.<listcomp>.  s    111t	111rM   r  )r  )
r  r  r7   r   r>   rD   r.  r   rE   r  )rG   r3   r?   r@   r   est_wsr;   	est_no_wss           rK   check_warm_startr!    sd    XqA'-OF + +>$_)QU  FF <888

1a6{{l*****lu  I MM!Q55f55566#11y111; ;     Q++5F5M5Md5S5S     rM   c                 $    t          |            d S rO   )r!  rP   s    rK   test_warm_startr#  6  s    TrM   c                    t           t          }}t          |          } |dddd          }|                    ||            |dddd          }|                    ||           |                    dd           |                    ||           t          |                    |          |                    |                     d S )Nrc   r(   Fr;   r   r  r3   Tr)   )r  r3   )r  r  r7   r>   r   r   rE   )rG   r?   r@   r   r   est_2s         rK   check_warm_start_clearr'  ;  s    XqA'-O
/qA%VW
X
X
XCGGAqMMMO!1  E 
IIaOOO	A666	IIaOOOekk!nnciill;;;;;rM   c                 $    t          |            d S rO   )r'  rP   s    rK   test_warm_start_clearr)  L  r  rM   c                 @   t           t          }}t          |          } |ddd          }|                    ||           |                    d           t          j        t                    5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nrc   r(   T)r;   r   r  r   r  )r  r  r7   r>   r   r   r  rA  r  s        rK   %check_warm_start_smaller_n_estimatorsr+  Q  s    XqA'-O
/qA$
G
G
GCGGAqMMMNNN"""	z	"	"  1                 s   /BBBc                 $    t          |            d S rO   )r+  rP   s    rK   $test_warm_start_smaller_n_estimatorsr-  \  s    )$/////rM   c                    t           t          }}t          |          } |dddd          }|                    ||            |dddd          }|                    ||           |                    d           d}t          j        t          |	          5  |                    ||           d d d            n# 1 swxY w Y   t          |	                    |          |	                    |                     d S )
Nrc   r*   Tr(   r%  r)   r   r  r  )
r  r  r7   r>   r   r   r<  r=  r   rE   )rG   r?   r@   r   r   r&  r  s          rK   #check_warm_start_equal_n_estimatorsr/  a  s=    XqA'-O
/qA$UV
W
W
WCGGAqMMMO!1  E 
IIaOOO 
!$$$T  
k	2	2	2  		!Q               syy||U[[^^44444s   B<<C C c                 $    t          |            d S rO   )r/  rP   s    rK   "test_warm_start_equal_n_estimatorsr1  z  s    '-----rM   c                 z   t           t          }}t          |          } |dddddd          }|                    ||            |dddddd          }|                    ||           |                    ddd           |                    ||           t          |d	          sJ |j        |j        k    sJ  |dddddd          }|                    ||           t          |d	          rJ |                    d
            t          |j                  ||           |j        |j        k    sJ d S )N   r*   Fr(   T)r;   r   r  r3   r   r)  rc   )r  r)  r;   r*  rE  )r  r  r7   r>   r   r   r*  r   )rG   r?   r@   r   r   r&  est_3s          rK   check_warm_start_oobr5    s   XqA'-O
/  C GGAqMMMO  E 
IIaOOO	2FFF	IIaOOO5,'''''>U----- O  E 
IIaOOOul+++++	t$$$OEIq!$$$>U-------rM   c                 $    t          |            d S rO   )r5  rP   s    rK   test_warm_start_oobr7    s    rM   r3  c                    t          dd          }t          j        |           }d dd |          D             }|                    ||                              |          }t          |j        |           t          ||           d S )Nr   Frf  c                     g | ]}|S r   r   )r   chs     rK   r   z&test_dtype_convert.<locals>.<listcomp>  s    ::::::rM   ABCDEFGHIJKLMNOPQRSTU)r   r   eyer>   rA   r   r   )r"  r0  r?   r@   results        rK   test_dtype_convertr>    s    'Q%HHHJ
yA::-jyj9:::A^^Aq!!))!,,Fz*A...vq!!!!!rM   c                   	
 t           t          }}|j        d         }t          |          } |dddd          }|                    ||           |                    |          \  	
	j        d         
d         k    sJ 	j        d         |k    sJ t          t          j        
          d |j	        D                        |
                    |          }t          |j        d                   D ]L	
fdt          |d d f                   D             }t          |t          j        |	                     Md S )
Nr   rc   r(   Fr%  r'   c                 &    g | ]}|j         j        S r   )r  
node_count)r   es     rK   r   z'check_decision_path.<locals>.<listcomp>  s    KKKaqw1KKKrM   c                 <    g | ]\  }}|         |z   f         S r   r   )r   r   r   est_id	indicatorn_nodes_ptrs      rK   r   z'check_decision_path.<locals>.<listcomp>  sA     
 
 
1 aV,q001
 
 
rM   )rF   )r  r  rF   r7   r>   decision_pathr   r   diffr  rE   r   	enumerater   r   )rG   r?   r@   r-   r   r   leavesleave_indicatorrD  rE  rF  s           @@@rK   check_decision_pathrL    sp   XqA
I'-O
/qA%VW
X
X
XCGGAqMMM ..q11I{?1R0000?1****
KK3?KKK  
 YYq\\FQ(( M M
 
 
 
 
 
!&F"344
 
 
 	"/273K3K3KLLLLM MrM   c                 $    t          |            d S rO   )rL  rP   s    rK   test_decision_pathrN    r}  rM   c                      t          j        dd          \  } }t          t          t          t
          g}|D ];} |d          }|                    | |           |j        D ]}|j        dk    sJ <d S )Nr   r(   r6   r   )min_impurity_decrease)	r   make_hastie_10_2r   r   r   r   r>   r  rP  )r?   r@   all_estimators	Estimatorr   r  s         rK   test_min_impurity_decreaserT    s    $sCCCDAq	N $ 5 5	ic2221O 	5 	5D -44444	55 5rM   c                     t          d          } t          j        d          }g d}d}t          j        t
          |          5  |                     ||           d d d            n# 1 swxY w Y   g d}d}t          j        t
          |          5  |                     ||           d d d            d S # 1 swxY w Y   d S )	Nr}   )rT   )r*   r*   )r'   r(   r*   zNSome value\(s\) of y are negative which is not allowed for Poisson regression.r  )r   r   r   zLSum of y is not strictly positive which is necessary for Poisson regression.)r   r   r  r   r  rA  r>   )r   r?   r@   r  s       rK   test_poisson_y_positive_checkrV    sR   
)
4
4
4C
A

A	/  
z	1	1	1  1               			A	0  
z	1	1	1  1                 s$   A))A-0A-B99B= B=c                   (     e Zd Z fdZ fdZ xZS )	MyBackendc                 H    d| _          t                      j        |i | d S )Nr   )r   super__init__)selfargskwargsr]  s      rK   r[  zMyBackend.__init__  s,    
$)&)))))rM   c                 d    | xj         dz  c_         t                                                      S )Nr(   )r   rZ  
start_call)r\  r]  s    rK   r`  zMyBackend.start_call  s(    

a

ww!!###rM   )__name__
__module____qualname__r[  r`  __classcell__)r]  s   @rK   rX  rX    sQ        * * * * *$ $ $ $ $ $ $ $ $rM   rX  testingc                     t          dd          } t          j        d          5 \  }}|                     t          t
                     d d d            n# 1 swxY w Y   |j        dk    sJ t          j        d          5 \  }}|                     t                     d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr,   r)   )r;   r   re  r   )r   joblibparallel_backendr>   r?   r@   r   r   )rI   bar   _s       rK   test_backend_respectedrk    s/   
 b
;
;
;C		 	+	+ |F1               8a<<<< 
	 	+	+ wA!               8q======s#   $AAAB,,B03B0c                      t          dddd          \  } }t          ddd                              | |          }t          j        d|j                                        d	
          sJ d S )Nr3  r*   r(   )r-   r/   r3   r"  rc   rq      )r   r3   r;   gHz>)abs_tol)r   r   r>   mathiscloser   r   )r?   r@   rI   s      rK   #test_forest_feature_importances_sumrq  #  s    AA  DAq !#  	c!Qii  <3377994HHHHHHHHrM   c                     t          j        d          } t          j        d          }t          d                              | |          }t          |j        t          j        dt           j                             d S )N)r,   r,   )r,   r,   r  r   )r   r  r   r   r>   r   r   float64)r?   r@   gbrs      rK   *test_forest_degenerate_feature_importancesru  -  sh    
A
A
R
0
0
0
4
4Q
:
:Cs/"BJ1O1O1OPPPPPrM   c                     t          |          dd          }d}t          j        t          |          5  |                    t
          t                     d d d            d S # 1 swxY w Y   d S )NFrW   r   max_sampleszl`max_sample` cannot be set if `bootstrap=False`. Either switch to `bootstrap=True` or set `max_sample=None`.r  )r8   r   r  rA  r>   r?   r@   )rG   r   r  s      rK   test_max_samples_bootstrapry  5  s     (
-3
O
O
OC	 
 
z	1	1	1  1                 s   !A##A'*A'c                     t          |          dt          d                    }d}t          j        t          |          5  |                    t          t                     d d d            d S # 1 swxY w Y   d S )NTg    eArw  z=`max_samples` must be <= n_samples=6 but got value 1000000000r  )r8   r   r   r  rA  r>   r?   r@   )rG   r   r  s      rK    test_large_max_samples_exceptionr{  B  s     (
-#c((
S
S
SCKE	z	/	/	/  1                 s   !A00A47A4c                    t          t          t          ddd          \  }}}}t          |          ddd          }|                    ||                              |          }t          |          dd d          }|                    ||                              |          }t          ||          }	t          ||          }
|	t          j        |
          k    sJ d S )Nr5  r  r   )
train_sizer|   r3   Tr   r   rx  r3   )	r   rf   rg   re   r>   rA   r$   r   r   )rG   r   r   r   r   
ms_1_modelms_1_predictms_None_modelms_None_predictms_1_ms
ms_None_mss              rK   $test_max_samples_boundary_regressorsr  K  s    '7u!( ( ($GVWf #4(Ca  J >>'733;;FCCL%d+Dq  M $''99AA&IIO v66G#OV<<JfmJ////////rM   c                    t          t          t          dt                    \  }}}}t          |          ddd          }|                    ||                              |          }t          |          dd d          }|                    ||                              |          }t          j                            ||           d S )Nr   )r3   stratifyTr   r~  )	r   r   r   r=   r>   r   r   re  assert_allclose)	rG   r   r   r   rj  r  
ms_1_probar  ms_None_probas	            rK   %test_max_samples_boundary_classifiersr  a  s    "2q7# # #GVWa $D)Ca  J 11??GGJ&t,Dq  M "%%gw77EEfMMMJz=99999rM   c                      g dg} t          g d          }t                      }d}t          j        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nr   r   z3sparse multilabel-indicator for y is not supported.r  )r	   r   r   r  rA  r>   )r?   r@   r   msgs       rK   test_forest_y_sparser  t  s    	A999A
 
"
"C
?C	z	-	-	-  1                 s   A&&A*-A*ForestClassc                    t           j                            d          }|                    dd          }|                    d          dk    } | d|d           } | d|d          }|                    ||           |                    ||           |j        d         j        }|j        d         j        }d}|j        |j        k    s
J |            d S )Nr(   i'  r)   r   )r;   r3   rx  z=Tree without `max_samples` restriction should have more nodes)r   r   r   r  r>   r  r  rA  )	r  r   r?   r@   est1est2tree1tree2r  s	            rK   'test_little_tree_with_small_max_samplesr  }  s    
)


"
"C		%A		%1A ;  D ;  D 	HHQNNNHHQNNNQ%EQ%E
ICe.........rM   rS  c                    t          j        ddgddgg          }t          j        ddg          } | d          }d}t          j        t          |	          5  |                    ||           d
d
d
           d
S # 1 swxY w Y   d
S )z9Check warning raised for max_features="auto" deprecation.r(   r)   r*   r   r   auto)r<   a  `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|'sqrt')` or remove this parameter as it is also the default value for RandomForest(Regressors|Classifiers) and ExtraTrees(Regressors|Classifiers)\.r  N)r   r  r   r<  FutureWarningr>   )rS  r?   r@   r   r  s        rK   test_max_features_deprecationr    s     	1a&1a&!""A
!QA
)
(
(
(C	  
m7	3	3	3  1                 s   A>>BBForestc                     ddl m} t                              dd          }|j        \  }} |||          }t          |          dd|          }|                    t          |           d S )Nr   )MSEr'   r(   r)   )r;   r   rT   )sklearn.tree._criterionr  rg   r  rF   re   r>   rf   )r  r  r@   r-   	n_outputsmse_criterionr   s          rK   -test_mse_criterion_object_segfault_smoke_testr    sy     ,+++++b!A7IyC	9--M
F
#1
V
V
VCGGE1rM   c                  @   t           j                            d          } t          j        |                     dd                    }t          dddd                              |          }|                                }d dD             }t          ||           d	S )
z3Check feature names out for Random Trees Embedding.r   r   r   r)   F)r;   r   r  r3   c                 $    g | ]\  }}d | d| S )randomtreesembedding_rj  r   )r   r  leafs      rK   r   zAtest_random_trees_embedding_feature_names_out.<locals>.<listcomp>  s>        D$ 	.--t--  rM   ))r   r)   )r   r*   )r   rc   )r   rd   rK  )r(   r*   )r(   rc   )r(   rd   N)	r   r   r   r   r  r   r>   get_feature_names_outr   )r3   r?   r  namesexpected_namess        rK   -test_random_trees_embedding_feature_names_outr    s    9((++L
|!!#q))**A!!5q  	c!ff  ((**E 	
	  N ~u-----rM   c                 4   t          j        ddgddgg          }t          j        ddg          }t          |                      }|                    ||           d}t	          j        t          |          5  |j         d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r   r   zoAttribute `base_estimator_` was deprecated in version 1.2 and will be removed in 1.4. Use `estimator_` instead.r  )r   r  r7   r>   r   r<  r  base_estimator_)rG   r?   r@   modelr  s        rK   'test_base_estimator_property_deprecatedr    s    
 	1a&1a&!""A
!QAd#%%E	IIaOOO	<  
m8	4	4	4                   s   8BBBc                 N   |                      t          j        j        dt	          t
          d                     t          j                            d          }t          dd|          \  }}t          |d	          }t          d
|          }t          |||d
           dS )zRandomForestClassifier must work on readonly sparse data.

    Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/25333
    r"   r   )
max_nbytesr   )seedrm  r4   Tr   r)   )r   r3   )cvN)setattrsklearnensemble_forestr   r"   r   r   r   r   r	   r   r   )monkeypatchr   r?   r@   rI   s        rK   test_read_only_bufferr    s    
  S)))  
 )

Q

'
'C3OOODAq14   A
 
<
<
<CCA!$$$$$$rM   )rq   )r3  )__doc__rY  ro  collectionsr   	itertools	functoolsr   r   r   typingr   r   numpyr   scipy.sparser	   r
   r   scipy.specialr   rg  r   r  sklearn.dummyr   sklearn.metricsr   sklearn.utils._testingr   r   r   r   r   r   sklearn.exceptionsr   r   sklearn.decompositionr   sklearn.datasetsr   sklearn.ensembler   r   r   r   r   sklearn.model_selectionr   r   r    sklearn.svmr!   sklearn.utils.parallelr"   sklearn.utils.validationr#   r$   sklearn.tree._classesr%   r?   r@   rB   rC   r   r   	load_irisrX   r   permutationrZ   rv   permrY   make_regressionrf   rg   rQ  r  r  r   float32parallelget_active_backendr]  DEFAULT_JOBLIB_BACKENDr=   re   r  dictr7   str__annotations__updater   r8   rL   markparametrizerQ   r\   ra   rj   ro   r   r   r   r   r   r   r   rs  chainr   r  r  r   r  r3  r:  r?  r   rF   rC  rI  rM  rO  rT  rW  rb  rd  rm  ro  rv  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/  r1  r5  r7  r>  rL  rN  rT  rV  rX  register_parallel_backendrk  rq  ru  ry  r{  r  r  r  r  r  r  r  r  r  r   rM   rK   <module>r     s       # # # # # #           " " " " " "                   # # # # # # # # # # # # # # # # # #          ( ( ( ( ( ( 1 1 1 1 1 1 6 6 6 6 6 6 < < < < < < 5 5 5 5 5 5 5 5 5 5 5 5 2 2 2 2 2 2 6 6 6 6 6 6 - - - - - -       . . . . . . 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 E E E E E E E E 0 0 0 0 0 0 ! ! ! ! ! ! + + + + + + 7 7 7 7 7 7 . . . . . . 2 2 2 2 2 2 	"XBx"bAq6Aq6Aq6:"X1v1vjj 08/    x
t{'((IdO	k$ (x'#"STUUUu /X.!LLL (??2:&&  ;;==a@J  14   /2   0  %)DFF 4S> * * *   + , , ,   * + + +   , - - -0B0G0G0I0I tCH~ I I I  $ $%6 7 7 7< < <& !344# # 54#W W W" !344&:;;* * <; 54*  2 !233D 0 0  4302/ 2/ 2/j &BCC> > DC>&( ( ( !233% % 43%
 
 
  !344  54#H #H #HL 2:rz":;;IO"VZ$899!#V#V#VWW  9 9  <;9j@ j@ j@Z !233C C 43C +-?-F-F-H-HII#H#H#HII 	
)X)C1STUUU	
	
 	
	
)X)!11  	
 		
 	
 IK!Oa	

	
4X4sQRSSS	
	
 	
! 0!E !E1  JI JI4!EH *,=,D,D,F,FGG#H#H#HII	
%X%"  	
 		
 	
	
%X%"  	
 		
 	
 ""= "=#  JI HG&"=J *,I,P,P,R,RSS
. 
. TS
. *,I,P,P,R,RSS IKU33D		
 IKKAATY_Q-?,CKDDT22H		
 " #  TS$ tUm44C C 54C$ $ $ !344  54
) ) ) !>??  @?   !>??' ' @?'00 00 00f !>??  @? !3444, 4, 544,n9 9 9$ !344  54
- 
- 
-L L L( 1 1 1.P P P2 2 2&3 3 3l/ / / !233) ) 43)S S S& !233" " 43"R R R. !233! ! 43!
 
 
> !233) ) 43)
 
 
: !233:z:*NOO5 5 PO 435,; ,; ,;^ !>??2:rz":;;% % <; @?% 
 
 
 !233) ) 43),N ,N ,N^ !344  54   !344A A 54A  * !344$ $ 54$   < !233  43< < <" !233! ! 43!   !2330 0 4305 5 52 !233. . 43./. /. /.d !>??  @?" " " "M M M0 !>??  @?5 5 5$  ,$ $ $ $ $& $ $ $ !  I 6 6 6   I I IQ Q Q !>??	 	 @?	 !>??  @? !2330 0 430* !344: : 54:$   )?AV(WXX4 4 YX4> 	   & #455  65. . .6 
  	 % % % % %rM   