
    Q3j                       U d Z ddlZddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mZmZ ddlmZ ddlZddlZddlZddlmZ ddlZdd	lmZmZ dd
lmZmZmZ ddlmZ ddlmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZBmCZCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddgddgddgddgddgddggZKg dZLddgddgddggZMg d ZN ej2                  d!d"dddd#d$      \  ZOZP ej                         ZR eJd      ZSeSj                  eRj                  j                        ZWeRj                  eW   eR_X        eRj                  eW   eR_U         ej6                  d!d"d%      \  ZYZZ ej4                  d&d'      \  Z[Z\e[j                  ej                        Z[ej                  j                         d   j                  Zbe!e#d(Zce"e$d)Zdd*e%iZe ef       Zgeehef   eid+<   egj                  ec       egj                  ed       egj                  ee       ecj                         Zleehef   eid,<   elj                  ed       d-Zmd.Znej                  j                  d/ec      d0        Zqej                  j                  d/ec      ej                  j                  d1d-      d2               Zrej                  j                  d3      ej                  j                  d/ed      ej                  j                  d1d4      d5                      Ztd6 Zuej                  j                  d1d7      d8        Zvej                  j                  d/ed      d9        Zwej                  j                  d/ec      d:        Zxej                  j                  d;ej                  ej                  f      ej                  j                  d< ej                   e	ecd=d>g       e	edd?d@g                  dA               Z{dB Z|ej                  j                  d/eg      dC        Z}ej                  j                  dDecj                               ej                  j                  dEg dF      ej                  j                  dGg  ej2                  dHddI      dJg  ej2                  dKddLdM      dNeRj                  eRj                  dz  dz   dNfg  ej                  dHd'      dOg      ej                  j                  dPdQ ee.dRS      g      dT                             Zej                  j                  dUedj                               ej                  j                  dEg dF      ej                  j                  dVg  ej6                  d!d"ddW      dXg  ej6                  d!d"ddW      dYg      ej                  j                  dPdQe-g      dZ                             Zej                  j                  d[elj                               d\        Zej                  j                  d[elj                               d]        Zej                  j                  dDecj                               d^        Zej                  j                  dUedj                               d_        Zej                  j                  dPdQd#g      d`        Zej                  j                  d/ec      da        Zej                  j                  d/el      db        Zej                  j                  d/el      dc        Zej                  j                  d/el      dd        Zej                  j                  d/ec      de        Zej                  j                  d/ec      df        Zdg Zdh Zdi Zej                  j                  djeC      dk        Zdl Zdm Zej                  j                  d/eg      dn        Zej                  j                  d/eg      do        Zej                  j                  d/eg      dp        Zej                  j                  d/eg      dq        Zej                  j                  d/eg      ej                  j                  dreBeCz   eDz         ds               Zej                  j                  d/el      ej                  j                  d;ej                  ej                  f      dt               Zej                  j                  d/eg      du        Zej                  j                  d/ec      ej                  j                  dvg dw      dx               Zej                  j                  d/ec      ej                  j                  dydQd#g      dz               Zej                  j                  d/ec      d{        Zej                  j                  d/ec      d|        Zej                  j                  d/eg      d}        Zej                  j                  d/eg      d~        Zej                  j                  d/eg      d        Zej                  j                  d/eg      d        Zej                  j                  d/el      d        Zej                  j                  d/el      d        ZddZej                  j                  d/el      d        Zd Zd Z G d deb      Z ejR                  de       ej                  jT                  e@d               Zd Zd Zej                  j                  d/el      d        Zej                  j                  d/el      d        Zej                  j                  d/ed      d        Zej                  j                  d/ec      d        Zej                  j                  deD      d        Zej                  j                  de#e$g      d        Zej                  j                  ded      d        Zd Zej                  j                  deD      d        Zej                  j                  dddg      d        Zej                  j                  dddg      ej                  j                  dydQd#g      ej                  j                  delj                               d                      Zej                  j                  d3      ej                  j                  dg  e	edj                         en       e	ecj                         em            d               Zej                  j                  d3      ej                  j                  dg  e	edj                         en       e	ecj                         em            d               Zej                  j                  dedj                               d        Zy)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                    t         |    } |dd      }|j                  t        t               t	        |j                  t              t               dt        |      k(  sJ  |ddd      }|j                  t        t               t	        |j                  t              t               dt        |      k(  sJ |j                  t              }|j                  t        t              |j                  fk(  sJ y)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       O/DATA/.local/lib/python3.12/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                    t         |    } |d|d      }|j                  t        j                  t        j                         |j                  t        j                  t        j                        }|dkD  sJ d||fz          |d|dd      }|j                  t        j                  t        j                         |j                  t        j                  t        j                        }|dkD  sJ d||fz         y )	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AYPUDVVV;
911C GGDIIt{{#IIdii-E3;VAYPUDVVV;r]   z%ignore:.*friedman_mse.*:FutureWarning)rE   rG   rF   c                 X   t         |    } |d|d      }|j                  t        t               |j	                  t        t              }|dkD  sJ d||fz          |d|dd      }|j                  t        t               |j	                  t        t              }|dkD  sJ d	||fz         y )
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            	      .   t         j                  j                  d      } d\  }}}t        j                  ||z   ||       }| j                  dd|      t        j                  |d      z  }| j                  t        j                  ||z        	      }t        |||| 
      \  }}}	}
