
    h$,fu                        d Z ddlmZmZ ddlZddlZddlZddlm	Z	 ddl
mZmZmZ ddlmZmZ ddlmZmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5m6Z6  e0d      Z7 e       Z8e7js                  e8jt                  jv                        Z<e8jz                  e<   e8_=        e8jt                  e<   e8_:         e       Z>e7js                  e>jt                  jv                        Z<e>jz                  e<   e>_=        e>jt                  e<   e>_:        d Z?ej                  j                  d ee6e5z   ddddddddddddddddddgg d            d         ZBd! ZCej                  j                  d"e6e5z         d#        ZD G d$ d%e	      ZEd& ZFd' ZGd( ZHd) ZId* ZJd+ ZKd, ZLd- ZMd. ZNd/ ZOd0 ZPd1 ZQ G d2 d3e	      ZRd4 ZSdId5ZTd6 ZUd7 ZVd8 ZWd9 ZXd: ZYd; ZZd< Z[d= Z\d> Z]d? Z^d@ Z_dA Z`dB ZadC ZbdD Zcej                  j                  dE e edFG            df e edFG            df e e             df e e+             dfg      dH        Zdy)JzE
Testing for the bagging ensemble module (sklearn.ensemble.bagging).
    )cycleproductN)BaseEstimator)load_diabetes	load_irismake_hastie_10_2)DummyClassifierDummyRegressor)BaggingClassifierBaggingRegressorHistGradientBoostingClassifierHistGradientBoostingRegressor)SelectKBest)LogisticRegression
Perceptron)GridSearchCVParameterGridtrain_test_split)KNeighborsClassifierKNeighborsRegressor)make_pipeline)FunctionTransformerscale)SparseRandomProjection)SVCSVR)DecisionTreeClassifierDecisionTreeRegressor)check_random_state)assert_array_almost_equalassert_array_equal)CSC_CONTAINERSCSR_CONTAINERSc                     t        d      } t        t        j                  t        j                  |       \  }}}}t        ddgddgddgddgd	      }d t               t        d
      t        d      t               t               g}t        |t        |            D ]3  \  }}t        d|| dd|j                  ||      j                  |       5 y )Nr   random_state      ?      ?      TFmax_samplesmax_features	bootstrapbootstrap_features   max_iter   )	max_depth)	estimatorr&   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paramsr5   s	            Clib/python3.12/site-packages/sklearn/ensemble/tests/test_bagging.pytest_classificationrG   4   s    
Q
C'7		4;;S($GVWf :F#'-		
D 	B+J !uZ'89 0	 	
	
 		

 #gw
0    z sparse_container, params, methodr'   r3   Tr+   r(   r*   Fr-   r.   r/   r,   r.   r/   )r=   predict_probapredict_log_probadecision_functionc                 l    G d dt               }t        d      }t        t        t        j
                        t        j                  |      \  }}}} | |      }	 | |      }
t        d
 |dd      dd	|j                  |	|      } t        ||      |
      }t        d
 |dd      dd	|j                  ||      } t        ||      |      }t        ||       t        |	      }|j                  D cg c]  }|j                   }}t        |D cg c]  }||k(  	 c}      sJ y c c}w c c}w )Nc                   "     e Zd ZdZ fdZ xZS )-test_sparse_classification.<locals>.CustomSVC7SVC variant that records the nature of the training setc                 H    t         |   ||       t        |      | _        | S Nsuperr<   type
data_type_selfXy	__class__s      rF   r<   z1test_sparse_classification.<locals>.CustomSVC.fitr   !    GK1"1gDOKrH   __name__
__module____qualname____doc__r<   __classcell__r\   s   @rF   	CustomSVCrP   o       E	 	rH   re   r   r%   linearovr)kerneldecision_function_shaper)   r5   r&   r7   )r   r   r   r   r8   r9   r:   r   r<   getattrr    rV   estimators_rW   all)sparse_containerrE   methodre   r>   r?   r@   rA   rB   X_train_sparseX_test_sparsesparse_classifiersparse_resultsdense_classifierdense_resultssparse_typeitypests                      rF   test_sparse_classificationr{   U   sK   4C  Q
C'7dii$++C($GVWf &g.N$V,M) 8UK  
c.'"	 
 8W.7FN ) 8UK  
