
    -i              
          S r SSK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  SSKJrJr  SSKJrJr  SS	KJr  SS
KJr  SSKJrJr  SSKJr  SSKJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/J0r0J1r1  SSK2J3r3J4r4J5r5  \\/r6SS/SS/SS/SS/SS/SS//r7/ SQr8SS/SS/SS//r9/ SQr:\" SSS S!S"S#9u  r;r<\%" \<5      r<\Rz                  R}                  S5      r?\	R                  " 5       rA\?R                  \AR                  R                  5      rE\AR                  \E   \AlF        \AR                  \E   \AlC        S$ rGS% rH\R                  R                  S&S'5      S( 5       rK\R                  R                  S&S'5      S) 5       rL\R                  R                  S&S*5      \R                  R                  S+S,5      S- 5       5       rM\R                  R                  S+S,5      \R                  R                  S.S/5      S0 5       5       rNS1 rO\R                  R                  S2\\;\<4\\AR                  \AR                  4/5      S3 5       rPS4 rQS5 rR\R                  R                  S6\45      S7 5       rSS8 rTS9 rUS: rVS; rWS< rX\R                  R                  S=\65      S> 5       rYS? rZS@ r[SA r\SB r]SC r^SD r_SE r`\R                  R                  SF\65      SG 5       ra\R                  R                  SF\65      SH 5       rb\R                  R                  SI\SJ4\SK4\SL4\SJ4\SK4\SL4/5      SM 5       rcSN rdSO reSP rf\R                  R                  SQ\65      SR 5       rg\R                  R                  SQ\65      SS 5       rh\R                  R                  SQ\65      ST 5       ri\R                  R                  SQ\65      SU 5       rj\R                  R                  SV\65      SW 5       rk\R                  R                  SQ\65      SX 5       rl\R                  R                  SQ\65      SY 5       rm\R                  R                  SQ\65      SZ 5       rn\R                  R                  SQ\65      S[ 5       ro\R                  R                  SQ\65      \R                  R                  S\\3\4-   \5-   5      S] 5       5       rp\R                  R                  SQ\65      S^ 5       rqS_ rr\R                  R                  SQ\65      S` 5       rsSa rtSb ruSc rvSd rw\R                  R                  Se\65      Sf 5       rx\R                  R                  Se\65      Sg 5       rySh rz\R                  R                  Si/ SjQ5      Sk 5       r{Sl r|\1\R                  R                  Sm\\45      \R                  R                  S\\3\4-   \5-   5      Sn 5       5       5       r}\R                  R                  SF\\/5      So 5       r~Sp rSq rSr rSs r\R                  R                  St\\\4\\\4\\\4// SuQSv9Sw 5       rSx rSy rSz rS{ rS| rS} r\1S~ 5       rS rS rS rg)zP
Testing for the gradient boosting module (sklearn.ensemble.gradient_boosting).
    N)assert_allclose)datasets)clone)make_classificationmake_regression)DummyClassifierDummyRegressor)GradientBoostingClassifierGradientBoostingRegressor)_safe_divide)predict_stages)DataConversionWarningNotFittedError)LinearRegression)mean_squared_error)train_test_split)make_pipeline)scale)NuSVR)check_random_state)NoSampleWeightWrapper)InvalidParameterError)assert_array_almost_equalassert_array_equalskip_if_32bit)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERS      )r    r    r    r!   r!   r!      )r    r!   r!   d         
      )	n_samples