t        ddd|       }t        ddd|       }|j                  ||	       |j                  ||	       t        d      j                  ||	      }||	df||
dffD ]  \  }}}t        ||j                  |            }t        |t        j                  |j                  |      dd            }t        ||j                  |            }|dk(  r||k  sJ |d|z  k  rJ  y)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".GVZ%%F"z	A
 ;;2AJ;7"&&:KKDq4x()A'7	1S($GVWf 'bvTWJ '!	J NN7G$NN7G$F+//AE$gw7&&&9QR1i*1j.@.@.CD
 +rwwz))!,dD9

 -Qa0@A 
***C,....# Sr]   )rH   rE   c                    t         j                  j                  d      }d\  }}}t        j                  ||z   ||      }|j                  dd|      t        j                  |d      z  }|j                  t        j                  ||z        	      }t        | d
d|      }|j                  ||       t        j                  |j                  |            t        j                  t        j                  |            k(  sJ y)z9 "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".GVZ%%F"z	A ;;2AJ;7"&&:KKDq4x()A
"CC GGAqM66#++a.!V]]266!9%====r]   c                     t        |    d      }t        |d      rJ t        |d      rJ |j                  g dg dgddg       t        |d      rJ t        |d      rJ y )	Nr   r=   classes_
n_classes_r2   r3   r4      rj   rk   r2   r3   )rl   hasattrrO   )rI   rs     r[   test_regressor_attributesr   
  sm     	$Q/Aq*%%%q,'''EE9i
 1a&)q*%%%q,''''r]   c           	      j   t         |    }t        j                  d      5   |dddd      }|j                  t        j
                  t        j                         t        t        j                  |j                  t        j
                        d      t        j                  t        j
                  j                  d                t        |j                  t        j
                        t        j                  |j                  t        j
                                     d d d        y # 1 sw Y   y xY w)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   D D))D2dtypezname, criterionrC   rD   rE   rF   c                    d}|t         v r|dk(  rd}t        j                  | d      }t        j                  | d      }t        |   } |d|d      }|j                  ||       |j                  }t        j                  |d	kD        }	|j                  d   dk(  sJ |	d
k(  sJ t        j                  |d d
 d	kD        sJ |j                  }|j                  d       |j                  }
t        ||
       t        d      j                  ddt        |            } |dd|      }|j                  |||       |j                  }t        j                  |dk\        sJ dD ][  } |dd|      }|j                  ||||z         |j                  }t        j                   ||z
        j#                         |k  r[J  y )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GGAqM**K &&s*+KQ2%%%!66+bq/C'((( **KNN!N33k+?@ 'q)11!RQ@M
rY
OCGGAqG.**K66+$%%%2AS1EM$9:22vvkO3499;iGGG	 r]   c                  ~  	
 d 	d 
	
fd} t        j                  g dg dg dg dg dg d	g d
g dg dg dg
      }t        j                  |d d d df   t              |d d df   }}|j                  d   }t        j                  |      }t        |      D ]  } | |||      ||<    t        dddd      j                  ||      }t        d |j                  D              |j                  z  }t         
|      t        |             t        j                  ||z
        j                         dk  sJ y )Nc                 Z    | dk  s| |kD  rdS t        t        |      t        |       d      S )Nr   T)exact)r
   int)kns     r[   binomialz-test_importances_asymptotic.<locals>.binomial^  s*    EQUqHSVSV4(HHr]   c                     t        |       }d}t        j                  |       D ]+  }d|z  |z  }|dkD  s||t        j                  |      z  z  }- |S )Nr         ?r   )rU   r   bincountlog2)samplesr7   entropycountps        r[   r   z,test_importances_asymptotic.<locals>.entropya  sU    L	[[)Eei'A1u1rwwqz>) *
 r]   c                 V   |j                   \  }}t        t        |            }|j                  |        t        |      D cg c]  }t	        j
                  |d d |f           }}d}t        |      D ]!  }	d |	|      ||	z
  z  z  }
t        ||	      D ]  }t        t        |	      D cg c]
  }|||       c} D ]  }t	        j                  |t              }t        |	      D ]  }||d d ||   f   ||   k(  z  } ||d d f   ||   }}t        |      }|dkD  sbg }||    D ]"  }|d d | f   |k(  }|j                  ||          $ ||
