
    -iQ                        % S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJrJ	r	  SSK
JrJr  SSKJr  SSKrSSKrSSKrSSKJr  SSKrSS	KJrJr  SS
KJrJr  SSKJr  SSKJr  SSKJ r J!r!J"r"J#r#J$r$  SSK%J&r&J'r'  SSK(J)r)  SSK*J+r+J,r,J-r-J.r.  SSK/J0r0J1r1J2r2  SSK3J4r4  SSK5J6r6  SSK7J8r8J9r9J:r:J;r;J<r<J=r=J>r>  SSK?J@r@JArAJBrB  SSKCJDrD  SSKEJFrF  SSKGJHrH  SS/SS/SS/SS/SS/SS//rI/ SQrJSS/SS/SS//rK/ SQrL\R2                  " S S!SSSS"SS#9u  rMrN\R                  " 5       rP\H" S5      rQ\QR                  \PR                  R                  5      rU\PR                  \U   \PlV        \PR                  \U   \PlS        \R                  " S S!SS$9u  rXrY\R4                  " S%SS&9u  rZr[\ZR                  \R                  5      rZ\R                  R                  5       S   R                  ra\ \"S'.rb\!\#S(.rcS)\$0rd\e" 5       rf\\g\4   \hS*'   \fR                  \b5        \fR                  \c5        \fR                  \d5        \bR                  5       rk\\g\4   \hS+'   \kR                  \c5        \R                  R                  S,\b5      S- 5       rn\R                  R                  S,\b5      \R                  R                  S.S/5      S0 5       5       ro\R                  R                  S,\c5      \R                  R                  S.S15      S2 5       5       rpS3 rq\R                  R                  S.S45      S5 5       rr\R                  R                  S,\c5      S6 5       rs\R                  R                  S,\b5      S7 5       rt\R                  R                  S8\R                  \R                  45      \R                  R                  S9\R                  " \	" \bS:S;/5      \	" \c/ S<Q5      5      5      S= 5       5       rwS> rx\R                  R                  S,\f5      S? 5       ry\R                  R                  S@\bR                  5       5      \R                  R                  SA/ SBQ5      \R                  R                  SC/ \R2                  " SDSSSE9QSFP7/ \R2                  " SGSSHSSI9QSJP7\PR                  \PR                  S-  S-   SJ4/ \R                  " SDSS&9QSKP7/5      \R                  R                  SLSM\" \,SNSO9/5      SP 5       5       5       5       r|\R                  R                  SQ\cR                  5       5      \R                  R                  SA/ SBQ5      \R                  R                  SR/ \R                  " S S!SSSS9QSTP7/ \R                  " S S!SSSS9QSUP7/5      \R                  R                  SLSM\+/5      SV 5       5       5       5       r}\R                  R                  SW\kR                  5       5      SX 5       r~\R                  R                  SW\kR                  5       5      SY 5       r\R                  R                  S@\bR                  5       5      SZ 5       r\R                  R                  SQ\cR                  5       5      S[ 5       r\R                  R                  SLSMS"/5      S\ 5       r\R                  R                  S,\b5      S] 5       r\R                  R                  S,\k5      S^ 5       r\R                  R                  S,\k5      S_ 5       r\R                  R                  S,\k5      S` 5       r\R                  R                  S,\b5      Sa 5       r\R                  R                  S,\b5      Sb 5       rSc rSd rSe r\R                  R                  Sf\A5      Sg 5       rSh rSi r\R                  R                  S,\f5      Sj 5       r\R                  R                  S,\f5      Sk 5       r\R                  R                  S,\f5      Sl 5       r\R                  R                  S,\f5      Sm 5       r\R                  R                  S,\f5      \R                  R                  Sn\@\A-   \B-   5      So 5       5       r\R                  R                  S,\k5      \R                  R                  S8\R                  \R                  45      Sp 5       5       r\R                  R                  S,\f5      Sq 5       r\R                  R                  S,\b5      Sr 5       r\R                  R                  S,\b5      Ss 5       r\R                  R                  S,\b5      St 5       r\R                  R                  S,\f5      Su 5       r\R                  R                  S,\f5      Sv 5       r\R                  R                  S,\f5      Sw 5       r\R                  R                  S,\f5      Sx 5       r\R                  R                  S,\k5      Sy 5       r\R                  R                  S,\k5      Sz 5       rSS{ jr\R                  R                  S,\k5      S| 5       rS} rS~ r " S S\a5      r\GRH                  " S\5        \>S 5       rS rS r\R                  R                  S,\k5      S 5       r\R                  R                  S,\k5      S 5       r\R                  R                  S,\c5      S 5       r\R                  R                  S,\b5      S 5       r\R                  R                  S\B5      S 5       r\R                  R                  S\"\#/5      S 5       r\R                  R                  S\c5      S 5       rS r\R                  R                  S\B5      S 5       r\R                  R                  SSS/5      S 5       r\R                  R                  SSS/5      \R                  R                  SSMS"/5      \R                  R                  S\kR                  5       5      S 5       5       5       r\R                  R                  S\R                  \#4\R2                  \"4\R                  \!4\R2                  \ 4/5      S 5       r\R                  R                  S\"\#\!\ /5      S 5       r\R                  R                  S\cR                  5       5      S 5       rg)z:
Testing for the forest module (sklearn.ensemble.forest).
    N)defaultdict)partial)combinationsproduct)AnyDict)patch)comb)clonedatasets)make_classificationmake_hastie_10_2)TruncatedSVD)DummyRegressor)ExtraTreesClassifierExtraTreesRegressorRandomForestClassifierRandomForestRegressorRandomTreesEmbedding)_generate_unsampled_indices_get_n_samples_bootstrap)NotFittedError)explained_variance_scoref1_scoremean_poisson_deviancemean_squared_error)GridSearchCVcross_val_scoretrain_test_split)	LinearSVC)SPARSE_SPLITTERS)_convert_containerassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalignore_warningsskip_if_no_parallel)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERS)type_of_target)Parallel)check_random_state      )r0   r0   r0   r1   r1   r1      )r0   r1   r1     
   F)	n_samples