c'7	 
 6G,f5f=Mnm<~&K#4#@#@AaQ\\AEA%0Q[ 0111 B0s   8D,D1c                  t   t        d      } t        t        j                  d d t        j                  d d |       \  }}}}t        ddgddgddgddgd      }d t               t               t               t               fD ]6  }|D ]/  }t        d
|| d	|j                  ||      j                  |       1 8 y )Nr   2   r%   r'   r(   TFr+   rk   r7   )r   r   diabetesr9   r:   r   r
   r   r   r   r   r<   r=   )r>   r?   r@   rA   rB   rC   r5   rE   s           rF   test_regressionr      s    
Q
C'7crHOOCR0s($GVWf : #J#'-		
D 	 
	  	FMysMfMQQgfo	
rH   ro   c                    t        d      }t        t        j                  d d t        j                  d d |      \  }}}} G d dt
              }ddddd	d
dddd	ddddddddg} | |      } | |      }	|D ]  }
t        d |       dd|
j                  ||      }|j                  |	      }t        d |       dd|
j                  ||      j                  |      }t        |      }|j                  D cg c]  }|j                   }}t        ||       t        |D cg c]  }||k(  	 c}      sJ t        ||        y c c}w c c}w )Nr   r}   r%   c                   "     e Zd ZdZ fdZ xZS ))test_sparse_regression.<locals>.CustomSVRrQ   c                 H    t         |   ||       t        |      | _        | S rS   rT   rX   s      rF   r<   z-test_sparse_regression.<locals>.CustomSVR.fit   r]   rH   r^   rd   s   @rF   	CustomSVRr      rf   rH   r   r'   r3   Tr+   r(   r*   FrI   rJ   r)   rk   r7   )r   r   r~   r9   r:   r   r   r<   r=   rV   rm   rW   r    rn   )ro   r>   r?   r@   rA   rB   r   parameter_setsrq   rr   rE   rs   rt   rv   rw   rx   ry   rz   s                     rF   test_sparse_regressionr      s    Q
C'7crHOOCR0s($GVWfC  "&		
 "&		
 dK$eLN" &g.N$V,M  A, 
k
5;

#ng
& 	 +22=A My{MfMS'"WV_ 	 >*'8'D'DE!EE!.-@e4A$4555!.-@'A F 5s   <E
&E
c                       e Zd Zd Zd Zy)DummySizeEstimatorc                 `    |j                   d   | _        t        j                  |      | _        y Nr   )shapetraining_size_joblibhashtraining_hash_rY   rZ   r[   s      rF   r<   zDummySizeEstimator.fit   s"    ggaj$kk!nrH   c                 F    t        j                  |j                  d         S r   )nponesr   rY   rZ   s     rF   r=   zDummySizeEstimator.predict   s    wwqwwqz""rH   Nr_   r`   ra   r<   r=   r7   rH   rF   r   r      s    -#rH   r   c                  
   t        d      } t        t        j                  t        j                  |       \  }}}}t               j                  ||      }t        t               dd|       j                  ||      }|j                  ||      |j                  ||      k(  sJ t        t               dd|       j                  ||      }|j                  ||      |j                  ||      kD  sJ t        t               d      j                  ||      }g }|j                  D ];  }|j                  |j                  d   k(  sJ |j                  |j                         = t        t!        |            t        |      k(  sJ y )Nr   r%   r(   F)r5   r,   r.   r&   T)r5   r.   )r   r   r~   r9   r:   r   r<   r   scorer   rm   r   r   appendr   lenset)r>   r?   r@   rA   rB   r5   ensembletraining_hashs           rF   test_bootstrap_samplesr      sw   
Q
C'7xS($GVWf &'++GW=I  ')	
 
c'7  ??7G,w0PPPP  ')	
 
