Ë
    ÷Q(h‰å  ã            
       óÂ  — d Z ddl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mZ ddlmZmZ ddlmZ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+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5 eegZ6ddgddgddgddgddgddggZ7g d¢Z8ddgddgddggZ9g d¢Z: eddd d!d"¬#«      \  Z;Z< e%e<«      Z<ejz                  j}                  d«      Z? e	j€                  «       ZAe?j…                  eAj†                  jˆ                  «      ZEeAjŒ                  eE   eA_F        eAj†                  eE   eA_C        d$„ ZGd%„ ZHej’                  j•                  d&d'«      d(„ «       ZKej’                  j•                  d&d'«      d)„ «       ZLej’                  j•                  d&d*«      ej’                  j•                  d+d,«      d-„ «       «       ZMej’                  j•                  d+d,«      ej’                  j•                  d.d/«      d0„ «       «       ZNd1„ ZOej’                  j•                  d2ee;e<feeAjŒ                  eAj†                  fg«      d3„ «       ZPd4„ ZQd5„ ZRej’                  j•                  d6e4«      d7„ «       ZSd8„ ZTd9„ ZUd:„ ZVd;„ ZWd<„ ZXej’                  j•                  d=e6«      d>„ «       ZYd?„ ZZd@„ Z[dA„ Z\dB„ Z]dC„ Z^dD„ Z_dE„ Z`ej’                  j•                  dFe6«      dG„ «       Zaej’                  j•                  dFe6«      dH„ «       Zbej’                  j•                  dIedJfedKfedLfedJfedKfedLfg«      dM„ «       ZcdN„ ZddO„ ZedP„ Zfej’                  j•                  dQe6«      dR„ «       Zgej’                  j•                  dQe6«      dS„ «       Zhej’                  j•                  dQe6«      dT„ «       Ziej’                  j•                  dQe6«      dU„ «       Zjej’                  j•                  dVe6«      dW„ «       Zkej’                  j•                  dQe6«      dX„ «       Zlej’                  j•                  dQe6«      dY„ «       Zmej’                  j•                  dQe6«      dZ„ «       Znej’                  j•                  dQe6«      d[„ «       Zoej’                  j•                  dQe6«      ej’                  j•                  d\e3e4z   e5z   «      d]„ «       «       Zpej’                  j•                  dQe6«      d^„ «       Zqd_„ Zrej’                  j•                  dQe6«      d`„ «       Zsda„ Ztdb„ Zudc„ Zvdd„ Zwej’                  j•                  dee6«      df„ «       Zxej’                  j•                  dee6«      dg„ «       Zydh„ Zzej’                  j•                  dig dj¢«      dk„ «       Z{dl„ Z|e1ej’                  j•                  dmeef«      ej’                  j•                  d\e3e4z   e5z   «      dn„ «       «       «       Z}ej’                  j•                  dFeeg«      do„ «       Z~dp„ Zdq„ Z€dr„ Z�ds„ Z‚ej’                  j•                  dteeefee‚efeeefgg du¢¬v«      dw„ «       Zƒdx„ Z„dy„ Z…dz„ Z†d{„ Z‡d|„ Zˆd}„ Z‰e1d~„ «       ZŠd„ Z‹d€„ ZŒd�„ Z�y)‚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                  óÜ   — t        d¬«      } d}t        j                  t        |¬«      5  | j	                  t
        j                  t
        j                  «       ddd«       y# 1 sw Y   yxY w)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     úk/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_gradient_boosting.pyÚtest_exponential_n_classes_gt_2r?   ;   sJ   € ä
$¨-Ô
8€CØ
K€CÜ	�‰”z¨Ô	-ñ (Ø�‰”—	‘	œ4Ÿ;™;Ô'÷(÷ (ñ (ús   ª/A"Á"A+c                  ó¼   — t        t        ¬«      } d}t        j                  t        |¬«      5  | j                  t        t        «       ddd«       y# 1 sw Y   yxY w)z0Test raise if init_ has no predict_proba method.©ÚinitzŠThe '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   sJ   € ä
$Ô*CÔ
D€Cð	Nð ô 
�‰”z¨Ô	-ñ Ø�‰””1Œ÷÷ ñ ús   ®AÁAr1   ©Úlog_lossr/   c                 ó  — t        | d|¬«      }t        j                  t        «      5  |j	                  t
        «       d d d «       |j                  t        t        «       t        |j	                  t
        «      t        «       dt        |j                  «      k(  sJ ‚|j                  d d |j                  dd  z
  }t        j                  |dk\  «      sJ ‚|j!                  t        «      }|j"                  dk(  sJ ‚y # 1 sw Y   ŒÀxY w)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Œ÷ð ‡G�GŒAŒq„MÜ�s—{‘{¤1“~¤{Ô3Ø”�S—_‘_Ó%Ò%Ð%Ð%à×(Ñ(¨¨"Ð-°×0@Ñ0@ÀÀÐ0DÑDÐÜ�6‰6Ð# sÑ*Ô+Ð+Ð+à�Y‰Y”q‹\€FØ�<‰<˜:Ò%Ð%Ñ%÷ð ús   ¨C=Ã=Dc                 ó  — t        j                  d|¬«      \  }}d}|d | ||d  }}|d | ||d  }}dd| |dœ}	t        dddi|	¤Ž}
|
j                  ||«       t        ddd	i|	¤Ž}|j                  ||«       |
j	                  ||«      |j	                  ||«      k  sJ ‚d
d| |dœ}	t        dddi|	¤Ž}|j                  ||«       t        dddi|	¤Ž}|j                  ||«       |j	                  ||«      |j	                  ||«      kD  sJ ‚y )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   sN  € ô ×$Ñ$¨tÐBTÔU�D€A€qà€IØ˜
˜�m Q y z ]ˆV€GØ˜
˜�m Q y z ]ˆV€Gð ØØØ*ñ	€Mô 0ÑQ¸RÐQÀ=ÑQ€NØ×Ñ�w Ô(ä/ÑQ¸RÐQÀ=ÑQ€NØ×Ñ�w Ô(à×Ñ ¨Ó/°.×2FÑ2FÀvÈvÓ2VÒVÐVÐVð
 ØØØ*ñ	€Mô -ÑJ°qÐJ¸MÑJ€KØ‡O�O�G˜WÔ%ä.ÑR¸bÐRÀMÑR€MØ×Ñ�g˜wÔ'à×Ñ˜V VÓ,¨}×/BÑ/BÀ6È6Ó/RÒRÐRÑRó    )Úsquared_errorÚabsolute_errorÚhuberÚ	subsample)r]   ç      à?c           
      óp  — t        j                  t        t        «      «      }d }d |d|z  fD ]‡  }t	        d| d|d|d¬«      }|j                  t        t        |¬«       |j                  t        «      }|j                  dk(  sJ ‚|j                  t        «      }t        t        |«      }	|	dk  sJ ‚|�	 |}Œ‰ y )	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À   € ô
 �7‰7”3”u“:Ó€DØ€KØ  a¨$¡hÐ/ò ˆô (ØØØØØØ+Øô
ˆð 	�‰””u¨MˆÔ:Ø—‘œ5Ó!ˆØ�|‰|˜yÒ(Ð(Ð(à—‘œUÓ#ˆÜ ¤¨Ó/ˆØ�TŠzÐˆzàÐ"ð à‰ñ?rq   r{   )Nr!   c                 ó®  — |dk(  r,t        j                  t        t        j                  «      «      }t        dd|| ¬«      }|j                  t        j                  t        j                  |¬«       |j                  t        j                  t        j                  «      }|dkD  sJ ‚|j                  t        j                  «      }|j                  dk(  sJ ‚y )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�   € ð ˜ÒÜŸ™¤¤D§K¡KÓ 0Ó1ˆä
$ØØØ'Øô	€Cð ‡G�GŒD�I‰I”t—{‘{°-€GÔ@Ø�I‰I”d—i‘i¤§¡Ó-€EØ�3Š;Ðˆ;à�Y‰Y”t—y‘yÓ!€FØ�<‰<˜=Ò(Ð(Ñ(rq   c                 ó¼  — t        | «      }ddddd| dœ}t        j                  d|d¬	«      \  }}|d d
 |d d
 }}|d
d  |d
d  }}t        di |¤Ž}	|	j	                  ||«       t        ||	j                  |«      «      }
|
dk  sJ ‚t        j                  d|¬«      \  }}|d d
 |d d
 }}|d
d  |d
d  }}t        di |¤Ž}	|	j	                  ||«       t        ||	j                  |«      «      }
|
dk  sJ ‚t        j                  d|¬«      \  }}|d d
 |d d
 }}|d
