
    _ndM                        d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlZddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl%m'Z' ddl%m(Z( ddl)m*Z* ddl+m,Z, ddl+m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 eegZ7ddgddgddgddgdd gd dggZ8g d!Z9ddgd d gd"d ggZ:g d#Z; ed$d%d&d'd()          \  Z<Z= ee=          Z=ej>        ?                    d          Z@ ejA                    ZBe@C                    eBjD        jE                  ZFeBjG        eF         eB_G        eBjD        eF         eB_D        ejH        I                    d*d+          d,             ZJejH        I                    d*d+          d-             ZKejH        I                    d*d.          ejH        I                    d/d0          d1                         ZLejH        I                    d/d0          ejH        I                    d2d3          d4                         ZMd5 ZNejH        I                    d6ee<e=feeBjG        eBjD        fg          d7             ZOd8 ZPd9 ZQd: ZRd; ZSd< ZTejH        U                    d=          d>             ZVd? ZWd@ ZXejH        I                    dAe7          dB             ZYdC ZZdD Z[dE Z\dF Z]dG Z^dH Z_dI Z`dJ ZadK ZbdL ZcdM ZddN ZeejH        I                    dOe7          dP             ZfejH        I                    dOe7          dQ             ZgejH        I                    dOe7          dR             ZhejH        I                    dOe7          dS             ZiejH        I                    dOe7          dT             ZjejH        I                    dOe7          dU             ZkejH        I                    dOe7          dV             ZlejH        I                    dOe7          dW             ZmejH        I                    dOe7          dX             ZnejH        I                    dOe7          dY             ZodZ ZpejH        I                    dOe7          d[             Zqd\ Zrd] Zsd^ Ztd_ ZuejH        I                    d`e7          da             ZvejH        I                    d`e7          db             Zwdc Zxdd Zyde Zzdf Z{e(ejH        I                    dgeef          ejH        I                    dhee	e
f          di                                     Z|ejH        I                    djeeg          dk             Z}dl Z~dm Zdn Zdo ZejH        I                    dpeee/feee/feee0fgg dqr          ds             Zdt Zdu Zdv Zdw ZejH        I                    dAeeg          dx             ZdS )yzP
Testing for the gradient boosting module (sklearn.ensemble.gradient_boosting).
    N)assert_allclose)
csr_matrix)
csc_matrix)
coo_matrix)expit)datasets)clone)make_classificationmake_regression)GradientBoostingClassifier)GradientBoostingRegressor)predict_stages)scale)mean_squared_error)train_test_split)check_random_state
tosequence)NoSampleWeightWrapper)assert_array_almost_equal)assert_array_equal)skip_if_32bit)InvalidParameterError)DataConversionWarning)NotFittedError)DummyClassifierDummyRegressor)make_pipeline)LinearRegression)NuSVR      )r!   r!   r!   r"   r"   r"      )r!   r"   r"   d         
      )	n_samples
n_featuresn_informativenoiserandom_statelosslog_lossexponentialc                 N   t          | d|          }t          j        t                    5  |                    t
                     d d d            n# 1 swxY w Y   |                    t          t                     t          |                    t
                    t                     dt          |j                  k    sJ |j        d d         |j        dd          z
  }t          j        |dk              sJ |                    t                    }|j        dk    sJ d S )Nr(   r/   n_estimatorsr.   r!   r"           )   r(   r"   )r   pytestraises
