
    Mpj                       % 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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'  SSK(J)r)  SSK*J+r+  SSK,J-r-J.r.J/r/J0r0  SSK1J2r2J3r3J4r4  SSK5J6r6  SSK7J8r8  SSK9J:r:J;r;J<r<J=r=J>r>J?r?J@r@  SSKAJBrBJCrCJDrD  SSKEJFrF  SSKGJHrH  SSKIJJrJ  SS/SS/SS/SS/SS/SS//rK/ SQrLSS/SS/SS//rM/ S QrN\R2                  " S!S"SSSS#SS$9u  rOrP\R                  " 5       rR\J" S5      rS\SR                  \RR                  R                  5      rW\RR                  \W   \RlX        \RR                  \W   \RlU        \R6                  " S!S"SS%9u  rYrZ\R4                  " S&SS'9u  r[r\\[R                  \R                  5      r[\R                  R                  5       S   R                  rb\!\#S(.rc\"\$S).rdS*\%0re\f" 5       rg\\h\4   \iS+'   \gR                  \c5        \gR                  \d5        \gR                  \e5        \cR                  5       rl\\h\4   \iS,'   \lR                  \d5        S-rmS.rn\R                  R                  S/\c5      S0 5       rq\R                  R                  S/\c5      \R                  R                  S1S-5      S2 5       5       rr\R                  R                  S35      \R                  R                  S/\d5      \R                  R                  S1S45      S5 5       5       5       rtS6 ru\R                  R                  S1S75      S8 5       rv\R                  R                  S/\d5      S9 5       rw\R                  R                  S/\c5      S: 5       rx\R                  R                  S;\R                  \R                  45      \R                  R                  S<\R                  " \	" \cS=S>/5      \	" \dS?S@/5      5      5      SA 5       5       r{SB r|\R                  R                  S/\g5      SC 5       r}\R                  R                  SD\cR                  5       5      \R                  R                  SE/ SFQ5      \R                  R                  SG/ \R2                  " SHSSSI9QSJP7/ \R2                  " SKSSLSSM9QSNP7\RR                  \RR                  S-  S-   SN4/ \R                  " SHSS'9QSOP7/5      \R                  R                  SPSQ\" \.SRSS9/5      ST 5       5       5       5       r\R                  R                  SU\dR                  5       5      \R                  R                  SE/ SFQ5      \R                  R                  SV/ \R6                  " S!S"SSSW9QSXP7/ \R6                  " S!S"SSSW9QSYP7/5      \R                  R                  SPSQ\-/5      SZ 5       5       5       5       r\R                  R                  S[\lR                  5       5      S\ 5       r\R                  R                  S[\lR                  5       5      S] 5       r\R                  R                  SD\cR                  5       5      S^ 5       r\R                  R                  SU\dR                  5       5      S_ 5       r\R                  R                  SPSQS#/5      S` 5       r\R                  R                  S/\c5      Sa 5       r\R                  R                  S/\l5      Sb 5       r\R                  R                  S/\l5      Sc 5       r\R                  R                  S/\l5      Sd 5       r\R                  R                  S/\c5      Se 5       r\R                  R                  S/\c5      Sf 5       rSg rSh rSi r\R                  R                  Sj\C5      Sk 5       rSl rSm r\R                  R                  S/\g5      Sn 5       r\R                  R                  S/\g5      So 5       r\R                  R                  S/\g5      Sp 5       r\R                  R                  S/\g5      Sq 5       r\R                  R                  S/\g5      \R                  R                  Sr\B\C-   \D-   5      Ss 5       5       r\R                  R                  S/\l5      \R                  R                  S;\R                  \R                  45      St 5       5       r\R                  R                  S/\g5      Su 5       r\R                  R                  S/\c5      \R                  R                  Sv/ SwQ5      Sx 5       5       r\R                  R                  S/\c5      \R                  R                  SySQS#/5      Sz 5       5       r\R                  R                  S/\c5      S{ 5       r\R                  R                  S/\c5      S| 5       r\R                  R                  S/\g5      S} 5       r\R                  R                  S/\g5      S~ 5       r\R                  R                  S/\g5      S 5       r\R                  R                  S/\g5      S 5       r\R                  R                  S/\l5      S 5       r\R                  R                  S/\l5      S 5       rSS jr\R                  R                  S/\l5      S 5       rS rS r " S S\b5      r\GRR                  " S\5        \R                  GRT                  \@S 5       5       rS rS r\R                  R                  S/\l5      S 5       r\R                  R                  S/\l5      S 5       r\R                  R                  S/\d5      S 5       r\R                  R                  S/\c5      S 5       r\R                  R                  S\D5      S 5       r\R                  R                  S\#\$/5      S 5       r\R                  R                  S\d5      S 5       rS r\R                  R                  S\D5      S 5       r\R                  R                  SSS/5      S 5       r\R                  R                  SSS/5      \R                  R                  SySQS#/5      \R                  R                  S\lR                  5       5      S 5       5       5       r\R                  R                  S35      \R                  R                  S/ \	" \dR                  5       \n5      Q\	" \cR                  5       \m5      Q5      S 5       5       r\R                  R                  S35      \R                  R                  S/ \	" \dR                  5       \n5      Q\	" \cR                  5       \m5      Q5      S 5       5       r\R                  R                  S\dR                  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make_regression)TruncatedSVD)DummyRegressor)ExtraTreesClassifierExtraTreesRegressorRandomForestClassifierRandomForestRegressorRandomTreesEmbedding)_get_n_samples_bootstrap)_generate_unsampled_indices)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      )r1   r1   r1   r2   r2   r2      )r1   r2   r2     
   F)	n_samples
n_featuresn_informativen_redundant
n_repeatedshufflerandom_stater7   r8   r=      r7   r=   )r   r   )r   r   r   FOREST_ESTIMATORSFOREST_CLASSIFIERS_REGRESSORS)ginilog_loss)squared_errorabsolute_errorfriedman_msepoisson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.r6   r2   n_estimatorsr=   )rL   max_featuresr=   N)FOREST_CLASSIFIERSfitXyr'   predictTtrue_resultlenapplyshaperL   )rI   ForestClassifierclfleaf_indicess       ^/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/ensemble/tests/test_forest.pytest_classification_toyr\   z   s     *$/