d  |d
d  }}t        di |¤Ž}	|	j	                  ||«       t        ||	j                  |«      «      }
|
dk  sJ ‚y )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Ó9€LàØØØØØ*ñÐô ×"Ñ"¨TÀÐTWÔX�D€A€qØ˜˜#�w  $ 3 ˆW€GØ�s�t�W˜a  ˜gˆF€Fä
#Ñ
8Ð&7Ñ
8€CØ‡G�GˆG�WÔÜ
˜V S§[¡[°Ó%8Ó
9€CØ�Š9Ðˆ9ô ×"Ñ"¨TÀÔM�D€A€qØ˜˜#�w  $ 3 ˆW€GØ�s�t�W˜a  ˜gˆF€Fä
#Ñ
8Ð&7Ñ
8€CØ‡G�GˆG�WÔÜ
˜V S§[¡[°Ó%8Ó
9€CØ�Š<Ðˆ<ô ×"Ñ"¨TÀÔM�D€A€qØ˜˜#�w  $ 3 ˆW€GØ�s�t�W˜a  ˜gˆF€Fä
#Ñ
8Ð&7Ñ
8€CØ‡G�GˆG�WÔÜ
˜V S§[¡[°Ó%8Ó
9€CØ�Š;Ð‰;rq   zGradientBoosting, X, yc                 ón   —  | «       }t        |d«      rJ ‚|j                  ||«       t        |d«      sJ ‚y )NÚfeature_importances_)Úhasattrr7   )ÚGradientBoostingrC   rD   Úgbdts       r>   Útest_feature_importancesr—   ú   s;   € ñ Ó€DÜ�tÐ3Ô4Ð4Ð4Ø‡H�HˆQ�„NÜ�4Ð/Ô0Ð0Ñ0rq   c                 ó*  — t        d| ¬«      }t        j                  t        «      5  |j	                  t
        «       d d d «       |j                  t        t        «       t        |j                  t
        «      t        «       |j	                  t
        «      }t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚|j                  j                  |j!                  d¬«      d¬«      }t        |t        «       y # 1 sw Y   ŒÍxY w)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Ô
W€Cä	�‰”zÓ	"ñ Ø×Ñœ!Ô÷ð ‡G�GŒAŒq„MÜ�s—{‘{¤1“~¤{Ô3ð ×Ñ¤Ó"€GÜ�6‰6�'˜S‘.Ô!Ð!Ð!Ü�6‰6�'˜S‘.Ô!Ð!Ð!ð �\‰\×Ñ˜wŸ~™~°1˜~Ó5¸AÐÓ>€FÜ�vœ{Õ+÷ð ús   §D	Ä	Dc                  óÂ   — g d¢} t        dd¬«      }d}t        j                  t        |¬«      5  |j	                  t
        t        | ¬«       d d d «       y # 1 sw Y   y xY w)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£     sU   € Ú&€MÜ
$°#ÀAÔ
F€Cð	Cð ô 
�‰”z¨Ô	-ñ 3Ø�‰””1 MˆÔ2÷3÷ 3ñ 3ús   ¯AÁAÚcsc_containerc                 óZ  — t        j                  dd¬«      \  }} | |«      }t        dd¬«      }|j                  ||«       t	        j
                  |j                  «      j                  dd«      }d}t        j                  t        |¬«      5  t        |j                  ||j                  |«       d d d «       t	        j                  |«      }t        j                  t        d¬«      5  t        |j                  ||j                  |«       d d d «       y # 1 sw Y   ŒexY w# 1 sw Y   y xY w)	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ÀÔC�D€A€qÙ  Ó#€LÜ
$°#ÀAÔ
F€CØ‡G�GˆAˆq„MÜ�H‰H�a—g‘gÓ×'Ñ'¨¨AÓ.€EØC€GÜ	�‰”z¨Ô	1ñ PÜ�s—‘¨°c×6GÑ6GÈÔO÷Pä×!Ñ! !Ó$€IÜ	�‰”zÐ)KÔ	Lñ MÜ�s—‘¨	°3×3DÑ3DÀeÔL÷Mð M÷Pð Pú÷Mð Mús   Â#DÃ)#D!ÄDÄ!D*c                 ó  — t        j                  d| ¬«      \  }}|d d |dd  }}|d d |dd  }}t        ddddd| ¬«      }|j                  ||«       |j	                  ||j                  |«      «      }|d	k  s
J d
|z  «       ‚y )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¡   € ä×$Ñ$¨uÐCUÔV�D€A€qà˜˜�h  $ % ˆV€GØ˜˜�h  $ % ˆV€Gä%ØØØØØØ'ô€Dð 	‡H�HˆW�gÔØ�z‰z˜& $×"8Ñ"8¸Ó"@ÓA€HØ�cŠ>ÐDÐ9¸HÑDÓD‰>rq   c                 óv  —  | «       }|j                   |j                  }}t        |||¬«      \  }}}}t        dddd|¬«      }	|	j	                  ||«       t        j                  |	j                  «      ddd…   }
|
D �cg c]  }|j                  |   ‘Œ }}|d	   d
k(  sJ ‚t        |dd «      h d£k(  sJ ‚yc c}w )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-   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€AÜ'7Ø	ˆ1Ð-ô(Ñ$€GˆV�W˜fô $ØØØØØ'ô€Cð ‡G�GˆG�WÔÜ—‘˜C×4Ñ4Ó5±d¸°dÑ;€JØ<FÖG°q�z×/Ñ/°Ó2ÐG€OÐGð ˜1Ñ Ò)Ð)Ð)ô
 ˆ˜q Ð#Ó$Ò(MÒMÐMÑMùò Hs   Á>B6c                  óR  — t        j                  dd¬«      \  } }| j                  \  }}| d d }|d d }t        dd ¬«      }|j	                  ||«       |j
                  |k(  sJ ‚t        dd ¬«      }|j	                  ||«       |j
                  |k(  sJ ‚t        dd¬«      }|j	                  ||«       |j
                  t        |dz  «      k(  sJ ‚t        dd¬«      }|j	                  ||«       |j
                  t        t        j                  |«      «      k(  sJ ‚t        dd¬«      }|j	                  ||«       |j
                  t        t        j                  |«      «      k(  sJ ‚t        dd	| j                  d   z  ¬«      }|j	                  ||«       |j
                  dk(  sJ ‚y )
Nr¯   r!   r\   r[   )rI   r±   ç333333Ó?ÚsqrtÚlog2g{®Gáz„?)r   rd   rU   r
   r7   Úmax_features_r   ÚintrR   rÇ   rÈ   )rC   rD   Ú_r*   rg   ri   r´   s          r>   Útest_max_featuresrÌ   r  sƒ  € ä×$Ñ$¨uÀ1ÔE�D€A€qØ—G‘G�M€A€zà��ˆh€GØ��ˆh€Gä%°1À4ÔH€DØ‡H�HˆW�gÔØ×Ñ Ò+Ð+Ð+ä$°!À$ÔG€DØ‡H�HˆW�gÔØ×Ñ Ò+Ð+Ð+ä$°!À#ÔF€DØ‡H�HˆW�gÔØ×Ñ¤ Z°#Ñ%5Ó!6Ò6Ð6Ð6ä$°!À&ÔI€DØ‡H�HˆW�gÔØ×Ñ¤¤R§W¡W¨ZÓ%8Ó!9Ò9Ð9Ð9ä$°!À&ÔI€DØ‡H�HˆW�gÔØ×Ñ¤¤R§W¡W¨ZÓ%8Ó!9Ò9Ð9Ð9ä$°!À$ÈÏÉÐQRÉÑBSÔT€DØ‡H�HˆW�gÔØ×Ñ Ò"Ð"Ñ"rq   c                  óð  — t        j                  ddd¬«      \  } }| d d |d d }}| dd  }t        «       }t        j                  t
        «      5  t        j                  |j                  |«      t        j                  ¬«       d d d «       |j                  ||«       |j                  |«      }|j                  |«      D ]  }|j                  |j                  k(  rŒJ ‚ t        ||«       y # 1 sw Y   ŒjxY w)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ÀÈÔM�D€A€qØ˜˜#�w  $ 3 ˆW€GØˆsˆtˆW€FÜ
#Ó
%€Cä	�‰”zÓ	"ñ BÜ
�‰�C×&Ñ& vÓ.´b·j±jÕA÷Bð ‡G�GˆG�WÔØ�[‰[˜Ó €Fð ×Ñ Ó'ò 'ˆØ�w‰w˜&Ÿ,™,Ó&Ð&Ð&ð'ô ˜f aÕ(÷Bð Bús   Á5C,Ã,C5c                  óÄ  — t        j                  dd¬«      \  } }| d d |d d }}| dd  |dd  }}t        d¬«      }t        j                  t
        «      5  t        j                  |j                  |«      t        j                  ¬«       d d d «       |j                  ||«       |j                  |«      D ]  }|j                  |j                  k(  rŒJ ‚ t        |j                  |«      «       |j                  |«      D ]7  }|j                  d   |j                  d   k(  sJ ‚d	|j                  d   k(  rŒ7J ‚ t        |j!                  |«      «       y # 1 sw Y   ŒÎxY w)
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Ù   ¨  sT  € ô ×$Ñ$¨tÀ!ÔD�D€A€qØ˜˜#�w  $ 3 ˆW€GØ�s�t�W˜a  ˜gˆF€FÜ
$°"Ô
5€Cä	�‰”~Ó	&ñ HÜ
�‰�C×,Ñ,¨VÓ4¼B¿J¹JÕG÷Hð ‡G�GˆG�WÔð ×$Ñ$ VÓ,ò ,ˆØ�|‰|˜vŸ|™|Ó+Ð+Ð+ð,ô �s—{‘{ 6Ó*¨FÔ3ð ×0Ñ0°Ó8ò *ˆØ�|‰|˜A‰ ,×"4Ñ"4°QÑ"7Ò7Ð7Ð7Ø�L×&Ñ& qÑ)Ó)Ð)Ð)ð*ô ˜c×/Ñ/°Ó7¸ÕF÷!Hð Hús   Á5EÅEÚ	Estimatorc                 óÒ  — t         j                  j                  |«      }|j                  d¬«      }d|d d …df   z  j	                  t
        «      dz   } | «       }|j                  ||«       dD ]j  }t        |d|z   d «      }|€Œt        j                  d¬	«      5  t         ||«      «      }d d d «       dd   d d  t        j                  |d   dk7  «      rŒjJ ‚ y # 1 sw Y   Œ1xY w)
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Ó
3€CØ�‰˜ˆÓ!€AØ	
ˆQŠq�!ˆt‰W‰×ÑœSÓ! AÑ%€AÙ“€IØ‡M�M�!�QÔØAò -ˆÜ˜i¨°TÑ)9¸4Ó@ˆØÐàÜ×$Ñ$¨DÔ1ñ 	1Ü ¡¨Q£Ó0ˆM÷	1àˆ�aÑ™ÐÜ�v‰v�m AÑ&¨!Ñ+Õ,Ð,Ð,ñ-÷
	1ð 	1ús   ÂCÃC&	c                  óÖ  — t        dd¬«      } | j                  t        t        «       t	        | j                  t        «      t        «       dt        | j                  «      k(  sJ ‚	 dd l
}|j                  | |j                  ¬«      }d } |j                  |«      } t	        | j                  t        «      t        «       dt        | j                  «      k(  sJ ‚y # t        $ r dd l}Y Œ}w xY w)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Ô
F€Cà‡G�GŒAŒq„MÜ�s—{‘{¤1“~¤{Ô3Ø”#�c—o‘oÓ&Ò&Ð&Ð&ðÛ ð —\‘\ #°×0GÑ0G�\ÓH€NØ
€CØ
�,‰,�~Ó
&€CÜ�s—{‘{¤1“~¤{Ô3Ø”#�c—o‘oÓ&Ò&Ð&Ñ&øô ò Ýðús   Á&C ÃC(Ã'C(c            	      óZ  — t        dd¬«      } t        j                  t        «      5  | j	                  t
        t        j                  t        t
        «      «      «       d d d «       t        dd¬«      } | j	                  t
        t        j                  t        t
        «      «      «       | j                  t        j                  d«      g«       t        t        j                  dt        j                  ¬«      | j                  t        j                  d«      g«      «       y # 1 sw Y   ŒÄxY w)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Ô
F€Cô 
�‰”zÓ	"ñ $Ø�‰””2—7‘7œ3œq›6“?Ô#÷$ô $°À1Ô
E€CØ‡G�GŒAŒr�w‰w”sœ1“v‹ÔØ‡K�K”—‘˜!“�ÔÜ”r—w‘w˜t¬2¯:©:Ô6¸¿¹ÄSÇXÁXÈaÃ[ÀMÓ8RÕS÷$ð $ús   §7D!Ä!D*c                 ó  — t        dddd| ¬«      }|j                  t        t        «       |j	                  t        «      }t        ddd| ¬«      }|j                  t        t        «       |j	                  t        «      }t        ||«       y )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  ø  s{   € ä,ØØØØØ'ô€Lð ×Ñ”UœEÔ"Ø×%Ñ%¤eÓ,€Jä&ØØØØ'ô	€Fð ‡J�JŒu”eÔØ�>‰>œ%Ó €DÜ�J Õ%rq   c            	      ó,  — t        dd¬«      } t        t        t        t        «      «      }| j                  t        |«       t        | j                  t        «      t        t        t        t        «      «      «       dt        | j                  «      k(  sJ ‚y )Nr$   r!   r™   )r
   ræ   ÚmapÚstrrD   r7   rC   r   rL   rM   rN   rO   rP   )r<   Úsymbol_ys     r>   Útest_symbol_labelsr    sa   € ä