c'7  ??7G,x~~gw/OOOO
  *<*>$OSSH M)) 7	''7==+;;;;Y5567 s=!"c-&8888rH   c                  `   t        d      } t        t        j                  t        j                  |       \  }}}}t        t               dd|       j                  ||      }|j                  D ]D  }t        j                  j                  d   t        j                  |      j                  d   k(  rDJ  t        t               dd|       j                  ||      }|j                  D ]D  }t        j                  j                  d   t        j                  |      j                  d   kD  rDJ  y )Nr   r%   r(   F)r5   r-   r/   r&   r)   T)r   r   r~   r9   r:   r   r   r<   estimators_features_r   r   unique)r>   r?   r@   rA   rB   r   featuress          rF   test_bootstrap_featuresr     s   
Q
C'7xS($GVWf  ') 	
 
c'7  11 F}}""1%8)<)B)B1)EEEEF  ')	
 
c'7  11 E}}""1%		((;(A(A!(DDDDErH   c            	         t        d      } t        t        j                  t        j                  |       \  }}}}t        j                  dd      5  t        t               |       j                  ||      }t        t        j                  |j                  |      d      t        j                  t        |                   t        |j                  |      t        j                  |j!                  |                   t        t#               | d	      j                  ||      }t        t        j                  |j                  |      d      t        j                  t        |                   t        |j                  |      t        j                  |j!                  |                   d d d        y # 1 sw Y   y xY w)
Nr   r%   ignore)divideinvalidrk   r)   )axis   )r5   r&   r,   )r   r   r8   r9   r:   r   errstater   r   r<   r    sumrK   r   r   exprL   r   r>   r?   r@   rA   rB   r   s         rF   test_probabilityr   9  sY   
Q
C'7		4;;S($GVWf 
Hh	7 
$,.S

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

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