n_featuresn_informativenoiserandom_statec                      [        SS9n Sn[        R                  " [        US9   U R	                  [
        R                  [
        R                  5        SSS5        g! , (       d  f       g= f)z/Test exponential loss raises for n_classes > 2.exponentiallossz?loss='exponential' is only suitable for a binary classificationmatchN)r
   pytestraises
ValueErrorfitirisdatatargetclfmsgs     `/var/www/html/venv/lib/python3.13/site-packages/sklearn/ensemble/tests/test_gradient_boosting.pytest_exponential_n_classes_gt_2r?   ;   sA    
$-
8C
KC	z	-		4;;' 
.	-	-s   /A
A+c                      [        [        S9n Sn[        R                  " [        US9   U R                  [        [        5        SSS5        g! , (       d  f       g= f)z0Test raise if init_ has no predict_proba method.initzThe 'init' parameter of GradientBoostingClassifier must be a str among {'zero'}, None or an object implementing 'fit' and 'predict_proba'.r2   N)r
   r   r4   r5   r6   r7   Xyr;   s     r>   'test_raise_if_init_has_no_predict_probarE   C   sA    
$*C
DC	N  
z	-1 
.	-	-s   A
Ar1   log_lossr/   c                 (   [        U SUS9n[        R                  " [        5         UR	                  [
        5        S S S 5        UR                  [        [        5        [        UR	                  [
        5      [        5        S[        UR                  5      :X  d   eUR                  S S UR                  SS  -
  n[        R                  " US:  5      (       d   eUR!                  [        5      nUR"                  S:X  d   eg ! , (       d  f       N= f)Nr'   )r1   n_estimatorsr-   r    r!           )   r'   r!   )r
   r4   r5   r6   predictTr7   rC   rD   r   true_resultlenestimators_train_score_npanyapplyshape)r1   global_random_seedr<   log_loss_decreaseleavess        r>   test_classification_toyrY   N   s     %1CC 
z	"A 
# GGAqMs{{1~{3S__%%%%(("-0@0@0DD66#s*++++YYq\F<<:%%% 
#	"s   D
Dc                    [         R                  " SUS9u  p#SnUS U X$S  peUS U X4S  pSSU US.n	[        SSS0U	D6n
U
R                  XW5        [        SSS	0U	D6nUR                  XW5        U
R	                  Xh5      UR	                  Xh5      :  d   eS
SU US.n	[        SSS0U	D6nUR                  XW5        [        SSS0U	D6nUR                  XW5        UR	                  Xh5      UR	                  Xh5      :  d   eg )N  r)   r-   i  r!         ?)	max_depthlearning_rater1   r-   rI   r'   2      )rI   r_   r1   r-   r^   max_leaf_nodes )r   make_hastie_10_2r
   r7   score)r1   rV   rC   rD   	split_idxX_trainX_testy_trainy_testcommon_paramsgbrt_10_stumpsgbrt_50_stumpsgbrt_stumpsgbrt_10_nodess                 r>   test_classification_syntheticrp   c   s4    $$tBTUDAI
mQz]V
mQz]V *	M 0QRQ=QNw(/QRQ=QNw(/.2F2Fv2VVVV
 *	M -JqJMJKOOG%.RbRMRMg'V,}/B/B6/RRRR    )squared_errorabsolute_errorhuber	subsample)r]         ?c                 p   [         R                  " [        [        5      5      nS nS USU-  4 H  n[	        SU SUSUSS9nUR                  [        [        US9  UR                  [        5      nUR                  S:X  d   eUR                  [        5      n[        [        U5      n	U	S:  d   eUb   UnM     g )	Nr"      r%   rv   )rI   r1   r^   ru   min_samples_splitr-   r_   sample_weight)r$   rx   g?)rR   onesrO   y_regr   r7   X_regrT   rU   rL   r   )
r1   ru   rV   r|   last_y_predr{   regrX   y_predmses
             r>   test_regression_datasetr      s    
 773u:DKa$h/ (+
 	uM:5!||y(((U# /Tzz" ? 0rq   r{   )Nr!   c                    US:X  a-  [         R                  " [        [        R                  5      5      n[        SSUU S9nUR                  [        R                  [        R                  US9  UR                  [        R                  [        R                  5      nUS:  d   eUR                  [        R                  5      nUR                  S:X  d   eg )Nr!   r$   rG   rI   r1   r-   ru   rz   ?)   r$   r#   )rR   r|   rO   r8   r:   r
   r7   r9   re   rT   rU   )ru   r{   rV   r<   re   rX   s         r>   	test_irisr      s     DKK 01
$'	C GGDIIt{{-G@IIdii-E3;;YYtyy!F<<=(((rq   c                    [        U 5      nSSSSSU S.n[        R                  " SUSS	9u  p4US S
 US S
 peUS
S  US
S  p[        S0 UD6n	U	R	                  XV5        [        XR                  U5      5      n
U
S:  d   e[        R                  " SUS9u  p4US S
 US S
 peUS
S  US
S  p[        S0 UD6n	U	R	                  XV5        [        XR                  U5      5      n
U
S:  d   e[        R                  " SUS9u  p4US S
 US S
 peUS
S  US
S  p[        S0 UD6n	U	R	                  XV5        [        XR                  U5      5      n
U
S:  d   eg )Nr$   r%   r"   皙?rr   )rI   r^   ry   r_   r1   r-     r]   r)   r-   r,   ra   g      @r\   g     @g?rc   )	r   r   make_friedman1r   r7   r   rL   make_friedman2make_friedman3)rV   r-   regression_paramsrC   rD   rg   ri   rh   rj   r<   r   s              r>   test_regression_syntheticr      s    &&89L* ""TTWXDA#w$3WstWagF
#
8&7
8CGGG
V[[%8
9C99 ""TMDA#w$3WstWagF
#
8&7
8CGGG
V[[%8
9C<< ""TMDA#w$3WstWagF
#
8&7
8CGGG
V[[%8
9C;;rq   zGradientBoosting, X, yc                     U " 5       n[        US5      (       a   eUR                  X5        [        US5      (       d   eg )Nfeature_importances_)hasattrr7   )GradientBoostingrC   rD   gbdts       r>   test_feature_importancesr      s?     Dt34444HHQN4/0000rq   c                 <   [        SU S9n[        R                  " [        5         UR	                  [
        5        S S S 5        UR                  [        [        5        [        UR                  [
        5      [        5        UR	                  [
        5      n[        R                  " US:  5      (       d   e[        R                  " US:*  5      (       d   eUR                  R                  UR!                  SS9SS9n[        U[        5        g ! , (       d  f       N= f)Nr$   rI   r-   rJ   r]   r!   )axisr   )r
   r4   r5   r6   predict_probarM   r7   rC   rD   r   rL   rN   rR   allclasses_takeargmax)rV   r<   y_probar   s       r>   test_probability_logr   
  s    
$#DV
WC	z	"! 
# GGAqMs{{1~{3 "G66'S.!!!!66'S.!!!! \\w~~1~5A>Fv{+ 
#	"s   D
Dc                      / SQn [        SSS9nSn[        R                  " [        US9   UR	                  [
        [        U S9  S S S 5        g ! , (       d  f       g = f)N)r   r   r   r!   r!   r!   r$   r!   r   zty contains 1 class after sample_weight trimmed classes with zero weights, while a minimum of 2 classes are required.r2   rz   )r
   r4   r5   r6   r7   rC   rD   )r{   r<   r=   s      r>   $test_single_class_with_sample_weightr     sL    &M
$#A
FC	C  
z	-1M2 
.	-	-s   A
Acsc_containerc                 X   [         R                  " SSS9u  pU " U5      n[        SSS9nUR                  X5        [        R
                  " UR                  5      R                  SS5      nSn[        R                  " [        US9   [        UR                  X4R                  U5        S S S 5        [        R                  " U5      n[        R                  " [        SS9   [        UR                  XtR                  U5        S S S 5        g ! , (       d  f       Nh= f! , (       d  f       g = f)	Nr$   r!   r\   r   r    z3When X is a sparse matrix, a CSR format is expectedr2   z X should be C-ordered np.ndarray)r   rd   r
   r7   rR   zerosrU   reshaper4   r5   r6   r   rP   r_   asfortranarray)r   xrD   x_sparse_cscr<   re   err_msg	x_fortrans           r>    test_check_inputs_predict_stagesr   )  s     $$sCDA #L
$#A
FCGGAMHHagg''A.ECG	z	1s6G6GO 
2!!!$I	z)K	Ls	3D3DeL 
M	L 
2	1 
M	Ls   "D
"D

D
D)c           	          [         R                  " SU S9u  pUS S USS  pCUS S USS  pe[        SSSSSU S9nUR                  X55        UR	                  XgR                  U5      5      nUS	:  d
   S
U-  5       eg )N.  r\   r[   r$      r"   r   )rI   ry   r^   r_   max_featuresr-   rv   zGB failed with deviance %.4f)r   rd   r
   r7   _lossdecision_function)	rV   rC   rD   rg   rh   ri   rj   gbrtrG   s	            r>   test_max_feature_regressionr   :  s    $$uCUVDAh$%Vh$%V%'D 	HHWzz&"8"8"@AHc>D9HDD>rq   c                 j   U " 5       nUR                   UR                  pC[        X4US9u  pVpx[        SSSSUS9n	U	R	                  XW5        [
        R                  " U	R                  5      SSS2   n
U
 Vs/ s H  oR                  U   PM     nnUS	   S
:X  d   e[        USS 5      1 Sk:X  d   egs  snf )zTest that Gini importance is calculated correctly.

This test follows the example from [1]_ (pg. 373).

.. [1] Friedman, J., Hastie, T., & Tibshirani, R. (2001). The elements
   of statistical learning. New York: Springer series in statistics.
r-   rt   r   rK   r$   )r1   r_   rb   rI   r-   Nr    r   MedIncr!   r%   >   AveOccupLatitude	Longitude)
r9   r:   r   r   r7   rR   argsortr   feature_namesset)fetch_california_housing_fxtrV   
californiarC   rD   rg   rh   ri   rj   r   
sorted_idxssorted_featuress                r>   "test_feature_importance_regressionr   N  s     ./J??J--q'7	-($GW $'C GGGC445dd;J<FGJq//2JOG 1)))
 q#$(MMMM Hs   4B0c                  *   [         R                  " SSS9u  pU R                  u  p#U S S nUS S n[        SS S9nUR	                  XE5        UR
                  U:X  d   e[        SS S9nUR	                  XE5        UR
                  U:X  d   e[        SSS9nUR	                  XE5        UR
                  [        US-  5      :X  d   e[        SSS9nUR	                  XE5        UR
                  [        [        R                  " U5      5      :X  d   e[        SSS9nUR	                  XE5        UR
                  [        [        R                  " U5      5      :X  d   e[        SS	U R                  S   -  S9nUR	                  XE5        UR
                  S:X  d   eg )
Nr   r!   r\   r[   )rI   r   333333?sqrtlog2g{Gz?)r   rd   rU   r
   r7   max_features_r   intrR   r   r   )rC   rD   _r*   rg   ri   r   s          r>   test_max_featuresr   r  ss   $$u1EDAGGMAhGhG%14HDHHW+++$!$GDHHW+++$!#FDHHWZ#%5!6666$!&IDHHWRWWZ%8!9999$!&IDHHWRWWZ%8!9999$!$QRBSTDHHW"""rq   c                     [         R                  " SSSS9u  pU S S US S p2U SS  n[        5       n[        R                  " [
        5         [        R                  " UR                  U5      [        R                  S9  S S S 5        UR                  X#5        UR                  U5      nUR                  U5       H  nUR                  UR                  :X  a  M   e   [        Xa5        g ! , (       d  f       Np= f)Nr   r!   r]   r   ra   dtype)r   r   r   r4   r5   r6   rR   fromiterstaged_predictfloat64r7   rL   rU   r   )rC   rD   rg   ri   rh   r<   r   s          r>   test_staged_predictr     s     ""TMDA#w$3WstWF
#
%C	z	"
C&&v.bjjA 
# GGG[[ F 'ww&,,&&& ( f( 
#	"s   3C((
C6c                     [         R                  " SSS9u  pU S S US S p2U SS  USS  pT[        SS9n[        R                  " [
        5         [        R                  " UR                  U5      [        R                  S9  S S S 5        UR                  X#5        UR                  U5       H  nUR                  UR                  :X  a  M   e   [        UR                  U5      W5        UR                  U5       H:  nUR                  S   UR                  S   :X  d   eS	UR                  S   :X  a  M:   e   [        UR!                  U5      W5        g ! , (       d  f       N= f)
Nr   r!   r\   ra      rI   r   r   r"   )r   rd   r
   r4   r5   r   rR   r   staged_predict_probar   r7   r   rU   r   rL   r   r   )	rC   rD   rg   ri   rh   rj   r<   r   staged_probas	            r>   test_staged_predict_probar     s7    $$t!DDA#w$3WstWagF
$"
5C	~	&
C,,V4BJJG 
' GGG $$V,||v||+++ - s{{6*F3 008||A,"4"4Q"7777L&&q)))) 9 c//7F! 
'	&s   3E
E!	Estimatorc                    [         R                  R                  U5      nUR                  SS9nSUS S 2S4   -  R	                  [
        5      S-   nU " 5       nUR                  X45        S Hq  n[        USU-   S 5      nUc  M  [        R                  " SS	9   [        U" U5      5      nS S S 5        SWS   S S & [         R                  " US   S:g  5      (       a  Mq   e   g ! , (       d  f       N>= f)
N)r'   r#   )sizer%   r   r!   )rL   r   r   staged_T)record)rR   randomRandomStateuniformastyper   r7   getattrwarningscatch_warningslistr   )	r   rV   rngrC   rD   	estimatorfuncstaged_funcstaged_results	            r>   test_staged_functions_defensiver     s     ))

 2
3C!A	
Qq!tWS!A%AIMM!AiT)94@$$D1 Q0M 2avvmA&!+,,,, B
 21s   C!!
C/	c                     [        SSS9n U R                  [        [        5        [	        U R                  [        5      [        5        S[        U R                  5      :X  d   e SS K
nUR                  XR                  S9nS n UR                  U5      n [	        U R                  [        5      [        5        S[        U R                  5      :X  d   eg ! [         a    SS Kn N{f = f)Nr$   r!   r   r   )protocol)r
   r7   rC   rD   r   rL   rM   rN   rO   rP   cPickleImportErrorpickledumpsHIGHEST_PROTOCOLloads)r<   r   serialized_clfs      r>   test_serializationr     s    
$#A
FCGGAqMs{{1~{3#coo&&&&  \\#0G0G\HN
C
,,~
&Cs{{1~{3#coo&&&&  s   $C C$#C$c            	      Z   [        SSS9n [        R                  " [        5         U R	                  [
        [        R                  " [        [
        5      5      5        S S S 5        [        SSS9n U R	                  [
        [        R                  " [        [
        5      5      5        U R                  [        R                  S5      /5        [        [        R                  " S[        R                  S9U R                  [        R                  S5      /5      5        g ! , (       d  f       N= f)Nr$   r!   r   r"   )r!   r   )r
   r4   r5   r6   r7   rC   rR   r|   rO   r   rL   r   randr   r   r<   s    r>   test_degenerate_targetsr     s    
$#A
FC 
z	"2773q6?# 
# $1
ECGGArwws1vKK!rwwt2::6SXXa[M8RS 
#	"s   8D
D*c                    [        SSSSU S9nUR                  [        [        5        UR	                  [        5      n[        SSSU S9nUR                  [        [        5        UR	                  [        5      n[        X$5        g )Nr$   quantiler%   rv   )rI   r1   r^   alphar-   rs   )rI   r1   r^   r-   )r   r7   r~   r}   rL   r   )rV   clf_quantile
y_quantileclf_aey_aes        r>   test_quantile_lossr    sy    ,'L UE"%%e,J&'	F JJue>>% DJ%rq   c            	      (   [        SSS9n [        [        [        [        5      5      nU R                  [        U5        [        U R                  [        5      [        [        [        [        5      5      5        S[        U R                  5      :X  d   eg )Nr$   r!   r   )r
   r   mapstrrD   r7   rC   r   rL   rM   rN   rO   rP   )r<   symbol_ys     r>   test_symbol_labelsr    sa    
$#A
FCCQK HGGAxs{{1~tC[,A'BC#coo&&&&rq   c                  P   [        SSS9n [        R                  " [        [        R                  S9nU R                  [        U5        [        U R                  [        5      [        R                  " [        [        R                  S95        S[        U R                  5      :X  d   eg Nr$   r!   r   r   )r
   rR   asarrayrD   float32r7   rC   r   rL   rM   rN   rO   rP   )r<   float_ys     r>   test_float_class_labelsr    sh    
$#A
FCjj"**-GGGAws{{1~rzz+RZZ'PQ#coo&&&&rq   c                     [        SSS9n [        R                  " [        [        R                  S9nUS S 2[        R
                  4   nSn[        R                  " [        US9   U R                  [        U5        S S S 5        [        U R                  [        5      [        5        S[        U R                   5      :X  d   eg ! , (       d  f       NM= f)Nr$   r!   r   r   zA column-vector y was passed when a 1d array was expected. Please change the shape of y to \(n_samples, \), for example using ravel().r2   )r
   rR   r
  rD   int32newaxisr4   warnsr   r7   rC   r   rL   rM   rN   rO   rP   )r<   y_warn_msgs      r>   test_shape_yr  '  s    
$#A
FC	ARXX	&B	ArzzM	B	! 
 
+8	<2 
=s{{1~{3#coo&&&& 
=	<s   $C
Cc                  P   [         R                  " [        5      n [        SSS9nUR	                  U [
        5        [        UR                  [        5      [        5        S[        UR                  5      :X  d   e[         R                  " [        5      n [        SSS9nUR	                  U [
        5        [        UR                  [        5      [        5        S[        UR                  5      :X  d   e[         R                  " [
        [         R                  S9n[         R                  " U5      n[        SSS9nUR	                  [        U5        [        UR                  [        5      [        5        S[        UR                  5      :X  d   e[         R                  " [
        [         R                  S9n[         R                  " U5      n[        SSS9nUR	                  [        U5        [        UR                  [        5      [        5        S[        UR                  5      :X  d   eg r	  )rR   r   rC   r
   r7   rD   r   rL   rM   rN   rO   rP   ascontiguousarrayr
  r  )X_r<   r  s      r>   test_mem_layoutr  <  sr   			1	B
$#A
FCGGBNs{{1~{3#coo&&&&			a	 B
$#A
FCGGBNs{{1~{3#coo&&&&	ARXX	&B			b	!B
$#A
FCGGArNs{{1~{3#coo&&&&	ARXX	&B			2	B
$#A
FCGGArNs{{1~{3#coo&&&&rq   GradientBoostingEstimatorc                     U " SSSS9nUR                  [        [        5        UR                  R                  S   S:X  d   e[        UR                  S S [        R                  " / SQ5      SS	9  g )
Nr$   r!   rv   rI   r-   ru   r   r   )gRQ?g333333?gQ?g)\(g)\(?r"   )decimal)r7   rC   rD   oob_improvement_rU   r   rR   array)r  r   s     r>   test_oob_improvementr  Y  sl     *qCI MM!Q%%++A.#555""2A&
01rq   c                    [         R                  " SSS9u  pU " SSSS9nUR                  X5        UR                  R                  S   S:X  d   eUR                  S   [
        R                  " UR                  5      :X  d   eU " SSSSS	9nUR                  X5        UR                  R                  S   S:  d   eUR                  S   [
        R                  " UR                  5      :X  d   eg )
Nr$   r!   r\   rv   r  r   r    r   )rI   r-   ru   n_iter_no_change)r   rd   r7   oob_scores_rU   r4   approx
oob_score_)r  rC   rD   r   s       r>   test_oob_scoresr%  i  s     $$sCDA)qCI MM!  &&q)S000  $i6J6J(KKKK)	I MM!  &&q)C///  $i6J6J(KKKKrq   z(GradientBoostingEstimator, oob_attributer  r"  r$  c                     [         R                  " SSS9u  p#U " SSSS9nUR                  X#5        [        R                  " [
        5         UR                    SSS5        g! , (       d  f       g= f)zR
Check that we raise an AttributeError when the OOB statistics were not computed.
r$   r!   r\   r]   r  N)r   rd   r7   r4   r5   AttributeErroroob_attribute)r  r(  rC   rD   r   s        r>   test_oob_attributes_errorr)    sZ     $$sCDA)I
 MM!	~	& 
'	&	&s   A!!
A/c                     [        SSSSS9n U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5      nUS:  d   eU R                  R                  S   U R                  :X  d   eU R                  R                  S   U R                  :X  d   eU R                  S   [        R                  " U R                  5      :X  d   e[        SSSSS	S
9n U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5      nU R                  R                  S   U R                  :  d   eU R                  R                  S   U R                  :  d   eU R                  S   [        R                  " U R                  5      :X  d   eg )Nr$   rG   r!   rv   r   r   r   r    r   )rI   r1   r-   ru   r!  )r
   r7   r8   r9   r:   re   r  rU   rI   r"  r4   r#  r$  )r   re   s     r>   test_oob_multilcass_irisr+    s~   *zSI MM$))T[[)OODIIt{{3E3;;%%++A.)2H2HHHH  &&q)Y-C-CCCC  $i6J6J(KKKK*I MM$))T[[)OODIIt{{3E%%++A.1G1GGGG  &&q)I,B,BBBB  $i6J6J(KKKKrq   c                     SS K n SSKJn  U R                  nU" 5       U l        [	        SSSSS9nUR                  [        [        5        U R                  nX l        UR                  S5        UR                  5       R                  5       nSR                  S/S	/S
-  -   5      S-  nXe:X  d   e[        S UR                  5        5       5      nSU:X  d   eg )Nr   StringIOr$   r!   皙?)rI   r-   verboseru    %10s%16sr#   )Iter
Train LosszOOB ImproveRemaining Timec              3   &   #    U  H  nS v   M	     g7fr!   Nrc   .0ls     r>   	<genexpr>&test_verbose_output.<locals>.<genexpr>       87!7      sysior.  stdoutr
   r7   rC   rD   seekreadlinerstripjoinsum	readlinesrB  r.  
old_stdoutr<   verbose_outputheadertrue_headern_liness           r>   test_verbose_outputrQ    s    JCJ
$q!sC GGAqMZZNJ $$&--/F((F8vhl23 7 K    8^55788GWrq   c                     SS K n SSKJn  U R                  nU" 5       U l        [	        SSSS9nUR                  [        [        5        U R                  nX l        UR                  S5        UR                  5       R                  5       nSR                  S/S	/S-  -   5      S
-  nXe:X  d   e[        S UR                  5        5       5      nSU:X  d   eg )Nr   r-  r$   r!   r"   )rI   r-   r0  r1  r2  r3  )r4  r5  r6  c              3   &   #    U  H  nS v   M	     g7fr8  rc   r9  s     r>   r<  +test_more_verbose_output.<locals>.<genexpr>  r>  r?  rA  rK  s           r>   test_more_verbose_outputrU    s    JCJ
$#Aq
QCGGAqMZZNJ $$&--/F((F8vhl23 7 K
    8^55788G'>>rq   Clsc                    [         R                  " SUS9u  p#U " SSUS9nUR                  X#5        U " SSSUS9nUR                  X#5        UR                  SS9  UR                  X#5        U [        L a+  [        UR                  U5      UR                  U5      5        g [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        g )	Nr$   r\   ra   r!   rI   r^   r-   TrI   r^   
warm_startr-   r   )	r   rd   r7   
set_paramsr   r   rL   r   r   rV  rV   rC   rD   estest_wss         r>   test_warm_startr_    s     $$sASTDA
3!:L
MCGGAMA$EWF JJq
3'
JJq
''q)3;;q>: 	6>>!,ckk!n=,,Q/1B1B11EFrq   c                 ,   [         R                  " SUS9u  p#U " SSUS9nUR                  X#5        U " SSSUS9nUR                  X#5        UR                  SS9  UR                  X#5        [	        UR                  U5      UR                  U5      5        g )	Nr$   r\   i,  r!   rX  TrY  r   )r   rd   r7   r[  r   rL   r\  s         r>   test_warm_start_n_estimatorsra    s     $$sASTDA
3!:L
MCGGAMA$EWF JJq
3'
JJqFNN1%s{{1~6rq   c                 N   [         R                  " SSS9u  pU " SSSS9nUR                  X5        UR                  SSS9  UR                  X5        UR                  S	   R
                  S:X  d   e[        SS
5       H%  nUR                  U* S4   R
                  S:X  a  M%   e   g )Nr$   r!   r\   TrI   r^   rZ  n   r"   rI   r^   r   r      r   )r   rd   r7   r[  rP   r^   range)rV  rC   rD   r]  is        r>   test_warm_start_max_depthrj    s     $$sCDA
3!
=CGGAMNNqN1GGAM ??4 **a///1b\r1u%//1444 rq   c                 (   [         R                  " SSS9u  pU " SSS9nUR                  X5        U " SSSS9nUR                  X5        UR                  SS9  UR                  X5        [	        UR                  U5      UR                  U5      5        g )	Nr$   r!   r\   re  Trc  F)rZ  )r   rd   r7   r[  r   rL   )rV  rC   rD   r]  est_2s        r>   test_warm_start_clearrm  +  s     $$sCDA
3!
,CGGAMSA$?E	IIaO	&	IIaOemmA.A?rq   r   c                    [         R                  " SSS9u  pSnU " USSSSS9nUR                  X5        UR                  UR                  pe[        U5      U:X  d   eUS   [        R                  " U5      :X  d   eSnUR                  US	9R                  X5        [        UR                  5      U:X  d   e[        UR                  S
U U5        UR                  USS9R                  X5        UR                  ULd   eUR                  ULd   e[        UR                  U5        UR                  [        R                  " U5      :X  d   eUS   [        R                  " U5      :X  d   eg
)zR
Check that the states of the OOB scores are cleared when used with `warm_start`.
r$   r!   r\   rv   T)rI   r^   ru   rZ  r-   r    ra   r   NFrI   rZ  )
r   rd   r7   r"  r$  rO   r4   r#  r[  r   )r   rC   rD   rI   r   
oob_scores	oob_scoren_more_estimatorss           r>    test_warm_start_state_oob_scoresrs  :  sf   
 $$sCDAL !I MM!%1193G3G	z?l***b>V]]95555&78<<QBy$$%)::::I))-<8*EluEII!O  
222y000I)):66==#;;;;b>V]]95555rq   c                    [         R                  " SSS9u  pU " SSSS9nUR                  X5        UR                  SS9  [        R
                  " [        5         UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr$   r!   r\   Trc  c   r   )r   rd   r7   r[  r4   r5   r6   rV  rC   rD   r]  s       r>   $test_warm_start_smaller_n_estimatorsrw  Z  sb     $$sCDA
3!
=CGGAMNNN#	z	" 
#	"	"s   A55
Bc                 "   [         R                  " SSS9u  pU " SSS9nUR                  X5        [        U5      nUR	                  UR
                  SS9  UR                  X5        [        UR                  U5      UR                  U5      5        g )Nr$   r!   r\   re  Tro  )r   rd   r7   r   r[  rI   r   rL   )rV  rC   rD   r]  est2s        r>   "test_warm_start_equal_n_estimatorsrz  e  ss     $$sCDA
3!
,CGGAM:DOO!1!1dOCHHQNdll1os{{1~>rq   c                 \   [         R                  " SSS9u  pU " SSSS9nUR                  X5        UR                  SSS9  UR                  X5        [	        UR
                  S S [        R                  " S5      5        [	        UR                  S S [        R                  " S5      5        UR
                  S	S  S
:g  R                  5       (       d   eUR                  S	S  S
:g  R                  5       (       d   eUR                  S   [        R                  " UR                  5      :X  d   eg )Nr$   r!   r\   Trc  rd  rv   )rI   ru   rJ   r    )r   rd   r7   r[  r   r  rR   r   r"  r   r4   r#  r$  rv  s       r>   test_warm_start_oob_switchr}  s  s     $$sCDA
3!
=CGGAMNNsN3GGAMs++DS1288C=Ast,bhhsm<   &#-224444OOCD!S(--////??2&--"????rq   c                 @   [         R                  " SSS9u  pU " SSSSS9nUR                  X5        U " SSSSSS9nUR                  X5        UR                  SS	9  UR                  X5        [	        UR
                  S S UR
                  S S 5        [	        UR                  S S UR                  S S 5        UR                  S
   [        R                  " UR                  5      :X  d   eUR                  S
   [        R                  " UR                  5      :X  d   eg )Nr$   r!   r\   ra   rv   )rI   r^   ru   r-   TrI   r^   ru   r-   rZ  r   r    )
r   rd   r7   r[  r   r  r"  r4   r#  r$  )rV  rC   rD   r]  r^  s        r>   test_warm_start_oobr    s    $$sCDA
3!s
KCGGAMA1QUF JJq
3'
JJqf55ds;S=Q=QRVSV=WXf00#68MN??2&--"????b!V]]63D3D%EEEErq   sparse_containerc                 0   [         R                  " SSS9u  p#U " SSSSSS9nUR                  X#5        UR                  U5        UR	                  SS9  UR                  X#5        UR                  U5      nU" U5      nU " SSSSSS9nUR                  Xc5        UR                  U5        UR	                  SS9  UR                  Xc5        UR                  U5      n[        UR                  S S UR                  S S 5        UR                  S	   [        R                  " UR                  5      :X  d   e[        UR                  S S UR                  S S 5        UR                  S	   [        R                  " UR                  5      :X  d   e[        XX5        g )
Nr$   r!   r\   rv   Tr  ra   r   r    )r   rd   r7   rL   r[  r   r  r"  r4   r#  r$  )	rV  r  rC   rD   	est_densey_pred_denseX_sparse
est_sparsey_pred_sparses	            r>   test_warm_start_sparser    s    $$sCDAA1QUI MM!ac*MM!$$Q'L"HJ NN8qs+NN8&&q)M""4C(**E*Eds*K   $i6J6J(KKKKi33DS9:;Q;QRVSV;WX!!"%z7L7L)MMMMl:rq   c                    [         R                  " SUS9u  p#U " SUSS9nU " SUSS9nUR                  X#5        UR                  SS9  UR                  X#5        [        R
                  " U5      nUR                  Xc5        UR                  SS9  UR                  Xc5        [        UR                  U5      UR                  U5      5        g )Nr$   r\   r!   T)rI   r-   rZ  rg  r   )r   rd   r7   r[  rR   r   r   rL   )rV  rV   rC   rD   est_cest_fortran	X_fortrans          r>   test_warm_start_fortranr    s     $$sASTDAQ-?DQE13ERVWK	IIaO	"%	IIaO!!!$IOOI!+OOI!EMM!$k&9&9!&<=rq   c                     U S:X  a  gg)z#Returns True on the 10th iteration.	   TFrc   )ri  r]  localss      r>   early_stopping_monitorr    s    Avrq   c                 2   [         R                  " SSS9u  pU " SSSSS9nUR                  X[        S9  UR                  S:X  d   eUR
                  R                  S   S	:X  d   eUR                  R                  S   S	:X  d   eUR                  R                  S   S	:X  d   eUR                  R                  S   S	:X  d   eUR                  S
   [        R                  " UR                  5      :X  d   eUR                  SS9  UR                  X5        UR                  S:X  d   eUR
                  R                  S   S:X  d   eUR                  R                  S   S:X  d   eUR                  R                  S   S:X  d   eUR                  R                  S   S:X  d   eUR                  S
   [        R                  " UR                  5      :X  d   eU " SSSSSS9nUR                  X[        S9  UR                  S:X  d   eUR
                  R                  S   S	:X  d   eUR                  R                  S   S	:X  d   eUR                  R                  S   S	:X  d   eUR                  R                  S   S	:X  d   eUR                  S
   [        R                  " UR                  5      :X  d   eUR                  SSS9  UR                  X5        UR                  S:X  d   eUR                  R                  S   S:X  d   eUR
                  R                  S   S:X  d   eUR                  R                  S   S:X  d   eUR                  R                  S   S:X  d   eUR                  S
   [        R                  " UR                  5      :X  d   eg )Nr$   r!   r\   r   rv   )rI   r^   r-   ru   )monitorr   r'   r    rx   r   T)rI   r^   r-   ru   rZ  Fro  )r   rd   r7   r  rI   rP   rU   rQ   r  r"  r4   r#  r$  r[  rv  s       r>   test_monitor_early_stoppingr    sZ    $$sCDA
2c
JCGGA0G1r!!!??  #r)))!!!$***%%a(B...??  #r)))??2&--"???? NNN#GGAMr!!!??  #r)))!!!$***%%a(B...??  #r)))??2&--"????
11PTC GGA0G1r!!!??  #r)))!!!$***%%a(B...??  #r)))??2&--"???? NNuN5GGAMr!!!!!!$***??  #r)))%%a(B...??  #r)))??2&--"????rq   c                  <   SSK Jn   [        R                  " SSS9u  pSn[	        SS SUS-   S9nUR                  X5        UR                  S	   R                  nUR                  U:X  d   eUR                  UR                  U :H     R                  S   US-   :X  d   eg )
Nr   	TREE_LEAFr$   r!   r\   r%   r   rI   r^   r-   rb   rf  )sklearn.tree._treer  r   rd   r
   r7   rP   tree_r^   children_leftrU   )r  rC   rD   kr]  trees         r>   test_complete_classificationr    s    ,$$sCDA	A
$4aAC GGAM??4 &&D>>Qd00I=>DDQG1q5PPPrq   c                      SSK Jn   Sn[        SS SUS-   S9nUR                  [        [
        5        UR                  S   R                  nUR                  UR                  U :H     R                  S   US-   :X  d   eg )Nr   r  r%   r   r!   r  )r    r   )
r  r  r   r7   r~   r}   rP   r  r  rU   )r  r  r]  r  s       r>   test_complete_regressionr    sx    ,	A
#4aAC GGE5??5!''Dd00I=>DDQG1q5PPPrq   c                 2   [        SS9R                  [        [        5      n[	        UR                  [        5      [        5      n[        SSU SSS9nUR                  [        [        5        UR                  [        5      n[	        [        U5      nXR:  d   eg )Nmean)strategyr   r!   zerorv   )rI   r^   r-   rB   r_   )r	   r7   r~   r}   r   rL   r   )rV   baselinemse_baseliner]  r   mse_gbdts         r>   test_zero_estimator_regr  ,  s     v.225%@H%h&6&6u&=uEL
#'C GGE5[[F!%0H"""rq   c                 X   [         R                  n[        R                  " [         R                  5      n[        SSU SS9nUR                  X5        UR                  X5      S:  d   eUS:g  nSX$'   SX$) '   [        SSU SS9nUR                  X5        UR                  X5      S:  d   eg )Nr   r!   r  )rI   r^   r-   rB   gQ?r   )r8   r9   rR   r  r:   r
   r7   re   )rV   rC   rD   r]  masks        r>   test_zero_estimator_clfr  ?  s    		A
A
$13EFC GGAM99Q?T!!! 6DAGAeH
$13EFC GGAM99Q?T!!!rq   GBEstimatorc                 8   [         R                  " SSS9u  pSnU " SUS9R                  X5      nUR                  S   R                  nUR
                  S:X  d   eU " SS9R                  X5      nUR                  S   R                  nUR
                  S:X  d   eg )Nr$   r!   r\   r%   )r^   rb   rf  )r^   )r   rd   r7   rP   r  r^   )r  rC   rD   r  r]  r  s         r>   test_max_leaf_nodes_max_depthr  V  s     $$sCDA	A
!
4
8
8
>C??4 &&D>>Q

"
&
&q
,C??4 &&D>>Qrq   c                     [         R                  " SSS9u  pU " SS9nUR                  X5        UR                  R                   H  nUR
                  S:X  a  M   e   g )Nr$   r!   r\   r   )min_impurity_decrease)r   rd   r7   rP   flatr  )r  rC   rD   r]  r  s        r>   test_min_impurity_decreaser  f  sU    $$sCDA
C
0CGGAM$$ ))S000 %rq   c                      [        SSS9n U R                  SS/SS//SS/5        U R                  R                  S   S:X  d   eU R                  SS/SS//SS/5        U R                  R                  S   S:X  d   eg )Nr'   Tro  r   r!   r"   r#   )r
   r7   rP   rU   r   s    r>   %test_warm_start_wo_nestimators_changer  r  s     %"
FCGGaVaVq!f%??  #r)))GGaVaVq!f%??  #r)))rq   )r1   value))rr   rv   )rs   rJ   )rt   rv   )r   rv   c                     SS/SS/SS/SS//n/ SQn/ SQn[        SSU S9nUR                  X#US9  UR                  SS//5      S   U:  d   eg )	Nr!   r   r   r   r!   r   r   r   r!   r!   r]   r"   )r_   rI   r1   rz   )r   r7   rL   )r1   r  rC   rD   r{   gbs         r>   *test_non_uniform_weights_toy_edge_case_regr  |  sl     Q!Q!Q!Q(AA M	"14	PBFF1}F-::1vh"e+++rq   c                      SS/SS/SS/SS//n / SQn/ SQnS H<  n[        SUS9nUR                  XUS9  [        UR                  SS//5      S/5        M>     g )	Nr!   r   r  r  rF   r   )rI   r1   rz   )r
   r7   r   rL   )rC   rD   r{   r1   r  s        r>   *test_non_uniform_weights_toy_edge_case_clfr    sk    
Q!Q!Q!Q(AA M+'QTB
q=12::1vh/!5 ,rq   EstimatorClassc                 @   [         R                  " SSSSS9u  p#US S 2S4   nU" U5      nU " SSSSS	9R                  X25      nU " SSSSS	9R                  XB5      n[        UR	                  U5      UR	                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  UR                  5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        U [        5      (       a  [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5       H  u  px[        Xx5        M     g g )
Nr   r`   r!   r   )r-   r)   r*   	n_classesr'   r"   gHz>)rI   r-   r^   r  )r   make_multilabel_classificationr7   r   rT   rL   r   
issubclassr
   r   predict_log_probar   zipstaged_decision_function)	r  r  rD   rC   r  densesparse