$°#ÀAÔ
F€Cä”CœœQ“KÓ €Hà‡G�GŒAˆxÔÜ�s—{‘{¤1“~¤t¬C´´[Ó,AÓ'BÔCØ”#�c—o‘oÓ&Ò&Ð&Ñ&rq   c                  ó\  — t        dd¬«      } t        j                  t        t        j                  ¬«      }| j                  t        |«       t        | j                  t        «      t        j                  t        t        j                  ¬«      «       dt        | j                  «      k(  sJ ‚y ©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Ô
F€Cä�j‰jœ¤"§*¡*Ô-€Gà‡G�GŒAˆwÔÜ�s—{‘{¤1“~¤r§z¡z´+ÄRÇZÁZÔ'PÔQØ”#�c—o‘oÓ&Ò&Ð&Ñ&rq   c                  ó¨  — t        dd¬«      } t        j                  t        t        j                  ¬«      }|d d …t        j
                  f   }d}t        j                  t        |¬«      5  | j                  t        |«       d d d «       t        | j                  t        «      t        «       dt        | j                   «      k(  sJ ‚y # 1 sw Y   ŒGxY w)Nr$   r!   r™   rÎ   z†A 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Ô
F€Cä	�‰”AœRŸX™XÔ	&€BØ	ŠAŒr�z‰zˆMÑ	€Bð	!ð ô
 
�‰Ô+°8Ô	<ñ Ø�‰”�2Œ÷ä�s—{‘{¤1“~¤{Ô3Ø”#�c—o‘oÓ&Ò&Ð&Ñ&÷ð ús   Á+CÃCc                  ó`  — t        j                  t        «      } t        dd¬«      }|j	                  | t
        «       t        |j                  t        «      t        «       dt        |j                  «      k(  sJ ‚t        j                  t        «      } t        dd¬«      }|j	                  | t
        «       t        |j                  t        «      t        «       dt        |j                  «      k(  sJ ‚t        j                  t
        t         j                  ¬«      }t        j                  |«      }t        dd¬«      }|j	                  t        |«       t        |j                  t        «      t        «       dt        |j                  «      k(  sJ ‚t        j                  t
        t         j                  ¬«      }t        j                  |«      }t        dd¬«      }|j	                  t        |«       t        |j                  t        «      t        «       dt        |j                  «      k(  sJ ‚y 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Ô
F€CØ‡G�GˆB”„NÜ�s—{‘{¤1“~¤{Ô3Ø”#�c—o‘oÓ&Ò&Ð&Ð&ä	×	Ñ	œaÓ	 €BÜ
$°#ÀAÔ
F€CØ‡G�GˆB”„NÜ�s—{‘{¤1“~¤{Ô3Ø”#�c—o‘oÓ&Ò&Ð&Ð&ä	�‰”AœRŸX™XÔ	&€BÜ	×	Ñ	˜bÓ	!€BÜ
$°#ÀAÔ
F€CØ‡G�GŒAˆr„NÜ�s—{‘{¤1“~¤{Ô3Ø”#�c—o‘oÓ&Ò&Ð&Ð&ä	�‰”AœRŸX™XÔ	&€BÜ	×	Ñ	˜2Ó	€BÜ
$°#ÀAÔ
F€CØ‡G�GŒAˆr„NÜ�s—{‘{¤1“~¤{Ô3Ø”#�c—o‘oÓ&Ò&Ð&Ñ&rq   ÚGradientBoostingEstimatorc                 óê   —  | ddd¬«      }|j                  t        t        «       |j                  j                  d   dk(  sJ ‚t        |j                  d d t        j                  g d¢«      d¬	«       y )
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   € ñ *Ø q°Cô€Ið ‡M�M”!”QÔØ×%Ñ%×+Ñ+¨AÑ.°#Ò5Ð5Ð5äØ×"Ñ" 2 AÐ&Ü
�‰Ò0Ó1Øörq   c                 óê  — t        j                  dd¬«      \  }} | ddd¬«      }|j                  ||«       |j                  j                  d   dk(  sJ ‚|j                  d   t        j                  |j                  «      k(  sJ ‚ | dddd¬	«      }|j                  ||«       |j                  j                  d   dk  sJ ‚|j                  d   t        j                  |j                  «      k(  sJ ‚y )
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ÀÔC�D€A€qÙ)Ø q°Cô€Ið ‡M�M�!�QÔØ× Ñ ×&Ñ& qÑ)¨SÒ0Ð0Ð0Ø× Ñ  Ñ$¬¯©°i×6JÑ6JÓ(KÒKÐKÐKá)ØØØØô	€Ið ‡M�M�!�QÔØ× Ñ ×&Ñ& qÑ)¨CÒ/Ð/Ð/Ø× Ñ  Ñ$¬¯©°i×6JÑ6JÓ(KÒKÐKÑKrq   z(GradientBoostingEstimator, oob_attributer  r"  r$  c                 óæ   — t        j                  dd¬«      \  }} | ddd¬«      }|j                  ||«       t        j                  t
        «      5  |j                   ddd«       y# 1 sw Y   yxY w)zZ
    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)    sg   € ô ×$Ñ$¨sÀÔC�D€A€qÙ)ØØØô€Ið
 ‡M�M�!�QÔÜ	�‰”~Ó	&ñ  Ø×Ò÷ ÷  ñ  ús   ÁA'Á'A0c                  óÄ  — t        dddd¬«      } | j                  t        j                  t        j                  «       | j                  t        j                  t        j                  «      }|dkD  sJ ‚| j                  j                  d   | j                  k(  sJ ‚| j                  j                  d   | j                  k(  sJ ‚| j                  d   t        j                  | j                  «      k(  sJ ‚t        ddddd	¬
«      } | j                  t        j                  t        j                  «       | j                  t        j                  t        j                  «      }| j                  j                  d   | j                  k  sJ ‚| j                  j                  d   | j                  k  sJ ‚| j                  d   t        j                  | j                  «      k(  sJ ‚y )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ð ‡M�M”$—)‘)œTŸ[™[Ô)Ø�O‰OœDŸI™I¤t§{¡{Ó3€EØ�3Š;Ðˆ;Ø×%Ñ%×+Ñ+¨AÑ.°)×2HÑ2HÒHÐHÐHØ× Ñ ×&Ñ& qÑ)¨Y×-CÑ-CÒCÐCÐCØ× Ñ  Ñ$¬¯©°i×6JÑ6JÓ(KÒKÐKÐKä*ØØØØØô€Ið ‡M�M”$—)‘)œTŸ[™[Ô)Ø�O‰OœDŸI™I¤t§{¡{Ó3€EØ×%Ñ%×+Ñ+¨AÑ.°×1GÑ1GÒGÐGÐGØ× Ñ ×&Ñ& qÑ)¨I×,BÑ,BÒBÐBÐBØ× Ñ  Ñ$¬¯©°i×6JÑ6JÓ(KÒKÐKÑKrq   c                  ó²  — dd l } ddlm} | j                  } |«       | _        t	        dddd¬«      }|j                  t        t        «       | j                  }|| _        |j                  d«       |j                  «       j                  «       }dj                  dgd	gd
z  z   «      dz  }||k(  sJ ‚t        d„ |j                  «       D «       «      }d|k(  sJ ‚y )Nr   ©ÚStringIOr$   r!   çš™™™™™é?)rI   r-   Úverboseru   ú ú%10sú%16sr#   )ÚIterú
Train LosszOOB ImproveúRemaining Timec              3   ó    K  — | ]  }d –— Œ y­w©r!   Nrc   ©Ú.0Úls     r>   ú	<genexpr>z&test_verbose_output.<locals>.<genexpr>Ó  ó   è ø€ Ò8˜”!Ñ8ùó   ‚é   ©ÚsysÚior.  Ústdoutr
   r7   rC   rD   ÚseekÚreadlineÚrstripÚjoinÚsumÚ	readlines©rA  r.  Ú