ValueErrorpredictTfitXyr   true_resultlenestimators_train_score_npanyapplyshape)r/   global_random_seedclflog_loss_decreaseleavess        Mlib/python3.11/site-packages/sklearn/ensemble/tests/test_gradient_boosting.pytest_classification_toyrM   >   sE    %1C  C 
z	"	"  A               GGAqMMMs{{1~~{333S_%%%%%%("-0@0DD6#s*+++++YYq\\F<:%%%%%%   AAAc                    t          j        d|          \  }}|d d         |dd          }}|d d         |dd          }}dd| |d}t          dddi|}	|	                    ||           t          ddd	i|}
|
                    ||           |	                    ||          |
                    ||          k     sJ d	d| |d
}t          dddi|}|                    ||           t          dddi|}|                    ||           |                    ||          |                    ||          k    sJ d S )N.  r*   r.     r"         ?)	max_depthlearning_rater/   r.   r5   r%      )r5   rU   r/   r.   rT   max_leaf_nodesr(    )r   make_hastie_10_2r   r=   score)r/   rH   r>   r?   X_trainX_testy_trainy_testcommon_paramsgbrt_100_stumpsgbrt_200_stumpsgbrt_stumpsgbrt_10_nodess                rL   test_classification_syntheticrd   S   s    $uCUVVVDAqh$%%VGh$%%VG *	 M 1SScS]SSO)))0SScS]SSO)))  00?3H3HQW3X3XXXXX
 *	 M -JJqJMJJKOOGW%%%.RRbRMRRMgw'''VV,,}/B/B66/R/RRRRRRR    )squared_errorabsolute_errorhuber	subsample)rS         ?c           
         t          j        t          t                              }d }d |d|z  fD ]}t	          d| d|d|d          }|                    t          t          |           |                    t                    }|j        dk    sJ |	                    t                    }t          t          |          }	|	dk     sJ |	 |}d S )	Nr#      r&   rj   )r5   r/   rT   ri   min_samples_splitr.   rU   sample_weight)r%   rl   g?)rD   onesrA   y_regr   r=   X_regrF   rG   r;   r   )
r/   ri   rH   rp   last_y_predro   regrK   y_predmses
             rL   test_regression_datasetrw   |   s    
 73u::DKa$h/   (+
 
 
 	uM:::5!!|y((((U## //Tzzzz" ? re   ro   )Nr"   c                    |dk    r+t          j        t          t          j                            }t          dd||           }|                    t          j        t          j        |           |                    t          j        t          j                  }|dk    sJ |	                    t          j                  }|j
        dk    sJ d S )Nr"   r%   r1   r5   r/   r.   ri   rn   ?)   r%   r$   )rD   rp   rA   iristargetr   r=   datarZ   rF   rG   )ri   ro   rH   rI   rZ   rK   s         rL   	test_irisr      s     DK 0 011
$'	  C GGDIt{-G@@@IIdi--E3;;;;YYty!!F<=((((((re   c                    t          |           }ddddd| d}t          j        d|d	          \  }}|d d
         |d d
         }}|d
d          |d
d          }}t          di |}	|	                    ||           t          ||	                    |                    }
|
dk     sJ t          j        d|          \  }}|d d
         |d d
         }}|d
d          |d
d          }}t          di |}	|	                    ||           t          ||	                    |                    }
|
dk     sJ t          j        d|          \  }}|d d
         |d d
         }}|d
d          |d
d          }}t          di |}	|	                    ||           t          ||	                    |                    }
|
dk     sJ d S )Nr%   r&   r#   皙?rf   )r5   rT   rm   rU   r/   r.     rS   r*   r.   r-   rV   g      @rQ   g     @g?rX   )	r   r   make_friedman1r   r=   r   r;   make_friedman2make_friedman3)rH   r.   regression_paramsr>   r?   r[   r]   r\   r^   rI   rv   s              rL   test_regression_syntheticr      s    &&899L*  "TTWXXXDAq#w$3$WGsttWagFF
#
8
8&7
8
8CGGGW
VS[[%8%8
9
9C9999 "TMMMDAq#w$3$WGsttWagFF
#
8
8&7
8
8CGGGW
VS[[%8%8
9
9C<<<< "TMMMDAq#w$3$WGsttWagFF
#
8
8&7
8
8CGGGW
VS[[%8%8
9
9C;;;;;;re   zGradientBoosting, X, yc                      |             }t          |d          rJ |                    ||           t          |d          sJ d S )Nfeature_importances_)hasattrr=   )GradientBoostingr>   r?   gbdts       rL   test_feature_importancesr      sW     Dt344444HHQNNN4/0000000re   c                 ~   t          d|           }t          j        t                    5  |                    t
                     d d d            n# 1 swxY w Y   |                    t          t                     t          |
                    t
                    t                     |                    t
                    }t          j        |dk              sJ t          j        |dk              sJ |j                            |                    d          d          }t          |t                     d S )Nr%   r5   r.   r6   rS   r"   axisr   )r   r8   r9   r:   predict_probar<   r=   r>   r?   r   r;   r@   rD   allclasses_takeargmax)rH   rI   y_probaru   s       rL   test_probability_logr      sD   
$#DV
W
W
WC	z	"	"  !               GGAqMMMs{{1~~{333 ""G6'S.!!!!!6'S.!!!!! \w~~1~55A>>Fv{+++++s   AAAc                      g d} t          dd          }d}t          j        t          |          5  |                    t
          t          |            d d d            d S # 1 swxY w Y   d S )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.matchrn   )r   r8   r9   r:   r=   r>   r?   )ro   rI   msgs      rL   $test_single_class_with_sample_weightr   	  s    &&&M
$#A
F
F
FC	C  
z	-	-	- 3 31M2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   #A##A'*A'c                  h   t          j        dd          \  } }t          |           }t          dd          }|                    | |           t          j        |j                                      dd          }d}t          j
        t          |          5  t          |j        ||j        |           d d d            n# 1 swxY w Y   t          j        |           }t          j
        t          d          5  t          |j        ||j        |           d d d            d S # 1 swxY w Y   d S )	Nr%   r"   rQ   r   r!   z3When X is a sparse matrix, a CSR format is expectedr   z X should be C-ordered np.ndarray)r   rY   r   r   r=   rD   zerosrG   reshaper8   r9   r:   r   rB   rU   asfortranarray)xr?   x_sparse_cscrI   rZ   err_msg	x_fortrans          rL    test_check_inputs_predict_stagesr     s    $sCCCDAqa==L
$#A
F
F
FCGGAqMMMHag''A..ECG	z	1	1	1 P Psc6GOOOP P P P P P P P P P P P P P P!!$$I	z)K	L	L	L M Ms	33DeLLLM M M M M M M M M M M M M M M M M Ms$   CC
C=D''D+.D+c                 V   t          j        d|           \  }}|d d         |dd          }}|d d         |dd          }}t          ddddd|           }|                    ||           |                    ||                    |                    }|d	k     sJ d
|z              d S )NrP   rQ   rR   r%      r#   r   )r5   rm   rT   rU   max_featuresr.   rj   zGB failed with deviance %.4f)r   rY   r   r=   _lossdecision_function)	rH   r>   r?   r[   r\   r]   r^   gbrtr1   s	            rL   test_max_feature_regressionr   $  s    $uCUVVVDAqh$%%VGh$%%VG%'  D 	HHWgzz&$"8"8"@"@AAHc>>>9HD>>>>>re   c                 t    |             j         j        }}t          |||          \  }}}}t          dddd|          }|                    ||           t          j        |j                  ddd         }	fd	|	D             }
|
d
         dk    sJ t          |
dd                   h dk    sJ dS )a  Test 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.   rh   r   r7   r%   )r/   rU   rW   r5   r.   Nr!   c                 *    g | ]}j         |         S rX   )feature_names).0s
californias     rL   
<listcomp>z6test_feature_importance_regression.<locals>.<listcomp>Q  s!    GGGqz/2GGGre   r   MedIncr"   r&   >   AveOccupLatitude	Longitude)	r~   r}   r   r   r=   rD   argsortr   set)fetch_california_housing_fxtrH   r>   r?   r[   r\   r]   r^   rt   
sorted_idxsorted_featuresr   s              @rL   "test_feature_importance_regressionr   8  s     .-//J?J-qA'7	1-( ( ($GVWf $'  C GGGWC455ddd;JGGGGJGGGO 1))))
 qs#$$(M(M(MMMMMMMre   z7ignore:`max_features='auto'` has been deprecated in 1.1c                     t          j        dd          \  } }| j        \  }}| d d         }|d d         }t          dd          }|                    ||           |j        t          t          j        |                    k    sJ t          dd          }|                    ||           |j        |k    sJ t          dd          }|                    ||           |j        t          |dz            k    sJ t          dd          }|                    ||           |j        t          t          j        |                    k    sJ t          dd	          }|                    ||           |j        t          t          j
        |                    k    sJ t          dd
| j        d         z            }|                    ||           |j        dk    sJ d S )NrP   r"   rQ   rR   auto)r5   r   333333?sqrtlog2g{Gz?)r   rY   rG   r   r=   max_features_intrD   r   r   r   )r>   r?   _r+   r[   r]   r   s          rL   test_max_feature_autor   ]  s    $u1EEEDAqGMAzhGhG%16JJJDHHWgRWZ%8%8!9!99999$!&IIIDHHWg++++$!#FFFDHHWgZ#%5!6!66666$!&IIIDHHWgRWZ%8%8!9!99999$!&IIIDHHWgRWZ%8%8!9!99999$!$QRBSTTTDHHWg""""""re   c                  $   t          j        ddd          \  } }| d d         |d d         }}| dd          }t                      }t          j        t
                    5  t          j        |                    |          t          j	                   d d d            n# 1 swxY w Y   |
                    ||           |                    |          }|                    |          D ]}|j        |j        k    sJ t          ||           d S )Nr   r"   rS   r   rV   dtype)r   r   r   r8   r9   r:   rD   fromiterstaged_predictfloat64r=   r;   rG   r   )r>   r?   r[   r]   r\   rI   ru   s          rL   test_staged_predictr     s_    "TMMMDAq#w$3$WGsttWF
#
%
%C	z	"	" B B
C&&v..bjAAAAB B B B B B B B B B B B B B B GGGW[[  F '' ' 'w&,&&&&&fa(((((s    4B  B$'B$c                     t          j        dd          \  } }| d d         |d d         }}| dd          |dd          }}t          d          }t          j        t
                    5  t          j        |                    |          t          j	                   d d d            n# 1 swxY w Y   |
                    ||           |                    |          D ]}|j        |j        k    sJ t          |                    |          |           |                    |          D ]3}|j        d         |j        d         k    sJ d	|j        d         k    sJ 4t          |                    |          |           d S )
Nr   r"   rQ   rV      r5   r   r   r#   )r   rY   r   r8   r9   r   rD   r   staged_predict_probar   r=   r   rG   r   r;   r   r   )	r>   r?   r[   r]   r\   r^   rI   ru   staged_probas	            rL   test_staged_predict_probar     s    $t!DDDDAq#w$3$WGsttWagFF
$"
5
5
5C	~	&	& H H
C,,V44BJGGGGH H H H H H H H H H H H H H H GGGW $$V,, , ,|v|+++++s{{6**F333 0088 * *|A,"4Q"77777L&q))))))c//77FFFFFs   +4B++B/2B/	Estimatorc                     t           j                            |          }|                    d          }d|d d df         z                      t
                    dz   } |             }|                    ||           dD ]}t          |d|z   d           }|t          j	        d	          5  t           ||                    }d d d            n# 1 swxY w Y   d|d         d d <   t          j        |d         dk              sJ d S )
N)r(   r$   )sizer&   r   r"   )r;   r   r   staged_T)record)rD   randomRandomStateuniformastyper   r=   getattrwarningscatch_warningslistr   )	r   rH   rngr>   r?   	estimatorfuncstaged_funcstaged_results	            rL   test_staged_functions_defensiver     s`    )

 2
3
3C!!A	
Qqqq!tWS!!A%A	IMM!QA - -iT)94@@$D111 	1 	1 Q00M	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1avmA&!+,,,,,,- -s   0CC	C	c                     t          dd          } |                     t          t                     t	          |                     t                    t                     dt          | j	                  k    sJ 	 dd l
}n# t          $ r dd l}Y nw xY w|                    | |j                  }d } |                    |          } t	          |                     t                    t                     dt          | j	                  k    sJ d S )Nr%   r"   r   r   )protocol)r   r=   r>   r?   r   r;   r<   r@   rA   rB   cPickleImportErrorpickledumpsHIGHEST_PROTOCOLloads)rI   r   serialized_clfs      rL   test_serializationr     s   
$#A
F
F
FCGGAqMMMs{{1~~{333#co&&&&&&         \\#0G\HHN
C
,,~
&
&Cs{{1~~{333#co&&&&&&&&s   :A? ?BBc            	         t          dd          } t          j        t                    5  |                     t
          t          j        t          t
                                         d d d            n# 1 swxY w Y   t          dd          } |                     t
          t          j        t          t
                                         | 
                    t                              d          g           t          t          j        dt          j                  | 
                    t                              d          g                     d S )Nr%   r"   r   r#   )r"   r   )r   r8   r9   r:   r=   r>   rD   rp   rA   r   r;   r   randr   r   rI   s    rL   test_degenerate_targetsr     s0   
$#A
F
F
FC 
z	"	" $ $273q66??###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $1
E
E
ECGGArws1vvKK!rwt2:666SXXa[[M8R8RSSSSSs   A A77A;>A;c                 \   t          dddd|           }|                    t          t                     |                    t                    }t          ddd|           }|                    t          t                     |                    t                    }t          ||           d S )Nr%   quantiler&   rj   )r5   r/   rT   alphar.   rg   )r5   r/   rT   r.   )r   r=   rr   rq   r;   r   )rH   clf_quantile
y_quantileclf_aey_aes        rL   test_quantile_lossr     s    ,'  L UE"""%%e,,J&'	  F JJue>>%  DJ%%%%%re   c            	      z   t          dd          } t          t          t          t                              }|                     t          |           t          |                     t                    t          t          t          t                                         dt          | j                  k    sJ d S )Nr%   r"   r   )r   r   mapstrr?   r=   r>   r   r;   r<   r@   rA   rB   )rI   symbol_ys     rL   test_symbol_labelsr    s    
$#A
F
F
FC#c1++&&HGGAxs{{1~~z#c;2G2G'H'HIII#co&&&&&&&&re   c                  r   t          dd          } t          j        t          t          j                  }|                     t          |           t          |                     t                    t          j        t          t          j                             dt          | j                  k    sJ d S Nr%   r"   r   r   )r   rD   asarrayr?   float32r=   r>   r   r;   r<   r@   rA   rB   )rI   float_ys     rL   test_float_class_labelsr
    s    
$#A
F
F
FCj"*---GGGAws{{1~~rz+RZ'P'P'PQQQ#co&&&&&&&&re   c                     t          dd          } t          j        t          t          j                  }|d d t          j        f         }d}t          j        t          |          5  | 	                    t          |           d d d            n# 1 swxY w Y   t          |                     t                    t                     dt          | j                  k    sJ d S )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().r   )r   rD   r  r?   int32newaxisr8   warnsr   r=   r>   r   r;   r<   r@   rA   rB   )rI   y_warn_msgs      rL   test_shape_yr    s   
$#A
F
F
FC	ARX	&	&	&B	AAArzM	B	! 
 
+8	<	<	<  2              s{{1~~{333#co&&&&&&&&s   *BBBc                     t          j        t                    } t          dd          }|                    | t
                     t          |                    t                    t                     dt          |j                  k    sJ t          j        t                    } t          dd          }|                    | t
                     t          |                    t                    t                     dt          |j                  k    sJ t          j        t
          t           j                  }t          j        |          }t          dd          }|                    t          |           t          |                    t                    t                     dt          |j                  k    sJ t          j        t
          t           j                  }t          j        |          }t          dd          }|                    t          |           t          |                    t                    t                     dt          |j                  k    sJ d S r  )rD   r   r>   r   r=   r?   r   r;   r<   r@   rA   rB   ascontiguousarrayr  r  )X_rI   r  s      rL   test_mem_layoutr  (  s   		1		B
$#A
F
F
FCGGBNNNs{{1~~{333#co&&&&&&		a	 	 B
$#A
F
F
FCGGBNNNs{{1~~{333#co&&&&&&	ARX	&	&	&B		b	!	!B
$#A
F
F
FCGGArNNNs{{1~~{333#co&&&&&&	ARX	&	&	&B		2		B
$#A
F
F
FCGGArNNNs{{1~~{333#co&&&&&&&&re   c                      t          ddd          } |                     t          t                     | j        j        d         dk    sJ t          | j        d d         t          j        g d          d	           d S )
Nr%   r"   rj   r5   r.   ri   r   r   )gRQ?g333333?gQ?gQg)\(r#   )decimal)	r   r=   r>   r?   oob_improvement_rG   r   rD   arrayr   s    rL   test_oob_improvementr  E  s    
$#AQT
U
U
UCGGAqMMM%a(C////RaR "(+K+K+K"L"LVW     re   c                      t          ddd          } |                     t          t                     t	          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S )Nr%   r"   rS   r  )r   r=   r>   r?   r8   r9   AttributeErrorr  r   s    rL   test_oob_improvement_raiser  P  s    
$#AQT
U
U
UCGGAqMMM	~	&	&                   s   A!!A%(A%c                     t          dddd          } |                     t          j        t          j                   |                     t          j        t          j                  }|dk    sJ | j        j        d         | j        k    sJ d S )Nr%   r1   r"   rj   ry   rz   r   )	r   r=   r|   r~   r}   rZ   r  rG   r5   )rI   rZ   s     rL   test_oob_multilcass_irisr   X  s    
$zS  C GGDIt{###IIdi--E3;;;;%a(C,<<<<<<<re   c                     ddl m}  dd l}|j        } |             |_        t	          dddd          }|                    t          t                     |j        }||_        |                    d           |	                                
                                }d                    dgd	gd
z  z             dz  }||k    sJ t          d |                                D                       }d|k    sJ d S )Nr   StringIOr%   r"   皙?)r5   r.   verboseri    %10s%16sr$   )Iter
Train LosszOOB ImproveRemaining Timec              3      K   | ]}d V  dS r"   NrX   r   ls     rL   	<genexpr>z&test_verbose_output.<locals>.<genexpr>  "      88!888888re      ior#  sysstdoutr   r=   r>   r?   seekreadlinerstripjoinsum	readlinesr#  r5  
old_stdoutrI   verbose_outputheadertrue_headern_liness           rL   test_verbose_outputrC  h  s   JJJJCJ
$q!s  C GGAqMMMZNCJ $$&&--//F((F8vhl233 7 K &    88^557788888GWre   c                     ddl m}  dd l}|j        } |             |_        t	          ddd          }|                    t          t                     |j        }||_        |                    d           |	                                
                                }d                    dgd	gdz  z             d
z  }||k    sJ t          d |                                D                       }d|k    sJ d S )Nr   r"  r%   r"   r#   )r5   r.   r%  r&  r'  r(  )r)  r*  r+  c              3      K   | ]}d V  dS r-  rX   r.  s     rL   r0  z+test_more_verbose_output.<locals>.<genexpr>  r1  re   r3  r=  s           rL   test_more_verbose_outputrF    s   JJJJCJ
$#Aq
Q
Q
QCGGAqMMMZNCJ $$&&--//F((F8vhl233 7 K
 &    88^557788888G'>>>>>>re   Clsc                 |   t          j        d|          \  }} | dd|          }|                    ||            | ddd|          }|                    ||           |                    d           |                    ||           | t          u r8t          |                    |          |                    |                     d S t          |                    |          |                    |                     t          |                    |          |                    |                     d S )	Nr%   rQ   rV   r"   r5   rT   r.   Tr5   rT   
warm_startr.   r   )	r   rY   r=   
set_paramsr   r   r;   r   r   rG  rH   r>   r?   estest_wss         rL   test_warm_startrP    s9    $sASTTTDAq
#3!:L
M
M
MCGGAqMMMSA$EW  F JJq!
3'''
JJq!
'''q))3;;q>>::::: 	6>>!,,ckk!nn===,,Q//1B1B11E1EFFFFFre   c                    t          j        d|          \  }} | dd|          }|                    ||            | ddd|          }|                    ||           |                    d           |                    ||           t	          |                    |          |                    |                     d S )	Nr%   rQ   i,  r"   rI  TrJ  r   )r   rY   r=   rL  r   r;   rM  s         rL   test_warm_start_n_estimatorsrR    s     $sASTTTDAq
#3!:L
M
M
MCGGAqMMMSA$EW  F JJq!
3'''
JJq!FNN1%%s{{1~~66666re   c                 f   t          j        dd          \  }} | ddd          }|                    ||           |                    dd           |                    ||           |j        d	         j        dk    sJ t          dd
          D ]}|j        | df         j        dk    sJ d S )Nr%   r"   rQ   Tr5   rT   rK  n   r#   r5   rT   r   r      r   )r   rY   r=   rL  rB   rT   range)rG  r>   r?   rN  is        rL   test_warm_start_max_depthr[    s     $sCCCDAq