res_sparseress	            r>   test_sparse_inputr    s    22"bDA 	
!Q$A"Ha1D	c!i 
 a1D	c(  fll1ou{{1~>fnnQ/q1ABf995;U;UVfnnX6a8HIemmH5v~~a7HI."<==!&"6"6q"95;N;Nq;QR!$$Q')@)@)C	
 	"$$X.0H0H0K	
 	"##H-v/G/G/J	
  #++H5++A. 
OJ &j6	 
 >rq   c           	      R   [        SSS9u  pSnU " USSSSSS9nU " USSSSS	S9n[        XSS
9u  pgpUR                  Xh5        UR                  Xh5        UR                  UR                  s=:  a  U:  d   e   eUR	                  Xy5      S:  d   eUR	                  Xy5      S:  d   eg )N  r   r\   r'   r   r#   *   )rI   r!  r_   r^   r-   tolMbP?r   gffffff?)r   r   r7   n_estimators_re   )
r  rC   rD   rI   gb_large_tolgb_small_tolrg   rh   ri   rj   s
             r>   %test_gradient_boosting_early_stoppingr    s     A>DAL,!L -!L (82'N$GWW&W&%%(B(BQ\QQQQQf-333f-333rq   c                      [        SSS9u  p[        SSSSS9nUR                  X5        [        S	SSSS9nUR                  X5        UR                  S:X  d   eUR                  S	:X  d   eg )
Nr  r   r\   r`   r   r#   r  )rI   r_   r^   r-   rx   )r   r
   r7   r   r  )rC   rD   gbcgbrs       r>   -test_gradient_boosting_without_early_stoppingr    s|     A>DA
$sabC GGAM
#sabC GGAM """"""rq   c            	         [        SSS9u  p[        SSSSSSS	9n[        U5      R                  S
S9n[        U5      R                  SS9n[	        SSSSSSS9n[        U5      R                  S
S9n[        U5      R                  SS9n[        XSS9u  ppUR                  X5        UR                  X5        UR                  UR                  :w  d   eUR                  X5        UR                  X5        UR                  UR                  :w  d   eUR                  X5        UR                  X5        UR                  UR                  :  d   eUR                  UR                  :  d   eg )Nr  r   r\   r$   r'   r   r#   r  )rI   r!  validation_fractionr_   r^   r-   r   )r  r   r!  )rI   r!  r_   r^   r  r-   r   )r   r
   r   r[  r   r   r7   r  )rC   rD   r  gbc2gbc3r  gbr2gbr3rg   rh   ri   rj   s               r>   *test_gradient_boosting_validation_fractionr    sk   A>DA
$C :  S 9D:  " 5D
#C :  S 9D:  " 5D'72'N$GWGGGHHW 2 2222GGGHHW 2 2222 	HHWHHWt11111t11111rq   c                      SS/SS/SS/SS//n / SQn[        SS9n[        R                  " [        SS	9   UR	                  X5        S S S 5        g ! , (       d  f       g = f)
Nr!   r"   r#   r%   r   )r   r   r   r!   r  z0The least populated class in y has only 1 memberr2   r
   r4   r5   r6   r7   )rC   rD   r  s      r>   test_early_stopping_stratifiedr  -  s^    
Q!Q!Q!Q(AA
$a
8C	L
 	
 
 
s   A
Ac                      [        SSS9$ )Nr#   r!   )r  n_clusters_per_class)r   rc   rq   r>   _make_multiclassr  9  s    CCrq   z!gb, dataset_maker, init_estimator)zbinary classificationzmulticlass classification
regression)idsc                    U" 5       u  pE[         R                  R                  U5      R                  S5      nU" 5       nU " US9R	                  XEUS9  [        U" 5       5      nU " US9R	                  XE5        [        R                  " [        SS9   U " US9R	                  XEUS9  S S S 5        g ! , (       d  f       g = f)Nr$   rA   rz   z*estimator.*does not support sample weightsr2   )	rR   r   r   r   r7   r   r4   r5   r6   )r  dataset_makerinit_estimatorrV   rC   rD   r{   init_ests           r>    test_gradient_boosting_with_initr  =  s    " ?DAII))*<=BB3GM HH!m< %^%56HH!	z)U	V
a-@ 
W	V	Vs   B//
B=c            	      b   [        SS9u  p[        [        5       5      n[        US9nUR	                  X5        [
        R                  " [        SS9   UR	                  X[        R                  " U R                  S   5      S9  S S S 5        SnSU S	3n[
        R                  " [        [        R                  " U5      S9   [        S
US9n[        US9nUR	                  X[        R                  " U R                  S   5      S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   rA   z>The initial estimator Pipeline does not support sample weightsr2   rz   g      ?zIThe 'nu' parameter of NuSVR must be a float in the range (0.0, 1.0]. Got z	 instead.auto)gammanu)r   r   r   r   r7   r4   r5   r6   rR   r|   rU   r   reescaper   )rC   rD   rB   r  
invalid_nur   s         r>   )test_gradient_boosting_with_init_pipeliner  \  s     *DA)+,D	"	-BFF1L	N
 	q2771771:#67	
 J	"",Y	8  
,BIIg4F	G6j1&D1
q2771771:#67	 
H	G
 
 
H	Gs   2DAD 
D 
D.c                      S//S-  n SS/S/S-  -   n[        SSSS9n[        R                  " [        SS	9   UR	                  X5        S S S 5        [        SSS
S9ng ! , (       d  f       N= f)Nr!   r'   r   r&   r   r/  )r!  r-   r  z0The training data after the early stopping splitr2   g?r  )rC   rD   r  s      r>   test_early_stopping_n_classesr  z  sz     
A	
A!qA	#
B 
L
 	q
 
$
B
 
s   A
A+c                      [         R                  " S5      n [         R                  " S5      n[        5       R	                  X5      n[        UR                  [         R                  " S[         R                  S95        g )N)r'   r'   )r'   r'   r   )rR   r   r|   r   r7   r   r   r   )rC   rD   r  s      r>   'test_gbr_degenerate_feature_importancesr    sO    
A
A
#
%
)
)!
/Cs//"BJJ1OPrq   c                     Sn Sn[         R                  " [         R                  " U5      U 5      n[         R                  " X!S-  5      n[         R                  " U* U* S-  5      n[         R                  X44   n[         R
                  R                  S5      nX&R                  SUR                  S9-   n[        SS9R                  XR5      n[        S	S9R                  XR5      n[        5       R                  XR5      n	UR                  U5      n
[         R                  " UR                  U5      U
:*  5      (       d   e[         R                  " XR                  U5      :*  5      (       d   eg
)z9Check that huber lies between absolute and squared error.r$   r'   r"   r  r!   )r   r   rs   r0   rt   N)rR   tilearangeminimumc_r   r   r/   rU   r   r7   rL   r   )n_repr)   rD   x1x2rC   r   gbt_absolute_error	gbt_hubergbt_squared_errorgbt_huber_predictionss              r>   test_huber_vs_mean_and_medianr    s'   EI
		)$e,A	A1}	%B	QB
Q	'B
bfA
))


#C	OO!!''O22A28HIMMaS)w7;;AAI1377=%--a066$,,Q/3HHIIII66'+D+DQ+GGHHHHrq   c                     [         R                  " 5          [         R                  " S5        [        [        R
                  " S5      S5      S:X  d   e[        [        R
                  " S5      [        R
                  " S5      5      S:X  d   e SSS5        [        R                  " [        SS9   [        [        R
                  " S5      S5        SSS5        g! , (       d  f       NQ= f! , (       d  f       g= f)	z0Test that _safe_divide handles division by zero.errorgu <7~r   rJ   Noverflowr2   g|=)	r   r   simplefilterr   rR   r   r4   r  RuntimeWarningrc   rq   r>   test_safe_divider
    s    		 	 	"g&BJJu-q1Q666BJJsORZZ_=BBB 
# 
nJ	7RZZ&. 
8	7	 
#	" 
8	7s   A7C/!C*
C'*
C8c                     Sn [         R                  " U 5      n[         R                  " XS-  5      n[         R                  " U* U * S-  5      n[         R                  X#4   n[	        SSS9R                  XA5      n[         R                  " / SQ5      n[        UR                  U5      USS9  [         R                  " / S	Q5      n[        UR                  S
S USS9  [         R                  " SS/U S-  5      n[	        SSS9R                  XAUS9n[         R                  " / SQ5      n[        UR                  U5      USSS9  [         R                  " / SQ5      n[        UR                  S
S USSS9  g)zTest squared error GBT backward compat on a simple dataset.

The results to compare against are taken from scikit-learn v1.2.0.
r'   r"   rr   r$   r1   rI   )
gѵO@"?g!m ?g_$  @gT )= @g6 @gN@glU@gu@g̀#@g'aK4!@:0yE>rtol)
geԩ(j>g􄾳<e>gkx?a>gzU:\>gWwV>gwR>gM>g0~JYH>gh1`C>gñح
@>r|  Nr!   rz   )
gh#?gq)u ?g	1~(  @g_Q @gi @gŪ@g3%a@g[A"@gd*@ggh9!@gư>gh㈵>)r  atol)
gwF$f>g۪5a>g:Z]>glF2UW>g!S>gO>g1&I>g͗KcD>gU}އ@>g:>r  gdy=)rR   r  r  r  r   r7   r  r   rL   rQ   r  )	r)   rD   r  r  rC   gbtpred_resulttrain_scoresample_weightss	            r>   (test_squared_error_exact_backward_compatr    sX   
 I
		)A	A1}	%B	QB