old_stdoutr<   Úverbose_outputÚheaderÚtrue_headerÚn_liness           r>   Útest_verbose_outputrP  ¹  sÏ   € ãÝà—‘€JÙ“€C„JÜ
$Ø q°!¸sô€Cð ‡G�GŒAŒq„MØ—Z‘Z€NØ€C„Jð ×Ñ˜ÔØ×$Ñ$Ó&×-Ñ-Ó/€Fà—(‘(˜F˜8 v h°¡lÑ2Ó3ð 7ñ €Kð ˜&Ò Ð Ð äÑ8˜^×5Ñ5Ó7Ô8Ó8€Gà�WÒÐÑrq   c                  ó°  — dd l } ddlm} | j                  } |«       | _        t	        ddd¬«      }|j                  t        t        «       | j                  }|| _        |j                  d«       |j                  «       j                  «       }dj                  dgd	gdz  z   «      d
z  }||k(  sJ ‚t        d„ |j                  «       D «       «      }d|k(  sJ ‚y )Nr   r-  r$   r!   r"   )rI   r-   r0  r1  r2  r3  )r4  r5  r6  c              3   ó    K  — | ]  }d –— Œ y­wr8  rc   r9  s     r>   r<  z+test_more_verbose_output.<locals>.<genexpr>ï  r=  r>  r@  rJ  s           r>   Útest_more_verbose_outputrS  Ø  sÆ   € ãÝà—‘€JÙ“€C„JÜ
$°#ÀAÈqÔ
Q€CØ‡G�GŒAŒq„MØ—Z‘Z€NØ€C„Jð ×Ñ˜ÔØ×$Ñ$Ó&×-Ñ-Ó/€Fà—(‘(˜F˜8 v h°¡lÑ2Ó3ð 7ñ €Kð
 ˜&Ò Ð Ð äÑ8˜^×5Ñ5Ó7Ô8Ó8€Gà�'Š>Ð‰>rq   ÚClsc                 ó  — t        j                  d|¬«      \  }} | dd|¬«      }|j                  ||«        | ddd|¬«      }|j                  ||«       |j                  d¬«       |j                  ||«       | t        u r+t        |j                  |«      |j                  |«      «       y t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       y )	Nr$   r\   ra   r!   ©rI   r^   r-   T©rI   r^   Ú
warm_startr-   rÖ   )	r   rd   r7   Ú
set_paramsr   r   rL   r   r›   ©rT  rV   rC   rD   ÚestÚest_wss         r>   Útest_warm_startr]  ô  sÛ   € ô ×$Ñ$¨sÐASÔT�D€A€qÙ
˜3¨!Ð:LÔ
M€CØ‡G�GˆAˆq„MáØ A°$ÐEWô€Fð ‡J�Jˆq�!ÔØ
×Ñ 3ÐÔ'Ø
‡J�Jˆq�!Ôà
Ô'Ñ'Ü˜Ÿ™ qÓ)¨3¯;©;°q«>Õ:ô 	˜6Ÿ>™>¨!Ó,¨c¯k©k¸!«nÔ=Ü˜×,Ñ,¨QÓ/°×1BÑ1BÀ1Ó1EÕFrq   c                 óJ  — t        j                  d|¬«      \  }} | dd|¬«      }|j                  ||«        | ddd|¬«      }|j                  ||«       |j                  d¬«       |j                  ||«       t	        |j                  |«      |j                  |«      «       y )	Nr$   r\   i,  r!   rV  TrW  rÖ   )r   rd   r7   rY  r   rL   rZ  s         r>   Útest_warm_start_n_estimatorsr_    s•   € ô ×$Ñ$¨sÐASÔT�D€A€qÙ
˜3¨!Ð:LÔ
M€CØ‡G�GˆAˆq„MáØ A°$ÐEWô€Fð ‡J�Jˆq�!ÔØ
×Ñ 3ÐÔ'Ø
‡J�Jˆq�!Ôä�F—N‘N 1Ó% s§{¡{°1£~Õ6rq   c                 ó\  — t        j                  dd¬«      \  }} | ddd¬«      }|j                  ||«       |j                  dd¬«       |j                  ||«       |j                  d	   j
                  dk(  sJ ‚t        dd
«      D ]#  }|j                  | df   j
                  dk(  rŒ#J ‚ y )Nr$   r!   r\   T©rI   r^   rX  én   r"   ©rI   r^   ©r   r   é   r   )r   rd   r7   rY  rP   r^   Úrange)rT  rC   rD   r[  Úis        r>   Útest_warm_start_max_depthrh    s©   € ô ×$Ñ$¨sÀÔC�D€A€qÙ
˜3¨!¸Ô
=€CØ‡G�GˆAˆq„MØ‡N�N ¨q€NÔ1Ø‡G�GˆAˆq„Mð �?‰?˜4Ñ ×*Ñ*¨aÒ/Ð/Ð/Ü�1�b‹\ò 5ˆØ�‰ ˜r 1˜uÑ%×/Ñ/°1Ó4Ð4Ð4ñ5rq   c                 óF  — t        j                  dd¬«      \  }} | dd¬«      }|j                  ||«        | ddd¬«      }|j                  ||«       |j                  d¬«       |j                  ||«       t	        |j                  |«      |j                  |«      «       y )	Nr$   r!   r\   rc  Tra  F)rX  )r   rd   r7   rY  r   rL   )rT  rC   rD   r[  Úest_2s        r>   Útest_warm_start_clearrk  +  s‡   € ô ×$Ñ$¨sÀÔC�D€A€qÙ
˜3¨!Ô
,€CØ‡G�GˆAˆq„Má˜S¨A¸$Ô?€EØ	‡I�Iˆa�„OØ	×Ñ ÐÔ&Ø	‡I�Iˆa�„Oä˜eŸm™m¨AÓ.°·±¸A³Õ?rq   r•   c                 óæ  — t        j                  dd¬«      \  }}d} | |dddd¬«      }|j                  ||«       |j                  |j                  }}t        |«      |k(  sJ ‚|d   t        j                  |«      k(  sJ ‚d}|j                  |¬	«      j                  ||«       t        |j                  «      |k(  sJ ‚t        |j                  d
| |«       |j                  |d¬«      j                  ||«       |j                  |usJ ‚|j                  |usJ ‚t        |j                  |«       |j                  t        j                  |«      k(  sJ ‚|d   t        j                  |«      k(  sJ ‚y
)zZ
    Check that the states of the OOB scores are cleared when used with `warm_start`.
    r$   r!   r\   rv   T)rI   r^   ru   rX  r-   r    ra   rÖ   NF©rI   rX  )
r   rd   r7   r"  r$  rO   r4   r#  rY  r   )r•   rC   rD   rI   rè   Ú
oob_scoresÚ	oob_scoreÚn_more_estimatorss           r>   Ú test_warm_start_state_oob_scoresrq  :  sp  € ô
 ×$Ñ$¨sÀÔC�D€A€qØ€LÙ Ø!ØØØØô€Ið ‡M�M�!�QÔØ%×1Ñ1°9×3GÑ3G�	€JÜˆz‹?˜lÒ*Ð*Ð*Ø�b‰>œVŸ]™]¨9Ó5Ò5Ð5Ð5àÐØ×ÑÐ&7ÐÓ8×<Ñ<¸QÀÔBÜˆy×$Ñ$Ó%Ð):Ò:Ð:Ð:Ü�I×)Ñ)¨-¨<Ð8¸*ÔEà×Ñ l¸uÐÓE×IÑIÈ!ÈQÔOØ× Ñ ¨
Ñ2Ð2Ð2Ø×Ñ yÑ0Ð0Ð0Ü�I×)Ñ)¨:Ô6Ø×Ñ¤6§=¡=°Ó#;Ò;Ð;Ð;Ø�b‰>œVŸ]™]¨9Ó5Ò5Ð5Ñ5rq   c                 ó  — t        j                  dd¬«      \  }} | ddd¬«      }|j                  ||«       |j                  d¬«       t	        j
                  t        «      5  |j                  ||«       d d d «       y # 1 sw Y   y xY w)Nr$   r!   r\   Tra  éc   rÖ   )r   rd   r7   rY  r4   r5   r6   ©rT  rC   rD   r[  s       r>   Ú$test_warm_start_smaller_n_estimatorsru  Z  sq   € ô ×$Ñ$¨sÀÔC�D€A€qÙ
