
    Mpj                     b   S r SSKrSSKJrJ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  SSKJrJrJr  SSKJrJr  SS	KJrJrJrJrJrJrJrJr  SS
KJ r   SSK!J"r"J#r#  SSK$J%r%J&r&J'r'  SSK(J)r)J*r*  SSK+J,r,  SSK-J.r.J/r/  SSK0J1r1  SSK2J3r3J4r4  SSK5J6r6J7r7J8r8J9r9J:r:  SSK;J<r<J=r=  SSK>J?r?  SSK@JArAJBrBJCrC  SSKDJErEJFrF  \?" S5      rG\" 5       rH\GR                  \HR                  R                  5      rL\HR                  \L   \HlM        \HR                  \L   \HlJ        \" 5       rN\GR                  \NR                  R                  5      rL\NR                  \L   \NlM        \NR                  \L   \NlJ        S rO\R                  R                  S\" \F\E-   SSSSS.SSSSS.SSSS .SSSS!.// S"Q5      5      S# 5       rRS$ rS\R                  R                  S%\F\E-   5      S& 5       rT " S' S(\5      rUS) rVS* rWS+ rXS, rYS- rZS. r[S/ r\\R                  R                  S0 5       r^\R                  R                  S1 5       r_S2 r`\R                  R                  S3 5       raS4 rbSaS5 jrcS6 rdS7 reS8 rfS9 rgS: rhS; ri " S< S=\5      rj " S> S?\5      rk\R                  R                  S@\\/5      \R                  R                  SASS/5      \R                  R                  SBSS/5      \R                  R                  SCSDSE/5      SF 5       5       5       5       rlSG rmSH rnSI roSJ rpSK rqSL rrSM rsSN rtSO ruSP rvSQ rw\R                  R                  SR\" \" SSST95      S4\" \" SSST95      S4\" \"" 5       5      S4\" \4" 5       5      S4/5      SU 5       rx\
" SSV9\R                  R                  SW\" \" SSSX9SSSY9\" \" SSSX9SSSY9/5      SZ 5       5       ry\R                  R                  S[\8S\S\4\7S]S^4\6S]S\4/5      \
" SSV9S_ 5       5       rz\R                  R                  SW\" \" SSSX9SSSY9\" \" SSSX9SSSY9/5      S` 5       r{g)bzE
Testing for the bagging ensemble module (sklearn.ensemble.bagging).
    N)cycleproduct)config_context)BaseEstimator)CalibratedClassifierCV)load_diabetes	load_irismake_hastie_10_2)DummyClassifierDummyRegressor)AdaBoostClassifierAdaBoostRegressorBaggingClassifierBaggingRegressorHistGradientBoostingClassifierHistGradientBoostingRegressorRandomForestClassifierRandomForestRegressor)SelectKBest)LogisticRegression