Q	'B
bfA
#s
K
O
OPQ
UC((	
K CKKNKd;((	
K C$$ST*KdC WWaWi1n5N
#s
K
O
O	N P C ((	
K CKKNKdF((	
K C$$ST*KdOrq   c                     Sn [         R                  " U 5      n[         R                  " XS-  5      n[         R                  " U* U * S-  5      n[         R                  X#4   n[	        SSSS9R                  XA5      n[        UR                  R                  R                  S5        [         R                  " / SQ5      n[        UR                  U5      US	S
9  [         R                  " / SQ5      n[        UR                  SS US	S
9  g)zxTest huber GBT backward compat on a simple dataset.

The results to compare against are taken from scikit-learn v1.2.0.
r'   r"   rt   r$   r/  )r1   rI   r   g  2%?)
gzݮj#?g7h?g31e @gZZ@gk @ga8t @gsu@g%e 	@g>T  @gx!@r  r  )
gi>gAɤ{j>g#$%t>gD9u>gߝ>g:"L(>gݏ|>gzԇx>gu}v>ggݱ@s>r|  N)rR   r  r  r  r   r7   r   r   clossdeltar  rL   rQ   r)   rD   r  r  rC   r  r  r  s           r>    test_huber_exact_backward_compatr    s     I
		)A	A1}	%B	QB
Q	'B
bfA
#s#
N
R
RST
XCCIIOO))+@A((	
K CKKNKd;((	
K C$$ST*KdCrq   c                     Sn [         R                  " U 5      S-  n[         R                  " XS-  5      n[         R                  " U* U * S-  5      n[         R                  X#4   n[	        SSS9R                  XA5      n[         R                  " SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//
5      n[        UR                  U5      USS	9  [         R                  " / S
Q5      n[        UR                  SS USS	9  g)zTest binary log_loss GBT backward compat on a simple dataset.

The results to compare against are taken from scikit-learn v1.2.0.
r'   r"   rG   r$   r  g
t?gr3>r  r  )
gu>?g5Ү^?g?g	i?gN?gv^q!?g2C6 ?gȍl?g1oEa	?g5C?r|  N
rR   r  r  r  r
   r7   r  r   r   rQ   r  s           r>   )test_binomial_error_exact_backward_compatr  <  s   
 I
		)q A	A1}	%B	QB
Q	'B
bfA
$*3
G
K
KA
QC((^,^,^,^,^,^,^,^,^,^,	
K C%%a(+DA((	
K C$$ST*KdCrq   c                     Sn [         R                  " U 5      S-  n[         R                  " XS-  5      n[         R                  " U* U * S-  5      n[         R                  X#4   n[	        SSS9R                  XA5      n[         R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/
5      n[        UR                  U5      USS9  [         R                  " / SQ5      n[        UR                  SS USS9  g)zTest multiclass log_loss GBT backward compat on a simple dataset.

The results to compare against are taken from scikit-learn v1.2.0.
r'   r%   r"   rG   r$   r  )k*om?grLD~>l-au>h,au>)g?~>r  r   r!  )0Q(>r"  WQ?g?m}w>)r"  r"  gX
}w>r#  r  r  )
g]R4>g{a\>g5|)>guB=>g@3Bݤ>g bC>gB2h>g@,y>g"y>g=>r|  Nr  r  s           r>   ,test_multinomial_error_exact_backward_compatr$  i  s    
 I
		)q A	A1}	%B	QB
Q	'B
bfA
$*3
G
K
KA
QC((LLLLLLLLLL	
K C%%a(+DA((	
K C$$ST*KdCrq   c                    [         R                  " SSS9u  pSSSSSU SS	.n[        S0 UD6n[        R                  " 5          [        R
                  " S
5        UR                  X5        SSS5        g! , (       d  f       g= f)aH  Test _update_terminal_regions denominator is not zero.

For instance for log loss based binary classification, the line search step might
become nan/inf as denominator = hessian = prob * (1 - prob) and prob = 0 or 1 can
happen.
Here, we create a situation were this happens (at least with roughly 80%) based
on the random seed.
r$   r   r\   r]   rv   r%   Nr"   )r_   ru   rI   rb   r^   r-   min_samples_leafr  rc   )r   rd   r
   r   r   r  r7   )rV   rC   rD   paramsr<   s        r>   test_gb_denominator_zeror(    sv     $$sDDA *F %
.v
.C		 	 	"g& 
#	"	"s   (A33
B)__doc__r  r   numpyrR   r4   numpy.testingr   sklearnr   sklearn.baser   sklearn.datasetsr   r   sklearn.dummyr   r	   sklearn.ensembler
   r   sklearn.ensemble._gbr   #sklearn.ensemble._gradient_boostingr   sklearn.exceptionsr   r   sklearn.linear_modelr   sklearn.metricsr   sklearn.model_selectionr   sklearn.pipeliner   sklearn.preprocessingr   sklearn.svmr   sklearn.utilsr   sklearn.utils._mockingr   sklearn.utils._param_validationr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r   r   GRADIENT_BOOSTING_ESTIMATORSrC   rD   rM   rN   r~   r}   r   r   r   	load_irisr8   permutationr:   r   permr9   r?   rE   markparametrizerY   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r%  r)  r+  rQ  rU  r_  ra  rj  rm  rs  rw  rz  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
  r  r  r  r$  r(  rc   rq   r>   <module>rE     s   
    )   A 9 R - > D 1 . 4 * '  , 8 A 
 O N :<UV  	"XBx"bAq6Aq6Aq6:"X1v1v aqu 	eiiA 
t{{''(IIdO	kk$( !<=& >&( !<=*S >*SZ !MNj1$ 2 O$N j1)4) 5 2)$)X 	"E51	#TYY<11,(3 .9M :M E(!NH#B)*G6 &BC- D-$'(T&2'''*': 46RS T 46RSL TL* .	#%78	#]3	#\2	"$67	"M2	"L1
 
 L@>8  <=G >G,  <=7 >7   <=5 >5  <=@ >@ +-IJ6 K6>  <= >  <=
? >
?  <=@ >@$  <=F >F&  <=7.H!; >!;H  <=> >>&  <=*@ >*@ZQ"Q#&". (DE F (DE1 F1* ,,6 13LM 7.H%7 %7P "<>W!X 4 4F#&(2V	D '	#%8/J	#%5G	"O^D
 	M  AA,8<,QI,/PPf ,D ,D^*DZ*DZrq   