˜3¨!¸Ô
=€CØ‡G�GˆAˆq„MØ‡N�N €NÔ#Ü	�‰”zÓ	"ñ Ø�‰��1Œ÷÷ ñ ús   Á#A?Á?Bc                 ó8  — t        j                  dd¬«      \  }} | dd¬«      }|j                  ||«       t        |«      }|j	                  |j
                  d¬«       |j                  ||«       t        |j                  |«      |j                  |«      «       y )Nr$   r!   r\   rc  Trm  )r   rd   r7   r   rY  rI   r   rL   )rT  rC   rD   r[  Úest2s        r>   Ú"test_warm_start_equal_n_estimatorsrx  e  sy   € ô ×$Ñ$¨sÀÔC�D€A€qÙ
˜3¨!Ô
,€CØ‡G�GˆAˆq„Mä�‹:€DØ‡O�O ×!1Ñ!1¸d€OÔCØ‡H�HˆQ�„Nä˜dŸl™l¨1›o¨s¯{©{¸1«~Õ>rq   c                 óV  — t        j                  dd¬«      \  }} | ddd¬«      }|j                  ||«       |j                  dd¬«       |j                  ||«       t	        |j
                  d d t        j                  d«      «       t	        |j                  d d t        j                  d«      «       |j
                  d	d  d
k7  j                  «       sJ ‚|j                  d	d  d
k7  j                  «       sJ ‚|j                  d   t        j                  |j                  «      k(  sJ ‚y )Nr$   r!   r\   Tra  rb  rv   )rI   ru   éöÿÿÿrJ   r    )r   rd   r7   rY  r   r  rR   r¦   r"  rœ   r4   r#  r$  rt  s       r>   Útest_warm_start_oob_switchr{  s  sú   € ô ×$Ñ$¨sÀÔC�D€A€qÙ
˜3¨!¸Ô
=€CØ‡G�GˆAˆq„MØ‡N�N ¨s€NÔ3Ø‡G�GˆAˆq„Mä�s×+Ñ+¨D¨SÐ1´2·8±8¸C³=ÔAÜ�s—‘ t¨Ð,¬b¯h©h°s«mÔ<ð × Ñ   Ð&¨#Ñ-×2Ñ2Ô4Ð4Ð4Ø�O‰O˜C˜DÐ! SÑ(×-Ñ-Ô/Ð/Ð/à�?‰?˜2Ñ¤&§-¡-°·±Ó"?Ò?Ð?Ñ?rq   c                 óV  — t        j                  dd¬«      \  }} | dddd¬«      }|j                  ||«        | ddddd¬«      }|j                  ||«       |j                  d¬	«       |j                  ||«       t	        |j
                  d d |j
                  d d «       t	        |j                  d d |j                  d d «       |j                  d
   t        j                  |j                  «      k(  sJ ‚|j                  d
   t        j                  |j                  «      k(  sJ ‚y )Nr$   r!   r\   ra   rv   )rI   r^   ru   r-   T©rI   r^   ru   r-   rX  rÖ   r    )