n_featuresn_informativen_redundant
n_repeatedshufflerandom_stater6   r7   r<      r6   r<   )r   r   )r   r   r   FOREST_ESTIMATORSFOREST_CLASSIFIERS_REGRESSORSnamec                    [         U    nU" SSS9nUR                  [        [        5        [	        UR                  [        5      [        5        S[        U5      :X  d   eU" SSSS9nUR                  [        [        5        [	        UR                  [        5      [        5        S[        U5      :X  d   eUR                  [        5      nUR                  [        [        5      UR                  4:X  d   eg)z&Check classification on a toy dataset.r5   r1   n_estimatorsr<   )rE   max_featuresr<   N)FOREST_CLASSIFIERSfitXyr&   predictTtrue_resultlenapplyshaperE   )rB   ForestClassifierclfleaf_indicess       U/var/www/html/venv/lib/python3.13/site-packages/sklearn/ensemble/tests/test_forest.pytest_classification_toyrU   y   s     *$/

;CGGAqMs{{1~{3S>>

KCGGAqMs{{1~{3S>> 99Q<L#a&#*:*:!;;;;    	criterion)ginilog_lossc                    [         U    nU" SUSS9nUR                  [        R                  [        R                  5        UR                  [        R                  [        R                  5      nUS:  d   SX4-  5       eU" SUSSS9nUR                  [        R                  [        R                  5        UR                  [        R                  [        R                  5      nUS:  d   SX4-  5       eg )	Nr5   r1   rE   rW   r<   ?z'Failed with criterion %s and score = %fr2   rE   rW   rF   r<         ?)rG   rH   irisdatatargetscore)rB   rW   rQ   rR   rb   s        rT   test_iris_criterionrc      s     *$/
ia
PCGGDIIt{{#IIdii-E3;VAYDVVV;
911C GGDIIt{{#IIdii-E3;VAYDVVV;rV   )squared_errorabsolute_errorfriedman_msec                 P   [         U    nU" SUSS9nUR                  [        [        5        UR	                  [        [        5      nUS:  d   SUU4-  5       eU" SUSSS9nUR                  [        [        5        UR	                  [        [        5      nUS:  d   S	UU4-  5       eg )
N   r1   r[   g(\?z:Failed with max_features=None, criterion %s and score = %f   r]   gq=
ףp?z7Failed with max_features=6, criterion %s and score = %f)FOREST_REGRESSORSrH   X_regy_regrb   )rB   rW   ForestRegressorregrb   s        rT   test_regression_criterionro      s     (-O
qIA
NCGGE5IIeU#E4< D
	
< )!!C GGE5IIeU#E4< RV  <rV   c            	         [         R                  R                  S5      n Su  pn[        R                  " X-   X0S9nU R                  SSUS9[         R                  " USS9-  nU R                  [         R                  " XE-  5      S	9n[        XFX S
9u  pxp[        SSSU S9n[        SSSU S9nUR                  Xy5        UR                  Xy5        [        SS9R                  Xy5      nXyS4XS44 H  u  pFn[        XkR                  U5      5      n[        U[         R                  " UR                  U5      SS5      5      n[        XmR                  U5      5      nUS:X  a  UU:  d   eUSU-  :  a  M   e   g)zTest that random forest with poisson criterion performs better than
mse for a poisson target.

There is a similar test for DecisionTreeRegressor.
*   r4   r4   r5   r=   r/   r2   lowhighsizer   axislam	test_sizer<   poissonr5   sqrt)rW   min_samples_leafrF   r<   rd   mean)strategytraintestgư>N皙?)nprandomRandomStater   make_low_rank_matrixuniformmaxr}   expr   r   rH   r   r   rK   clip)rngn_trainn_testr7   rI   coefrJ   X_trainX_testy_trainy_test
forest_poi
forest_msedummy	data_name
metric_poi
metric_msemetric_dummys                     rT   test_poisson_vs_mser      s    ))


#C".GZ%%"z	A
 ;;2AJ;7"&&:KKDqx()A'7	($GW 'bvTWJ '!	J NN7$NN7$F+//AE$w7&&9QRi*1.@.@.CD
 +rwwz))!,dD9

 -Qa0@A 
***C,....# SrV   )r}   rd   c                    [         R                  R                  S5      nSu  p#n[        R                  " X#-   XAS9nUR                  SSUS9[         R                  " USS9-  nUR                  [         R                  " XV-  5      S	9n[        U S
SUS9nUR                  XW5        [         R                  " UR                  U5      5      [        R                  " [         R                  " U5      5      :X  d   eg)z8"Test that sum(y_pred)==sum(y_true) on the training set.rq   rr   r=   r/   r2   rs   r   rw   ry   r5   F)rW   rE   	bootstrapr<   N)r   r   r   r   r   r   r   r}   r   r   rH   sumrK   pytestapprox)	rW   r   r   r   r7   rI   r   rJ   rn   s	            rT   #test_balance_property_random_forestr      s     ))


#C".GZ%%"z	A ;;2AJ;7"&&:KKDqx()A
"CC GGAM66#++a.!V]]266!9%====rV   c                     [         U    " SS9n[        US5      (       a   e[        US5      (       a   eUR                  / SQ/ SQ/SS/5        [        US5      (       a   e[        US5      (       a   eg )	Nr   r<   classes_
n_classes_r1   r2   r3      rh   ri   r1   r2   )rj   hasattrrH   )rB   rs     rT   test_regressor_attributesr     sy     	$Q/Aq*%%%%q,''''EE9i
 1a&)q*%%%%q,'''''rV   c           	      j   [         U    n[        R                  " SS9   U" SSSSS9nUR                  [        R
                  [        R                  5        [        [        R                  " UR                  [        R
                  5      SS9[        R                  " [        R
                  R                  S   5      5        [        UR                  [        R
                  5      [        R                  " UR                  [        R
                  5      5      5        S S S 5        g ! , (       d  f       g = f)Nignoredivider5   r1   )rE   r<   rF   	max_depthrw   r   )rG   r   errstaterH   r_   r`   ra   r%   r   predict_probaonesrP   r   predict_log_proba)rB   rQ   rR   s      rT   test_probabilityr     s     *$/	H	%!!q
 			4;;'!FF3$$TYY/a8"''$))//RSBT:U	
 	"dii("&&1F1Ftyy1Q*R	
 
&	%	%s   C=D$$
D2dtypezname, criterionrX   rY   )rd   rf   re   c                 v   SnU[         ;   a  US:X  a  Sn[        R                  U SS9n[        R                  U SS9n[        U   nU" SUSS9nUR                  XE5        UR                  n[        R                  " US	:  5      n	UR                  S   S:X  d   eU	S
:X  d   e[        R                  " US S
 S	:  5      (       d   eUR                  nUR                  SS9  UR                  n
[        X5        [        S5      R                  SS[        U5      5      nU" SSUS9nUR                  XEUS9  UR                  n[        R                  " US:  5      (       d   eS HU  nU" SSUS9nUR                  XEX-  S9  UR                  n[        R                   " X-
  5      R#                  5       U:  a  MU   e   g )N{Gz?re   皙?Fcopyr5   r   r[   皙?r3   r2   n_jobsr1   )rE   r<   rW   sample_weight        )r^   d   )rj   X_largeastypey_larger@   rH   feature_importances_r   r   rP   all
set_paramsr%   r.   randintrN   absr   )r   rB   rW   	tolerancerI   rJ   ForestEstimatorestimportancesn_importantimportances_parallelr   scaleimportances_biss                 rT   test_importancesr   $  s    I  Y2B%B	 	u5)Au5)A'-O
rYQ
OCGGAM**K &&s*+KQ2%%%!66+bq/C'(((( **KNN!N33k@ 'q)11!RQ@M
rY
OCGGAG.**K66+$%%%%2ASE$9:22vvk3499;iGGG	 rV   c                  x  ^	^
 S m	S m
U	U
4S jn [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/
5      n[         R                  " US S 2S S24   [        S9US S 2S4   p2UR                  S   n[         R                  " U5      n[        U5       H  nU " XbU5      XV'   M     [        SSSSS9R                  X#5      n[        S UR                   5       5      UR                  -  n[        T
" U5      [        U5      5        [         R                  " XX-
  5      R                  5       S:  d   eg )Nc                 V    U S:  d  X:  a  S$ [        [        U5      [        U 5      SS9$ )Nr   T)exact)r
   int)kns     rT   binomial-test_importances_asymptotic.<locals>.binomial[  s(    EQUqHSVSV4(HHrV   c                     [        U 5      nSn[        R                  " U 5       H.  nSU-  U-  nUS:  d  M  X$[        R                  " U5      -  -  nM0     U$ )Nr         ?r   )rN   r   bincountlog2)samplesr6   entropycountps        rT   r   ,test_importances_asymptotic.<locals>.entropy^  sS    L	[[)Eei'A1urwwqz>) *
 rV   c                 j  > UR                   u  p4[        [        U5      5      nUR                  U 5        [        U5       Vs/ s H   n[        R
                  " US S 2U4   5      PM"     nnSn[        U5       GH'  n	ST" X5      XI-
  -  -  n
[        XY5       GH  n[        [        U	5       Vs/ s H	  oX      PM     sn6  H  n[        R                  " U[        S9n[        U	5       H  nXS S 2X   4   X   :H  -  nM     XS S 24   X.   nn[        U5      nUS:  d  M_  / nXp    H#  nUS S 2U 4   U:H  nUR                  UU   5        M%     UU
SU-  U-  -  T" U5      [        U Vs/ s H  nT" U5      [        U5      -  U-  PM     sn5      -
  -  -  nM     GM     GM*     U$ s  snf s  snf s  snf )Nr   r   r   r   )rP   listrangepopr   uniquer   r   r   boolrN   appendr   )X_mrI   rJ   r6   r7   featuresivaluesimpr   r   Bjbmask_bX_y_n_samples_bchildrenximask_xicr   r   s                         rT   mdi_importance3test_importances_asymptotic.<locals>.mdi_importancei  s    !	j)*S.3J.?@.?"))AadG$.?@z"A(11Z^DED "(. q"BA!$<"BCAWWYd;F"1XAqtG*"44 & qy\19B"%b'K"Q#%"(+B&(CjB&6G$OOBwK8 #.  "[09<> !("% 2:%&19A )0
SV(;k(I19%&#"!"
! D / #J 
S A #C,%&s   'F&-F+(!F0)r   r   r1   r   r   r1   r   r1   )r1   r   r1   r1   r1   r   r1   r2   )r1   r   r1   r1   r   r1   r1   r3   )r   r1   r1   r1   r   r1   r   r   )r1   r1   r   r1   r   r1   r1   rh   )r1   r1   r   r1   r1   r1   r1   ri   )r1   r   r1   r   r   r1   r      )r1   r1   r1   r1   r1   r1   r1      )r1   r1   r1   r1   r   r1   r1   	   )r1   r1   r1   r   r1   r1   r1   r   r   r   r1   r4   rY   r   )rE   rF   rW   r<   c              3   T   #    U  H  nUR                   R                  S S9v   M      g7f)F)	normalizeN)tree_compute_feature_importances).0trees     rT   	<genexpr>.test_importances_asymptotic.<locals>.<genexpr>  s)      
' JJ22U2C's   &(r   )r   arrayr   rP   zerosr   r   rH   r   estimators_rE   r$   r   r   )r   r`   rI   rJ   r7   true_importancesr   rR   r   r   r   s            @@rT   test_importances_asymptoticr  V  s6   
I	.` 88$$$$$$$$$$	
D 88DBQBKt,d1a4jqJ xx
+:,Q15  qJQ	c!i 
 	 

 	
 

		  
C$4566"016684???rV   c                     SR                  U 5      n[        R                  " [        US9   [	        [
        U    " 5       S5        S S S 5        g ! , (       d  f       g = f)NzfThis {} instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.matchr   )formatr   raisesr   getattrr@   )rB   err_msgs     rT   !test_unfitted_feature_importancesr    sE    	==CVD\  
~W	5!$')+AB 
6	5	5s   A
ArQ   X_type)r  
sparse_csr
sparse_csczX, y, lower_bound_accuracy,  )r6   	n_classesr<   r\     ri   )r6   r  r8   r<   g?g
ףp=
?	oob_scoreTmicro)averagec                    [        XS9n[        UUSSS9u  pgpU " SSUSS9n
[        U
S5      (       a   e[        U
S	5      (       a   eU
R                  Xh5        [	        U5      (       a  U" XR                  U5      5      nO#U
R                  Xy5      nU
R                  U:  d   e[        XR                  -
  5      nUS
::  d   SU< S35       e[        U
S5      (       d   e[        U
S5      (       a   e[        U
S	5      (       d   eUR                  S:X  a$  UR                  S   [        [        U5      5      4nO8UR                  S   [        [        USS2S4   5      5      UR                  S   4nU
R                  R                  U:X  d   eg)z5Check that OOB score is close to score on a test set.constructor_namer^   r   r{   (   TrE   r   r  r<   
oob_score_oob_decision_function_g)\(?z	abs_diff=z is greater than 0.11oob_prediction_r1   N)r"   r   r   rH   callablerK   rb   r&  r   ndimrP   rN   setr'  )rQ   rI   rJ   r  lower_bound_accuracyr  r   r   r   r   
classifier
test_scoreabs_diffexpected_shapes                 rT   test_forest_classifier_oobr1    s   > 	16A'7			($GW "	J z<0000z#;<<<<NN7$	v'9'9&'AB
%%f5
$$(<<<<: 5 556Ht@	{*?@@:|,,,,z#45555:78888vv{!--*CAK8!--*CAadG,=qwwqzJ,,22nDDDrV   rm   zX, y, lower_bound_r2)r6   r7   	n_targetsr<   ffffff?g?c                    [        XS9n[        UUSSS9u  pgpU " SSUSS9n
[        U
S5      (       a   e[        U
S	5      (       a   eU
R                  Xh5        [	        U5      (       a  U" XR                  U5      5      nO#U
R                  Xy5      nU
R                  U:  d   e[        XR                  -
  5      S
::  d   e[        U
S5      (       d   e[        U
S	5      (       d   e[        U
S5      (       a   eUR                  S:X  a  UR                  S   4nOUR                  S   UR                  4nU
R                  R                  U:X  d   eg)zXCheck that forest-based regressor provide an OOB score close to the
score on a test set.r"  r^   r   r{   2   Tr%  r&  r(  r   r'  r1   N)r"   r   r   rH   r)  rK   rb   r&  r   r*  rP   r(  )rm   rI   rJ   r  lower_bound_r2r  r   r   r   r   	regressorr.  r0  s                rT   test_forest_regressor_oobr8    s\   . 	16A'7			($GW  	I y,////y"34444MM'#	v'8'8'@A
__V4
##~555z0001S8889l++++9/0000y":;;;;vv{!--*,!--*AFF3$$**n<<<rV   r   c                     U " SSSSS9n[         R                  " [        SS9   UR                  [        R
                  [        R                  5        SSS5        g! , (       d  f       g= f)zbCheck that a warning is raised when not enough estimator and the OOB
estimates will be inaccurate.r1   Tr   rE   r  r   r<   z"Some inputs do not have OOB scoresr  N)r   warnsUserWarningrH   r_   r`   ra   )r   	estimators     rT   test_forest_oob_warningr>  N  sN      	I 
k)M	Ndii- 
O	N	Ns   /A
A)c                     [         R                  n[         R                  nSnU " SSS9n[        R                  " [
        US9   UR                  X5        SSS5        g! , (       d  f       g= f)zYCheck that we raise an error if OOB score is requested without
activating bootstrapping.
z6Out of bag estimation only available if bootstrap=TrueTFr  r   r  N)r_   r`   ra   r   r  
ValueErrorrH   )r   rI   rJ   r  r=  s        rT   (test_forest_oob_score_requires_bootstraprB  \  sM    
 			AAFG$%@I	z	1a 
2	1	1s   A
A,c                 ~   [         R                  R                  S5      n[        R                  nUR                  SS[        R                  R                  S   S4S9n[        U5      nUS:X  d   eU " SSS9nS	n[        R                  " [        US
9   UR                  X#5        SSS5        g! , (       d  f       g= f)zoCheck that we raise an error with when requesting OOB score with
multiclass-multioutput classification target.
rq   r   rh   r2   rs   zmulticlass-multioutputTr@  z:The type of target cannot be used to compute OOB estimatesr  N)r   r   r   r_   r`   r   rP   r,   r   r  rA  rH   )rQ   r   rI   rJ   y_typer=  r  s          rT   6test_classifier_error_oob_score_multiclass_multioutputrE  i  s    
 ))


#C		A);Q(?@AAF---- 44@IJG	z	1a 
2	1	1s   B..
B<c           	         [         R                  R                  S5      n[        R                  nUR                  SS[        R                  R                  S   S4S9nU " SSSSS9nUR                  X#5        [        [        U5      UR                  5      nUR                  S   S	-  n[         R                  " US/5      n[        US
U 5       H  u  pSn
[         R                  " S5      nUR                   H`  n[        UR                  [        U5      U5      nX;   d  M*  U
S-  n
XR!                  U	R#                  SS5      5      R%                  5       -  nMb     X-  Xx'   M     ['        XtR(                  S
U 5        g
)zCheck that multioutput regression with integral values is not interpreted
as a multiclass-multioutput target and OOB score can be computed.
rq   r   r5   r2   rs      Tr:  r   Nr1   r0   )r   r   r   r_   r`   r   rP   rH   r   rN   max_samplesr  	enumerater  r   r<   rK   reshapesqueezer#   r(  )rm   r   rI   rJ   r=  n_samples_bootstrapn_samples_testoob_pred
sample_idxsamplen_samples_ooboob_pred_sampler  oob_unsampled_indicess                 rT   2test_forest_multioutput_integral_regression_targetrT  y  sV   
 ))


#C		A$))//!*<a)@AA44aI MM!23q69;P;PQWWQZ1_Nxx+,H'/>(:;
((1+))D$?!!3q6+>%! 2"<<q"0E#F#N#N#PP *  /> < H77HIrV   c                 &   [         R                  " [        SS9   [        U S9  S S S 5        [         R                  " [        SS9   [        5       R                  [        [        5        S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nz"got an unexpected keyword argumentr  r  zOOB score not supported)r   r  	TypeErrorr   NotImplementedError_set_oob_score_and_attributesrI   rJ   rV  s    rT   +test_random_trees_embedding_raise_error_oobrZ    s\    	y(L	My1 
N	*2K	L<<QB 
M	L 
N	M	L	Ls   
A1#B1
A?
Bc                     [         U    " 5       n[        USSS.5      nUR                  [        R                  [        R
                  5        g )Nr1   r2   )rE   r   )rG   r   rH   r_   r`   ra   )rB   forestrR   s      rT   test_gridsearchr^    s8      %'F
vVL
MCGGDIIt{{#rV   c                    U [         ;   a!  [        R                  n[        R                  nOU [        ;   a  [
        n[        n[        U    nU" SSSS9nUR                  WW5        [        U5      S:X  d   eUR                  SS9  UR                  U5      nUR                  SS9  UR                  U5      n[        XVS5        g)	z-Check parallel computations in classificationr5   r3   r   rE   r   r<   r1   r   r2   N)rG   r_   r`   ra   rj   rk   rl   r@   rH   rN   r   rK   r%   )rB   rI   rJ   r   r]  y1y2s          rT   test_parallelrc    s     !!IIKK	"	"'-O"QQGF
JJq!v;"
Q		B
Q		Bba(rV   c                    U [         ;   a-  [        R                  S S S2   n[        R                  S S S2   nO"U [        ;   a  [
        S S S2   n[        S S S2   n[        U    nU" SS9nUR                  WW5        UR                  X5      n[        R                  " U5      n[        R                  " U5      n[        U5      UR                  :X  d   eUR                  X5      nXX:X  d   eg )Nr2   r   r   )rG   r_   r`   ra   rj   rk   rl   r@   rH   rb   pickledumpsloadstype	__class__)	rB   rI   rJ   r   objrb   pickle_objectobj2score2s	            rT   test_picklern    s     !!IIccNKK!	"	"#A#J#A#J'-O
q
)CGGAqMIIaOELL%M<<&D:&&&ZZF??rV   c                    SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//nSS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//nSS/SS/SS/SS//nSS/SS/SS/SS//n[         U    " SSS9nUR                  X5      R                  U5      n[        Xd5        U [        ;   a  [
        R                  " S	S
9   UR                  U5      n[        U5      S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUR                  U5      n[        U5      S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   e S S S 5        g g ! , (       d  f       g = f)Nr/   r0   r1   r2   r   r3   Fr<   r   r   r   r   r2   r   r   )r@   rH   rK   r%   rG   r   r   r   rN   rP   r   	rB   r   r   r   r   r   y_predproba	log_probas	            rT   test_multioutputrw    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
BCWWW&..v6Ff-!![[)%%f-Eu:?"?8>>V+++8>>V+++--f5Iy>Q&&&Q<%%///Q<%%/// *) "))s    BE$$
E2c                    SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//nSS/SS/SS/SS/SS/SS/SS/SS/SS/SS	/SS	/SS	//nSS/SS/SS/SS//nSS/SS/SS/SS	//n[         U    " S
SS9nUR                  X5      R                  U5      n[        Xd5        [        R
                  " SS9   UR                  U5      n[        U5      S:X  d   eUS
   R                  S:X  d   eUS   R                  S:X  d   eUR                  U5      n[        U5      S:X  d   eUS
   R                  S:X  d   eUS   R                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr/   r0   r1   r2   redbluegreenpurpleyellowr   Frp  r   r   rq  rr  )
r@   rH   rK   r&   r   r   r   rN   rP   r   rs  s	            rT   test_multioutput_stringr~    s   
 
R	R	R	
A	
A	
A	Q	Q	Q	
B	
B	
BG 
			'	'	'				(	(	(G 2hAQ!R1F		'		(	F D
!qE
BCWWW&..v6Fv&	H	%!!&)5zQQx~~'''Qx~~'''))&1	9~"""|!!V+++|!!V+++ 
&	%	%s   6BE
E'c                    [         U    nU" SS9R                  [        [        5      nUR                  S:X  d   e[        UR                  SS/5        [        R                  " [        [        R                  " [        5      S-  45      R                  nU" SS9R                  [        U5      n[        UR                  SS/5        [        UR                  SS/SS//5        g )Nr   r   r2   r0   r1   r/   )rG   rH   rI   rJ   r   r&   r   r   vstackr  rL   )rB   rQ   rR   _ys       rT   test_classes_shaper  @  s     *$/ 
*
.
.q!
4C>>Qs||b!W- 
Arxx{Q'	(	*	*B

*
.
.q"
5Cs~~1v.s||r1gAw%78rV   c                      [        SSS9n [        R                  " SS9u  pU R                  U5      n[	        U[
        R                  5      (       d   eg )Nr5   F)rE   sparse_outputr^   factor)r   r   make_circlesfit_transform
isinstancer   ndarray)hasherrI   rJ   X_transformeds       rT   test_random_trees_dense_typer  S  sK    
 "rGF  ,DA((+M mRZZ0000rV   c                      [        SSSS9n [        SSSS9n[        R                  " SS9u  p#U R                  U5      nUR                  U5      n[	        UR                  5       U5        g )Nr5   Fr   )rE   r  r<   Tr^   r  )r   r   r  r  r&   toarray)hasher_densehasher_sparserI   rJ   X_transformed_denseX_transformed_sparses         rT   test_random_trees_dense_equalr  `  su    
 (u1L )t!M   ,DA&44Q7(66q9 +3357JKrV   c                  (   [        SSS9n [        R                  " SS9u  pU R                  U5      n[        SSS9n [	        U R                  U5      R                  U5      R                  5       UR                  5       5        UR                  S   UR                  S   :X  d   e[	        UR                  SS9U R                  5        [        SS	9nUR                  U5      n[        5       nUR                  XR5        UR                  XR5      S
:X  d   eg )NrG  r1   rD   r^   r  r   rw   r2   )n_componentsr   )r   r   r  r  r&   rH   	transformr  rP   r   rE   r   r    rb   )r  rI   rJ   r  svd	X_reduced
linear_clfs          rT   test_random_hasherr  s  s    
 "rBF  ,DA((+M "rBFvzz!}..q199;]=R=R=TU q!QWWQZ///}((a(0&2E2EF
A
&C!!-0IJNN9 I)S000rV   csc_containerc                     [         R                  " SS9u  p[        SSS9nUR                  U5      nUR                  U " U5      5      n[	        UR                  5       UR                  5       5        g )Nr   r   rG  r1   rD   )r   make_multilabel_classificationr   r  r&   r  )r  rI   rJ   r  r  r  s         rT   test_random_hasher_sparse_datar    sc    22BDA!rBF((+M!//a0@A+335}7L7L7NOrV   c            	         [        S5      n Su  pU R                  X5      nU R                  SSU5      nS Vs/ s H  n[        SUSS9R	                  X45      PM     nnU R                  X5      nU Vs/ s H  oR                  U5      PM     n	n[        R                  " U	5       H  u  p[        X5        M     g s  snf s  snf )	N!0  )P   rG  r   r2   )r1   r2   r3   r         r>   i90  r`  )	r.   randnr   r   rH   r   	itertoolspairwiser%   )r   r6   r7   r   r   r   clfsr   rR   probasproba1proba2s               rT   test_parallel_trainr    s    
U
#C"Iii	.Gkk!Q	*G +	 +F 	BvERVV	
 +	 	  YYy-F3784C'4F8#,,V4!&1 5 9s   $B:3B?c                  N   [        S5      n U R                  SSSS9nU R                  S5      nSn[        USS	9R	                  X5      n[        [        5      nUR                   HY  nS
R                  S [        UR                  R                  UR                  R                  5       5       5      nXV==   S-  ss'   M[     [        UR                  5        VVs/ s H  u  pgSU-  U-  U4PM     snn5      n[        U5      S:X  d   eSUS   S   :  d   eSUS   S   :  d   eSUS   S   :  d   eSUS   S   :  d   eUS   S   S:  d   eUS   S   S:X  d   e[         R"                  " S5      n[         R$                  R                  SSS5      US S 2S4'   [         R$                  R                  SSS5      US S 2S4'   U R                  S5      n[        SSS9R	                  X5      n[        [        5      nUR                   HY  nS
R                  S [        UR                  R                  UR                  R                  5       5       5      nXV==   S-  ss'   M[     UR                  5        VVs/ s H  u  pgXv4PM
     nnn[        U5      S:X  d   eg s  snnf s  snnf )Nr  r   r   )r  r1   rv   r  r4   rq   rD    c              3   V   #    U  H  u  pUS :  a  SU[        U5      4-  OSv   M!     g7fr   z%d,%d/-Nr   r  fts      rT   r	  $test_distribution.<locals>.<genexpr>  1      
E ()AvXCF#36E   ')r1   r   rh   g?r2   r3   333333?z0,1/0,0/--0,2/--)r  r2   )rF   r<   c              3   V   #    U  H  u  pUS :  a  SU[        U5      4-  OSv   M!     g7fr  r  r  s      rT   r	  r    r  r  r  )r.   r   randr   rH   r   r   r  joinzipr  feature	thresholdsorteditemsrN   r   emptyr   )r   rI   rJ   n_treesrn   uniquesr  r   s           rT   test_distributionr    s   
U
#C 	Aqy)AAG
7
D
H
H
NC#Gww 
DJJ..

0D0DE
 

 	   w}}WsU{W,d3WXG w<1'!*Q-'!*Q-'!*Q-'!*Q-1:a=31:a=.... 	Aii1d+AadGii1d+AadGA
11
=
A
A!
GC#Gww 
DJJ..

0D0DE
 

 	   18@}G@w<1A X> As   J
7J!c                    [         [        p![        U    nU" SSSSS9R                  X5      nUR                  S   R                  5       S:X  d   eU" SSSS9R                  X5      nUR                  S   R                  5       S:X  d   eg )Nr1   r   r   )r   max_leaf_nodesrE   r<   )r   rE   r<   )hastie_Xhastie_yr@   rH   r  	get_depthrB   rI   rJ   r   r   s        rT   test_max_leaf_nodes_max_depthr    s    Xq (-O
AAA	c!i  ??1'')Q...
AAA
F
J
J1
PC??1'')Q...rV   c                    [         [        p![        U    nU" SSSS9nUR                  X5        UR                  S   R
                  R                  S:g  nUR                  S   R
                  R                  U   n[        R                  " U5      [        U5      S-  S-
  :  d   SR                  U 5      5       eU" SSSS9nUR                  X5        UR                  S   R
                  R                  S:g  nUR                  S   R
                  R                  U   n[        R                  " U5      [        U5      S-  S-
  :  d   SR                  U 5      5       eg )Nr5   r1   r   )min_samples_splitrE   r<   r0   r^   Failed with {0})r  r  r@   rH   r  r  children_leftn_node_samplesr   minrN   r  )rB   rI   rJ   r   r   node_idxnode_sampless          rT   test_min_samples_splitr    s+   Xq'-O
BQQ
OCGGAMq!''55;H??1%++::8DL66,#a&3,"22R4E4L4LT4RR2
Caa
PCGGAMq!''55;H??1%++::8DL66,#a&3,"22R4E4L4LT4RR2rV   c                    [         [        p![        U    nU" SSSS9nUR                  X5        UR                  S   R
                  R                  U5      n[        R                  " U5      nXfS:g     n[        R                  " U5      S:  d   SR                  U 5      5       eU" SSSS9nUR                  X5        UR                  S   R
                  R                  U5      n[        R                  " U5      nXfS:g     n[        R                  " U5      [        U5      S-  S-
  :  d   SR                  U 5      5       eg )Nrh   r1   r   )r   rE   r<   r   r  g      ?)r  r  r@   rH   r  r  rO   r   r   r  r  rN   )rB   rI   rJ   r   r   outnode_counts
leaf_counts           rT   test_min_samples_leafr    s   Xq (-O
111
MCGGAM
//!

"
"
(
(
+C++c"KA-.J66*!A#4#;#;D#AA!
4aa
PCGGAM
//!

"
"
(
(
+C++c"KA-.J66*A 11Q3D3K3KD3QQ1rV   c                 l   [         [        p![        U    n[        R                  R                  S5      nUR                  UR                  S   5      n[        R                  " U5      n[        R                  " SSS5       H  nU" USSS9nSU ;   a  SUl
        UR                  XUS9  UR                  S   R                  R                  U5      n	[        R                  " XS	9n
XS:g     n[        R                   " U5      XhR"                  -  :  a  M   S
R%                  XR"                  5      5       e   g )Nr   r^   ri   r1   )min_weight_fraction_leafrE   r<   RandomForestFr   )weightsz,Failed with {0} min_weight_fraction_leaf={1})r  r  r@   r   r   r   r  rP   r   linspacer   rH   r  r  rO   r   r  r  r  )rB   rI   rJ   r   r   r  total_weightfracr   r  node_weightsleaf_weightss               rT   test_min_weight_fraction_leafr    s   Xq (-O
))


"Chhqwwqz"G66'?L AsA&%)
 T!!CMG,ooa &&,,Q/{{38#A$56vvl#|6R6R'RR 	
:AA22	
R 'rV   sparse_containerc                    [         R                  " SSS9u  p#[        U    nU" SSS9R                  X#5      nU" SSS9R                  U" U5      U5      n[	        UR                  U5      UR                  U5      5        U [        ;   d
  U [        ;   aJ  [	        UR                  U5      UR                  U5      5        [	        UR                  UR                  5        U [        ;   aT  [	        UR                  U5      UR                  U5      5        [	        UR                  U5      UR                  U5      5        U [        ;   a  [	        UR                  U5      R                  5       UR                  U5      R                  5       5        [	        UR                  U5      R                  5       UR                  U5      R                  5       5        g g )Nr   r5  )r<   r6   r2   )r<   r   )r   r  r@   rH   r%   rO   rG   rj   rK   r   r   r   FOREST_TRANSFORMERSr  r  r  )rB   r  rI   rJ   r   densesparses          rT   test_sparse_inputr  7  s   
 22RPDA'-Oa8<<QBE!q9==>Nq>QSTUFfll1ou{{1~>!!T->%>!&.."3U]]15EF!'')C)C	
 !!!&"6"6q"95;N;Nq;QR!$$Q')@)@)C	
 ""!Q'')5??1+=+E+E+G	
 	"  #++-u/B/B1/E/M/M/O	
	 #rV   c                 N   [         U    " SSS9n[        R                  0 4[        R                  SS04[        R                  SS04[        R                  0 44 HX  u  p4U" [        R
                  4SU0UD6n[        R                  n[        UR                  XV5      R                  U5      U5        MZ     UR                  R                  [        ;   aj  [        [        -   [        -    HR  nU" [        R
                  US9n[        R                  n[        UR                  XV5      R                  U5      U5        MT     [        R                  " [        R
                  S S S	2   US9n[        R                  S S S	2   n[        UR                  XV5      R                  U5      U5        g )
Nr   Frp  orderCFr   r   r3   )r@   r   asarrayascontiguousarrayr_   r`   ra   r%   rH   rK   r=  splitterr!   r)   r*   r+   )rB   r   r   	containerkwargsrI   rJ   r  s           rT   test_memory_layoutr  Z  sN    D
!qE
BC 
R	gs^$	gs^$			r"		 dii7u77KK!#''!-"7"7":A> }}!11 . ?. P %8AA%cggam&;&;A&>B !Q 	

499SqS>/ACaCAcggam33A6:rV   c                 l   [         R                  S S 2S4   n[         R                  S S 2S4   R                  S5      n[         R                  n[	        5          [
        U    n[        R                  " [        5         U" SSS9R                  X5        S S S 5        U" SS9nUR                  X#5        U [        ;   d
  U [        ;   a4  [        R                  " [        5         UR                  U5        S S S 5        S S S 5        g ! , (       d  f       Nv= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   r0   r1   r1   rD   r   )r_   r`   rJ  ra   r'   r@   r   r  rA  rH   rG   rj   rK   )rB   rI   X_2drJ   r   r   s         rT   test_1d_inputr  x  s    		!Q$A99QT?""7+DA		+D1]]:&;??E ' 1-%%1B)Bz*A + 
	&& +* 
	s=   $D%<DAD% D2D%
D	D%
D"	D%%
D3c                    [         U    nU" SS9nUR                  [        R                  [        R                  5        U" SSS9nUR                  [        R                  [        R                  5        [        UR                  UR                  5        [        R                  " [        R                  [        R                  [        R                  45      R                  nU" SSSS.SSSS.SSSS./SS9nUR                  [        R                  U5        [        UR                  UR                  5        U" SSS9nUR                  [        R                  U5        [        UR                  UR                  5        [        R                  " [        R                  R                  5      nU[        R                  S:H  ==   S	-  ss'   SS
SS.nU" SS9nUR                  [        R                  [        R                  U5        U" USS9nUR                  [        R                  [        R                  5        [        UR                  UR                  5        U" SS9nUR                  [        R                  [        R                  US-  5        U" USS9nUR                  [        R                  [        R                  U5        [        UR                  UR                  5        g )Nr   r   balancedclass_weightr<          @r   r   r1   r2   r1   r   g      Y@r2   )rG   rH   r_   r`   ra   r$   r   r   r  rL   r   rP   )	rB   rQ   clf1clf2
iris_multiclf3clf4r   r  s	            rT   test_class_weightsr    s    *$/ +DHHTYY$!DDHHTYY$1143L3LM DKKdkkBCEEJ$$$

 D 	HHTYY
#1143L3LM!DDHHTYY
#1143L3LM GGDKK--.M$++"#s*#u-L+DHHTYY]3AFDHHTYY$1143L3LM +DHHTYY]A%56AFDHHTYY]31143L3LMrV   c                 V   [         U    n[        R                  " [        [        R                  " [        5      S-  45      R
                  nU" SSS9nUR                  [        U5        U" SSS.SSS./SS9nUR                  [        U5        U" S	SS9nUR                  [        U5        g )
Nr2   r  r   r  r^   r   r  )r/   r2   balanced_subsample)rG   r   r  rJ   r  rL   rH   rI   )rB   rQ   r  rR   s       rT   5test_class_weight_balanced_and_bootstrap_multi_outputr    s     *$/	Arxx{Q'	(	*	*B


CCGGArN
3'cc):;!C GGArN
(<1
MCGGArNrV   c                    [         U    n[        R                  " [        [        R                  " [        5      S-  45      R
                  nU" SSSS9nUR                  [        [        5        Sn[        R                  " [        US9   UR                  [        U5        S S S 5        U" SS	S
./SS9n[        R                  " [        5         UR                  [        U5        S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nr2   r  Tr   )r  
warm_startr<   JWarm-start fitting without increasing n_estimators does not fit new trees.r  r^   r   r  r  )rG   r   r  rJ   r  rL   rH   rI   r   r;  r<  r  rA  )rB   rQ   r  rR   warn_msgs        rT   test_class_weight_errorsr    s     *$/	Arxx{Q'	(	*	*B 
tRS
TCGGAqM 	U  
k	22 
3 cc):(;!
LC	z	"2 
#	" 
3	2
 
#	"s   C,C=,
C:=
Dc                    [         [        p![        U    nS nS H@  nUc	  U" USSS9nOUR                  US9  UR	                  X5        [        U5      U:X  a  M@   e   U" SSSS9nUR	                  X5        [        U Vs/ s H  owR                  PM     sn5      [        U Vs/ s H  owR                  PM     sn5      :X  d   e[        UR                  U5      UR                  U5      SR                  U 5      S	9  g s  snf s  snf )
N)rh   r5   rq   T)rE   r<   r
  rE   r5   Fr  )r  )r  r  r@   r   rH   rN   r+  r<   r&   rO   r  )rB   rI   rJ   r   est_wsrE   	est_no_wsr  s           rT   test_warm_startr    s    Xq'-OF>$)tF <8

16{l***    RbUSIMM!f5fd!!f56#'01yt		y1;    Q+5F5M5Md5S	 61s   ?C=#D
c                 *   [         [        p![        U    nU" SSSSS9nUR                  X5        U" SSSSS9nUR                  X5        UR	                  SSS9  UR                  X5        [        UR                  U5      UR                  U5      5        g )Nrh   r1   FrE   r   r
  r<   Tr2   )r
  r<   )r  r  r@   rH   r   r%   rO   )rB   rI   rJ   r   r   est_2s         rT   test_warm_start_clearr    s     Xq'-O
qA%VW
XCGGAM!1E 
IIaO	A6	IIaOekk!nciil;rV   c                    [         [        p![        U    nU" SSSS9nUR                  X5        UR	                  SS9  [
        R                  " [        5         UR                  X5        S S S 5        g ! , (       d  f       g = f)Nrh   r1   T)rE   r   r
  r   r  )r  r  r@   rH   r   r   r  rA  r  s        rT   $test_warm_start_smaller_n_estimatorsr    s_     Xq'-O
qA$
GCGGAMNNN"	z	" 
#	"	"s   A22
B c                    [         [        p![        U    nU" SSSSS9nUR                  X5        U" SSSSS9nUR                  X5        UR	                  SS9  Sn[
        R                  " [        US	9   UR                  X5        S S S 5        [        UR                  U5      UR                  U5      5        g ! , (       d  f       N9= f)
Nrh   r3   Tr1   r  r2   r   r  r  )
r  r  r@   rH   r   r   r;  r<  r&   rO   )rB   rI   rJ   r   r   r  r  s          rT   "test_warm_start_equal_n_estimatorsr    s     Xq'-O
qA$UV
WCGGAM!1E 
IIaO 
!$T  
k	2		! 
3 syy|U[[^4	 
3	2s   3B88
Cc           	      (   [         [        p![        U    nU" SSSSSSS9nUR                  X5        U" SSSSSSS9nUR                  X5        UR	                  SSSS9  UR                  X5        [        US	5      (       d   eUR                  UR                  :X  d   eU" SSSSSSS9nUR                  X5        [        US	5      (       a   eUR	                  SS
9  [        UR                  5      " X5        UR                  UR                  :X  d   eg )N   r3   Fr1   T)rE   r   r
  r<   r   r  rh   )r
  r  rE   r&  rV  )r  r  r@   rH   r   r   r&  r'   )rB   rI   rJ   r   r   r  est_3s          rT   test_warm_start_oobr  6  s*    Xq'-O
C GGAME 
IIaO	2F	IIaO5,''''>>U----- E 
IIaOul++++	t$EIIq$>>U-----rV   c                 |   [         [        p![        U    nU" SSSSS9n[        R                  " USUR
                  S9 nUR                  X5        [        R                  " [        SS9   UR                  X5        S S S 5        UR                  5         S S S 5        g ! , (       d  f       N'= f! , (       d  f       g = f)Nr5   T)rE   r
  r   r  rY  )wrapsz%Warm-start fitting without increasingr  )r  r  r@   r	   objectrY  rH   r   r;  r<  assert_called_once)rB   rI   rJ   r   r   !mock_set_oob_score_and_attributess         rT   test_oob_not_computed_twicer$  i  s     Xq'-O
DDDC 
,C4U4U
	*\\+-TUGGAM V 	*<<>
 

 VU
 
s#   +B-)B;B-
B*	&B--
B;c                     [        SSS9n[        R                  " U 5      nSS U   Vs/ s H  o3PM     nnUR                  X$5      R	                  U5      n[        UR                  U5        [        XT5        g s  snf )Nr   Frp  ABCDEFGHIJKLMNOPQRSTU)r   r   eyerH   rK   r&   r   )r  r-  rI   chrJ   results         rT   test_dtype_convertr*  ~  so    'Q%HJ
yA-jy9:99A:^^A!))!,Fz**A.v!	 	;s   A7c           	         [         [        p!UR                  S   n[        U    nU" SSSSS9nUR	                  X5        UR                  U5      u  pgUR                  S   US   :X  d   eUR                  S   U:X  d   e[        [        R                  " U5      UR                   Vs/ s H  oR                  R                  PM     sn5        UR                  U5      n	[        U	R                  S   5       HP  n
[        U	S S 2U
4   5       VVs/ s H  u  pXkXz   U-   4   PM     nnn[        U[        R                   " US95        MR     g s  snf s  snnf )Nr   rh   r1   Fr  r0   )rP   )r  r  rP   r@   rH   decision_pathr&   r   diffr  r  
node_countrO   r   rI  r%   r   )rB   rI   rJ   r6   r   r   	indicatorn_nodes_ptreleavesest_idr   r   leave_indicators                 rT   test_decision_pathr5    s:   Xq
I'-O
qA%VW
XCGGAM ..q1I??1R000??1***
3??K?aww11?K
 YYq\FQ( "&F"34
4 ,q0014 	 
 	"/2773KL ) L
s   &E

Ec                      [         R                  " SSS9u  p[        [        [        [
        /nU H?  nU" SS9nUR                  X5        UR                   H  nUR                  S:X  a  M   e   MA     g )Nr   r1   r?   r   )min_impurity_decrease)	r   r   r   r   r   r   rH   r  r7  )rI   rJ   all_estimators	Estimatorr   r  s         rT   test_min_impurity_decreaser:    sn    $$sCDA	N $	c2OOD --444 $ $rV   c                  j   [        SS9n [        R                  " S5      n/ SQnSn[        R                  " [
        US9   U R                  X5        S S S 5        / SQnSn[        R                  " [
        US9   U R                  X5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = f)	Nr}   rW   )r3   r3   )r0   r1   r3   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  rH   )r   rI   rJ   r  s       rT   test_poisson_y_positive_checkr=    s    
)
4C
AA	/  
z	1 
2 	A	0  
z	1 
2	1 
2	1 
2	1s   B8B$
B!$
B2c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )	MyBackendi  c                 4   > SU l         [        TU ]  " U0 UD6  g )Nr   )r   super__init__)selfargsr  ri  s      rT   rB  MyBackend.__init__  s    
$)&)rV   c                 J   > U =R                   S-  sl         [        TU ]	  5       $ )Nr1   )r   rA  
start_call)rC  ri  s    rT   rG  MyBackend.start_call  s    

a
w!##rV   )r   )__name__
__module____qualname____firstlineno__rB  rG  __static_attributes____classcell__)ri  s   @rT   r?  r?    s    *$ $rV   r?  testingc                     [        SSS9n [        R                  " S5       u  pU R                  [        [
        5        S S S 5        WR                  S:  d   e[        R                  " S5       u  pU R                  [        5        S S S 5        UR                  S:X  d   eg ! , (       d  f       Ni= f! , (       d  f       N2= f)Nr5   r2   )rE   r   rO  r   )r   joblibparallel_backendrH   rI   rJ   r   r   )rR   bar   _s       rT   test_backend_respectedrU    s    
 b
;C		 	 	+|1 
, 88a<< 
	 	 	+w! 
, 88q== 
,	+ 
,	+s   B!.B2!
B/2
C c                      [        SSSSS9u  p[        SSSS9R                  X5      n[        R                  " SUR
                  R                  5       S	S
9(       d   eg )Nr  r3   r1   )r6   r8   r<   r  rh   rq      )r   r<   rE   gHz>)abs_tol)r   r   rH   mathiscloser   r   )rI   rJ   rR   s      rT   #test_forest_feature_importances_sumr[    s]    AADA !#	c!i  <<3337794HHHrV   c                      [         R                  " S5      n [         R                  " S5      n[        SS9R	                  X5      n[        UR                  [         R                  " S[         R                  S95        g )N)r5   r5   )r5   r5   r  r   )r   r  r   r   rH   r&   r   float64)rI   rJ   gbrs      rT   *test_forest_degenerate_feature_importancesr_    sQ    
A
A
R
0
4
4Q
:Cs//"BJJ1OPrV   c                     [         U    " SSS9nSn[        R                  " [        US9   UR	                  [
        [        5        S S S 5        g ! , (       d  f       g = f)NFr^   r   rH  zl`max_sample` cannot be set if `bootstrap=False`. Either switch to `bootstrap=True` or set `max_sample=None`.r  )rA   r   r  rA  rH   rI   rJ   )rB   r   r  s      rT   test_max_samples_bootstraprb    sH     (
-3
OC	 
 
z	11 
2	1	1s   A
Ac                     [         U    " S[        S5      S9nSn[        R                  " [        US9   UR                  [        [        5        S S S 5        g ! , (       d  f       g = f)NTg    eAra  z=`max_samples` must be <= n_samples=6 but got value 1000000000r  )rA   r   r   r  rA  rH   rI   rJ   )rB   r   r  s      rT    test_large_max_samples_exceptionrd    sE     (
-#c(
SCKE	z	/1 
0	/	/s   A
A%c                 T   [        [        [        SSSS9u  pp4[        U    " SSSS9nUR	                  X5      R                  U5      n[        U    " SS SS9nUR	                  X5      R                  U5      n[        Xd5      n	[        X5      n
U	[        R                  " U
5      :X  d   eg )Nr3  r  r   )
train_sizer|   r<   Tr   r   rH  r<   )	r   rk   rl   rj   rH   rK   r   r   r   )rB   r   r   r   r   
ms_1_modelms_1_predictms_None_modelms_None_predictms_1_ms
ms_None_mss              rT   $test_max_samples_boundary_regressorsrn    s    '7u!($GW #4(CaJ >>'3;;FCL%d+DqM $''9AA&IO 6G#O<JfmmJ////rV   c                 4   [        [        [        S[        S9u  pp4[        U    " SSSS9nUR	                  X5      R                  U5      n[        U    " SS SS9nUR	                  X5      R                  U5      n[        R                  R                  Xh5        g )Nr   )r<   stratifyTr   rg  )	r   r   r   rG   rH   r   r   rO  r#   )	rB   r   r   r   rT  rh  
ms_1_probarj  ms_None_probas	            rT   %test_max_samples_boundary_classifiersrs  %  s    "2q7#GW $D)CaJ 1??GJ&t,DqM "%%g7EEfMMJJz9rV   csr_containerc                     / SQ/nU " / SQ/5      n[        5       nSn[        R                  " [        US9   UR	                  X5        S S S 5        g ! , (       d  f       g = f)Nr   r   z3sparse multilabel-indicator for y is not supported.r  )r   r   r  rA  rH   )rt  rI   rJ   r   msgs        rT   test_forest_y_sparserw  8  sG    	Ayk"A
 
"C
?C	z	- 
.	-	-s   A
AForestClassc                    [         R                  R                  S5      nUR                  SS5      nUR                  S5      S:  nU " SUS S9nU " SUSS9nUR	                  X#5        UR	                  X#5        UR
                  S   R                  nUR
                  S   R                  nSnUR                  UR                  :  d   U5       eg )Nr1   i'  r2   r   )rE   r<   rH  z=Tree without `max_samples` restriction should have more nodes)r   r   r   r  rH   r  r  r.  )	rx  r   rI   rJ   est1est2tree1tree2rv  s	            rT   'test_little_tree_with_small_max_samplesr~  B  s    
))


"C		%A		%1A D D 	HHQNHHQNQ%%EQ%%E
ICe...33.rV   Forestc                     SSK Jn  [        R                  SS5      nUR                  u  p4U" XC5      n[
        U    " SSUS9nUR                  [        U5        g )Nr   )MSEr0   r1   r2   )rE   r   rW   )sklearn.tree._criterionr  rl   rJ  rP   rj   rH   rk   )r  r  rJ   r6   	n_outputsmse_criterionr   s          rT   -test_mse_criterion_object_segfault_smoke_testr  a  sN     ,b!A77I	-M
F
#1
VCGGE1rV   c                  >   [         R                  R                  S5      n [         R                  " U R	                  SS5      5      n[        SSSSS9R                  U5      nUR                  5       nS VVs/ s H  u  pESU S	U 3PM     nnn[        Xc5        g
s  snnf )z3Check feature names out for Random Trees Embedding.r   r   r   r2   F)rE   r   r  r<   ))r   r2   )r   r3   )r   rh   )r   ri   r\  )r1   r3   )r1   rh   )r1   ri   randomtreesembedding_rT  N)	r   r   r   r   r  r   rH   get_feature_names_outr&   )r<   rI   r  namesr  leafexpected_namess          rT   -test_random_trees_embedding_feature_names_outr  q  s    99((+L
|!!#q)*A!!5q	c!f  ((*E
	
		
JD  vQtf-	
	   ~-s   6Bc           	          UR                  [        R                  R                  S[	        [
        SS95        [        R                  R                  SS9n[        SSUS9u  p4U " USS	9n[        S
US9n[        XSUS
S9  g)zRandomForestClassifier must work on readonly sparse data.

Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/25333
r-   r   )
max_nbytesr   )seedrW  r=   Tr   r2   )r   r<   )cvN)setattrsklearnensemble_forestr   r-   r   r   r   r   r   r   )rt  monkeypatchr   rI   rJ   rR   s         rT   test_read_only_bufferr    s{       S)
 ))

Q

'C3ODAad#A
 
<CCA!$rV   r  r  c                 j    [         R                  " SS9u  p[        SSU SS9nUR                  X5        g)zVCheck low max_samples works and is rounded to one.

Non-regression test for gh-24037.
T)
return_X_yr5   g-C6?r   )rE   rH  r  r<   N)r   	load_winer   rH   )r  rI   rJ   r]  s       rT   .test_round_samples_to_one_when_samples_too_lowr    s8     .DA#TSTF JJqrV   r  r   c                    [        SSS9u  p4U(       a  SnOSnU " SUSUUS9nUR                  X45        UR                  R                  5       n[	        XvR                  5        UR
                  n[        U[        5      (       d   e[        U5      [        U5      :X  d   eUS   R                  [        R                  :X  d   e[        [        U5      5       H  n	U(       aS  [        Xy   5      [        U5      S	-  :X  d   e[        [        R                  " Xy   5      5      [        Xy   5      :  d   eM]  [        [        Xy   5      5      [        U5      :X  a  M   e   Sn
Xz   nX   nX;   nXK   nUR                  R                   n[#        U5      nUR                  X5        UR                  R                   n[%        UU5        g)
zEstimators_samples_ property should be consistent.

Tests consistency across fits and whether or not the seed for the random generator
is set.
rW  r1   r?   r^   Nr5   )rE   rH  rF   r<   r   r   r2   )r   rH   estimators_samples_r   r&   r  r  r   rN   r   r   int32r   r   r+  r  valuer   r#   )rx  r   r  rI   rJ   rH  r   estimators_samples
estimatorsr   estimator_indexestimator_samplesr=  r   r   orig_tree_valuesnew_tree_valuess                    rT   test_estimators_samplesr    s    c:DA
C GGAM00557 )+B+BCJ($////!"c*o555a &&"((2223z?#),-Q1<<< ryy!3!6783?Q?T;UUUUs-012c!f<<< $ O*;+I"G"G ,,i IMM'#oo++O$o6rV   zmake_data, Forestc                    [         R                  R                  S5      nSu  p4U " X4US9u  pVUR                  5       n[         R                  XrR                  SS/UR                  SS/S9'   [         R                  " U5      R                  5       (       d   e[        XvSS	9u  ppU" US
S9nUR                  X5        UR                  X5      n[        XVSS	9u  ppU" US
S9nUR                  X5        UR                  X5      nUSU-  :  d   eg)zJCheck that forest can deal with missing values and has decent performance.r   )r  r5   r=   FTffffff?r   rv   r   r   r5  )r<   rE   r   N)r   r   r   r   nanchoicerP   isnananyr   rH   rb   )	make_datar  r   r6   r7   rI   rJ   	X_missingX_missing_trainX_missing_testr   r   forest_with_missingscore_with_missingr   r   r]  score_without_missings                     rT    test_missing_values_is_resilientr    s    ))


"C$IycRDA IIKIjj%QWWtjEF88I""$$$$7G184OW
 !cCO5,22>J (81'M$GW26F
JJw "LL8 (=!====rV   c                    [         R                  R                  S5      nSnSnUR                  US4S9nUR	                  SSUS9nUR                  SS	/US
S/S9nUR                  [        5      nXv   ) Xv'   UR                  US9n[         R                  X'   [         R                  " U5      R                  5       (       d   eUR                  5       n	XSS2S4'   [        XUSS9u  n
nnnnnU " SS9R                  X5      nU " SS9R                  X5      nUR                  X5      nUU:  d   eUUR                  X5      :  d   eg)z[Check that the forest learns when missing values are only present for
a predictive feature.r   r  g      ?r5   r  r2   )ru   rv   FTr  r   r  Nrh   r   )r   r   r   standard_normalr   r  r   r   r  r  r  r   r   rH   rb   )r  r   r6   expected_scoreX_non_predictiverJ   X_random_masky_maskpredictive_featureX_predictiveX_predictive_trainX_predictive_testX_non_predictive_trainX_non_predictive_testr   r   forest_predictiveforest_non_predictivepredictive_test_scores                      rT    test_missing_value_is_predictiver    sw    ))


"CIN**B*@AAI.A JJt}9tJMMXXd^F#22F,,),<!#88&'++----#((*L+A 	KA.223EO"2667MW-334EN N222 $9$?$?%   rV   c                     [         R                  " / SQ[         R                  SS//5      nSS/nU " SS9nSn[        R                  " [
        US	9   UR                  X5        S
S
S
5        g
! , (       d  f       g
= f)zDRaise error for unsupported criterion when there are missing values.r  r   r  r^   r   re   r<  z .*does not accept missing valuesr  N)r   r  r  r   r  rA  rH   )r  rI   rJ   r]  rv  s        rT   =test_non_supported_criterion_raises_error_with_missing_valuesr  ?  sa     	)bffa-./A	c
A./F
,C	z	-

1 
.	-	-s   A,,
A:)r  )__doc__r  rY  re  collectionsr   	functoolsr   r   r   typingr   r   unittest.mockr	   rQ  numpyr   r   scipy.specialr
   r  r   r   sklearn.datasetsr   r   sklearn.decompositionr   sklearn.dummyr   sklearn.ensembler   r   r   r   r   sklearn.ensemble._forestr   r   sklearn.exceptionsr   sklearn.metricsr   r   r   r   sklearn.model_selectionr   r   r   sklearn.svmr    sklearn.tree._classesr!   sklearn.utils._testingr"   r#   r$   r%   r&   r'   r(   sklearn.utils.fixesr)   r*   r+   sklearn.utils.multiclassr,   sklearn.utils.parallelr-   sklearn.utils.validationr.   rI   rJ   rL   rM   r   r   	load_irisr_   r   permutationra   rv   permr`   make_regressionrk   rl   r  r  r   float32parallelget_active_backendri  DEFAULT_JOBLIB_BACKENDrG   rj   r  dictr@   str__annotations__updater   rA   markparametrizerU   rc   ro   r   r   r   r   r]  chainr   r  r  r   r  r1  r8  r>  rB  rE  rT  rZ  r^  rc  rn  rw  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*  r5  r:  r=  r?  register_parallel_backendrU  r[  r_  rb  rd  rn  rs  rw  r~  r  r  r  r  r  r  r  r   rV   rT   <module>r     s!      #  +        # B . (  .  T S ! 2   O N 3 + 7 	"XBx"bAq6Aq6Aq6:"X1v1v //  
t{{''(IIdO	kk$ ''#"STUu ..!L (??2::&  ;;=a@JJ  14  /2  0  %)F 4S> *   + ,   * +   , -0B0G0G0I tCH~ I  $ $%6 7 !34< 5<& !34&:;W < 5W" !23D 442/j &BC> D>& !23( 4( !34
 5
  2::rzz":;OO"VZ$89!#VW'H <'HTj@Z !23C 4C +-?-F-F-HI#HI 	
))C1STU	
	
	
))!11	
 		
 IIKK!Oa	

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