#3!
=
=
=CGGAqMMMNNqN111GGAqMMM ?4 *a////1b\\ 5 5r1u%/1444445 5re   c                    t          j        dd          \  }} | dd          }|                    ||            | ddd          }|                    ||           |                    d           |                    ||           t	          |                    |          |                    |                     d S )	Nr%   r"   rQ   rV  TrT  F)rK  )r   rY   r=   rL  r   r;   )rG  r>   r?   rN  est_2s        rL   test_warm_start_clearr^    s     $sCCCDAq
#3!
,
,
,CGGAqMMMCSA$???E	IIaOOO	&&&	IIaOOOemmA..A?????re   c                 <   t          j        dd          \  }} | ddd          }|                    ||           |                    d           t	          j        t                    5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr%   r"   rQ   TrT  c   r   )r   rY   r=   rL  r8   r9   r:   rG  r>   r?   rN  s       rL   $test_warm_start_smaller_n_estimatorsrb    s     $sCCCDAq
#3!
=
=
=CGGAqMMMNNN###	z	"	"  1                 s   -BBBc                 l   t          j        dd          \  }} | dd          }|                    ||           t          |          }|                    |j        d           |                    ||           t          |                    |          |                    |                     d S )Nr%   r"   rQ   rV  Tr5   rK  )r   rY   r=   r	   rL  r5   r   r;   )rG  r>   r?   rN  est2s        rL   "test_warm_start_equal_n_estimatorsrf    s     $sCCCDAq
#3!
,
,
,CGGAqMMM::DOO!1dOCCCHHQNNNdll1oos{{1~~>>>>>re   c                    t          j        dd          \  }} | ddd          }|                    ||           |                    dd           |                    ||           t	          |j        d d         t          j        d                     t	          |j        d	d          d
k    t          j        dt                               d S )Nr%   r"   rQ   TrT  rU  rj   )r5   ri   ir6   r(   r   )	r   rY   r=   rL  r   r  rD   r   boolra  s       rL   test_warm_start_oob_switchri    s     $sCCCDAq
#3!
=
=
=CGGAqMMMNNsN333GGAqMMMs+DSD128C==AAAs+CDD1S8"(2T:R:R:RSSSSSre   c                 z   t          j        dd          \  }} | dddd          }|                    ||            | ddddd          }|                    ||           |                    d	           |                    ||           t	          |j        d d         |j        d d                    d S )
Nr%   r"   rQ   rV   rj   )r5   rT   ri   r.   Tr5   rT   ri   r.   rK  r   )r   rY   r=   rL  r   r  )rG  r>   r?   rN  rO  s        rL   test_warm_start_oobrl    s     $sCCCDAq
#3!s
K
K
KCGGAqMMMSA1QU  F JJq!
3'''
JJq!f5dsd;S=QRVSVRV=WXXXXXre   c                    t          j        dd          \  }}t          t          t          g} | ddddd          }|                    ||           |                    |           |                    d           |                    ||           |                    |          }|D ]} ||          } | ddddd          }|                    ||           |                    |           |                    d           |                    ||           |                    |          }	t          |j	        d d         |j	        d d                    t          ||	           d S )	Nr%   r"   rQ   rj   Trk  rV   r   )
r   rY   r   r   r   r=   r;   rL  r   r  )
rG  r>   r?   sparse_matrix_type	est_densey_pred_densesparse_constructorX_sparse
est_sparsey_pred_sparses
             rL   test_warm_start_sparseru  "  s    $sCCCDAq$j*=A1QU  I MM!Qac***MM!Q$$Q''L0 ? ?%%a((S
 
 

 	x###13///x###"**1--!&tt,j.I$3$.O	
 	
 	
 	",>>>>'? ?re   c                    t          j        d|          \  }} | d|d          } | d|d          }|                    ||           |                    d           |                    ||           t	          j        |          }|                    ||           |                    d           |                    ||           t          |                    |          |                    |                     d S )Nr%   rQ   r"   T)r5   r.   rK  rX  r   )r   rY   r=   rL  rD   r   r   r;   )rG  rH   r>   r?   est_cest_fortran	X_fortrans          rL   test_warm_start_fortranrz  F  s    $sASTTTDAqCQ-?DQQQE#13ERVWWWK	IIaOOO	"%%%	IIaOOO!!$$IOOIq!!!+++OOIq!!!EMM!$$k&9&9!&<&<=====re   c                     | dk    rdS dS )z#Returns True on the 10th iteration.	   TFrX   )rZ  rN  localss      rL   early_stopping_monitorr~  Z  s    Avvture   c                    t          j        dd          \  }} | dddd          }|                    ||t                     |j        dk    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |	                    d
           |                    ||           |j        d
k    sJ |j        j        d         d
k    sJ |j        j        d         d
k    sJ  | ddddd          }|                    ||t                     |j        dk    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |j        j        d         d	k    sJ |	                    d
d           |                    ||           |j        d
k    sJ |j        j        d         d
k    sJ |j        j        d         d
k    sJ |j        j        d         d
k    sJ d S )Nr%   r"   rQ   r   rj   )r5   rT   r.   ri   )monitorr   r(   rl   r   T)r5   rT   r.   ri   rK  Frd  )
r   rY   r=   r~  r5   rB   rG   rC   r  rL  ra  s       rL   test_monitor_early_stoppingr  b  sa    $sCCCDAq
#2c
J
J
JCGGAq0G111r!!!!? #r))))!!$****%a(B.... NNN###GGAqMMMr!!!!? #r))))!!$****
#11PT  C GGAq0G111r!!!!? #r))))!!$****%a(B.... NNuN555GGAqMMMr!!!!!!$****? #r))))%a(B......re   c                  2   ddl m}  t          j        dd          \  }}d}t	          dd d|dz             }|                    ||           |j        d	         j        }|j        |k    sJ |j	        |j	        | k             j
        d         |dz   k    sJ d S )
Nr   	TREE_LEAFr%   r"   rQ   r&   r   r5   rT   r.   rW   rW  )sklearn.tree._treer  r   rY   r   r=   rB   tree_rT   children_leftrG   )r  r>   r?   krN  trees         rL   test_complete_classificationr    s    ,,,,,,$sCCCDAq	A
$4aA  C GGAqMMM?4 &D>Qd0I=>DQG1q5PPPPPPre   c                      ddl m}  d}t          dd d|dz             }|                    t          t
                     |j        d         j        }|j        |j        | k             j	        d         |dz   k    sJ d S )Nr   r  r&   r   r"   r  )r!   r   )
r  r  r   r=   rr   rq   rB   r  r  rG   )r  r  rN  r  s       rL   test_complete_regressionr    s    ,,,,,,	A
#4aA  C GGE5?5!'Dd0I=>DQG1q5PPPPPPre   c                    t          d                              t          t                    }t	          |                    t                    t                    }t          dd| dd          }|                    t          t                     |                    t                    }t	          t          |          }||k     sJ d S )Nmean)strategyr   r"   zerorj   )r5   rT   r.   initrU   )r   r=   rr   rq   r   r;   r   )rH   baselinemse_baselinerN  ru   mse_gbdts         rL   test_zero_estimator_regr    s     v...225%@@H%h&6&6u&=&=uEEL
#'  C GGE5[[F!%00Hl""""""re   c                    t           j        }t          j        t           j                  }t          dd| d          }|                    ||           |                    ||          dk    sJ |dk    }d||<   d|| <   t          dd| d          }|                    ||           |                    ||          dk    sJ d S )Nr   r"   r  )r5   rT   r.   r  gQ?r   )r|   r~   rD   r  r}   r   r=   rZ   )rH   r>   r?   rN  masks        rL   test_zero_estimator_clfr    s    	A
A
$13EF  C GGAqMMM99Q??T!!!! 6DAdGAteH
$13EF  C GGAqMMM99Q??T!!!!!!re   GBEstimatorc                 :   t          j        dd          \  }}d} | d|                              ||          }|j        d         j        }|j        dk    sJ  | d                              ||          }|j        d         j        }|j        dk    sJ d S )Nr%   r"   rQ   r&   )rT   rW   rW  )rT   )r   rY   r=   rB   r  rT   )r  r>   r?   r  rN  r  s         rL   test_max_leaf_nodes_max_depthr    s     $sCCCDAq	A
+!
4
4
4
8
8A
>
>C?4 &D>Q
+
"
"
"
&
&q!
,
,C?4 &D>Qre   c                     t          j        dd          \  }} | d          }|                    ||           |j        j        D ]}|j        dk    sJ d S )Nr%   r"   rQ   r   )min_impurity_decrease)r   rY   r=   rB   flatr  )r  r>   r?   rN  r  s        rL   test_min_impurity_decreaser    su    $sCCCDAq
+C
0
0
0CGGAqMMM$ 1 1 )S000001 1re   c                      t          dd          } |                     ddgddggddg           | j        j        d         dk    sJ |                     ddgddggddg           | j        j        d         dk    sJ d S )Nr(   Trd  r   r"   r#   r$   )r   r=   rB   rG   r   s    rL   %test_warm_start_wo_nestimators_changer    s     %"
F
F
FCGGaVaVq!f%%%? #r))))GGaVaVq!f%%%? #r))))))re   c                 ,   t          dd|           }t          j        t                    5  |                    t
                     d d d            n# 1 swxY w Y   |                    t          t                     t          |
                    t
                    t                     |                    t
                    }t          j        |dk              sJ t          j        |dk              sJ |                    t
                                                    }t!          |d d df         t#          d|z                       |j                            |                    d          d	          }t          |t                     d S )
Nr2   r%   r4   r6   rS   r"   r#   r   r   )r   r8   r9   r:   r   r<   r=   r>   r?   r   r;   r@   rD   r   r   ravelr   r   r   r   r   )rH   rI   r   rZ   ru   s        rL   test_probability_exponentialr    s   
$;M  C 
z	"	"  !               GGAqMMMs{{1~~{333 ""G6'S.!!!!!6'S.!!!!!!!!$$**,,EGAAAqDM5U#3#3444 \w~~1~55A>>Fv{+++++rN   c                      ddgddgddgddgg} g d}g d}dD ]P}t          dd|          }|                    | ||	           |                    ddgg          d         d
k    sJ Qd S )Nr"   r   r   r   r"   r   r   r   r"   r"   )rh   rf   rg   r   rS   r#   )rU   r5   r/   rn   rj   )r   r=   r;   r>   r?   ro   r/   gbs        rL   *test_non_uniform_weights_toy_edge_case_regr    s    
Q!Q!Q!Q(AA LLMH - -&SqtTTT
q!=111zzAq6(##A&,,,,,- -re   c                      ddgddgddgddgg} g d}g d}dD ]R}t          d|          }|                    | ||           t          |                    ddgg          dg           Sd S )	Nr"   r   r  r  r0   r   )r5   r/   rn   )r   r=   r   r;   r  s        rL   *test_non_uniform_weights_toy_edge_case_clfr    s    
Q!Q!Q!Q(AA LLM+ 6 6'QTBBB
q!=1112::1vh//!55556 6re   EstimatorClasssparse_matrixc                 R   t          j        dddd          \  }}|d d df         } ||          } | dddd	                              ||          } | dddd	                              ||          }t          |                    |          |                    |                     t          |                    |          |                    |                     t          |j        |j                   t          |                    |          |                    |                     t          |                    |          |                    |                     t          | t                    r$t          |	                    |          |	                    |                     t          |
                    |          |
                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                    D ]\  }}t          ||           d S d S )
Nr   2   r"   r   )r.   r*   r+   	n_classesr(   r#   gHz>)r5   r.   rT   r  )r   make_multilabel_classificationr=   r   rF   r;   r   
issubclassr   r   predict_log_probar   zipstaged_decision_function)	r  r  r?   r>   rr  densesparse
res_sparseress	            rL   test_sparse_inputr  %  s    2"b  DAq 	
!!!Q$A}QHNa1D  	c!Qii 
 ^a1D  	c(A  fll1oou{{1~~>>>fnnQ//q1A1ABBBf95;UVVVfnnX66a8H8HIIIemmH55v~~a7H7HIII."<== 7!&"6"6q"9"95;N;Nq;Q;QRRR!$$Q'')@)@)C)C	
 	
 	
 	"$$X..0H0H0K0K	
 	
 	
 	"##H--v/G/G/J/J	
 	
 	
  #++H55++A.. 
  
 	7 	7OJ &j#6666!7 7	7 	7re   GradientBoostingEstimatorc                    t          dd          \  }}d} | |ddddd          } | |ddddd	          }t          ||d
          \  }}}}	|                    ||           |                    ||           |j        |j        cxk     r|k     sn J |                    ||	          dk    sJ |                    ||	          dk    sJ d S )N  r   rQ   r(   r   r$   *   )r5   n_iter_no_changerU   rT   r.   tolgMbP?r   gffffff?)r
   r   r=   n_estimators_rZ   )
r  r>   r?   r5   gb_large_tolgb_small_tolr[   r\   r]   r^   s
             rL   %test_gradient_boosting_early_stoppingr  R  s1    A>>>DAqL,,!  L -,!  L (812'N'N'N$GVWfWg&&&Wg&&&%(BQQQQ\QQQQQQff--3333ff--333333re   c                     t          dd          \  } }t          dddd          }|                    | |           t          d	ddd          }|                    | |           |j        dk    sJ |j        d	k    sJ d S )
Nr  r   rQ   r  r   r$   r  )r5   rU   rT   r.   rl   )r
   r   r=   r   r  )r>   r?   gbcgbrs       rL   -test_gradient_boosting_without_early_stoppingr  x  s     A>>>DAq
$sab  C GGAqMMM
#sab  C GGAqMMM """"""""""re   c                  `   t          dd          \  } }t          dddddd	          }t          |                              d
          }t          |                              d          }t	          dddddd          }t          |                              d
          }t          |                              d          }t          | |d          \  }}	}
}|                    ||
           |                    ||
           |j        |j        k    sJ |                    ||
           |                    ||
           |j        |j        k    sJ |                    ||
           |                    ||
           |j        |j        k     sJ |j        |j        k     sJ d S )Nr  r   rQ   r%   r(   r   r$   r  )r5   r  validation_fractionrU   rT   r.   r   )r  r   r  )r5   r  rU   rT   r  r.   r   )r
   r   r	   rL  r   r   r=   r  )r>   r?   r  gbc2gbc3r  gbr2gbr3r[   r\   r]   r^   s               rL   *test_gradient_boosting_validation_fractionr    s   A>>>DAq
$  C ::  S 99D::  " 55D
#  C ::  S 99D::  " 55D'712'N'N'N$GVWfGGGWHHWg 22222GGGWHHWg 22222 	HHWgHHWgt11111t1111111re   c                      ddgddgddgddgg} g d}t          d          }t          j        t          d	          5  |                    | |           d d d            d S # 1 swxY w Y   d S )
Nr"   r#   r$   r&   r   )r   r   r   r"   r  z0The least populated class in y has only 1 memberr   r   r8   r9   r:   r=   )r>   r?   r  s      rL   test_early_stopping_stratifiedr    s    
Q!Q!Q!Q(AA
$a
8
8
8C	L
 
 
   	1                 s   A""A&)A&c                  $    t          dd          S )Nr$   r"   )r  n_clusters_per_class)r
   rX   re   rL   _make_multiclassr    s    CCCCre   z!gb, dataset_maker, init_estimator)zbinary classificationzmulticlass classification
regression)idsc                     |            \  }}t           j                            |                              d          } |            } | |                              |||           t           |                      } | |                              ||           t          j        t          d          5   | |                              |||           d d d            d S # 1 swxY w Y   d S )Nr%   r  rn   z*estimator.*does not support sample weightsr   )	rD   r   r   r   r=   r   r8   r9   r:   )r  dataset_makerinit_estimatorrH   r>   r?   ro   init_ests           rL    test_gradient_boosting_with_initr    s^   " =??DAqI))*<==BB3GGM ~HBH!Qm<<< %^^%5%566HBH!Q	z)U	V	V	V A A
a-@@@A A A A A A A A A A A A A A A A A As   >#C..C25C2c            	         t          d          \  } }t          t                                }t          |          }|                    | |           t          j        t          d          5  |                    | |t          j	        | j
        d                              d d d            n# 1 swxY w Y   d}d| d	}t          j        t          t          j        |                    5  t          d
|          }t          |          }|                    | |t          j	        | j
        d                              d d d            d S # 1 swxY w Y   d S )Nr   r   r  z>The initial estimator Pipeline does not support sample weightsr   rn   g      ?zIThe 'nu' parameter of NuSVR must be a float in the range (0.0, 1.0]. Got z	 instead.r   )gammanu)r   r   r   r   r=   r8   r9   r:   rD   rp   rG   r   reescaper   )r>   r?   r  r  
invalid_nur   s         rL   )test_gradient_boosting_with_init_pipeliner    s    ***DAq)++,,D	"	-	-	-BFF1aLLL	N
 
 
 8 8 	q!27171:#6#6777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 J	8",	8 	8 	8  
,BIg4F4F	G	G	G 8 86j111&D111
q!27171:#6#6777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s%   06B22B69B62AEEEc                     dggdz  } ddgdgdz  z   }t          ddd          }t          j        t          d	          5  |                    | |           d d d            n# 1 swxY w Y   t          ddd
          }d S )Nr"   r(   r   r'   r   r$  )r  r.   r  z0The training data after the early stopping splitr   g?r  )r>   r?   r  s      rL   test_early_stopping_n_classesr    s     
A	
A!qA	#
 
 
B 
L
 
 
   	q!               
$
 
 
BBBs    A##A'*A'c                      t          j        d          } t          j        d          }t                                          | |          }t          |j        t          j        dt           j                             d S )N)r(   r(   )r(   r(   r   )rD   r   rp   r   r=   r   r   r   )r>   r?   r  s      rL   'test_gbr_degenerate_feature_importancesr    sc    
A
A
#
%
%
)
)!Q
/
/Cs/"BJ1O1O1OPPPPPre   c                     t          dd          } t          j        t          d          5  |                     t
          t                     d d d            n# 1 swxY w Y   t          dd          }|                    t
          t                     t          |                     t
                    |                    t
                               d S )Ndeviancer   )r/   r.   z$The loss.* 'deviance' was deprecatedr   r1   )	r   r8   r  FutureWarningr=   r>   r?   r   r;   )est1re  s     rL   test_loss_deprecatedr  "  s    %:AFFFD	m+R	S	S	S  A               &:AFFFDHHQNNNDLLOOT\\!__55555s   !AA!Ac                    t          j        ddgddgg          }t          j        ddg          } |                                 ||          }t          j        t
          d          5  |j         d d d            d S # 1 swxY w Y   d S )Nr"   r#   r$   r&   r   z`loss_` was deprecatedr   )rD   r  r=   r8   r  r  loss_)r   r>   r?   rN  s       rL   test_loss_attribute_deprecationr  .  s     	1a&1a&!""A
!QA
)++//!Q

C	m+C	D	D	D  		                 s   *A??BB)__doc__r  r   numpyrD   numpy.testingr   scipy.sparser   r   r   scipy.specialr   r8   sklearnr   sklearn.baser	   sklearn.datasetsr
   r   sklearn.ensembler   r   #sklearn.ensemble._gradient_boostingr   sklearn.preprocessingr   sklearn.metricsr   sklearn.model_selectionr   sklearn.utilsr   r   sklearn.utils._mockingr   sklearn.utils._testingr   r   r   sklearn.utils._param_validationr   sklearn.exceptionsr   r   sklearn.dummyr   r   sklearn.pipeliner   sklearn.linear_modelr   sklearn.svmr   GRADIENT_BOOSTING_ESTIMATORSr>   r?   r<   r@   rr   rq   r   r   r   	load_irisr|   permutationr}   r   permr~   markparametrizerM   rd   rw   r   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r   r   r  r
  r  r  r  r  r   rC  rF  rP  rR  r[  r^  rb  rf  ri  rl  ru  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  rX   re   rL   <module>r     s
    
			      ) ) ) ) ) ) # # # # # # # # # # # # # # # # # #                    A A A A A A A A 7 7 7 7 7 7 6 6 6 6 6 6 > > > > > > ' ' ' ' ' ' . . . . . . 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8 8 8 8 8 < < < < < < 5 5 5 5 5 5 0 0 0 0 0 0 A A A A A A 4 4 4 4 4 4 - - - - - - 9 9 9 9 9 9 9 9 * * * * * * 1 1 1 1 1 1       !;<UV  	"XBx"bAq6Aq6Aq6:"X1v1vjj aq  u 	eiA x
t{'((IdO	k$ !<==& & >=&( !<==%S %S >=%SP !MNNj11$ $ 21 ON$N j11)44) ) 54 21)$) ) )X 	"E51	#TY< 1 1 1, , ,(3 3 3M M M E E E(!N !N !NJ UVV# # WV#B) ) )*G G G6 &BCC- - DC-$' ' '(T T T& & &2' ' '' ' '' ' '*' ' ':    = = =   @  8  <==G G >=G,  <==7 7 >=7   <==5 5 >=5  <==@ @ >=@  <==  >=  <==
? 
? >=
?  <==
T 
T >=
T  <==Y Y >=Y   <== ?  ? >= ?F  <==> > >=>&    <==!/ !/ >=!/HQ Q Q"Q Q Q# # #&" " ". (DEE  FE (DEE1 1 FE1* * *, , ,0- - -6 6 6 13LM  :z:*NOO%7 %7 PO  
%7P "<>W!X  4  4  4F# # #&(2 (2 (2V	 	 	D D D '	#%8/J	#%5G	"O^D
 	MLL   A A A,8 8 8<  ,Q Q Q6 6 6 ,.GH     re   