#gw
 	 	"FF8))&1:BGGCK<P	
 	"""6*BFF83M3Mf3U,V	
/
 
 
s   EF99Gc            	         t        d      } t        t        j                  t        j                  |       \  }}}}t               t               fD ]  }t        |ddd|       j                  ||      }|j                  ||      }t        ||j                  z
        dk  sJ d}t        j                  t        |      5  t        |d	dd|       }|j                  ||       d d d         y # 1 sw Y   xY w)
Nr   r%   d   Tr5   r6   r.   	oob_scorer&   皙?{Some inputs do not have OOB scores. This probably means too few estimators were used to compute any reliable oob estimates.matchr)   )r   r   r8   r9   r:   r   r   r   r<   r   abs
oob_score_pytestwarnsUserWarning)	r>   r?   r@   rA   rB   r5   clf
test_scorewarn_msgs	            rF   test_oob_score_classificationr   \  s    Q
C'7		4;;S($GVWf -.6 &	
 #gw
 	 YYvv.
:./#555J 	 \\+X6 	&## C GGGW%	& 	&%&$	& 	&s   >#C,,C5	c                     t        d      } t        t        j                  t        j                  |       \  }}}}t        t               ddd|       j                  ||      }|j                  ||      }t        ||j                  z
        dk  sJ d}t        j                  t        |      5  t        t               d	dd|       }|j                  ||       d d d        y # 1 sw Y   y xY w)
Nr   r%   r}   Tr   r   r   r   r)   )r   r   r~   r9   r:   r   r   r<   r   r   r   r   r   r   )	r>   r?   r@   rA   rB   r   r   r   regrs	            rF   test_oob_score_regressionr     s     Q
C'7xS($GVWf ') 
c'7  66*JzCNN*+c111	F  
k	2 #+-
 	'"# # #s   /+C##C,c                  P   t        d      } t        t        j                  t        j                  |       \  }}}}t        t               ddd|       j                  ||      }t               j                  ||      }t        |j                  |      |j                  |             y )Nr   r%   r)   F)r5   r6   r.   r/   r&   )
r   r   r~   r9   r:   r   r   r<   r    r=   )r>   r?   r@   rA   rB   clf1clf2s          rF   test_single_estimatorr     s    
Q
C'7xS($GVWf %'  
c'7 	  $$Wg6Ddll62DLL4HIrH   c                      t         j                  t         j                  }} t               }t	        t        |      j                  | |      d      rJ y )NrM   )r8   r9   r:   r   hasattrr   r<   )rZ   r[   bases      rF   
test_errorr     sB    99dkkqA!#D(.221a8:MNNNNrH   c                     t        t        j                  t        j                  d      \  } }}}t	        t               dd      j                  | |      }|j                  |      }|j                  d       |j                  |      }t        ||       t	        t               dd      j                  | |      }|j                  |      }t        ||       t	        t        d      dd      j                  | |      }|j                  |      }|j                  d       |j                  |      }	t        ||	       t	        t        d      dd      j                  | |      }|j                  |      }
t        ||
       y )	Nr   r%      n_jobsr&   r)   r   rh   )rj   )r   r8   r9   r:   r   r   r<   rK   
set_paramsr    r   rM   )r?   r@   rA   rB   r   y1y2y3
decisions1
decisions2
decisions3s              rF   test_parallel_classificationr     sj   '7		4;;Q($GVWf ! 	c'7 
 
			'Bq!				'Bb"%  	c'7  
			'Bb"% !E*11	c'7  ++F3Jq!++F3Jj*5 E*11	c'7  ++F3Jj*5rH   c                     t        d      } t        t        j                  t        j                  |       \  }}}}t        t               dd      j                  ||      }|j                  d       |j                  |      }|j                  d       |j                  |      }t        ||       t        t               dd      j                  ||      }|j                  |      }t        ||       y )Nr   r%   r   r   r)   r   r3   )r   r   r~   r9   r:   r   r   r<   r   r=   r    )	r>   r?   r@   rA   rB   r   r   r   r   s	            rF   test_parallel_regressionr     s    
Q
C'7xS($GVWf   5 7PQRVVH q!			&	!Bq!			&	!Bb"% 5 7PQRVVH 
		&	!Bb"%rH   c                      t         j                  t         j                  }} d||dk(  <   ddd}t        t	        t                     |d      j                  | |       y )Nr)   r3   )r)   r3   )r6   estimator__Croc_auc)scoring)r8   r9   r:   r   r   r   r<   )rZ   r[   
parameterss      rF   test_gridsearchr     sP     99dkkqAAa1fI #)&AJ"35):yIMMaQRSrH   c                     t        d      } t        t        j                  t        j                  |       \  }}}}t        d dd      j                  ||      }t        |j                  t              sJ t        t               dd      j                  ||      }t        |j                  t              sJ t        t               dd      j                  ||      }t        |j                  t              sJ t        t        j                  t        j                  |       \  }}}}t        d dd      j                  ||      }t        |j                  t              sJ t        t               dd      j                  ||      }t        |j                  t              sJ t        t               dd      j                  ||      }t        |j                  t              sJ y )Nr   r%   r   r   )r   r   r8   r9   r:   r   r<   
isinstance
estimator_r   r   r~   r   r   r   r   s         rF   test_estimatorr     s   
Q
C (8		4;;S($GVWf !aa@DDWgVHh))+ABBB  	c'7  h))+ABBB aaHLLH h)):666 (8xS($GVWf  QQ?CCGWUHh))+@AAA 5 7PQRVVH h))+@AAAaa@DDWgVHh))3///rH   c                     t        t        t        d      t                     d      } | j	                  t
        j                  t
        j                         t        | d   j                  d   d   j                  t              sJ y )Nr)   )kr3   )r-   r   )r   r   r   r   r<   r8   r9   r:   r   stepsr&   int)r5   s    rF   test_bagging_with_pipeliner   ;  sd    !kA&(>(@APQI MM$))T[[)il((,Q/<<cBBBrH   c                       e Zd Zd Zd Zy)DummyZeroEstimatorc                 :    t        j                  |      | _        | S rS   )r   r   classes_r   s      rF   r<   zDummyZeroEstimator.fitD  s    		!rH   c                 l    | j                   t        j                  |j                  d   t                 S )Nr   )dtype)r   r   zerosr   r   r   s     rF   r=   zDummyZeroEstimator.predictH  s$    }}RXXaggaj<==rH   Nr   r7   rH   rF   r   r   C  s    >rH   r   c            
         t        t                     } t        d      }| j                  t        j
                  t        j                        j                  t        j
                         t        j                  t              5  | j                  t        j
                  t        j                  |j                  dt        j
                  j                  d                d d d        y # 1 sw Y   y xY w)Nr   
   )size)sample_weight)r   r   r   r<   r8   r9   r:   r=   r   raises
ValueErrorrandintr   )r5   r>   s     rF   1test_bagging_sample_weight_unsupported_but_passedr   L  s    !"4"67I
Q
CMM$))T[[)11$))<	z	" 
IIKK++b		0B+D 	 	

 
 
s   AC))C2c                    t        dd      \  }}d }dD ]G  }|t        || d      }n|j                  |       |j                  ||       t	        |      |k(  rGJ  t        d| d	      }|j                  ||       t        |D cg c]  }|j                   c}      t        |D cg c]  }|j                   c}      k(  sJ y c c}w c c}w )
Nr0   r)   	n_samplesr&   )r   r   T)r6   r&   
warm_startr6   r   F)r   r   r   r<   r   r   r&   )r&   rZ   r[   clf_wsr6   	clf_no_wstrees          rF   test_warm_startr   Y  s     bq9DAqF +>&)QUF <8

1a6{l***+ "luI MM!Qf5d!!56#'01t		1;   51s   C	*C
c                     t        dd      \  } }t        dd      }|j                  | |       |j                  d       t	        j
                  t              5  |j                  | |       d d d        y # 1 sw Y   y xY w)	Nr0   r)   r   r   T)r6   r   r*   r   )r   r   r<   r   r   r   r   rZ   r[   r   s      rF   $test_warm_start_smaller_n_estimatorsr  s  sg    bq9DAq
t
<CGGAqMNNN"	z	" 1  s   A77B c                  t   t        dd      \  } }t        | |d      \  }}}}t        ddd	      }|j                  ||       |j	                  |      }|d
z  }d}t        j                  t        |      5  |j                  ||       d d d        t        ||j	                  |             y # 1 sw Y   %xY w)Nr0   r)   r   +   r%   r   TS   r6   r   r&   r(   z;Warm-start fitting without increasing n_estimators does notr   )	r   r   r   r<   r=   r   r   r   r!   )	rZ   r[   r?   r@   rA   rB   r   y_predr   s	            rF   "test_warm_start_equal_n_estimatorsr	  }  s    bq9DAq'712'N$GVWf
t"
MCGGGW[[ FsNGLH	k	2 "!"vs{{623" "s   7B..B7c                  n   t        dd      \  } }t        | |d      \  }}}}t        ddd	      }|j                  ||       |j	                  d
       |j                  ||       |j                  |      }t        d
dd	      }|j                  ||       |j                  |      }	t        ||	       y )Nr0   r)   r   r  r%   r   TiE  r  r   r   F)r   r   r   r<   r   r=   r    )
rZ   r[   r?   r@   rA   rB   r   r   r   r   s
             rF   test_warm_start_equivalencer    s     bq9DAq'712'N$GVWfA$TRF
JJw 
2&
JJw 		B
D
QCGGGW	V	Bb"%rH   c                      t        dd      \  } }t        ddd      }t        j                  t              5  |j                  | |       d d d        y # 1 sw Y   y xY w)Nr0   r)   r   r   T)r6   r   r   )r   r   r   r   r   r<   r  s      rF   $test_warm_start_with_oob_score_failsr    sN    bq9DAq
tt
LC	z	" 1  s   AAc                  "   t        dd      \  } }t        dd      }|j                  | |       |j                  ddd	       |j                  | |       t	        j
                  t              5  t        |d
       d d d        y # 1 sw Y   y xY w)Nr   r)   r   r   T)r6   r   Fr   )r   r   r6   r   )r   r   r<   r   r   r   AttributeErrorrl   r  s      rF   $test_oob_score_removed_on_warm_startr    su    c:DAq
d
;CGGAqMNNde"NEGGAqM	~	& #\"# # #s   /BBc                      t        dd      \  } }t        t               dddd      }|j                  | |      j                  |j                  | |      j                  k(  sJ y )N   r)   r   r'   T)r,   r-   r   r&   )r   r   r   r<   r   rZ   r[   baggings      rF   test_oob_score_consistencyr    sb     c:DAqG ;;q!''7;;q!+<+G+GGGGrH   c                     t        dd      \  } }t        t               dddd      }|j                  | |       |j                  }|j
                  }|j                  }t        |      t        |      k(  sJ t        |d         t        |       dz  k(  sJ |d   j                  j                  d	k(  sJ d}||   }||   }||   }	| |   d d |f   }
||   }|	j                  }|	j                  |
|       |	j                  }t        ||       y )
Nr  r)   r   r'   F)r,   r-   r&   r.   r   r3   rx   )r   r   r   r<   estimators_samples_r   rm   r   r   kindcoef_r    )rZ   r[   r  estimators_samplesestimators_featuresrD   estimator_indexestimator_samplesestimator_featuresr5   r?   rA   
orig_coefs	new_coefss                 rF   test_estimators_samplesr!    s1    c:DAqG KK1 !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'7#Ij)4rH   c                     t               } | j                  | j                  }}t        t	        d      t                     }t        |dd      }|j                  ||       |j                  d   j                  d   d   j                  j                         }|j                  d   }|j                  d   }|j                  d   }||   d d |f   }	||   }
|j                  |	|
       t        |j                  d   d   j                  |       y )Nr3   )n_componentsr'   r   )r5   r,   r&   r   r)   )r   r9   r:   r   r   r   r   r<   rm   r   r  copyr  r   r!   )r8   rZ   r[   base_pipeliner   pipeline_estimator_coefr5   estimator_sampleestimator_featurer?   rA   s              rF   %test_estimators_samples_deterministicr)    s     ;D99dkkqA!A.0B0DM mST
UCGGAqM!ooa066r:1=CCHHJ"I..q1003!"A'8$89G !GMM'7#yr*1-335LMrH   c                      d} t        d| z  d      \  }}t        t               | dd      }|j                  ||       |j                  | k(  sJ y )Nr   r3   r)   r   r'   )r,   r-   r&   )r   r   r   r<   _max_samples)r,   rZ   r[   r  s       rF   test_max_samples_consistencyr,    sZ     Ka+oAFDAq	G KK1;...rH   c                  H   d} dgdgdggdz  }g ddz  }g ddz  }g ddz  }t        d| 	      j                  ||      j                  }t        d| 	      j                  ||      j                  }t        d| 	      j                  ||      j                  }||g||gk(  sJ y )
Nr   r   r   r)   )ABC)r   r   r)   )r   r)   r3   T)r   r&   )r   r<   r   )r&   rZ   Y1Y2Y3x1x2x3s           rF   !test_set_oob_score_label_encodingr7    s     L
sQC1A	1	B	aB	QBD|D	Q	  	D|D	Q	  	D|D	Q	 
 8BxrH   c                 ^    | j                  dd      } d| t        j                  |        <   | S )NfloatT)r$  r   )astyper   isfinite)rZ   s    rF   replacer<  1  s-    	t$AAr{{1~oHrH   c            	         t        j                  g dg ddt         j                  dgdt         j                  dgdt         j                   dgg      } t        j                  g d      t        j                  g dg dg dg dg dg      g}|D ]  }t	               }t        t        t              |      }|j                  | |      j                  |        t        |      }|j                  | |      j                  |       }|j                  |j                  k(  sJ t	               }t        |      }t        j                  t              5  |j                  | |       d d d        t        |      }t        j                  t              5  |j                  | |       d d d         y # 1 sw Y   LxY w# 1 sw Y   1xY w)Nr)   r   r   r3   N   r3   r@  )r3   r   r   r   r   )r3   r)   	   )r   r@     )r   arraynaninfr   r   r   r<  r<   r=   r   r   r   r   r   )rZ   y_valuesr[   	regressorpipelinebagging_regressory_hats          rF   *test_bagging_regressor_with_missing_inputsrK  7  s   
NNO	
	A 	!
	
H  ()+	 !4W!=yIQ""1%,X6!%%a+33A6ww%++%%% *+	 +]]:& 	LLA	,X6]]:& 	(!!!Q'	( 	((	 		( 	(s   F+F7+F4	7G	c            	      t   t        j                  g dg ddt         j                  dgdt         j                  dgdt         j                   dgg      } t        j                  g d      }t	               }t        t        t              |      }|j                  | |      j                  |        t        |      }|j                  | |       |j                  |       }|j                  |j                  k(  sJ |j                  |        |j                  |        t	               }t        |      }t        j                  t               5  |j                  | |       d d d        t        |      }t        j                  t               5  |j                  | |       d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY w)Nr>  r?  r3   r@  )r   r@  r@  r@  r@  )r   rC  rD  rE  r   r   r   r<  r<   r=   r   r   rL   rK   r   r   r   )rZ   r[   
classifierrH  bagging_classifierrJ  s         rF   +test_bagging_classifier_with_missing_inputsrO  `  sh   
NNO	
	A 	!A')J09:FHLLAq!*841a &&q)E77ekk!!!((+$$Q' ()JZ(H	z	" Q*84	z	" %q!$% % % %s   F"F."F+.F7c                      t        j                  ddgddgg      } t        j                  ddg      }t        t               dd      }|j	                  | |       y )Nr)   r3   r   r*   r   g333333?)r-   r&   )r   rC  r   r   r<   r  s      rF   test_bagging_small_max_featuresrQ    sR     	1a&1a&!"A
!QA 2 43UVWGKK1rH   c                  X   t         j                  j                  d      } | j                  dd      }t        j                  d      } G d dt
              }t         |       dd      }|j                  ||       t        |j                  d   j                  |j                  d          y )Nr      r*   c                       e Zd ZdZd Zy)8test_bagging_get_estimators_indices.<locals>.MyEstimatorz7An estimator which stores y indices information at fit.c                     || _         y rS   )_sample_indicesr   s      rF   r<   z<test_bagging_get_estimators_indices.<locals>.MyEstimator.fit  s
    #$D rH   N)r_   r`   ra   rb   r<   r7   rH   rF   MyEstimatorrU    s
    E	%rH   rX  r)   )r5   r6   r&   )r   randomRandomStaterandnaranger   r   r<   r!   rm   rW  r  )r>   rZ   r[   rX  r   s        rF   #test_bagging_get_estimators_indicesr]    s    
 ))


"C		"aA
		"A%+ % []QR
SCGGAqMsq)993;R;RST;UVrH   zbagging, expected_allow_nanr)   r1   c                 4    | j                         d   |k(  sJ y)z*Check that bagging inherits allow_nan tag.	allow_nanN)	_get_tags)r  expected_allow_nans     rF   test_bagging_allow_nan_tagrb    s!     {+/AAAArH   )*   )erb   	itertoolsr   r   r   numpyr   r   sklearn.baser   sklearn.datasetsr   r   r   sklearn.dummyr	   r
   sklearn.ensembler   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.treer   r   sklearn.utilsr   sklearn.utils._testingr    r!   sklearn.utils.fixesr"   r#   r>   r8   permutationr:   r   permr9   r~   rG   markparametrizer{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r!  r)  r,  r7  r<  rK  rO  rQ  r]  rb  r7   rH   rF   <module>rz     s   %    & G G 9  2 ? Q Q G * < <   F , P > {
t{{''(IIdO	kk$ ?
x++,d#//$'0B &'  # !!&*	  # !!&*	 U$Od%P	
  	O%.&2/.&2R8 +^n-LM5A N5Ap# #'9TE8 
F"&J!#HJ(O&6R&4	T)0XC> >

44$&&
#H%5PN6/ 4&(R%@W* !	91E	FM	7C	DdK	-/	0%8	#%	 %(	BBrH   