r   rd   r7   rY  r   r  r"  r4   r#  r$  )rT  rC   rD   r[  r\  s        r>   Útest_warm_start_oobr~  †  s  € ô ×$Ñ$¨sÀÔC�D€A€qÙ
˜3¨!°sÈÔ
K€CØ‡G�GˆAˆq„MáØ A°À1ÐQUô€Fð ‡J�Jˆq�!ÔØ
×Ñ 3ÐÔ'Ø
‡J�Jˆq�!Ôä˜f×5Ñ5°d°sÐ;¸S×=QÑ=QÐRVÐSVÐ=WÔXÜ˜f×0Ñ0°°#Ð6¸¿¹ÈÈÐ8MÔNØ�?‰?˜2Ñ¤&§-¡-°·±Ó"?Ò?Ð?Ð?Ø×Ñ˜bÑ!¤V§]¡]°6×3DÑ3DÓ%EÒEÐEÑErq   Úsparse_containerc                 óP  — t        j                  dd¬«      \  }} | ddddd¬«      }|j                  ||«       |j                  |«       |j	                  d¬«       |j                  ||«       |j                  |«      } ||«      } | ddddd¬«      }|j                  ||«       |j                  |«       |j	                  d¬«       |j                  ||«       |j                  |«      }t        |j                  d d |j                  d d «       |j                  d	   t        j                  |j                  «      k(  sJ ‚t        |j                  d d |j                  d d «       |j                  d	   t        j                  |j                  «      k(  sJ ‚t        ||«       y )
Nr$   r!   r\   rv   Tr}  ra   rÖ   r    )r   rd   r7   rL   rY  r   r  r"  r4   r#  r$  )	rT  r  rC   rD   Ú	est_denseÚy_pred_denseÚX_sparseÚ
est_sparseÚy_pred_sparses	            r>   Útest_warm_start_sparser†  š  s–  € ô ×$Ñ$¨sÀÔC�D€A€qÙØ A°À1ÐQUô€Ið ‡M�M�!�QÔØ×Ñ�aÔØ×Ñ cÐÔ*Ø‡M�M�!�QÔØ×$Ñ$ QÓ'€Lá Ó"€HáØØØØØô€Jð ‡N�N�8˜QÔØ×Ñ�qÔØ×Ñ sÐÔ+Ø‡N�N�8˜QÔØ×&Ñ& qÓ)€MäØ×"Ñ" 4 CÐ(¨*×*EÑ*EÀdÀsÐ*Kôð × Ñ  Ñ$¬¯©°i×6JÑ6JÓ(KÒKÐKÐKÜ˜i×3Ñ3°D°SÐ9¸:×;QÑ;QÐRVÐSVÐ;WÔXØ×!Ñ! "Ñ%¬¯©°z×7LÑ7LÓ)MÒMÐMÐMÜ˜l¨MÕ:rq   c                 óº  — t        j                  d|¬«      \  }} | d|d¬«      } | d|d¬«      }|j                  ||«       |j                  d¬«       |j                  ||«       t	        j
                  |«      }|j                  ||«       |j                  d¬«       |j                  ||«       t        |j                  |«      |j                  |«      «       y )Nr$   r\   r!   T)rI   r-   rX  re  rÖ   )r   rd   r7   rY  rR   r¨   r   rL   )rT  rV   rC   rD   Úest_cÚest_fortranÚ	X_fortrans          r>   Útest_warm_start_fortranr‹  Â  sÀ   € ô ×$Ñ$¨sÐASÔT�D€A€qÙ˜QÐ-?ÈDÔQ€EÙ 1Ð3EÐRVÔW€Kà	‡I�Iˆa�„OØ	×Ñ "ÐÔ%Ø	‡I�Iˆa�„Oä×!Ñ! !Ó$€IØ‡O�O�I˜qÔ!Ø×Ñ¨ÐÔ+Ø‡O�O�I˜qÔ!ä�E—M‘M !Ó$ k×&9Ñ&9¸!Ó&<Õ=rq   c                 ó   — | dk(  ryy)z#Returns True on the 10th iteration.é	   TFrc   )rg  r[  Úlocalss      r>   Úearly_stopping_monitorr�  Ö  s   € àˆA‚vØàrq   c                 ó,  — t        j                  dd¬«      \  }} | dddd¬«      }|j                  ||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 ‚|j                  j                  d   d	k(  sJ ‚|j                  d
   t        j                  |j                  «      k(  sJ ‚|j                  d¬«       |j                  ||«       |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 ‚|j                  j                  d   dk(  sJ ‚|j                  d
   t        j                  |j                  «      k(  sJ ‚ | ddddd¬«      }|j                  ||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 ‚|j                  j                  d   d	k(  sJ ‚|j                  d
   t        j                  |j                  «      k(  sJ ‚|j                  dd¬«       |j                  ||«       |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 ‚|j                  j                  d   dk(  sJ ‚|j                  d
   t        j                  |j                  «      k(  sJ ‚y )Nr$   r!   r\   rÕ   rv   )rI   r^   r-   ru   )Úmonitorr   r'   r    rx   rÖ   T)rI   r^   r-   ru   rX  Frm  )r   rd   r7   r�  rI   rP   rU   rQ   r  r"  r4   r#  r$  rY  rt  s       r>   Útest_monitor_early_stoppingr’  Þ  sd  € ô ×$Ñ$¨sÀÔC�D€A€qá
˜2¨¸ÀcÔ
J€CØ‡G�GˆAˆqÔ0€GÔ1Ø×Ñ˜rÒ!Ð!Ð!Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø×Ñ×!Ñ! !Ñ$¨Ò*Ð*Ð*Ø×Ñ×%Ñ% aÑ(¨BÒ.Ð.Ð.Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø�?‰?˜2Ñ¤&§-¡-°·±Ó"?Ò?Ð?Ð?ð ‡N�N €NÔ#Ø‡G�GˆAˆq„MØ×Ñ˜rÒ!Ð!Ð!Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø×Ñ×!Ñ! !Ñ$¨Ò*Ð*Ð*Ø×Ñ×%Ñ% aÑ(¨BÒ.Ð.Ð.Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø�?‰?˜2Ñ¤&§-¡-°·±Ó"?Ò?Ð?Ð?á
Ø 1°1ÀÐPTô€Cð ‡G�GˆAˆqÔ0€GÔ1Ø×Ñ˜rÒ!Ð!Ð!Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø×Ñ×!Ñ! !Ñ$¨Ò*Ð*Ð*Ø×Ñ×%Ñ% aÑ(¨BÒ.Ð.Ð.Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø�?‰?˜2Ñ¤&§-¡-°·±Ó"?Ò?Ð?Ð?ð ‡N�N ¨u€NÔ5Ø‡G�GˆAˆq„MØ×Ñ˜rÒ!Ð!Ð!Ø×Ñ×!Ñ! !Ñ$¨Ò*Ð*Ð*Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø×Ñ×%Ñ% aÑ(¨BÒ.Ð.Ð.Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø�?‰?˜2Ñ¤&§-¡-°·±Ó"?Ò?Ð?Ñ?rq   c                  óF  — ddl m}  t        j                  dd¬«      \  }}d}t	        dd d|dz   ¬«      }|j                  ||«       |j                  d	   j                  }|j                  |k(  sJ ‚|j                  |j                  | k(     j                  d   |dz   k(  sJ ‚y )
Nr   ©Ú	TREE_LEAFr$   r!   r\   r%   rÕ   ©rI   r^   r-   rb   rd  )Úsklearn.tree._treer•  r   rd   r
   r7   rP   Útree_r^   Úchildren_leftrU   )r•  rC   rD   Úkr[  Útrees         r>   Útest_complete_classificationrœ    sŸ   € å,ä×$Ñ$¨sÀÔC�D€A€qØ	€Aä
$Ø 4°aÈÈAÉô€Cð ‡G�GˆAˆq„Mà�?‰?˜4Ñ ×&Ñ&€DØ�>‰>˜QÒÐÐØ×Ñ˜d×0Ñ0°IÑ=Ñ>×DÑDÀQÑGÈ1ÈqÉ5ÒPÐPÑPrq   c                  ó   — ddl m}  d}t        dd d|dz   ¬«      }|j                  t        t
        «       |j                  d   j                  }|j                  |j                  | k(     j                  d   |dz   k(  sJ ‚y )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ä
#Ø 4°aÈÈAÉô€Cð ‡G�GŒE”5Ôà�?‰?˜5Ñ!×'Ñ'€DØ×Ñ˜d×0Ñ0°IÑ=Ñ>×DÑDÀQÑGÈ1ÈqÉ5ÒPÐPÑPrq   c                 ó>  — t        d¬«      j                  t        t        «      }t	        |j                  t        «      t        «      }t        dd| dd¬«      }|j                  t        t        «       |j                  t        «      }t	        t        |«      }||k  sJ ‚y )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Ñ2´5¼%Ó@€HÜ% h×&6Ñ&6´uÓ&=¼uÓE€LÜ
#ØØØ'ØØô€Cð ‡G�GŒE”5ÔØ�[‰[œÓ€FÜ!¤%¨Ó0€HØ�lÒ"Ð"Ñ"rq   c                 ój  — t         j                  }t        j                  t         j                  «      }t        dd| d¬«      }|j                  ||«       |j                  ||«      dkD  sJ ‚|dk7  }d||<   d|| <   t        dd| d¬«      }|j                  ||«       |j                  ||«      dkD  sJ ‚y )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ä
$Ø 1Ð3EÈFô€Cð ‡G�GˆAˆq„Mà�9‰9�Q˜‹?˜TÒ!Ð!Ð!ð �‰6€DØ€A€d�GØ€A€t€e�HÜ
$Ø 1Ð3EÈFô€Cð ‡G�GˆAˆq„MØ�9‰9�Q˜‹?˜TÒ!Ð!Ñ!rq   ÚGBEstimatorc                 óJ  — t        j                  dd¬«      \  }}d} | d|¬«      j                  ||«      }|j                  d   j                  }|j
                  dk(  sJ ‚ | d¬«      j                  ||«      }|j                  d   j                  }|j
                  dk(  sJ ‚y )Nr$   r!   r\   r%   )r^   rb   rd  )r^   )r   rd   r7   rP   r˜  r^   )rª  rC   rD   rš  r[  r›  s         r>   Útest_max_leaf_nodes_max_depthr¬  V  s›   € ô ×$Ñ$¨sÀÔC�D€A€qà	€Aá
 °!Ô
4×
8Ñ
8¸¸AÓ
>€CØ�?‰?˜4Ñ ×&Ñ&€DØ�>‰>˜QÒÐÐá
 Ô
"×
&Ñ
& q¨!Ó
,€CØ�?‰?˜4Ñ ×&Ñ&€DØ�>‰>˜QÒÐÑrq   c                 óÆ   — t        j                  dd¬«      \  }} | d¬«      }|j                  ||«       |j                  j                  D ]  }|j
                  dk(  rŒJ ‚ y )Nr$   r!   r\   rŠ   )Úmin_impurity_decrease)r   rd   r7   rP   Úflatr®  )rª  rC   rD   r[  r›  s        r>   Útest_min_impurity_decreaser°  f  s^   € ä×$Ñ$¨sÀÔC�D€A€qá
¨CÔ
0€CØ‡G�GˆAˆq„MØ—‘×$Ñ$ò 1ˆð ×)Ñ)¨SÓ0Ð0Ð0ñ1rq   c                  óþ   — t        dd¬«      } | j                  ddgddggddg«       | j                  j                  d   dk(  sJ ‚| j                  ddgddggddg«       | j                  j                  d   dk(  sJ ‚y )Nr'   Trm  r   r!   r"   r#   )r
   r7   rP   rU   rù   s    r>   Ú%test_warm_start_wo_nestimators_changer²  r  sˆ   € ô %°"ÀÔ
F€CØ‡G�Gˆa�ˆV�a˜�VÐ˜q !˜fÔ%Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ð)Ø‡G�Gˆa�ˆV�a˜�VÐ˜q !˜fÔ%Ø�?‰?× Ñ  Ñ# rÒ)Ð)Ñ)rq   )r1   Úvalue))rr   rv   )rs   rJ   )rt   rv   )rü   rv   c                 ó¬   — ddgddgddgddgg}g d¢}g d¢}t        dd| ¬«      }|j                  |||¬«       |j                  ddgg«      d   |k\  sJ ‚y )	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¸  |  sn   € ð ˆQˆ�!�Q�˜!˜Q˜ ! Q Ð(€AÚ€Aâ €MÜ	"°À1È4Ô	P€BØ‡F�Fˆ1ˆa˜}€FÔ-Ø�:‰:˜˜1�v�hÓ Ñ" eÒ+Ð+Ñ+rq   c                  ó¾   — ddgddgddgddgg} g d¢}g d¢}dD ]B  }t        d|¬«      }|j                  | ||¬«       t        |j                  ddgg«      dg«       ŒD y )	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º  �  sr   € Ø
ˆQˆ�!�Q�˜!˜Q˜ ! Q Ð(€AÚ€Aâ €MØ+ò 6ˆÜ'°Q¸TÔBˆØ
�‰ˆq�! =ˆÔ1Ü˜2Ÿ:™:¨¨1 v hÓ/°!°Õ5ñ6rq   ÚEstimatorClassc                 óL  — t        j                  dddd¬«      \  }}|d d …df   } ||«      } | dddd¬	«      j                  ||«      } | dddd¬	«      j                  ||«      }t        |j	                  |«      |j	                  |«      «       t        |j                  |«      |j                  |«      «       t        |j                  |j                  «       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       t        | t        «      rçt        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «      D ]  \  }}t        ||«       Œ y y )
Nr   r`   r!   rÕ   )r-   r)   r*   Ú	n_classesr'   r"   gH¯¼šò×z>)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ô�D€A€qð 	
Š!ˆQˆ$‰€AÙ Ó"€HáØ a°1ÈDôç	�cˆ!ˆQƒið 
ñ Ø a°1ÈDôç	�cˆ(�AÓð ô ˜fŸl™l¨1›o¨u¯{©{¸1«~Ô>Ü˜fŸn™n¨QÓ/°·±¸qÓ1AÔBÜ˜f×9Ñ9¸5×;UÑ;UÔVä˜fŸn™n¨XÓ6¸¿¹ÀaÓ8HÔIÜ˜eŸm™m¨HÓ5°v·~±~ÀaÓ7HÔIä�.Ô"<Ô=Ü! &×"6Ñ"6°qÓ"9¸5×;NÑ;NÈqÓ;QÔRÜ!Ø×$Ñ$ QÓ'¨×)@Ñ)@ÀÓ)Cô	
ô 	"Ø×$Ñ$ XÓ.°×0HÑ0HÈÓ0Kô	
ô 	"Ø×#Ñ# HÓ-¨v×/GÑ/GÈÓ/Jô	
ô  #Ø×+Ñ+¨HÓ5Ø×+Ñ+¨AÓ.ó 
ò 	7‰OˆJ˜ô & j°#Õ6ñ		7ð >rq   c                 ór  — t        dd¬«      \  }}d} | |ddddd¬«      } | |ddddd	¬«      }t        ||d¬
«      \  }}}}	|j                  ||«       |j                  ||«       |j                  |j                  cxk  r|k  sJ ‚ J ‚|j	                  ||	«      dkD  sJ ‚|j	                  ||	«      dkD  sJ ‚y )Néè  r   r\   r'   rŠ   r#   é*   )rI   r!  r_   r^   r-   Útolçü©ñÒMbP?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Ô>�D€A€qØ€Lá,Ø!ØØØØØô€Lñ -Ø!ØØØØØô€Lô (8¸¸1È2Ô'NÑ$€GˆV�W˜fØ×Ñ�W˜gÔ&Ø×Ñ�W˜gÔ&à×%Ñ%¨×(BÑ(BÔQÀ\ÒQÐQÑQÐQÐQà×Ñ˜f fÓ-°Ò3Ð3Ð3Ø×Ñ˜f fÓ-°Ò3Ð3Ñ3rq   c                  óì   — t        dd¬«      \  } }t        dddd¬«      }|j                  | |«       t        d	ddd¬«      }|j                  | |«       |j                  dk(  sJ ‚|j                  d	k(  sJ ‚y )
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Ô>�D€A€qä
$Ø s°aÀbô€Cð ‡G�GˆAˆq„MÜ
#Ø s°aÀbô€Cð ‡G�GˆAˆq„Mð ×Ñ Ò"Ð"Ð"Ø×Ñ Ò"Ð"Ñ"rq   c                  ó  — t        dd¬«      \  } }t        dddddd¬	«      }t        |«      j                  d
¬«      }t        |«      j                  d¬«      }t	        dddddd¬«      }t        |«      j                  d
¬«      }t        |«      j                  d¬«      }t        | |d¬«      \  }}	}
}|j                  ||
«       |j                  ||
«       |j                  |j                  k7  sJ ‚|j                  ||
«       |j                  ||
«       |j                  |j                  k7  sJ ‚|j                  ||
«       |j                  ||
«       |j                  |j                  k  sJ ‚|j                  |j                  k  sJ ‚y )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   rY  r   r   r7   rÍ  )rC   rD   rÒ  Úgbc2Úgbc3rÓ  Úgbr2Úgbr3rg   rh   ri   rj   s               r>   Ú*test_gradient_boosting_validation_fractionrÜ    s  € Ü¨¸AÔ>�D€A€qä
$ØØØØØØô€Cô �‹:× Ñ °SÐ Ó9€DÜ�‹:× Ñ °"Ð Ó5€Dä
#ØØØØØØô€Cô �‹:× Ñ °SÐ Ó9€DÜ�‹:× Ñ °"Ð Ó5€Dä'7¸¸1È2Ô'NÑ$€GˆV�W˜fà‡G�GˆG�WÔØ‡H�HˆW�gÔØ×Ñ × 2Ñ 2Ò2Ð2Ð2à‡G�GˆG�WÔØ‡H�HˆW�gÔØ×Ñ × 2Ñ 2Ò2Ð2Ð2ð 	‡H�HˆW�gÔØ‡H�HˆW�gÔØ×Ñ˜t×1Ñ1Ò1Ð1Ð1Ø×Ñ˜t×1Ñ1Ò1Ð1Ñ1rq   c                  óÄ   — ddgddgddgddgg} g d¢}t        d¬«      }t        j                  t        d¬	«      5  |j	                  | |«       d d d «       y # 1 sw Y   y xY w)
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ß  -  se   € à
ˆQˆ�!�Q�˜!˜Q˜ ! Q Ð(€AÚ€Aä
$°aÔ
8€CÜ	�‰ÜÐLô
ñ ð 	�‰��1Œ÷÷ ñ ús   ºAÁAc                  ó   — t        dd¬«      S )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                 ó   —  |«       \  }}t         j                  j                  |«      j                  d«      } |«       } | |¬«      j	                  |||¬«       t         |«       «      } | |¬«      j	                  ||«       t        j                  t        d¬«      5   | |¬«      j	                  |||¬«       d d d «       y # 1 sw Y   y xY w)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¹   € ñ" ‹?�D€A€qÜ—I‘I×)Ñ)Ð*<Ó=×BÑBÀ3ÓG€Mñ Ó€HÙˆHÔ×Ñ˜!˜Q¨mÐÔ<ô %¡^Ó%5Ó6€HÙˆHÔ×Ñ˜!˜QÔÜ	�‰”zÐ)UÔ	Vñ AÙ
�Ô×Ñ˜a °-ÐÔ@÷A÷ Añ Aús   ÂCÃCc            	      ó|  — t        d¬«      \  } }t        t        «       «      }t        |¬«      }|j	                  | |«       t        j                  t        d¬«      5  |j	                  | |t        j                  | j                  d   «      ¬«       d d d «       d}d|› d	�}t        j                  t        t        j                  |«      ¬«      5  t        d
|¬«      }t        |¬«      }|j	                  | |t        j                  | j                  d   «      ¬«       d d d «       y # 1 sw Y   Œ–xY w# 1 sw Y   y xY w)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  € ô ¨Ô*�D€A€qÜÔ)Ó+Ó,€DÜ	"¨Ô	-€BØ‡F�Fˆ1ˆa„Lä	�‰ÜØNô
ñ 8ð 	�‰ˆq�!¤2§7¡7¨1¯7©7°1©:Ó#6ˆÔ7÷	8ð €Jð	"Ø", ¨Yð	8ð ô 
�‰Ô,´B·I±I¸gÓ4FÔ	Gñ 8ä˜6 jÔ1ˆÜ&¨DÔ1ˆØ
�‰ˆq�!¤2§7¡7¨1¯7©7°1©:Ó#6ˆÔ7÷	8ð 8÷8ð 8ú÷8ð 8ús   Á5D&ÃAD2Ä&D/Ä2D;c                  óä   — dggdz  } ddgdgdz  z   }t        ddd¬«      }t        j                  t        d¬	«      5  |j	                  | |«       d d d «       t        ddd
¬«      }y # 1 sw Y   ŒxY w)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  s�   € ð ˆˆ�‰
€AØ	
ˆAˆ�!��q‘Ñ€AÜ	#Ø¨Àô
€Bô 
�‰ÜÐLô
ñ ð 	�‰ˆq�!Œ÷ô 
$Ø¨Àô
�B÷ð ús   ¼A&Á&A/c                  óþ   — t        j                  d«      } t        j                  d«      }t        «       j	                  | |«      }t        |j                  t        j                  dt         j                  ¬«      «       y )N)r'   r'   )r'   r'   rÎ   )rR   r¦   r|   r   r7   r   r“   rÒ   )rC   rD   rÓ  s      r>   Ú'test_gbr_degenerate_feature_importancesrõ  �  sQ   € ä
�‰�Ó€AÜ
�‰�‹€AÜ
#Ó
%×
)Ñ
)¨!¨QÓ
/€CÜ�s×/Ñ/´·±¸"ÄBÇJÁJÔ1OÕPrq   c                  óØ  — d} d}t        j                  t        j                  |«      | «      }t        j                  ||dz  «      }t        j                  | | dz  «      }t         j                  ||f   }t         j
                  j                  d«      }||j                  d|j                  ¬«      z   }t        d¬«      j                  ||«      }t        d	¬«      j                  ||«      }t        «       j                  ||«      }	|j                  |«      }
t        j                  |j                  |«      |
k  «      sJ ‚t        j                  |
|	j                  |«      k  «      sJ ‚y
)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  ˜  s1  € à€EØ€IÜ
�‰”—	‘	˜)Ó$ eÓ,€AÜ	�‰�A�y 1‘}Ó	%€BÜ	�‰�Q�B˜˜
 Q™Ó	'€BÜ
�‰ˆb�"ˆf‰€Aä
�)‰)×
Ñ
 Ó
#€Cà	ˆC�O‰O !¨!¯'©'ˆOÓ2Ñ2€Aä2Ð8HÔI×MÑMÈaÐQRÓSÐÜ)¨wÔ7×;Ñ;¸A¸qÓA€IÜ1Ó3×7Ñ7¸¸1Ó=Ðà%×-Ñ-¨aÓ0ÐÜ�6‰6Ð$×,Ñ,¨QÓ/Ð3HÑHÔIÐIÐIÜ�6‰6Ð'Ð+<×+DÑ+DÀQÓ+GÑGÔHÐHÑHrq   c                  óÖ  — t        j                  «       5  t        j                  d«       t        t	        j
                  d«      d«      dk(  sJ ‚t        t	        j
                  d«      t	        j
                  d«      «      dk(  sJ ‚	 ddd«       t        j                  t        d¬«      5  t        t	        j
                  d«      d«       ddd«       y# 1 sw Y   ŒMxY w# 1 sw Y   yxY w)	z0Test that _safe_divide handles division by zero.Úerrorgœu ˆ<ä7~r   rJ   NÚoverflowr2   g»½×Ùß|Û=)	rä   rå   Úsimplefilterr   rR   rÒ   r4   r  ÚRuntimeWarningrc   rq   r>   Útest_safe_divider  ®  sµ   € ä	×	 Ñ	 Ó	"ñ CÜ×Ñ˜gÔ&ÜœBŸJ™J uÓ-¨qÓ1°QÒ6Ð6Ð6ÜœBŸJ™J s›O¬R¯Z©Z¸«_Ó=ÀÒBÐBÑB÷Cô 
�‰”n¨JÔ	7ñ /ä”R—Z‘Z Ó&¨Ô.÷/ð /÷	Cð Cú÷/ð /ús   •A1CÂ* CÃCÃC(c                  ó  — d} t        j                  | «      }t        j                  || dz  «      }t        j                  | |  dz  «      }t         j                  ||f   }t	        dd¬«      j                  ||«      }t        j                  g d¢«      }t        |j                  |«      |d¬«       t        j                  g d	¢«      }t        |j                  d
d |d¬«       t        j                  ddg| dz  «      }t	        dd¬«      j                  |||¬«      }t        j                  g d¢«      }t        |j                  |«      |dd¬«       t        j                  g d¢«      }t        |j                  d
d |dd¬«       y)zˆTest 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ýÿ@g¬lUöÿ@gñ£u¯îÿ@gÍ€«#äÿ@g'aK4íÿ!@ç:Œ0âŽyE>©Úrtol)
geœÔ©(j>gô„¾³ò<e>g †kÏx?a>gèzU:\>gWâýw¾V>gÛÉã·ÈwR>g¶÷ïØÿM>g0¿~JÇYH>gh�1œ`ÁC>gÃ±åØ­
@>rz  Nr!   rz   )
g¥´â°hù#?gq)ßu ð?g	1ú~(  @g_ªQ @g“åÁi @gî�Åªÿÿ@gì3%aøÿ@g[žA"ñÿ@gâdÑ*éÿ@gg¬h9ñÿ!@g�íµ ÷Æ°>gñhãˆµøä>)r  Úatol)
gŸwFàš$f>gÛªÞ5ôa>gÁÕù:Z]>glF2¢U™W>g„Œ²—™!S>gô·‘áO>gƒ×1¿&I>gÍ—¦KÚcD>g‘U}Þ‡@>gùÄ©Î:>rÌ  g•dyáý¥=)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  ¹  sa  € ð
 €IÜ