d|z  |z  z   |      t        |D cg c]  } |      t        |      z  |z   c}      z
  z  z  }  $ |S c c}w c c}w c c}w )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_importancez3test_importances_asymptotic.<locals>.mdi_importancel  s    !	:j)*S.3J.?@.?"))AadG$.?@z"A(1j1Z!^DED "(A. q"BA6!A$<"BCAWWYd;F"1X!AqtG*!"44 & vqy\1V9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!(F&)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   K   | ]   }|j                   j                  d        " yw)F)	normalizeN)tree_compute_feature_importances).0trees     r[   	<genexpr>z.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  s@   
I	.` 88$$$$$$$$$$	
D 88DBQBKt,d1a4jqAJ xx
+:,Q15  qJQ	c!Qi 
 	 

 	
 

		  
C$4566"[016684???r]   c                     dj                  |       }t        j                  t        |      5  t	        t        |           d       d d d        y # 1 sw Y   y xY w)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                    t        ||      }t        ||dd      \  }}}}	 | dd|d      }
t        |
d      rJ t        |
d	      rJ |
j                  ||       t	        |      r ||	|
j                  |            }n#|
j                  ||	      }|
j                  |k\  sJ t        ||
j                  z
        }|d
k  sJ d|d       t        |
d      sJ t        |
d      rJ t        |
d	      sJ |j                  dk(  r$|j                  d   t        t        |            f}n8|j                  d   t        t        |dddf               |j                  d   f}|
j                  j                  |k(  sJ y)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_oobr-    s   > 	1v6A'7			($GVWf "	J z<000z#;<<<NN7G$	vz'9'9&'AB
%%ff5
$$(<<<<:
 5 556Ht@	{*?@@:|,,,z#4555:7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                    t        ||      }t        ||dd      \  }}}}	 | dd|d      }
t        |
d      rJ t        |
d	      rJ |
j                  ||       t	        |      r ||	|
j                  |            }n#|
j                  ||	      }|
j                  |k\  sJ t        ||
j                  z
        d
k  sJ t        |
d      sJ t        |
d	      sJ t        |
d      rJ |j                  dk(  r|j                  d   f}n|j                  d   |j                  f}|
j                  j                  |k(  sJ y)z\Check 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*  r,  s                r[   test_forest_regressor_oobr4    sX   . 	1v6A'7			($GVWf  	I y,///y"3444MM'7#	vy'8'8'@A
__VV4
##~555zI0001S8889l+++9/000y":;;;vv{!--*,!--*AFF3$$**n<<<r]   r   c                      | dddd      }t        j                  t        d      5  |j                  t        j
                  t        j                         ddd       y# 1 sw Y   yxY w)zfCheck 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                     t         j                  }t         j                  }d} | dd      }t        j                  t
        |      5  |j                  ||       ddd       y# 1 sw Y   yxY w)zaCheck 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  r9  s        r[   (test_forest_oob_score_requires_bootstrapr>  _  sO    
 			AAFG$%@I	z	1a 
2	1	1s   A$$A-c                    t         j                  j                  d      }t        j                  }|j                  ddt        j                  j                  d   df      }t        |      }|dk(  sJ  | dd      }d	}t        j                  t        |
      5  |j                  ||       ddd       y# 1 sw Y   yxY w)zwCheck 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  r=  rO   )rX   r   rP   rQ   y_typer9  r  s          r[   6test_classifier_error_oob_score_multiclass_multioutputrA  l  s    
 ))


#C		A);Q(?@AAF---- 44@IJG	z	1a 
2	1	1s   B66B?c           	      
   t         j                  j                  d      }t        j                  }|j                  ddt        j                  j                  d   df      } | dddd      }|j                  ||       t        t        |      |j                  d	      }|j                  d   d
z  }t        j                  |dg      }t        |d	|       D ]  \  }}	d}
t        j                  d      }|j                  D ]_  }t        |j                  t        |      |d	      }||v s)|
dz  }
||j!                  |	j#                  dd            j%                         z  }a ||
z  ||<    t'        ||j(                  d	|        y	)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      Tr6  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   r9  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_targetrP  |  sj   
 ))


#C		A$))//!*<a)@AA44aI MM!Q23q69;P;PRVWWWQZ1_Nxx+,H'/>(:;
F((1+))D$?!!3q6+>%! 22"4<<q"0E#F#N#N#PP *  /> < Hi77HIr]   c                     t        j                  t        d      5  t        |        d d d        t        j                  t        d      5  t               j                  t        t               d d d        y # 1 sw Y   PxY w# 1 sw Y   y xY w)Nz"got an unexpected keyword argumentr  r  zOOB score not supported)r   r  	TypeErrorr   NotImplementedError_set_oob_score_and_attributesrP   rQ   rR  s    r[   +test_random_trees_embedding_raise_error_oobrV    s\    	y(L	My1 
N	*2K	L<<QB 
M	L 
N	M	L	Ls   A8#B8BBc                     t        |           }t        |ddd      }|j                  t        j                  t        j
                         y )Nr2   r3   )rL   r   )rN   r   rO   rd   re   rf   )rI   forestrY   s      r[   test_gridsearchrZ    s8      %'F
vVL
MCGGDIIt{{#r]   c                    | t         v r!t        j                  }t        j                  }n| t        v rt
        }t        }t        |    } |ddd      }|j                         t        |      dk(  sJ |j                  d       |j                  |      }|j                  d       |j                  |      }t        ||d       y)	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   rY  y1y2s          r[   test_parallelr_    s     !!IIKK	"	"'-O"QQGF
JJq!v;"
Q		B
Q		Bb"a(r]   c                    | t         v r-t        j                  d d d   }t        j                  d d d   }n | t        v rt
        d d d   }t        d d d   }t        |    } |d      }|j                         |j                  ||      }t        j                  |      }t        j                  |      }t        |      |j                  k(  sJ |j                  ||      }||k(  sJ y )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_picklerj    s     !!IIccNKK!	"	"#A#J#A#J'-O
q
)CGGAqMIIaOELL%M<<&D:&&&ZZ1FF??r]   c                    ddgddgddgddgddgddgddgddgddgddgddgddgg}ddgddgddgddgddgddgddgddgddgddgddgddgg}ddgddgddgddgg}ddgddgddgddgg}t        |    dd      }|j                  ||      j                  |      }t        ||       | t        v rt        j                  d	
      5  |j                  |      }t        |      dk(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ |j                  |      }t        |      dk(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ 	 d d d        y y # 1 sw Y   y xY w)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_multioutputrs    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WWWg&..v6Fff-!![[)%%f-Eu:?"?8>>V+++8>>V+++--f5Iy>Q&&&Q<%%///Q<%%/// *) "))s   BE""E+c                    ddgddgddgddgddgddgddgddgddgddgddgddgg}ddgddgddgddgddgddgddgddgddgdd	gdd	gdd	gg}ddgddgddgddgg}ddgddgddgdd	gg}t        |    d
d      }|j                  ||      j                  |      }t        ||       t	        j
                  d      5  |j                  |      }t        |      dk(  sJ |d
   j                  dk(  sJ |d   j                  dk(  sJ |j                  |      }t        |      dk(  sJ |d
   j                  dk(  sJ |d   j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr0   r1   r2   r3   redbluegreenpurpleyellowr   Frl  r   r   rm  rn  )
rA   rO   rR   r'   r   r   r   rU   rW   r   ro  s	            r[   test_multioutput_stringrz    s   
 
R	R	R	
A	
A	
A	Q	Q	Q	
B	
B	
BG 
			'	'	'				(	(	(G 2hAQ!R1F		'		(	F D
!qE
BCWWWg&..v6Fvv&	H	%!!&)5zQQx~~'''Qx~~'''))&1	9~"""|!!V+++|!!V+++ 
&	%	%s   <BEE"c                    t         |    } |d      j                  t        t              }|j                  dk(  sJ t        |j                  ddg       t        j                  t        t        j                  t              dz  f      j                  } |d      j                  t        |      }t        |j                  ddg       t        |j                  ddgddgg       y )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                      t        dd      } t        j                  d      \  }}| j                  |      }t	        |t
        j                        sJ y )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  sJ    
 "rGF  ,DAq((+M mRZZ000r]   c                      t        ddd      } t        ddd      }t        j                  d      \  }}| j                  |      }|j                  |      }t	        |j                         |       y )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  sw    
 (u1L )t!M   ,DAq&44Q7(66q9 +3357JKr]   c                  F   t        dd      } t        j                  d      \  }}| j                  |      }t        dd      } t	        | j                  |      j                  |      j                         |j                                |j                  d   |j                  d   k(  sJ t	        |j                  d      | j                         t        d	      }|j                  |      }t               }|j                  ||       |j                  ||      d
k(  sJ y )NrC  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  ,DAq((+M "rBFvzz!}..q199;]=R=R=TU q!QWWQZ///}((a(0&2E2EF
A
&C!!-0IJNN9a Iq)S000r]   csc_containerc                     t        j                  d      \  }}t        dd      }|j                  |      }|j                   | |            }t	        |j                         |j                                y )Nr   r   rC  r2   rK   )r   make_multilabel_classificationr   r  r'   r  )r  rP   rQ   r  r  r  s         r[   test_random_hasher_sparse_datar    se    22BDAq!rBF((+M!//a0@A+335}7L7L7NOr]   c                     t        d      } d\  }}| j                  ||      }| j                  dd|      }dD cg c]   }t        d|d      j	                  ||      " }}| j                  ||      }|D cg c]  }|j                  |       }	}t        j                  |	      D ]  \  }
}t        |
|        y c c}w c c}w )	N!0  )P   rC  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"Izii	:.Gkk!Q	*G +	 +F 	BvERVVW	
 +	 	  YYy*-F3784Cc'4F8#,,V4!&&1 5 9s   %B;7C c                  H   t        d      } | j                  ddd      }| j                  d      }d}t        |d	      j	                  ||      }t        t              }|j                  D ]Y  }d
j                  d t        |j                  j                  |j                  j                        D              }||xx   dz  cc<   [ t        |j                         D cg c]  \  }}d|z  |z  |f c}}      }t        |      dk(  sJ d|d   d   kD  sJ d|d   d   kD  sJ d|d   d   kD  sJ d|d   d   kD  sJ |d   d   dkD  sJ |d   d   dk(  sJ t!        j"                  d      }t         j$                  j                  ddd      |d d df<   t         j$                  j                  ddd      |d d df<   | j                  d      }t        dd      j	                  ||      }t        t              }|j                  D ]Y  }d
j                  d t        |j                  j                  |j                  j                        D              }||xx   dz  cc<   [ |j                         D cg c]	  \  }}||f }}}t        |      dk(  sJ y c c}}w c c}}w )Nr  r   r   )r  r2   rx   r  r5   rs   rK    c              3   P   K   | ]  \  }}|d k\  rd|t        |      fz  nd   ywr   z%d,%d/-Nr   r  fts      r[   r  z$test_distribution.<locals>.<genexpr>  4      
E1 ()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   P   K   | ]  \  }}|d k\  rd|t        |      fz  nd   ywr  r  r  s      r[   r  z$test_distribution.<locals>.<genexpr>  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A
NC#Gww 
DJJ..

0D0DE
 

 	   w}}WesU{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!Q
GC#Gww 
DJJ..

0D0DE
 

 	   18@ut}G@w<1A X> As   J
6Jc                 $   t         t        }}t        |    } |dddd      j                  ||      }|j                  d   j                         dk(  sJ  |ddd      j                  ||      }|j                  d   j                         dk(  sJ y )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    XqA (-O
AAA	c!Qi  ??1'')Q...
AAA
F
J
J1a
PC??1'')Q...r]   c                    t         t        }}t        |    } |ddd      }|j                  ||       |j                  d   j
                  j                  dk7  }|j                  d   j
                  j                  |   }t        j                  |      t        |      dz  dz
  kD  sJ dj                  |               |ddd      }|j                  ||       |j                  d   j
                  j                  dk7  }|j                  d   j
                  j                  |   }t        j                  |      t        |      dz  dz
  kD  sJ dj                  |              y )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    s1   XqA'-O
BQQ
OCGGAqMq!''55;H??1%++::8DL66,#a&3,"22R4E4L4LT4RR2
Caa
PCGGAqMq!''55;H??1%++::8DL66,#a&3,"22R4E4L4LT4RR2r]   c                    t         t        }}t        |    } |ddd      }|j                  ||       |j                  d   j
                  j                  |      }t        j                  |      }||dk7     }t        j                  |      dkD  sJ dj                  |               |ddd      }|j                  ||       |j                  d   j
                  j                  |      }t        j                  |      }||dk7     }t        j                  |      t        |      dz  dz
  kD  sJ dj                  |              y )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"   XqA (-O
111
MCGGAqM
//!

"
"
(
(
+C++c"K[A-.J66*!A#4#;#;D#AA!
4aa
PCGGAqM
//!

"
"
(
(
+C++c"K[A-.J66*A 11Q3D3K3KD3QQ1r]   c                 x   t         t        }}t        |    }t        j                  j                  d      }|j                  |j                  d         }t        j                  |      }t        j                  ddd      D ]  } ||dd      }d| v rd|_
        |j                  |||       |j                  d   j                  j                  |      }	t        j                  |	|	      }
|
|
dk7     }t        j                   |      ||j"                  z  k\  rJ d
j%                  | |j"                                y )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   XqA (-O
))


"Chhqwwqz"G66'?L AsA&%)
 T!!CM1G,ooa &&,,Q/{{38#LA$56vvl#|c6R6R'RR 	
:AAc22	
R 'r]   sparse_containerc                    t        j                  dd      \  }}t        |    } |dd      j                  ||      } |dd      j                   ||      |      }t	        |j                  |      |j                  |             | t        v s| t        v rJt	        |j                  |      |j                  |             t	        |j                  |j                         | t        v rTt	        |j                  |      |j                  |             t	        |j                  |      |j                  |             | t        v rt	        |j                  |      j                         |j                  |      j                                t	        |j                  |      j                         |j                  |      j                                y y )Nr   r1  )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PDAq'-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                 X   t        |    dd      }t        j                  i ft        j                  ddift        j                  ddift        j                  i ffD ]Y  \  }} |t        j
                  fd|i|}t        j                  }t        |j                  ||      j                  |      |       [ |j                  j                  t        v rlt        t        z   t        z   D ]U  } |t        j
                  |      }t        j                  }t        |j                  ||      j                  |      |       W t        j                  t        j
                  d d d	   |      }t        j                  d d d	   }t        |j                  ||      j                  |      |       y )
Nr   Frl  orderCFr   r   r4   )rA   r   asarrayascontiguousarrayrd   re   rf   r&   rO   rR   r9  splitterr"   r*   r+   r,   )rI   r   r   	containerkwargsrP   rQ   r  s           r[   test_memory_layoutr  ]  sV    D
!qE
BC 
R	gs^$	gs^$			r"		6 dii7u77KK!#''!Q-"7"7":A> }}!11 . ?. P %8AA%cggam&;&;A&>B !Q 	

499SqS>/ACaCAcggam33A6:r]   c                 R   t         j                  d d df   }t         j                  d d df   j                  d      }t         j                  }t	               5  t
        |    }t        j                  t              5   |dd      j                  ||       d d d         |d      }|j                  ||       | t        v s| t        v r3t        j                  t              5  |j                  |       d d d        d d d        y # 1 sw Y   pxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r1   r2   r2   rK   r   )rd   re   rF  rf   r(   rA   r   r  r=  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]]:&;??1E ' 1-a%%1B)Bz*A + 
	&& +* 
	s=   #D;DAD"D4DD	
DD	DD&r  )r3   r4   r   c                    t         |    } |d      }t        j                  t        j                  |      d      }t        j                  j                  |      }|j                  ddt        |            }t        j                  ||      |j                         z  }d||z  z  }	t        j                  |d      }
|
j                  \  |_        |_        |j                  dd	|      }t        t        |            }|j!                  |
       |j#                  |
|      \  }}t%        |||          |j!                  d
       |j#                  |
|      \  }}t%        ||	|          |j!                  dd       |j#                  |
|      \  }}t%        ||	|          |j!                  dd       |j#                  |
|      \  }}|J y )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   rF  rW   
_n_samples
n_outputs_dictrE  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                    t         |    } |||      }t        |      }|j                  t        j                  t        j
                  t        j                  t        j
                               t        |      j                  d      }|j                  t        j                  t        j
                         t        |j                  d       t        |j                  |j                         t        j                  t        j
                  t        j
                  t        j
                  f      j                  }t        |      j                  ddddddddddddg      }|j                  t        j                  |       t        |j                  d	       t        |j                  |j                  d
       t        |      j                  d      }	|	j                  t        j                  |       t        |	j                  d       t        |j                  |	j                         t        j                  t        j
                  j                         }
|
t        j
                  dk(  xx   dz  cc<   dddd}t        |      }|j                  t        j                  t        j
                  |
       t        |      j                  |      }|j                  t        j                  t        j
                         t        |j                  |j                         t        |j                  |j                         t        |      }|j                  t        j                  t        j
                  |
dz         t        |      j                  |      }|j                  t        j                  t        j
                  |
       t        |j                  |j                         t        |j                  |j                         y )Nrl  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    *$/
(:i
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                 d   t         |    }t        j                  t        t        j                  t              dz  f      j
                  } |dd      }|j                  t        |        |ddddddgd      }|j                  t        |        |d	d      }|j                  t        |       y )
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                    t         |    }t        j                  t        t        j                  t              dz  f      j
                  } |ddd      }|j                  t        t               d}t        j                  t        |      5  |j                  t        |       d d d         |dd	d
gd      }t        j                  t              5  |j                  t        |       d d d        y # 1 sw Y   PxY w# 1 sw Y   y xY w)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   r7  r8  r  r=  )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   C1C=1C:=Dc                    t         t        }}t        |    }d }dD ]D  }| ||dd      }n|j                  |       |j	                  ||       t        |      |k(  rDJ   |ddd      }|j	                  ||       t        |D cg c]  }|j                   c}      t        |D cg c]  }|j                   c}      k(  sJ t        |j                  |      |j                  |      dj                  |       	       y c c}w c c}w )
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    XqA'-OF>$)tF <8

1a6{l***    RbUSIMM!Qf5fd!!f56#'01yt		y1;    Q+5F5M5Md5S	 61s   D)D
c                 D   t         t        }}t        |    } |dddd      }|j                  ||        |dddd      }|j                  ||       |j	                  dd       |j                  ||       t        |j                  |      |j                  |             y )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     XqA'-O
qA%VW
XCGGAqM!1E 
IIaO	A6	IIaOekk!nciil;r]   c                    t         t        }}t        |    } |ddd      }|j                  ||       |j	                  d       t        j                  t              5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nrj   r2   T)rL   r   r  r   r  )r  r  rA   rO   r   r   r  r=  r  s        r[   $test_warm_start_smaller_n_estimatorsr&  I  se     XqA'-O
qA$
GCGGAqMNNN"	z	"1 
#	"	"s   A::Bc                    t         t        }}t        |    } |dddd      }|j                  ||        |dddd      }|j                  ||       |j	                  d       d}t        j                  t        |	      5  |j                  ||       d d d        t        |j                  |      |j                  |             y # 1 sw Y   4xY w)
Nrj   r4   Tr2   r"  r3   r   r  r  )
r  r  rA   rO   r   r   r7  r8  r'   rV   )rI   rP   rQ   r   r   r#  r  s          r[   "test_warm_start_equal_n_estimatorsr(  U  s     XqA'-O
qA$UV
WCGGAqM!1E 
IIaO 
!$T  
k	2		!Q 
3 syy|U[[^4	 
3	2s   CCc                 :   t         t        }}t        |    } |dddddd      }|j                  ||        |dddddd      }|j                  ||       |j	                  ddd       |j                  ||       t        |d	      sJ |j                  |j                  k(  sJ  |dddddd      }|j                  ||       t        |d	      rJ |j	                  d
        t        |j                        ||       |j                  |j                  k(  sJ y )N   r4   Fr2   T)rL   r   r  r=   r   r  rj   )r  r  rL   r"  rR  )r  r  rA   rO   r   r   r"  r(   )rI   rP   rQ   r   r   r#  est_3s          r[   test_warm_start_oobr,  o  s2    XqA'-O
C GGAqME 
IIaO	2F	IIaO5,'''>>U----- E 
IIaOul+++	t$OEIIq!$>>U-----r]   c                 |   t         t        }}t        |    } |dddd      }t        j                  |d|j
                        5 }|j                  ||       t        j                  t        d      5  |j                  ||       d d d        |j                          d d d        y # 1 sw Y   "xY w# 1 sw Y   y xY w)Nr6   T)rL   r  r   r  rU  )wrapsz%Warm-start fitting without increasingr  )r  r  rA   r	   objectrU  rO   r   r7  r8  assert_called_once)rI   rP   rQ   r   r   !mock_set_oob_score_and_attributess         r[   test_oob_not_computed_twicer2    s     XqA'-O
DDDC 
,C4U4U
	*1\\+-TUGGAqM V 	*<<>
 

 VU
 
s$   .B22B&B2&B/	+B22B;c                     t        dd      }t        j                  |       }dd |  D cg c]  }| }}|j                  ||      j	                  |      }t        |j                  |       t        ||       y c c}w )Nr   Frl  ABCDEFGHIJKLMNOPQRSTU)r   r   eyerO   rR   r'   r   )r  r)  rP   chrQ   results         r[   test_dtype_convertr8    ss    'Q%HJ
yA-jy9:99A:^^Aq!))!,Fz**A.vq!	 	;s   	A9c           	         t         t        }}|j                  d   }t        |    } |dddd      }|j	                  ||       |j                  |      \  }}|j                  d   |d   k(  sJ |j                  d   |k(  sJ t        t        j                  |      |j                  D cg c]  }|j                  j                   c}       |j                  |      }	t        |	j                  d         D ]Q  }
t        |	d d |
f         D cg c]  \  }}||||
   |z   f    }}}t        |t        j                   |             S y c c}w c c}}w )Nr   rj   r2   Fr"  r1   )rW   )r  r  rW   rA   rO   decision_pathr'   r   diffr
  r  
node_countrV   r   rE  r&   r   )rI   rP   rQ   r7   r   r   	indicatorn_nodes_ptreleavesest_idr   r   leave_indicators                 r[   test_decision_pathrC    sH   XqA
I'-O
qA%VW
XCGGAqM ..q1I{??1R000??1***
3??K?aqww11?K
 YYq\FQ( "&F"34
41 aV,q0014 	 
 	"/2773KL ) L
s   )E
Ec                      t        j                  dd      \  } }t        t        t        t
        g}|D ]?  } |d      }|j                  | |       |j                  D ]  }|j                  dk(  rJ  A y )Nr   r2   r@   r   )min_impurity_decrease)	r   r   r   r   r   r   rO   r
  rE  )rP   rQ   all_estimators	Estimatorr   r  s         r[   test_min_impurity_decreaserH    sr    $$sCDAq	N $	c21OOD --444 $ $r]   c                  f   t        d      } t        j                  d      }g d}d}t        j                  t
        |      5  | j                  ||       d d d        g d}d}t        j                  t
        |      5  | j                  ||       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)	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  r=  rO   )r   rP   rQ   r  s       r[   test_poisson_y_positive_checkrK    s    
)
4C
AA	/  
z	11 
2 	A	0  
z	11 
2	1 
2	1 
2	1s   B?B'B$'B0c                   (     e Zd Z fdZ fdZ xZS )	MyBackendc                 2    d| _         t        |   |i | y )Nr   )r   super__init__)selfargsr  re  s      r[   rP  zMyBackend.__init__  s    
$)&)r]   c                 J    | xj                   dz  c_         t        | 	         S )Nr2   )r   rO  
start_call)rQ  re  s    r[   rT  zMyBackend.start_call  s    

a
w!##r]   )__name__
__module____qualname__rP  rT  __classcell__)re  s   @r[   rM  rM    s    *$ $r]   rM  testingc                  t   t        dd      } t        j                  d      5 \  }}| j                  t        t
               d d d        j                  dkD  sJ t        j                  d      5 \  }}| j                  t               d d d        |j                  dk(  sJ y # 1 sw Y   bxY w# 1 sw Y   'xY w)Nr6   r3   )rL   r   rY  r   )r   joblibparallel_backendrO   rP   rQ   r   r   )rY   bar   r  s       r[   test_backend_respectedr^    s     !b
;C		 	 	+|F1 
, 88a<< 
	 	 	+wA! 
, 88q== 
,	+ 
,	+s   B"/B."B+.B7c                      t        dddd      \  } }t        ddd      j                  | |      }t        j                  d|j
                  j                         d	
      sJ y )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_sumrd  #  sa    AADAq !#	c!Qi  <<3337794HHHr]   c                     t        j                  d      } t        j                  d      }t        d      j	                  | |      }t        |j                  t        j                  dt         j                               y )N)r6   r6   )r6   r6   r  r   )r   r	  r   r   rO   r'   r   float64)rP   rQ   gbrs      r[   *test_forest_degenerate_feature_importancesrh  -  sS    
A
A
R
0
4
4Q
:Cs//"BJJ1OPr]   c                 p   t         t        }}d}t        ||j                  d   z        }t	        |    d|d      }|j                  ||       t	        |    d|d      }|j                  ||       |j                  |j                  k(  sJ t        |j                  ||      |j                  ||             y )Ng      ?r   T   r   rD  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_onerq  5  s     XqA*QWWQZ78N(.$5BD 	HHQN(.ND 	HHQN$$(A(AAAADJJq!$djjA&67r]   c                     t        |    dd      }d}t        j                  t        |      5  |j	                  t
        t               d d d        y # 1 sw Y   y xY w)NFrc   )r   rD  zl`max_sample` cannot be set if `bootstrap=False`. Either switch to `bootstrap=True` or set `max_sample=None`.r  )rB   r   r  r=  rO   rP   rQ   )rI   r   r  s      r[   test_max_samples_bootstraprs  H  sH     (
-3
OC	 
 
z	11 
2	1	1s   AAc                 j   t        t        t        ddd      \  }}}}t        |    ddd      }|j	                  ||      j                  |      }t        |    dd d      }|j	                  ||      j                  |      }t        ||      }	t        ||      }
|	t        j                  |
      k(  sJ y )Nr/  r  r   )
train_sizer~   r=   Tr   rk  )	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!($GVWf #4(CaJ >>'73;;FCL%d+DqM $''9AA&IO v6G#OV<JfmmJ////r]   c                 L   t        t        t        dt              \  }}}}t        |    ddd      }|j	                  ||      j                  |      }t        |    dd d      }|j	                  ||      j                  |      }t        j                  j                  ||       y )Nr   )r=   stratifyTr   rk  )	r    r   r   rN   rO   r   r   rY  r$   )	rI   r   r   r   r  rv  
ms_1_probarx  ms_None_probas	            r[   %test_max_samples_boundary_classifiersr  k  s    "2q7#GVWa $D)CaJ 1??GJ&t,DqM "%%gw7EEfMMJJz=9r]   csr_containerc                     g dg} | g dg      }t               }d}t        j                  t        |      5  |j	                  ||       d d d        y # 1 sw Y   y xY w)Nr   r   z3sparse multilabel-indicator for y is not supported.r  )r   r   r  r=  rO   )r  rP   rQ   r   msgs        r[   test_forest_y_sparser  ~  sI    	Ayk"A
 
"C
?C	z	-1 
.	-	-s   AAForestClassc                    t         j                  j                  d      }|j                  dd      }|j                  d      dkD  } | d|d       } | d|d      }|j	                  ||       |j	                  ||       |j
                  d   j                  }|j
                  d   j                  }d}|j                  |j                  kD  sJ |       y )Nr2   i'  r3   r   )rL   r=   rD  z=Tree without `max_samples` restriction should have more nodes)r   r   r   r  rO   r
  r  r<  )	r  r   rP   rQ   ro  rp  tree1tree2r  s	            r[   'test_little_tree_with_small_max_samplesr    s    
))


"C		%A		%1A D D 	HHQNHHQNQ%%EQ%%E
ICe...33.r]   Forestc                     ddl m} t        j                  dd      }|j                  \  }} |||      }t        |    dd|      }|j                  t        |       y )Nr   )MSEr1   r2   r3   )rL   r   r^   )sklearn.tree._criterionr  rn   rF  rW   rl   rO   rm   )r  r  rQ   r7   	n_outputsmse_criterionr   s          r[   -test_mse_criterion_object_segfault_smoke_testr    sR     ,b!A77Iy	9-M
F
#1
VCGGE1r]   c                  @   t         j                  j                  d      } t        j                  | j	                  dd            }t        dddd      j                  |      }|j                         }dD cg c]  \  }}d| d	|  }}}t        ||       y
c c}}w )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   rX  )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-	
	   ~u-s   8Bc                 &   |j                  t        j                  j                  dt	        t
        d             t        j                  j                  d      }t        dd|      \  }} | |d	      }t        d
|      }t        |||d
       y)zRandomForestClassifier must work on readonly sparse data.

    Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/25333
    r.   r   )
max_nbytesr   )seedr`  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ODAqad#A
 
<CCA!$r]   r  r  c                 x    t        j                  d      \  }}t        dd| d      }|j                  ||       y)z^Check low max_samples works and is rounded to one.

    Non-regression test for gh-24037.
    T)