Perceptron)GridSearchCVParameterGridtrain_test_split)KNeighborsClassifierKNeighborsRegressor)make_pipeline)FunctionTransformerscale)SparseRandomProjection)SVCSVR)"ConsumingClassifierWithOnlyPredict)ConsumingClassifierWithoutPredictLogProba&ConsumingClassifierWithoutPredictProba	_Registrycheck_recorded_metadata)DecisionTreeClassifierDecisionTreeRegressor)check_random_state)assert_allcloseassert_array_almost_equalassert_array_equal)CSC_CONTAINERSCSR_CONTAINERSc                     [        S5      n [        [        R                  [        R                  U S9u  pp4[        SS/SS/SS/SS/S	.5      nS [        5       [        S
S9[        SS9[        5       [        5       /n[        U[        U5      5       H2  u  px[        SUU SS.UD6R                  X5      R                  U5        M4     g )Nr   random_state      ?      ?      TFmax_samplesmax_features	bootstrapbootstrap_features   max_iter   )	max_depth)	estimatorr2   n_estimators )r*   r   irisdatatargetr   r   r   r(   r   r!   zipr   r   fitpredict)	rngX_trainX_testy_trainy_testgrid
estimatorsparamsrA   s	            _/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/ensemble/tests/test_bagging.pytest_classificationrS   G   s    
Q
C'7		4;;S($GW :F#'-		
D 	B+J !uZ'89 	
	
 		

 #g
 :    z sparse_container, params, methodr3   r?   Tr7   r4   r6   Fr9   r:   r;   r8   r:   r;   )rI   predict_probapredict_log_probadecision_functionc                 x    " S S[         5      n[        S5      n[        [        [        R
                  5      [        R                  US9u  pVpxU " U5      n	U " U5      n
[        SU" 5       SS.UD6R                  X5      n[        X5        [        X5      " U
5      n[        SU" 5       SS.UD6R                  XW5      n[        X5      " U5      n[        X5        [        U	5      nUR                   Vs/ s H  nUR                  PM     nn[        U Vs/ s H  nUU:H  PM
     sn5      (       d   eg s  snf s  snf )Nc                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )4test_sparse_classification.<locals>.CustomClassifier   zFLogisticRegression variant that records the nature of the training setc                 F   > [         TU ]  X5        [        U5      U l        U $ NsuperrH   type
data_type_selfXy	__class__s      rR   rH   8test_sparse_classification.<locals>.CustomClassifier.fit       GK"1gDOKrT   rc   __name__
__module____qualname____firstlineno____doc__rH   __static_attributes____classcell__rh   s   @rR   CustomClassifierr\      s    T	 	rT   ru   r   r1   r5   rA   r2   rC   )r   r*   r   r   rD   rE   rF   r   rH   printgetattrr,   rb   estimators_rc   all)sparse_containerrQ   methodru   rJ   rK   rL   rM   rN   X_train_sparseX_test_sparsesparse_classifiersparse_resultsdense_classifierdense_resultssparse_typeitypests                      rR   test_sparse_classificationr   h   sG   2-  Q
C'7dii$++C($GW &g.N$V,M * "$  
c."	 
 

$.7FN ) "$  
c'	 
 ,5f=Mn<~&K#4#@#@A#@aQ\\#@EA%0%Q[ %01111 B0s   3D2D7c                  n   [        S5      n [        [        R                  S S [        R                  S S U S9u  pp4[        SS/SS/SS/SS/S.5      nS [        5       [        5       [        5       [        5       4 H7  nU H.  n[        S
X`S	.UD6R                  X5      R                  U5        M0     M9     g )Nr   2   r1   r3   r4   TFr7   rv   rC   )r*   r   diabetesrE   rF   r   r   r)   r   r"   r   rH   rI   )rJ   rK   rL   rM   rN   rO   rA   rQ   s           rR   test_regressionr      s    
Q
C'7crHOOCR0s($GW : #J#'-		
D 		 FMyMfMQQgfo rT   r{   c                    [        S5      n[        [        R                  S S [        R                  S S US9u  p#pE " S S[
        5      nSSSSS	.S
SSSS	.SSSS.SSSS./nU " U5      nU " U5      n	U H  n
[        SU" 5       SS.U
D6R                  X5      nUR                  U	5      n[        SU" 5       SS.U
D6R                  X$5      R                  U5      n[        U5      nUR                   Vs/ s H  oR                  PM     nn[        X5        [        U Vs/ s H  nUU:H  PM
     sn5      (       d   e[        X5        M     g s  snf s  snf )Nr   r   r1   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ ))test_sparse_regression.<locals>.CustomSVR   z7SVC variant that records the nature of the training setc                 F   > [         TU ]  X5        [        U5      U l        U $ r_   r`   rd   s      rR   rH   -test_sparse_regression.<locals>.CustomSVR.fit   rj   rT   rk   rl   rt   s   @rR   	CustomSVRr      s    E	 	rT   r   r3   r?   Tr7   r4   r6   FrU   rV   r5   rv   rC   )r*   r   r   rE   rF   r"   r   rH   rI   rb   ry   rc   r,   rz   )r{   rJ   rK   rL   rM   rN   r   parameter_setsr}   r~   rQ   r   r   r   r   r   r   r   s                     rR   test_sparse_regressionr      s~    Q
C'7crHOOCR0s($GWC  "&		
 "&		
 dK$eLN" &g.N$V,M , 
k
5;

#n
& 	 +22=A My{MfMS"WV_ 	 >*'8'D'DE'D!'DE!.@e4eA$e45555!.@' ! F 5s   5E E
c                        \ rS rSrS rS rSrg)DummySizeEstimator   c                 b    UR                   S   U l        [        R                  " U5      U l        g Nr   )shapetraining_size_joblibhashtraining_hash_re   rf   rg   s      rR   rH   DummySizeEstimator.fit   s"    ggaj$kk!nrT   c                 H    [         R                  " UR                  S   5      $ r   )nponesr   re   rf   s     rR   rI   DummySizeEstimator.predict  s    wwqwwqz""rT   )r   r   N)rm   rn   ro   rp   rH   rI   rr   rC   rT   rR   r   r      s    -#rT   r   c                     [        S5      n [        [        R                  [        R                  U S9u  pp4[        5       R                  X5      n[        [        5       SSU S9R                  X5      nUR                  X5      UR                  X5      :X  d   e[        [        5       SSU S9R                  X5      nUR                  X5      UR                  X5      :  d   e[        [        5       SS9R                  X5      n/ nUR                   H=  nUR                  UR                  S   :X  d   eUR                  UR                  5        M?     [        [!        U5      5      [        U5      :X  d   eg )Nr   r1   r4   F)rA   r8   r:   r2   T)rA   r:   )r*   r   r   rE   rF   r)   rH   r   scorer   ry   r   r   appendr   lenset)rJ   rK   rL   rM   rN   rA   ensembletraining_hashs           rR   test_bootstrap_samplesr     s^   
Q
C'7xS($GW &'++G=I  ')	
 
c'  ??7,w0PPPP  ')	
 
c'  ??7,x~~g/OOOO
  *<*>$OSSH M))	''7==+;;;;Y556 * s=!"c-&8888rT   c                  V   [        S5      n [        [        R                  [        R                  U S9u  pp4[        [        5       SSU S9R                  X5      nUR                   HG  n[        R                  R                  S   [        R                  " U5      R                  S   :X  a  MG   e   [        [        5       SSU S9R                  X5      nUR                   HG  n[        R                  R                  S   [        R                  " U5      R                  S   :  a  MG   e   g )Nr   r1   r4   F)rA   r9   r;   r2   r5   T)r*   r   r   rE   rF   r   r)   rH   estimators_features_r   r   unique)rJ   rK   rL   rM   rN   r   featuress          rR   test_bootstrap_featuresr   1  s   
Q
C'7xS($GW  ') 	
 
c'  11}}""1%8)<)B)B1)EEEE 2  ')	
 
c'  11}}""1%		((;(A(A!(DDDD 2rT   c            	      v   [        S5      n [        [        R                  [        R                  U S9u  pp4[
        R                  " SSS9   [        [        5       U S9R                  X5      n[        [
        R                  " UR                  U5      SS9[
        R                  " [        U5      5      5        [        UR                  U5      [
        R                  " UR!                  U5      5      5        [        [#        5       U SS	9R                  X5      n[        [
        R                  " UR                  U5      SS9[
        R                  " [        U5      5      5        [        UR                  U5      [
        R                  " UR!                  U5      5      5        S S S 5        g ! , (       d  f       g = f)
Nr   r1   ignore)divideinvalidrv   r5   )axis   )rA   r2   r8   )r*   r   rD   rE   rF   r   errstater   r(   rH   r,   sumrW   r   r   exprX   r   rJ   rK   rL   rM   rN   r   s         rR   test_probabilityr   M  sH   
Q
C'7		4;;S($GW 
Hh	7$,.S

#g
 	 	"FF8))&1:BGGCK<P	
 	"""6*BFF83M3Mf3U,V	

 %(*!

#g
 	 	"FF8))&1:BGGCK<P	
 	"""6*BFF83M3Mf3U,V	
/ 
8	7	7s   EF**
F8c            
         [        S5      n [        [        R                  [        R                  U S9u  pp4[        5       [        [        5       SS94 H  n[        USSSU S9R                  X5      nUR                  X$5      n[        XvR                  -
  5      S:  d   eS	n[        R                  " [        US
9   [        USSSU S9nUR                  X5        S S S 5        M     g ! , (       d  f       M  = f)Nr   r1   F)r   d   TrA   rB   r:   	oob_scorer2   皙?{Some inputs do not have OOB scores. This probably means too few estimators were used to compute any reliable oob estimates.matchr5   )r*   r   rD   rE   rF   r(   r   r!   r   rH   r   abs
oob_score_pytestwarnsUserWarning)	rJ   rK   rL   rM   rN   rA   clf
test_scorewarn_msgs	            rR   test_oob_score_classificationr   p  s     Q
C'7		4;;S($GW
 	 suu5	  
 #g
 	 YYv.
:./#555J 	 \\+X6## C GGG% 76+* 76s   :C&&
C5	c            	         [        S5      n [        [        R                  [        R                  U S9u  pp4[        [        5       SSSU S9R                  X5      nUR                  X$5      n[        XeR                  -
  5      S:  d   eSn[        R                  " [        US9   [        [        5       S	SSU S9nUR                  X5        S S S 5        g ! , (       d  f       g = f)
Nr   r1   r   Tr   r   r   r   r5   )r*   r   r   rE   rF   r   r)   rH   r   r   r   r   r   r   )	rJ   rK   rL   rM   rN   r   r   r   regrs	            rR   test_oob_score_regressionr     s     Q
C'7xS($GW ') 
c'  6*JzNN*+c111	F  
k	2+-
 	" 
3	2	2s   #'C
C!c                  <   [        S5      n [        [        R                  [        R                  U S9u  pp4[        [        5       SSSU S9R                  X5      n[        5       R                  X5      n[        UR                  U5      UR                  U5      5        g )Nr   r1   r5   F)rA   rB   r:   r;   r2   )
r*   r   r   rE   rF   r   r   rH   r,   rI   )rJ   rK   rL   rM   rN   clf1clf2s          rR   test_single_estimatorr     s    
Q
C'7xS($GW %'  
c' 	  $$W6Ddll62DLL4HIrT   c                      [         R                  [         R                  p[        5       n[	        [        U5      R                  X5      S5      (       a   eg )NrY   )rD   rE   rF   r(   hasattrr   rH   )rf   rg   bases      rR   
test_errorr     sA    99dkkq!#D(.2218:MNNNNNrT   c                     [        [        R                  [        R                  SS9u  pp#[	        [        5       SSS9R                  X5      nUR                  U5      nUR                  SS9  UR                  U5      n[        XV5        [	        [        5       SSS9R                  X5      nUR                  U5      n[        XW5        [	        [        SS9SSS9R                  X5      nUR                  U5      nUR                  SS9  UR                  U5      n	[        X5        [	        [        SS9SSS9R                  X5      nUR                  U5      n
[        X5        g )	Nr   r1      n_jobsr2   r5   r   ovr)decision_function_shape)r   rD   rE   rF   r   r(   rH   rW   
set_paramsr,   r!   rY   )rK   rL   rM   rN   r   y1y2y3
decisions1
decisions2
decisions3s              rR   test_parallel_classificationr     sX    (8		4;;Q($GW ! 	c' 
 
			'Bq!				'Bb%  	c'  
			'Bb% !E*11	c'  ++F3Jq!++F3Jj5 E*11	c'  ++F3Jj5rT   c                     [        S5      n [        [        R                  [        R                  U S9u  pp4[        [        5       SSS9R                  X5      nUR                  SS9  UR                  U5      nUR                  SS9  UR                  U5      n[        Xg5        [        [        5       SSS9R                  X5      nUR                  U5      n[        Xh5        g )Nr   r1   r   r   r5   r   r?   )r*   r   r   rE   rF   r   r)   rH   r   rI   r,   )	rJ   rK   rL   rM   rN   r   r   r   r   s	            rR   test_parallel_regressionr     s     Q
C'7xS($GW   5 7PQRVVH q!			&	!Bq!			&	!Bb% 5 7PQRVVH 
		&	!Bb%rT   c                      [         R                  [         R                  pSXS:H  '   SSS.n[        [	        [        5       5      USS9R                  X5        g )Nr5   r?   )r5   r?   )rB   estimator__Croc_auc)scoring)rD   rE   rF   r   r   r!   rH   )rf   rg   
parameterss      rR   test_gridsearchr      sI     99dkkqA1fI #)&AJ"35):yIMMaSrT   c                     [        S5      n [        [        R                  [        R                  U S9u  pp4[        S SSS9R                  X5      n[        UR                  [        5      (       d   e[        [        5       SSS9R                  X5      n[        UR                  [        5      (       d   e[        [        5       SSS9R                  X5      n[        UR                  [        5      (       d   e[        [        R                  [        R                  U S9u  pp4[        S SSS9R                  X5      n[        UR                  [        5      (       d   e[        [        5       SSS9R                  X5      n[        UR                  [        5      (       d   e[        [        5       SSS9R                  X5      n[        UR                  [        5      (       d   eg )Nr   r1   r   r   )r*   r   rD   rE   rF   r   rH   
isinstance
estimator_r(   r   r   r   r)   r"   r   s         rR   test_estimatorr   .  s    Q
C (8		4;;S($GW !aa@DDWVHh))+ABBBB  	c'  h))+ABBBB aaHLLH h)):6666 (8xS($GW  QQ?CCGUHh))+@AAAA 5 7PQRVVH h))+@AAAAaa@DDWVHh))3////rT   c                     [        [        [        SS9[        5       5      SS9n U R	                  [
        R                  [
        R                  5        [        U S   R                  S   S   R                  [        5      (       d   eg )Nr5   )kr?   )r9   r   )r   r   r   r(   rH   rD   rE   rF   r   stepsr2   intrA   s    rR   test_bagging_with_pipeliner   [  sg    !kA&(>(@APQI MM$))T[[)il((,Q/<<cBBBBrT   c                    [        SSS9u  pS nS HB  nUc  [        X@SS9nOUR                  US9  UR                  X5        [	        U5      U:X  a  MB   e   [        SU S	S9nUR                  X5        [        U Vs/ s H  ofR                  PM     sn5      [        U Vs/ s H  ofR                  PM     sn5      :X  d   eg s  snf s  snf )
Nr<   r5   	n_samplesr2   )r   
   T)rB   r2   
warm_startrB   r   F)r
   r   r   rH   r   r   r2   )r2   rf   rg   clf_wsrB   	clf_no_wstrees          rR   test_warm_startr  c  s     bq9DAF>&)QUF <8

16{l***   "luI MM!f5fd!!f56#'01yt		y1;   51s   <C C
c                      [        SSS9u  p[        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)	Nr<   r5   r   r   T)rB   r   r6   r  )r
   r   rH   r   r   raises
ValueErrorrf   rg   r   s      rR   $test_warm_start_smaller_n_estimatorsr
  }  sX    bq9DA
t
<CGGAMNNN"	z	" 
#	"	"s   A,,
A:c                  Z   [        SSS9u  p[        XSS9u  p#pE[        SSSS	9nUR                  X$5        UR	                  U5      nUS
-  nSn[
        R                  " [        US9   UR                  X$5        S S S 5        [        XvR	                  U5      5        g ! , (       d  f       N)= f)Nr<   r5   r   +   r1   r   TS   rB   r   r2   r4   z;Warm-start fitting without increasing n_estimators does notr   )	r
   r   r   rH   rI   r   r   r   r-   )	rf   rg   rK   rL   rM   rN   r   y_predr   s	            rR   "test_warm_start_equal_n_estimatorsr    s    bq9DA'72'N$GW
t"
MCGGG[[ FsNGLH	k	2! 
3v{{623 
3	2s   'B
B*c                  @   [        SSS9u  p[        XSS9u  p#pE[        SSSS	9nUR                  X$5        UR	                  S
S9  UR                  X$5        UR                  U5      n[        S
SSS	9nUR                  X$5        UR                  U5      n	[        Xy5        g )Nr<   r5   r   r  r1   r   TiE  r  r   r  F)r
   r   r   rH   r   rI   r,   )
rf   rg   rK   rL   rM   rN   r  r   r   r   s
             rR   test_warm_start_equivalencer    s     bq9DA'72'N$GWA$TRF
JJw 
2&
JJw 		B
D
QCGGG	V	Bb%rT   c                      [        SSS9u  p[        SSSS9n[        R                  " [        5         UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr<   r5   r   r   T)rB   r   r   )r
   r   r   r  r  rH   r	  s      rR   $test_warm_start_with_oob_score_failsr    sA    bq9DA
tt
LC	z	" 
#	"	"s   A
Ac                     [         R                  [         R                  p[        R                  " U5      n[        SS9nSn[        R                  " [        US9   UR                  XUS9  S S S 5        [        R                  [        R                  p[        R                  " U5      n[        SS9nSn[        R                  " [        US9   UR                  XUS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NF)r:   zYWhen fitting BaggingClassifier with sample_weight it is recommended to use bootstrap=Truer   sample_weightzXWhen fitting BaggingRegressor with sample_weight it is recommended to use bootstrap=True)rD   rE   rF   r   	ones_liker   r   r   r   rH   r   r   )rf   rg   r  r   r   regs         rR   $test_warning_bootstrap_sample_weightr    s    99dkkqLLOM
e
,C	2  
k	2M2 
3 ==(//qLLOM
U
+C	2  
k	2M2 
3	2 
3	2 
3	2s   C&C7&
C47
Dc                     [         R                  [         R                  p[        SS9n[        R
                  " U5      S[        U5      -  -  nSn[        R                  " [        US9   UR                  XUS9  S S S 5        [        SSS9n[        R
                  " U5      nSUS	'   [        R                  " S
5      n[        R                  " [        US9   [        R                  " [        SS9   UR                  XUS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr4   )r8   r?   zUsing the fractional value max_samples=1.0 when the total sum of sample weights is 0.5(\d*) results in a low number \(1\) of bootstrap samples. We recommend passing `max_samples` as an integer.r   r  F)r:   r8   r   zRmax_samples=151 must be <= n_samples=150 to be able to sample without replacement.z1When fitting BaggingClassifier with sample_weight)rD   rE   rF   r   r   r  r   r   r   r   rH   reescaper  r  )rf   rg   r   r  expected_msgs        rR   =test_invalid_sample_weight_max_samples_bootstrap_combinationsr    s    99dkkq 
,CLLOq3q6z2M	<  
k	6M2 
7
 e
=CLLOMM"99	L 
z	6\\R
 GGAG6
 
7	6 
7	6
 
 
7	6s0   )DD40D#D4
D #
D1	-D44
Ec                   (    \ rS rSrSrSS jrS rSrg)EstimatorAcceptingSampleWeighti  z&Fake estimator accepting sample_weightNc                 (    Xl         X l        X0l        gzRecord values passed during fitN)X_y_sample_weight_)re   rf   rg   r  s       rR   rH   "EstimatorAcceptingSampleWeight.fit  s    +rT   c                     g r_   rC   r   s     rR   rI   &EstimatorAcceptingSampleWeight.predict      rT   )r$  r&  r%  r_   rm   rn   ro   rp   rq   rH   rI   rr   rC   rT   rR   r!  r!    s    0,rT   r!  c                   $    \ rS rSrSrS rS rSrg)EstimatorRejectingSampleWeighti  z&Fake estimator rejecting sample_weightc                     Xl         X l        gr#  r$  r%  r   s      rR   rH   "EstimatorRejectingSampleWeight.fit  s    rT   c                     g r_   rC   r   s     rR   rI   &EstimatorRejectingSampleWeight.predict  r*  rT   r/  Nr+  rC   rT   rR   r-  r-    s    0
rT   r-  bagging_classaccept_sample_weightmetadata_routingr8   r   g?c                 *   [         R                  " S5      R                  SS5      n[         R                  " SS/S5      n[         R                  " S5      nSUS'   SUS'   U(       a  [        5       nO
[        5       nUR                  u  p[        U[        5      (       a  [        X6R                  5       -  5      n
OUn
[        US	9   U(       a  U(       a  UR                  S
S9nU " XsSS9nUR                  XEUS9  [        UR                   UR"                  5       GH[  u  p[         R$                  " XS9n[        U5      ['        U5      s=:X  a  U
:X  d   e   e[         R(                  " USS/5      R+                  5       (       d   eU(       a~  UR,                  R                  X4:X  d   eUR.                  R                  U4:X  d   e[1        UR,                  U5        [1        UR.                  U5        [1        UR2                  U5        M  UR,                  R                  X4:X  d   eUR.                  R                  U
4:X  d   e[1        UR,                  XM   5        [1        UR.                  X]   5        GM^     S S S 5        g ! , (       d  f       g = f)Nr   r   r5   r   r   r6   r?   r   enable_metadata_routingTr  )r8   rB   )	minlength)r   arangereshaperepeatzerosr!  r-  r   r   floatr   r   r   set_fit_requestrH   rG   ry   estimators_samples_bincountr   isinrz   r$  r%  r+   r&  )r3  r4  r5  r8   rf   rg   r  base_estimatorr   
n_featuresexpected_integer_max_samplesbaggingrA   samplescountss                  rR   %test_draw_indices_using_sample_weightrI    s    			#r1%A
		1a&"AHHSMMM!M!7979GGI+u%% (+;9J9J9L+L'M$'2$	0@	A 4+;;$;ONVWXA6"%g&9&97;V;V"WI[[>Fv;#g,N2NNNNNN777QF+//1111# ||))i-DDDD ||))i\999	a0	a0	 8 8&A !||)).J-WWWW ||)).J-LLLL	aj9	aj9# #X 
B	A	As   F5J
Jc                     [        SSS9u  p[        SSS9nUR                  X5        UR                  SSSS	9  UR                  X5        [        R
                  " [        5         [        US
5        S S S 5        g ! , (       d  f       g = f)Nr   r5   r   r   T)rB   r   Fr   )r   r   rB   r   )r
   r   rH   r   r   r  AttributeErrorrx   r	  s      rR   $test_oob_score_removed_on_warm_startrL  9  sf    c:DA
d
;CGGAMNNde"NEGGAM	~	&\" 
'	&	&s   $A::
Bc                      [        SSS9u  p[        [        5       SSSSS9nUR                  X5      R                  UR                  X5      R                  :X  d   eg )N   r5   r   r3   T)r8   r9   r   r2   )r
   r   r   rH   r   rf   rg   rF  s      rR   test_oob_score_consistencyrP  F  s\     c:DAG ;;q''7;;q+<+G+GGGGrT   c                     [        SSS9u  p[        [        5       SSSSS9nUR                  X5        UR                  nUR
                  nUR                  n[        U5      [        U5      :X  d   e[        US   5      [        U 5      S-  :X  d   eUS   R                  R                  S	:X  d   eSnX6   nXF   nXV   n	X   S S 2U4   n
X   nU	R                  nU	R                  X5        U	R                  n[        X5        g )
NrN  r5   r   r3   F)r8   r9   r2   r:   r   r?   r   )r
   r   r   rH   r@  r   ry   r   dtypekindcoef_r,   )rf   rg   rF  estimators_samplesestimators_featuresrP   estimator_indexestimator_samplesestimator_featuresrA   rK   rM   
orig_coefs	new_coefss                 rR   test_estimators_samplesr\  T  s    c:DAG KK !44!66$$J !"c*o555!!$%Q1444a &&++s222 O*;,=+I#Q(:%:;G"GJMM'#Ij4rT   c                     [        5       n U R                  U R                  p![        [	        SS9[        5       5      n[        USSS9nUR                  X5        UR                  S   R                  S   S   R                  R                  5       nUR                  S   nUR                  S   nUR                  S   nX   S S 2U4   n	X'   n
UR                  X5        [        UR                  S   S   R                  U5        g )Nr?   )n_componentsr3   r   )rA   r8   r2   r   r5   )r	   rE   rF   r   r    r   r   rH   ry   r   rT  copyr@  r   r-   )rD   rf   rg   base_pipeliner   pipeline_estimator_coefrA   estimator_sampleestimator_featurerK   rM   s              rR   %test_estimators_samples_deterministicrd  |  s     ;D99dkkq!A.0B0DM mST
UCGGAM!ooa066r:1=CCHHJ"I..q1003"A'8$89G!GMM'#yr*1-335LMrT   c                      Sn [        SU -  SS9u  p[        [        5       U SSS9nUR                  X5        UR                  U :X  d   eg )Nr   r?   r5   r   r3   )r8   r9   r2   )r
   r   r   rH   _max_samples)r8   rf   rg   rF  s       rR   test_max_samples_consistencyrg    sV     Ka+oAFDA	G KK;...rT   c                  .   Sn S/S/S//S-  n/ SQS-  n/ SQS-  n/ SQS-  n[        SU S	9R                  X5      R                  n[        SU S	9R                  X5      R                  n[        SU S	9R                  X5      R                  nXV/Xw/:X  d   eg )
Nr   r   r   r5   )ABC)r   r   r5   )r   r5   r?   T)r   r2   )r   rH   r   )r2   rf   Y1Y2Y3x1x2x3s           rR   !test_set_oob_score_label_encodingrr    s     L
sQC1A	1	B	aB	QBD|D	Q	  	D|D	Q	  	D|D	Q	 
 8xrT   c                 Z    U R                  SSS9n SU [        R                  " U 5      ) '   U $ )Nr>  T)r_  r   )astyper   isfinite)rf   s    rR   replacerv    s-    	t$AAr{{1~oHrT   c            	         [         R                  " / SQ/ SQS[         R                  S/S[         R                  S/S[         R                  * S//5      n [         R                  " / SQ5      [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      /nU GH  n[	        5       n[        [        [        5      U5      nUR                  X5      R                  U 5        [        U5      nUR                  X5      R                  U 5      nUR                  UR                  :X  d   e[	        5       n[        U5      n[        R                  " [        5         UR                  X5        S S S 5        [        U5      n[        R                  " [        5         UR                  X5        S S S 5        GM     g ! , (       d  f       NS= f! , (       d  f       GM=  = f)Nr5   r   r   r?   N   r?   rz  )r?   r   r   r   r   )r?   r5   	   )r   rz     )r   arraynaninfr)   r   r   rv  rH   rI   r   r   r   r  r  )rf   y_valuesrg   	regressorpipelinebagging_regressory_hats          rR   *test_bagging_regressor_with_missing_inputsr    sb   
NNO	
	A 	!
	
H )+	 !4W!=yIQ""1%,X6!%%a+33A6ww%++%%% *+	 +]]:&LL ',X6]]:&!!!' '&  '& '&s   F/G /
F=	 
G	c            	         [         R                  " / SQ/ SQS[         R                  S/S[         R                  S/S[         R                  * S//5      n [         R                  " / SQ5      n[	        5       n[        [        [        5      U5      nUR                  X5      R                  U 5        [        U5      nUR                  X5        UR                  U 5      nUR                  UR                  :X  d   eUR                  U 5        UR                  U 5        [	        5       n[        U5      n[        R                  " [         5         UR                  X5        S S S 5        [        U5      n[        R                  " [         5         UR                  X5        S S S 5        g ! , (       d  f       NN= f! , (       d  f       g = f)Nrx  ry  r?   rz  )r   rz  rz  rz  rz  )r   r}  r~  r  r(   r   r   rv  rH   rI   r   r   rX   rW   r   r  r  )rf   rg   
classifierr  bagging_classifierr  s         rR   +test_bagging_classifier_with_missing_inputsr    sP   
NNO	
	A 	!A')J09:FHLLq!*841 &&q)E77ekk!!!((+$$Q' ()JZ(H	z	"Q 
#*84	z	"q$ 
#	" 
#	" 
#	"s   	F#F4#
F14
Gc                      [         R                  " SS/SS//5      n [         R                  " SS/5      n[        [        5       SSS9nUR	                  X5        g )Nr5   r?   r   r6   r   g333333?)r9   r2   )r   r}  r   r   rH   rO  s      rR   test_bagging_small_max_featuresr    sP     	1a&1a&!"A
!QA 2 43UVWGKKrT   c                 R   [         R                  R                  U 5      nUR                  SS5      n[         R                  " S5      n " S S[
        5      n[        U" 5       SSS9nUR                  X#5        [        UR                  S   R                  UR                  S   5        g )N   r6   c                       \ rS rSrSrS rSrg)8test_bagging_get_estimators_indices.<locals>.MyEstimatori"  z7An estimator which stores y indices information at fit.c                     X l         g r_   _sample_indicesr   s      rR   rH   <test_bagging_get_estimators_indices.<locals>.MyEstimator.fit%  s    #$ rT   r  N)rm   rn   ro   rp   rq   rH   rr   rC   rT   rR   MyEstimatorr  "  s
    E	%rT   r  r5   r   )rA   rB   r2   )r   randomRandomStaterandnr:  r)   r   rH   r-   ry   r  r@  )global_random_seedrJ   rf   rg   r  r   s         rR   #test_bagging_get_estimators_indicesr    s    
 ))

 2
3C		"aA
		"A%+ % []QR
SCGGAMsq)993;R;RST;UVrT   zbagging, expected_allow_nanr5   r=   c                 X    U R                  5       R                  R                  U:X  d   eg)z*Check that bagging inherits allow_nan tag.N)__sklearn_tags__
input_tags	allow_nan)rF  expected_allow_nans     rR   test_bagging_allow_nan_tagr  .  s(     ##%00::>PPPPrT   r7  modelr  )rA   rB   c                 `    U R                  [        R                  [        R                  5        g)zAMake sure that metadata routing works with non-default estimator.NrH   rD   rE   rF   r  s    rR   "test_bagging_with_metadata_routingr  @  s     
IIdii%rT   zsub_estimator, caller, calleerI   rX   rW   c           	         [         R                  " SS/SS/SS//5      n/ SQnS/Spe[        5       nU " US9nS	U-   S
-   n	[        X5      " SSS9  [	        US9n
U
R                  X45        [        X5      " [         R                  " SS/SS/SS//5      UUS9  [        U5      (       d   eU H  n[        UUUUUS9  M     g)am  Test that metadata routing works in `BaggingClassifier` with dynamic selection of
the sub-estimator's methods. Here we test only specific test cases, where
sub-estimator methods are not present and are not tested with `ConsumingClassifier`
(which possesses all the methods) in
sklearn/tests/test_metaestimators_metadata_routing.py: `BaggingClassifier.predict()`
dynamically routes to `predict` if the sub-estimator doesn't have `predict_proba`
and `BaggingClassifier.predict_log_proba()` dynamically routes to `predict_proba` if
the sub-estimator doesn't have `predict_log_proba`, or to `predict`, if it doesn't
have it.
r   r?   r5   r6   rz  )r5   r?   r   a)registryset__requestT)r  metadatar   r   )rf   r  r  )objr|   parentr  r  N)r   r}  r&   rx   r   rH   r   r'   )sub_estimatorcallercalleerf   rg   r  r  r  rA   set_callee_requestrF  s              rR   3test_metadata_routing_with_dynamic_method_selectionr  Q  s    0 	1a&1a&1a&)*AA c38{Hx0I&:5I*M)4GKKG
((QFQFQF+
,# x===	'	
 rT   c                 `    U R                  [        R                  [        R                  5        g)zZMake sure that we still can use an estimator that does not implement the
metadata routing.Nr  r  s    rR   -test_bagging_without_support_metadata_routingr    s     
IIdii%rT   )*   )|rq   r  	itertoolsr   r   r   numpyr   r   sklearnr   sklearn.baser   sklearn.calibrationr   sklearn.datasetsr   r	   r
   sklearn.dummyr   r   sklearn.ensembler   r   r   r   r   r   r   r   sklearn.feature_selectionr   sklearn.linear_modelr   r   sklearn.model_selectionr   r   r   sklearn.neighborsr   r   sklearn.pipeliner   sklearn.preprocessingr   r   sklearn.random_projectionr    sklearn.svmr!   r"   %sklearn.tests.metadata_routing_commonr#   r$   r%   r&   r'   sklearn.treer(   r)   sklearn.utilsr*   sklearn.utils._testingr+   r,   r-   sklearn.utils.fixesr.   r/   rJ   rD   permutationrF   sizepermrE   r   rS   markparametrizer   r   r   r   r   r   r   r   r   r   r   thread_unsafer   r   r   r   r   r  r
  r  r  r  r  r  r!  r-  rI  rL  rP  r\  rd  rg  rr  rv  r  r  r  r  r  r  r  r  rC   rT   rR   <module>r     s   
 $    " & 6 G G 9	 	 	 2 ? Q Q G * < <    G , 
 ? {
t{{''(IIdO	kk$ ?
x++,d#//$'0B &'  # !!&*	  # !!&*	 U$Od%P	
  	O%.'2/.'2T8 +^n-LM5A N5Ap# #'9TE8 
F%&P!#HJ(O &6 &6V & &4	T )0 )0XC44$&&3,7@
] 
	] 	 +;=N*OP/%?+eT];S	2/: 3 < @ Q/:d
#H%5PN6/ 4&(R%@W* !	91E	FM	7C	DdK	-/	0%8	#%	 %(	QQ -,!<1	
 	+;!	
	
&
 .&
 #	/IF5	

 
,-@)L -#
 .#
T (a8	
 	#4!#DSTU	&	&rT   