�	‰	�)Ó€AÜ	�‰�A�y 1‘}Ó	%€BÜ	�‰�Q�B˜˜
 Q™Ó	'€BÜ
�‰ˆb�"ˆf‰€AÜ
#¨ÀsÔ
K×
OÑ
OÐPQÐSTÓ
U€Cä—(‘(ò	
ó€Kô �C—K‘K “N K°dÕ;ä—(‘(ò	
ó€Kô �C×$Ñ$ S TÐ*¨K¸dÕCô —W‘W˜a ˜W i°1¡nÓ5€NÜ
#¨ÀsÔ
K×
OÑ
OØ	ˆ1˜Nð Pó €Cô —(‘(ò	
ó€Kô �C—K‘K “N K°dÀÕFä—(‘(ò	
ó€Kô �C×$Ñ$ S TÐ*¨K¸dÈÖOrq   c                  ó   — d} t        j                  | «      }t        j                  || dz  «      }t        j                  | |  dz  «      }t         j                  ||f   }t	        ddd¬«      j                  ||«      }t        |j                  j                  j                  d«       t        j                  g d¢«      }t        |j                  |«      |d	¬
«       t        j                  g d¢«      }t        |j                  dd |d	¬
«       y)z€Test 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‘³%?)
g¦zÝ®j#?g7Àÿh•ÿï?gü31e @gîZ„Zºÿ@gk  @ga8t @gs×uýÿ@g%e 	Úü@g>¸T  @g±Øxìÿ!@r  r  )
gý¯°Ñéi‘>gÃAÉ¤{j�>g…#Æ$%t‰>gD9uà†>gÚíÚß�‚>g:"L”(€>g·Ý�|>gzòñ½Ô‡x>gu}˜¯v>gg—Ý±@s>rz  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Ü	�‰�A�y 1‘}Ó	%€BÜ	�‰�Q�B˜˜
 Q™Ó	'€BÜ
�‰ˆb�"ˆf‰€AÜ
#¨¸sÈ#Ô
N×
RÑ
RÐSTÐVWÓ
X€Cä�C—I‘I—O‘O×)Ñ)Ð+@ÔAä—(‘(ò	
ó€Kô �C—K‘K “N K°dÕ;ä—(‘(ò	
ó€Kô �C×$Ñ$ S TÐ*¨K¸dÖCrq   c                  ó  — d} t        j                  | «      dz  }t        j                  || dz  «      }t        j                  | |  dz  «      }t         j                  ||f   }t	        dd¬«      j                  ||«      }t        j                  ddgddgddgddgddgddgddgddgddgddgg
«      }t        |j                  |«      |d¬	«       t        j                  g d
¢«      }t        |j                  dd |d¬	«       y)zŠTest 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Òÿï?gàr¹ƒ3÷ö>r  r  )
g¸Êu>?gŒ5Ò®^Ž?gô ÁÄ?gÒ	ÅÏiì?gN¬î?gËv^q!?g2¾„C6 ?gÈ�Álø?g1oEša	?gÁÑ5ÿC÷?rz  N©
rR   rø  rù  rú  r
   r7   r  r   r›   rQ   r  s           r>   Ú)test_binomial_error_exact_backward_compatr  <  s  € ð
 €IÜ