;CGGAqMs{{1~{3S>>

KCGGAqMs{{1~{3S>> 99Q<L#a&#*:*:!;;;;    	criterionc                    [         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 )	Nr6   r2   rL   r^   r=   ?z'Failed with criterion %s and score = %fr3   rL   r^   rM   r=         ?)rN   rO   irisdatatargetscore)rI   r^   rX   rY   rg   s        r[   test_iris_criterionrh      s     *$/
ia
PCGGDIIt{{#IIdii-E3;VAYDVVV;
911C GGDIIt{{#IIdii-E3;VAYDVVV;r]   z%ignore:.*friedman_mse.*:FutureWarning)rE   rG   rF   c                 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   r2   r`   g(\?z:Failed with max_features=None, criterion %s and score = %f   rb   gq=
ףp?z7Failed with max_features=6, criterion %s and score = %f)FOREST_REGRESSORSrO   X_regy_regrg   )rI   r^   ForestRegressorregrg   s        r[   test_regression_criterionrq      s     (-O
qIA
NCGGE5IIeU#E4< D
	
< )!!C GGE5IIeU#E4< RV  <r]   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.
*   r5   r5   r6   r>   r0   r3   lowhighsizer   axislam	test_sizer=   rH   r6   sqrt)r^   min_samples_leafrM   r=   rE   mean)strategytraintestgư>N皙?)nprandomRandomStater   make_low_rank_matrixuniformmaxrH   expr    r   rO   r   r   rR   clip)rngn_trainn_testr8   rP   coefrQ   X_trainX_testy_trainy_test
forest_poi
forest_msedummy	data_name
metric_poi
metric_msemetric_dummys                     r[   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r]   )rH   rE   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.rs   rt   r>   r0   r3   ru   r   ry   r{   r6   F)r^   rL   	bootstrapr=   N)r   r   r   r   r   r   r   rH   r   r   rO   sumrR   pytestapprox)	r^   r   r   r   r8   rP   r   rQ   rp   s	            r[   #test_balance_property_random_forestr      s     ))


#C".GZ%%"z	A ;;2AJ;7"&&:KKDqx()A
"CC GGAM66#++a.!V]]266!9%====r]   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_r2   r3   r4      rj   rk   r2   r3   )rl   hasattrrO   )rI   rs     r[   test_regressor_attributesr   
  sy     	$Q/Aq*%%%%q,''''EE9i
 1a&)q*%%%%q,'''''r]   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divider6   r2   )rL   r=   rM   	max_depthry   r   )rN   r   errstaterO   rd   re   rf   r&   r   predict_probaonesrW   r   predict_log_proba)rI   rX   rY   s      r[   test_probabilityr     s     *$/	H	%!!q
 			4;;'!FF3$$TYY/a8"''$))//RSBT:U	
 	"dii("&&1F1Ftyy1Q*R	
 
&	%	%s   C=D$$
D2dtypezname, criterionrC   rD   rE   rF   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?rF   皙?Fcopyr6   r   r`   皙?r4   r3   n_jobsr2   )rL   r=   r^   sample_weight        )rc   d   )rl   X_largeastypey_largerA   rO   feature_importances_r   r   rW   all
set_paramsr&   r/   randintrU   absr   )r   rI   r^   	tolerancerP   rQ   ForestEstimatorestimportancesn_importantimportances_parallelr   scaleimportances_biss                 r[   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	 r]   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     r[   binomial-test_importances_asymptotic.<locals>.binomial^  s(    EQUqHSVSV4(HHr]   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   )rU   r   bincountlog2)samplesr7   entropycountps        r[   r   ,test_importances_asymptotic.<locals>.entropya  sS    L	[[)Eei'A1urwwqz>) *
 r]   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   )rW   listrangepopr   uniquer   r   r   boolrU   appendr   )X_mrP   rQ   r7   r8   featuresivaluesimpr   r   Bjbmask_bX_y_n_samples_bchildrenximask_xicr   r   s                         r[   mdi_importance3test_importances_asymptotic.<locals>.mdi_importancel  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   r2   r   r   r2   r   r2   )r2   r   r2   r2   r2   r   r2   r3   )r2   r   r2   r2   r   r2   r2   r4   )r   r2   r2   r2   r   r2   r   r   )r2   r2   r   r2   r   r2   r2   rj   )r2   r2   r   r2   r2   r2   r2   rk   )r2   r   r2   r   r   r2   r      )r2   r2   r2   r2   r2   r2   r2      )r2   r2   r2   r2   r   r2   r2   	   )r2   r2   r2   r   r2   r2   r2   r   r  r   r2   r5   rD   r   )rL   rM   r^   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     r[   	<genexpr>.test_importances_asymptotic.<locals>.<genexpr>  s)      
' JJ22U2C's   &(r   )r   arrayr   rW   zerosr   r   rO   r   estimators_rL   r%   r   r   )r   re   rP   rQ   r8   true_importancesr   rY   r   r   r   s            @@r[   test_importances_asymptoticr  Y  s6   
I	.` 88$$$$$$$$$$	
D 88DBQBKt,d1a4jqJ xx
+:,Q15  qJQ	c!i 
 	 

 	
 

		  
C$4566"016684???r]   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   getattrrA   )rI   err_msgs     r[   !test_unfitted_feature_importancesr    sE    	==CVD\  
~W	5!$')+AB 
6	5	5s   A
ArX   X_type)r  
sparse_csr
sparse_csczX, y, lower_bound_accuracyi,  )r7   	n_classesr=   ra     rk   )r7   r  r9   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_namerc   r   r}   (   TrL   r   r  r=   
oob_score_oob_decision_function_g)\(?z	abs_diff=z is greater than 0.11oob_prediction_r2   N)r#   r    r   rO   callablerR   rg   r&  r   ndimrW   rU   setr'  )rX   rP   rQ   r  lower_bound_accuracyr  r   r   r   r   
classifier
test_scoreabs_diffexpected_shapes                 r[   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Dr]   ro   zX, y, lower_bound_r2)r7   r8   	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"  rc   r   r}   2   Tr%  r&  r(  r   r'  r2   N)r#   r    r   rO   r)  rR   rg   r&  r   r*  rW   r(  )ro   rP   rQ   r  lower_bound_r2r  r   r   r   r   	regressorr.  r0  s                r[   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<<<r]   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.r2   Tr   rL   r  r   r=   z"Some inputs do not have OOB scoresr  N)r   warnsUserWarningrO   rd   re   rf   )r   	estimators     r[   test_forest_oob_warningr>  Q  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)rd   re   rf   r   r  
ValueErrorrO   )r   rP   rQ   r  r=  s        r[   (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.
rs   r   rj   r3   ru   zmulticlass-multioutputTr@  z:The type of target cannot be used to compute OOB estimatesr  N)r   r   r   rd   re   r   rW   r-   r   r  rA  rO   )rX   r   rP   rQ   y_typer=  r  s          r[   6test_classifier_error_oob_score_multiclass_multioutputrE  l  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                  S	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                   Ha  n[        UR                  [        U5      US	5      nX;   d  M+  U
S-  n
XR!                  U	R#                  SS5      5      R%                  5       -  nMc     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.
rs   r   r6   r3   ru      Tr:  Nr   r2   r1   )r   r   r   rd   re   r   rW   rO   r   rU   max_samplesr  	enumerater  r   r=   rR   reshapesqueezer$   r(  )ro   r   rP   rQ   r=  n_samples_bootstrapn_samples_testoob_pred
sample_idxsamplen_samples_ooboob_pred_sampler	  oob_unsampled_indicess                 r[   2test_forest_multioutput_integral_regression_targetrT  |  s[   
 ))


#C		A$))//!*<a)@AA44aI MM!23q69;P;PRVWWWQZ1_Nxx+,H'/>(:;
((1+))D$?!!3q6+>%! 2"<<q"0E#F#N#N#PP *  /> < H77HIr]   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_attributesrP   rQ   rV  s    r[   +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r2   r3   )rL   r   )rN   r   rO   rd   re   rf   )rI   forestrY   s      r[   test_gridsearchr^    s8      %'F
vVL
MCGGDIIt{{#r]   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 classificationr6   r4   r   rL   r   r=   r2   r   r3   N)rN   rd   re   rf   rl   rm   rn   rA   rO   rU   r   rR   r&   )rI   rP   rQ   r   r]  y1y2s          r[   test_parallelrc    s     !!IIKK	"	"'-O"QQGF
JJq!v;"
Q		B
Q		Bba(r]   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 )Nr3   r   r   )rN   rd   re   rf   rl   rm   rn   rA   rO   rg   pickledumpsloadstype	__class__)	rI   rP   rQ   r   objrg   pickle_objectobj2score2s	            r[   test_picklern    s     !!IIccNKK!	"	"#A#J#A#J'-O
q
)CGGAqMIIaOELL%M<<&D:&&&ZZF??r]   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)Nr0   r1   r2   r3   r   r4   Fr=   r   r   r   r   r3   r   r   )rA   rO   rR   r&   rN   r   r   r   rU   rW   r   	rI   r   r   r   r   r   y_predproba	log_probas	            r[   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)Nr0   r1   r2   r3   redbluegreenpurpleyellowr   Frp  r   r   rq  rr  )
rA   rO   rR   r'   r   r   r   rU   rW   r   rs  s	            r[   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   r3   r1   r2   r0   )rN   rO   rP   rQ   r   r'   r   r   vstackr  rS   )rI   rX   rY   _ys       r[   test_classes_shaper  C  s     *$/ 
*
.
.q!
4C>>Qs||b!W- 
Arxx{Q'	(	*	*B

*
.
.q"
5Cs~~1v.s||r1gAw%78r]   c                      [        SSS9n [        R                  " SS9u  pU R                  U5      n[	        U[
        R                  5      (       d   eg )Nr6   F)rL   sparse_outputrc   factor)r   r   make_circlesfit_transform
isinstancer   ndarray)hasherrP   rQ   X_transformeds       r[   test_random_trees_dense_typer  V  sK    
 "rGF  ,DA((+M mRZZ0000r]   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 )Nr6   Fr   )rL   r  r=   Trc   r  )r   r   r  r  r'   toarray)hasher_densehasher_sparserP   rQ   X_transformed_denseX_transformed_sparses         r[   test_random_trees_dense_equalr  c  su    
 (u1L )t!M   ,DA&44Q7(66q9 +3357JKr]   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  r2   rK   rc   r  r   ry   r3   )n_componentsr   )r   r   r  r  r'   rO   	transformr  rW   r   rL   r   r!   rg   )r  rP   rQ   r  svd	X_reduced