return_X_yr6   g-C6?r   )rL   rD  r  r=   N)r   	load_winer   rO   )r  rP   rQ   rY  s       r[   .test_round_samples_to_one_when_samples_too_lowr    s<     .DAq#TSTF JJq!r]   r  c                 |   t        dd      \  }}|rd}nd} | d|d||      }|j                  ||       |j                  j                         }t	        ||j                         |j
                  }t        |t              sJ t        |      t        |      k(  sJ |d   j                  t        j                  k(  sJ t        t        |            D ]{  }	|rRt        ||	         t        |      d	z  k(  sJ t        t        j                  ||	               t        ||	         k  rUJ t        t        ||	               t        |      k(  r{J  d}
||
   }||
   }||   }||   }|j                  j                   }t#        |      }|j                  ||       |j                  j                   }t%        ||       y)
zEstimators_samples_ property should be consistent.

    Tests consistency across fits and whether or not the seed for the random generator
    is set.
    r`  r2   r@   rc   Nr6   )rL   rD  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   rD  r   estimators_samples
estimatorsr   estimator_indexestimator_samplesr9  r   r   orig_tree_valuesnew_tree_valuess                    r[   test_estimators_samplesr    s    c:DAq
C GGAqM00557 )3+B+BCJ($///!"c*o555a &&"((2223z?#)!,-Q1<<< ryy!3A!6783?QRS?T;UUUUs-a012c!f<<< $ O*?;?+I!"G!"G ,,i IMM'7#oo++O$o6r]   zForest, criterionc                    t         j                  j                  d      }d\  }}|t        v rt        nt
        } ||||      \  }}|dk(  r|t        j                  |      z  }|j                         }t         j                  ||j                  ddg|j                  ddg	      <   t        j                  |      j                         sJ t        ||d
      \  }	}
}} | ||d      }|j                  |	|       |j                  |
|      }t        ||d
      \  }}}} | ||d      }|j                  ||       |j                  ||      }|d|z  k\  sJ y)zJCheck that forest can deal with missing values and has decent performance.r   )r5   rj   r>   rH   FTgffffff?r   )rx   r   r   r1  )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   rY  score_without_missings                      r[    test_missing_values_is_resilientr  ,  sZ    ))


"C"Iz#,#>DWIyZcRDAq I	RVVAY IIKIcjj%QWWtjEF88I""$$$7G1184O^Wf
 !cYUWXOW5,22>6J (811'M$GVWf	KF
JJw "LL8 (=!====r]   c                    t         j                  j                  |      }d}d}|j                  |d      }|j	                  |      dk  }|j                  |      }|j	                  |      dk  }	t         j
                  |||	z  <   t        j                  |      j                         sJ |j                         }
||
dddf<   t        |
||d	      \  }}}}}} | d|
      }|j                  ||        | d|
      }|j                  ||       |j                  ||      }|j                  ||      }|||z   k\  sJ y)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  s^    ))

 2
3CI yyA.c!A 9-)$t+J)+q:~&88&'++---#((*L+LA 	'7KAC,g6"YG4g>-334EvN 5 ; ;v! !$=@R$RRRRr]   c                 v    t        j                  t        d      5   | d      }d d d        y # 1 sw Y   y xY w)NrG   r  rJ  )r   r7  FutureWarning)r  r  s     r[   test_friedman_mse_deprecationr    s&    	m>	:^, 
;	:	:s   
/8)r*  )__doc__r  rb  ra  collectionsr   	functoolsr   r   r   typingr   r   unittest.mockr	   r[  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_backendre  DEFAULT_JOBLIB_BACKENDrN   rl   r  r  rA   str__annotations__updater   rB   CLF_CRITERIONSr  markparametrizer\   rh   filterwarningsrq   r   r   r   r   rf  chainr   r  r  r   r  r-  r4  r:  r>  rA  rP  rV  rZ  r_  rj  rs  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r   r$  r&  r(  r,  r2  r8  rC  rH  rK  rM  register_parallel_backendthread_unsafer^  rd  rh  rq  rs  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 08//  x
t{{''(IIdO	kk$ (x''#"STUu /X..!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":;IOO"VZ$89!O5E#FG'H <'HTj@Z !23C 4C +-?-F-F-HI#HI 	
)X))C1STU	
	
	
)X))!11	
 		
 IIKK!Oa	

	
4X44sQRS	
	
!0 tWXw-O&PQ'E R1 J J6'ET *,=,D,D,FG#HI	
%X%%"	
 		
	
%X%%"	
 		
" 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]   