�	‰	�)Ó˜qÑ €AÜ	�‰�A�y 1‘}Ó	%€BÜ	�‰�Q�B˜˜
 Q™Ó	'€BÜ
�‰ˆb�"ˆf‰€AÜ
$¨*À3Ô
G×
KÑ
KÈAÈqÓ
Q€Cä—(‘(à˜^Ð,Ø˜^Ð,Ø˜^Ð,Ø˜^Ð,Ø˜^Ð,Ø˜^Ð,Ø˜^Ð,Ø˜^Ð,Ø˜^Ð,Ø˜^Ð,ð	
ó€Kô �C×%Ñ% aÓ(¨+¸DÕAä—(‘(ò	
ó€Kô �C×$Ñ$ S TÐ*¨K¸dÖCrq   c                  ó  — d} t        j                  | «      dz  }t        j                  || dz  «      }t        j                  | |  dz  «      }t         j                  ||f   }t	        dd¬«      j                  ||«      }t        j                  g d¢g d¢g d	¢g d
¢g d¢g d¢g d	¢g d
¢g d¢g d¢g
«      }t        |j                  |«      |d¬«       t        j                  g d¢«      }t        |j                  dd |d¬«       y)zŽTest 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ÿÿï?gr¿LD“~>çlÿÁ-a›u>çh,a›u>)gŠÓË?“~>r  r  r  )ç0Q¿¤(€>r   çW„Qÿÿï?g?öm…}w>)r   r   gX
í€}w>r!  r  r  )
g]ÓR4³>g³�õ{a\°>g5õ|ÿñ)¬>guï¶B¨=¨>gÈ@3BÝ¤>g³ b‡Cõ¡>gB2h–Íéž>g�@,y›š>g"âŒy°æ–>gŒœû=¶“>rz  Nr  r  s           r>   Ú,test_multinomial_error_exact_backward_compatr"  i  sê   € ð
 €IÜ
�	‰	�)Ó˜qÑ €AÜ	�‰�A�y 1‘}Ó	%€BÜ	�‰�Q�B˜˜
 Q™Ó	'€BÜ
�‰ˆb�"ˆf‰€AÜ
$¨*À3Ô
G×
KÑ
KÈAÈqÓ
Q€Cä—(‘(âLÚLÚLÚLÚLÚLÚLÚLÚLÚLð	
ó€Kô �C×%Ñ% aÓ(¨+¸DÕAä—(‘(ò	
ó€Kô �C×$Ñ$ S TÐ*¨K¸dÖCrq   c                 ó  — t        j                  dd¬«      \  }}ddddd| dd	œ}t        di |¤Ž}t        j                  «       5  t        j
                  d
«       |j                  ||«       ddd«       y# 1 sw Y   yxY w)a`  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&  –  sƒ   € ô ×$Ñ$¨sÀÔD�D€A€qð ØØØØØ*Øñ€Fô %Ñ
. vÑ
.€Cä	×	 Ñ	 Ó	"ñ Ü×Ñ˜gÔ&Ø�‰��1Œ÷÷ ñ ús   Á(A5Á5A>)ŽÚ__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+  rP  rS  r]  r_  rh  rk  rq  ru  rx  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>rC     s¢  ðñó 
Û ã Û Ý )å Ý ß Aß 9ß RÝ -Ý >ß DÝ 1Ý .Ý 4Ý *Ý 'Ý Ý ,Ý 8Ý A÷ñ ÷
 OÑ Nà :Ð<UÐVÐ ð 	ˆ"€X��Bˆx˜"˜b˜ A q 6¨A¨q¨6°A°q°6Ð:€Ú€Øˆ"€X��1ˆv˜˜1�vÐ€Ú€ñ Ø˜a¨q¸Èô�€€uñ 	ˆe‹€à‡i�i×Ñ˜AÓ€ð €x×ÑÓ€Ø
‡��t—{‘{×'Ñ'Ó(€Ø�I‰I�d‰O€„	Ø�k‰k˜$Ñ€„ò(òð ‡�×Ñ˜Ð!<Ó=ñ&ó >ð&ð( ‡�×Ñ˜Ð!<Ó=ñ*Só >ð*SðZ ‡�×Ñ˜Ð!MÓNØ‡�×Ñ˜ jÓ1ñ$ó 2ó Oð$ðN ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜¨)Ó4ñ)ó 5ó 2ð)ò$)ðX ‡�×ÑØà	" E¨5Ð1Ø	# T§Y¡Y°·±Ð<ðóñ1óð1ò,ò(3ð ‡�×Ñ˜¨.Ó9ñMó :ðMò Eò(!NòH#òB)ò*Gð6 ‡�×Ñ˜Ð&BÓCñ-ó Dð-ò$'ò(Tò&ò2'ò'ò'ò*'ð: ‡�×ÑÐ4Ð6RÓSñó Tðð ‡�×ÑÐ4Ð6RÓ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ð Ø‡�×ÑØÐ1Ð3LÐMóð ‡�×ÑØ˜¨Ñ7¸.ÑHóñ%7óóó ð%7ðP ‡�×ÑØÐ"<Ð>WÐ!Xóñ 4óð 4òF#ò&(2òV	òDð ‡�×ÑØ'à	#Ð%8¸/ÐJØ	#Ð%5°ÐGØ	" O°^ÐDðò
 	Mð ó ñAóðAò,8ò<ò,QòIò,/òPPðf ñ,Dó ð,Dò^*DòZ*DóZrq   