linear_clfs          r[   test_random_hasherr  v  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0r]   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  r2   rK   )r   make_multilabel_classificationr   r  r'   r  )r  rP   rQ   r  r  r  s         r[   test_random_hasher_sparse_datar    sc    22BDA!rBF((+M!//a0@A+335}7L7L7NOr]   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   r3   )r2   r3   r4   r         r?   i90  r`  )	r/   randnr   r   rO   r   	itertoolspairwiser&   )r   r7   r8   r   r   r   clfsr   rY   probasproba1proba2s               r[   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  r2   rx   r  r5   rs   rK    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      r[   r
  $test_distribution.<locals>.<genexpr>  1      
E ()AvXCF#36E   ')r2   r   rj   g?r3   r4   333333?z0,1/0,0/--0,2/--)r  r3   )rM   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      r[   r
  r    r  r  r  )r/   r   randr   rO   r   r   r  joinzipr  feature	thresholdsorteditemsrU   r   emptyr   )r   rP   rQ   n_treesrp   uniquesr	  r   s           r[   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 )Nr2   r   r   )r   max_leaf_nodesrL   r=   )r   rL   r=   )hastie_Xhastie_yrA   rO   r  	get_depthrI   rP   rQ   r   r   s        r[   test_max_leaf_nodes_max_depthr    s    Xq (-O
AAA	c!i  ??1'')Q...
AAA
F
J
J1
PC??1'')Q...r]   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 )Nr6   r2   r   )min_samples_splitrL   r=   r1   rc   Failed with {0})r  r  rA   rO   r  r  children_leftn_node_samplesr   minrU   r  )rI   rP   rQ   r   r   node_idxnode_sampless          r[   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2r]   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 )Nrj   r2   r   )r   rL   r=   r   r  g      ?)r  r  rA   rO   r  r  rV   r   r   r  r  rU   )rI   rP   rQ   r   r   outnode_counts
leaf_counts           r[   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1r]   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   rc   rk   r2   )min_weight_fraction_leafrL   r=   RandomForestFr   weightsz,Failed with {0} min_weight_fraction_leaf={1})r  r  rA   r   r   r   r  rW   r   linspacer   rO   r  r  rV   r   r  r  r  )rI   rP   rQ   r   r   r  total_weightfracr   r  node_weightsleaf_weightss               r[   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 'r]   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=   r7   r3   )r=   r   )r   r  rA   rO   r&   rV   rN   rl   rR   r   r   r   FOREST_TRANSFORMERSr  r  r  )rI   r  rP   rQ   r   densesparses          r[   test_sparse_inputr  :  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	
	 #r]   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   r4   )rA   r   asarrayascontiguousarrayrd   re   rf   r&   rO   rR   r=  splitterr"   r*   r+   r,   )rI   r   r   	containerkwargsrP   rQ   r  s           r[   test_memory_layoutr  ]  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:r]   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   r1   r2   r2   rK   r   )rd   re   rJ  rf   r(   rA   r   r  rA  rO   rN   rl   rR   )rI   rP   X_2drQ   r   r   s         r[   test_1d_inputr  {  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r  )r3   r4   r   c                 ^   [         U    nU" SS9n[        R                  " [        R                  " U5      S5      n[        R                  R                  U5      nUR                  SS[        U5      S9n[        R                  " XWS9UR                  5       -  nSX-  -  n	[        R                  " US5      n
U
R                  u  Ul        Ul        UR                  SS	US9n[        [        U5      5      nUR!                  US
9  UR#                  X5      u  p[%        XU   5        UR!                  SS
9  UR#                  X5      u  p[%        XU   5        UR!                  SSS9  UR#                  X5      u  p[%        XU   5        UR!                  SSS9  UR#                  X5      u  pUb   eg )Nr   r   r4   r2   rj   r  r  r  r  class_weightbalancedbalanced_subsampleF)r  r   T)rN   r   repeataranger   r   r   rU   r   r   rJ  rW   
_n_samples
n_outputs_dictrI  r   _validate_y_class_weightr$   )rI   r  global_random_seedrX   rY   rQ   r   swweighted_frequencybalanced_class_weight
y_reshapedr  class_weight_dict_expanded_class_weights                  r[   test_validate_y_class_weightr    s    *$/

*C
		"))I&*A
))

 2
3C	QA	'BQ3bffh>!?@Aw'J%/%5%5"CNCN ;;q!);4LY|45NN 1N2";;JKA)?; NN
N+";;JKA)+CD NN 4NF";;JKA)+CD NN 4NE";;JKA (((r]   r   c                    [         U    nU" X!S9n[        U5      nUR                  [        R                  [        R
                  [        R                  " [        R
                  5      S9  [        U5      R                  SS9nUR                  [        R                  [        R
                  5        [        UR                  S5        [        UR                  UR                  5        [        R                  " [        R
                  [        R
                  [        R
                  45      R                  n[        U5      R                  SSSS.SSSS.SSSS./S9nUR                  [        R                  U5        [        UR                  S	5        [        UR                  UR                  S
S9  [        U5      R                  SS9n	U	R                  [        R                  U5        [        U	R                  S5        [        UR                  U	R                  5        [        R                  " [        R
                  R                   5      n
U
[        R
                  S:H  ==   S-  ss'   SSSS.n[        U5      nUR                  [        R                  [        R
                  U
5        [        U5      R                  US9nUR                  [        R                  [        R
                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        U5      nUR                  [        R                  [        R
                  U
S-  5        [        U5      R                  US9nUR                  [        R                  [        R
                  U
5        [        UR                  UR                  5        [        UR                  UR                  5        g )Nrp  r   r  r  r2   g       @r   )r   r2   r3   r   gMb`?)atolr   g      Y@r3   )rN   r   rO   rd   re   rf   r   	ones_liker   r%   _sample_weightr   r  rS   r$   r   rW   )rI   r   r  rX   rY   clf1clf2
iris_multiclf3clf4r   r  s               r[   test_class_weights_forestr    s    *$/
(:
PC :DHHTYY2<<3LHM:  j 9DHHTYY$++Q/1143L3LM DKKdkkBCEEJ:  $$$
 ! D 	HHTYY
#++Y7D--t/H/HuU:  j 9DHHTYY
#++Q/1143L3LM GGDKK--.M$++"#s*#u-L:DHHTYY]3:  l ;DHHTYY$++T-@-@A1143L3LM :DHHTYY]A%56:  l ;DHHTYY]3++T-@-@A1143L3LMr]   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 )
Nr3   r  r   r  r=   rc   r   r  )r0   r3   r  )rN   r   r  rQ   r  rS   rO   rP   )rI   rX   r  rY   s       r[   5test_class_weight_balanced_and_bootstrap_multi_outputr    s     *$/	Arxx{Q'	(	*	*B


CCGGArN
3'cc):;!C GGArN
(<1
MCGGArNr]   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)Nr3   r  Tr   )r  
warm_startr=   JWarm-start fitting without increasing n_estimators does not fit new trees.r  rc   r   r  r  )rN   r   r  rQ   r  rS   rO   rP   r   r;  r<  r  rA  )rI   rX   r  rY   warn_msgs        r[   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)rj   r6   rs   T)rL   r=   r  rL   r6   Fr  )r  )r  r  rA   r   rO   rU   r+  r=   r'   rV   r  )rI   rP   rQ   r   est_wsrL   	est_no_wsr	  s           r[   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 )Nrj   r2   FrL   r   r  r=   Tr3   )r  r=   )r  r  rA   rO   r   r&   rV   )rI   rP   rQ   r   r   est_2s         r[   test_warm_start_clearr)  7  s     Xq'-O
qA%VW
XCGGAM!1E 
IIaO	A6	IIaOekk!nciil;r]   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)Nrj   r2   T)rL   r   r  r   r"  )r  r  rA   rO   r   r   r  rA  r  s        r[   $test_warm_start_smaller_n_estimatorsr+  I  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)
Nrj   r4   Tr2   r'  r3   r   r  r  )
r  r  rA   rO   r   r   r;  r<  r'   rV   )rI   rP   rQ   r   r   r(  r  s          r[   "test_warm_start_equal_n_estimatorsr-  U  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   r4   Fr2   T)rL   r   r  r=   r   r  rj   )r  r  rL   r&  rV  )r  r  rA   rO   r   r   r&  r(   )rI   rP   rQ   r   r   r(  est_3s          r[   test_warm_start_oobr1  o  s*    Xq'-O
C GGAME 
IIaO	2F	IIaO5,''''>>U----- E 
IIaOul++++	t$EIIq$>>U-----r]   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)Nr6   T)rL   r  r   r  rY  )wrapsz%Warm-start fitting without increasingr  )r  r  rA   r	   objectrY  rO   r   r;  r<  assert_called_once)rI   rP   rQ   r   r   !mock_set_oob_score_and_attributess         r[   test_oob_not_computed_twicer7    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   eyerO   rR   r'   r   )r  r-  rP   chrQ   results         r[   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   rj   r2   Fr'  r1   )rW   )r  r  rW   rA   rO   decision_pathr'   r   diffr  r  
node_countrV   r   rI  r&   r   )rI   rP   rQ   r7   r   r   	indicatorn_nodes_ptreleavesest_idr   r   leave_indicators                 r[   test_decision_pathrH    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   r2   r@   r   )min_impurity_decrease)	r   r   r   r   r   r   rO   r  rJ  )rP   rQ   all_estimators	Estimatorr   r	  s         r[   test_min_impurity_decreaserM    sn    $$sCDA	N $	c2OOD --444 $ $r]   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)	NrH   r^   )r4   r4   )r1   r2   r4   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  rO   )r   rP   rQ   r  s       r[   test_poisson_y_positive_checkrP    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      r[   rU  MyBackend.__init__  s    
$)&)r]   c                 J   > U =R                   S-  sl         [        TU ]	  5       $ )Nr2   )r   rT  
start_call)rV  ri  s    r[   rZ  MyBackend.start_call  s    

a
w!##r]   )r   )__name__
__module____qualname____firstlineno__rU  rZ  __static_attributes____classcell__)ri  s   @r[   rR  rR    s    *$ $r]   rR  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)Nr6   r3   )rL   r   rb  r   )r   joblibparallel_backendrO   rP   rQ   r   r   )rY   bar   r  s       r[   test_backend_respectedrg    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/  r4   r2   )r7   r9   r=   r  rj   rs      )r   r=   rL   gHz>)abs_tol)r   r   rO   mathiscloser   r   )rP   rQ   rY   s      r[   #test_forest_feature_importances_sumrm  #  s]    AADA !#	c!i  <<3337794HHHr]   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)r6   r6   )r6   r6   r"  r   )r   r  r   r   rO   r'   r   float64)rP   rQ   gbrs      r[   *test_forest_degenerate_feature_importancesrq  -  sQ    
A
A
R
0
4
4Q
:Cs//"BJJ1OPr]   c                 ^   [         [        p!Sn[        X1R                  S   -  5      n[        U    " SUSS9nUR                  X5        [        U    " SUSS9nUR                  X5        UR                  UR                  :X  d   e[        UR                  X5      UR                  X5      5        g )Ng      ?r   T   r   rH  r=   )	r  r  r   rW   rB   rO   _n_samples_bootstrapr$   rg   )rI   rP   rQ   max_samples_floatmax_sample_intest1est2s          r[   test_max_samples_geq_onerz  5  s     Xq*WWQZ78N(.$5BD 	HHQN(.ND 	HHQN$$(A(AAAADJJq$djj&67r]   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)NFrc   )r   rH  zl`max_sample` cannot be set if `bootstrap=False`. Either switch to `bootstrap=True` or set `max_sample=None`.r  )rB   r   r  rA  rO   rP   rQ   )rI   r   r  s      r[   test_max_samples_bootstrapr|  H  sH     (
-3
OC	 
 
z	11 
2	1	1s   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   rt  )	r    rm   rn   rl   rO   rR   r   r   r   )rI   r   r   r   r   
ms_1_modelms_1_predictms_None_modelms_None_predictms_1_ms
ms_None_mss              r[   $test_max_samples_boundary_regressorsr  U  s    '7u!($GW #4(CaJ >>'3;;FCL%d+DqM $''9AA&IO 6G#O<JfmmJ////r]   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   rt  )	r    r   r   rN   rO   r   r   rb  r$   )	rI   r   r   r   r  r  
ms_1_probar  ms_None_probas	            r[   %test_max_samples_boundary_classifiersr  k  s    "2q7#GW $D)CaJ 1??GJ&t,DqM "%%g7EEfMMJJz9r]   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  rO   )r  rP   rQ   r   msgs        r[   test_forest_y_sparser  ~  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 )Nr2   i'  r3   r   )rL   r=   rH  z=Tree without `max_samples` restriction should have more nodes)r   r   r   r  rO   r  r  rA  )	r  r   rP   rQ   rx  ry  tree1tree2r  s	            r[   'test_little_tree_with_small_max_samplesr    s    
))


"C		%A		%1A D D 	HHQNHHQNQ%%EQ%%E
ICe...33.r]   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   )MSEr1   r2   r3   )rL   r   r^   )sklearn.tree._criterionr  rn   rJ  rW   rl   rO   rm   )r  r  rQ   r7   	n_outputsmse_criterionr   s          r[   -test_mse_criterion_object_segfault_smoke_testr    sN     ,b!A77I	-M
F
#1
VCGGE1r]   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   r3   F)rL   r   r  r=   ))r   r3   )r   r4   )r   rj   )r   rk   r\  )r2   r4   )r2   rj   )r2   rk   randomtreesembedding_r  N)	r   r   r   r   r  r   rO   get_feature_names_outr'   )r=   rP   r  namesr	  leafexpected_namess          r[   -test_random_trees_embedding_feature_names_outr    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   )seedri  r>   Tr   r3   )r   r=   )cvN)setattrsklearnensemble_forestr   r.   r   r   r   r   r   r   )r  monkeypatchr   rP   rQ   rY   s         r[   test_read_only_bufferr    s{       S)
 ))

Q

'C3ODAad#A
 
<CCA!$r]   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_yr6   g-C6?r   )rL   rH  r  r=   N)r   	load_winer   rO   )r  rP   rQ   r]  s       r[   .test_round_samples_to_one_when_samples_too_lowr    s8     .DA#TSTF JJq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.
ri  r2   r@   rc   Nr6   )rL   rH  rM   r=   r   r   r3   )r   rO   estimators_samples_r   r'   r  r  r   rU   r   r   int32r   r   r+  r  valuer   r$   )r  r   r  rP   rQ   rH  r   estimators_samples
estimatorsr   estimator_indexestimator_samplesr=  r   r   orig_tree_valuesnew_tree_valuess                    r[   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6r]   zForest, criterionc                    [         R                  R                  S5      nSu  p4U[        ;   a  [        O[
        nU" X4US9u  pgUS:X  a  U[         R                  " U5      -  nUR                  5       n[         R                  XR                  SS/UR                  SS/S	9'   [         R                  " U5      R                  5       (       d   e[        XSS
9u  ppU " X!SS9nUR                  X5        UR                  X5      n[        XgSS
9u  nnpU " X!SS9nUR                  X5        UR                  UU5      nUSU-  :  d   eg)zJCheck that forest can deal with missing values and has decent performance.r   )r5   rj   r>   rH   FTgffffff?r   )rx   r   r   r5  )r=   r^   rL   r   N)r   r   r   REG_CRITERIONSr   r   r  r   nanchoicerW   isnananyr    rO   rg   )r  r^   r   r7   r8   	make_datarP   rQ   	X_missingX_missing_trainX_missing_testr   r   forest_with_missingscore_with_missingr   r   r]  score_without_missings                      r[    test_missing_values_is_resilientr  ,  sA    ))


"C"I#,#>DWIycRDA I	RVVAY IIKIjj%QWWtjEF88I""$$$$7G184OW
 !cUWXO5,22>J (81'M$GVWKF
JJw "LL8 (=!====r]   c                 r   [         R                  R                  U5      nSnSnUR                  US5      nUR	                  U5      S:  nUR                  U5      nUR	                  U5      S:  n	[         R
                  XU	-  '   [         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US
9nUR                  X5        U " SUS
9nUR                  X5        UR                  UU5      nUR                  UU5      nUUU-   :  d   eg)z[Check that the forest learns when missing values are only present for
a predictive feature.r  r  r3   rc   r   Nr2   r   r   )r=   r^   )r   r   r   r  r  r  r  r  r   r    rO   rg   )r  r^   r  r   r7   expected_score_gapX_non_predictiverQ   predictive_feature
noise_maskX_predictiveX_predictive_trainX_predictive_testX_non_predictive_trainX_non_predictive_testr   r   forest_predictiveforest_non_predictivepredictive_test_scorenon_predictive_test_scores                        r[    test_missing_value_is_predictiver  X  sV    ))

 2
3CI yyA.c!A 9-)$t+J)+:~&88&'++----#((*L+A 	KAC,6"YG4>-334EvN 5 ; ;v! !$=@R$RRRRr]   c                 v    [         R                  " [        SS9   U " SS9nS S S 5        g ! , (       d  f       g = f)NrG   r  rO  )r   r;  FutureWarning)r  r  s     r[   test_friedman_mse_deprecationr    s&    	m>	:^, 
;	:	:s   *
8)r/  )__doc__r  rk  re  collectionsr   	functoolsr   r   r   typingr   r   unittest.mockr	   rd  numpyr   r   scipy.specialr
   r  r   r   sklearn.datasetsr   r   r   sklearn.decompositionr   sklearn.dummyr   sklearn.ensembler   r   r   r   r   sklearn.ensemble._bootstrapr   sklearn.ensemble._forestr   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/   rP   rQ   rS   rT   r   r   	load_irisrd   r   permutationrf   rx   permre   rm   rn   r  r  r   float32parallelget_active_backendri  DEFAULT_JOBLIB_BACKENDrN   rl   r  r  rA   str__annotations__updater   rB   CLF_CRITERIONSr  markparametrizer\   rh   filterwarningsrq   r   r   r   r   ro  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-  r1  r7  r=  rH  rM  rP  rR  register_parallel_backendthread_unsaferg  rm  rq  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r   r]   r[   <module>r     s      #  +        # S S . (  A @ -  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%O !34< 5<& !34&:;W < 5W$ CD!23D 4 E
42/j &BC> D>& !23( 4( !34
 5
  2::rzz":;OO"VZ$89!O5E#FG'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i0$) 1 5$)N !34tUm48N 5 58Nv !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 !>?8 @8$ !>?	 @	 !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7n CD	"))+^	<	#**,n	= > E >H CD	"))+^	<	#**,n	=(S E(SX #4#;#;#=>- ?-r]   