ó
    tñ:i S  ã                   ó’  • S r SSKrSSKrSSKrSSKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJr  SSKrSSKJr  SSKJrJr  SSKJrJrJrJrJr  / S	Qr\\\\\4   4   r \r! " S
 S\5      r"S\
\#   S\
\\#\\4      4S jr$\" S5      r%S\%S\%4S jr& " S S5      r' " S S\"5      r( " S S\"5      r) " S S\"5      r* " S S\"5      r+g)z}Callback library containing training routines.  See :doc:`Callback Functions
</python/callbacks>` for a quick introduction.

é    N)ÚABC)ÚAnyÚCallableÚDictÚListÚOptionalÚSequenceÚTupleÚ	TypeAliasÚTypeVarÚUnionÚcasté   )Ú
collective)ÚEvalsLogÚ
_ScoreList)ÚBoosterÚDMatrixÚXGBoostErrorÚ_deprecate_positional_argsÚ_parse_eval_str)ÚTrainingCallbackÚLearningRateSchedulerÚEarlyStoppingÚEvaluationMonitorÚTrainingCheckPointÚCallbackContainerc                   óŠ   • \ rS rSr% Sr\r\\S'   SS jrS\	S\	4S jr
S\	S\	4S	 jrS\	S
\S\S\4S jrS\	S
\S\S\4S jrSrg)r   é3   z;Interface for training callback.

.. versionadded:: 1.3.0

r   ÚreturnNc                 ó   • g ©N© )Úselfs    ÚS/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/xgboost/callback.pyÚ__init__ÚTrainingCallback.__init__=   s   € Øó    Úmodelc                 ó   • U$ )zRun before training starts.r#   ©r$   r)   s     r%   Úbefore_trainingÚ TrainingCallback.before_training@   ó   € àˆr(   c                 ó   • U$ )zRun after training is finished.r#   r+   s     r%   Úafter_trainingÚTrainingCallback.after_trainingD   r.   r(   ÚepochÚ	evals_logc                 ó   • g)zqRun before each iteration.  Returns True when training should stop. See
:py:meth:`after_iteration` for details.

Fr#   ©r$   r)   r2   r3   s       r%   Úbefore_iterationÚ!TrainingCallback.before_iterationH   s   € ð
 r(   c                 ó   • g)a‘  Run after each iteration.  Returns `True` when training should stop.

Parameters
----------

model :
    Eeither a :py:class:`~xgboost.Booster` object or a CVPack if the cv function
    in xgboost is being used.
epoch :
    The current training iteration.
evals_log :
    A dictionary containing the evaluation history:

    .. code-block:: python

        {"data_name": {"metric_name": [0.5, ...]}}

Fr#   r5   s       r%   Úafter_iterationÚ TrainingCallback.after_iterationO   s   € ð& r(   r#   )r    N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__annotations__r&   Ú_Modelr,   r0   ÚintÚboolr6   r9   Ú__static_attributes__r#   r(   r%   r   r   3   s‚   ‡ ñð #€HˆiÓ"ôð Vð °ô ð Fð ¨vô ð fð °Sð ÀXð ÐRVô ð Vð °Cð ÀHð ÐQU÷ r(   r   Úrlistr    c                 ó¸  • 0 nU S   R                  5       S   nU  H—  nUR                  5       nX$S   :X  d   e[        USS 5       Hh  u  pV[        U[        5      (       d  UR	                  5       nUR                  S5      u  pxXW4U;  a  / XU4'   XU4   R                  [        U5      5        Mj     M™     Un	/ n
[        UR                  5       S S9 Hƒ  u  u  p¼n[        R                  " U5      n[        U	[        5      (       d  U	R	                  5       n	[        R                  " U5      [        R                  " U5      nnU
R                  XÏU4/5        M…     U
$ )z#Aggregate cross-validation results.r   r   NÚ:c                 ó   • U S   S   $ ©Nr   r#   )Úxs    r%   Ú<lambda>Ú_aggcv.<locals>.<lambda>v   s   € ¸A¸a¹DÀºGr(   )Úkey)ÚsplitÚ	enumerateÚ
isinstanceÚstrÚdecodeÚappendÚfloatÚsortedÚitemsÚnumpyÚarrayÚmeanÚstdÚextend)rE   ÚcvmapÚidxÚlineÚarrÚ
metric_idxÚitÚkÚvÚmsgÚresultsÚ_ÚnameÚsÚas_arrrY   rZ   s                    r%   Ú_aggcvrj   e   s4  € ð 13€EØ
�‰(�.‰.Ó
˜1Ñ
€CÛˆØŸ™›ˆØ˜!‘f‹}Ðˆ}Ü'¨¨A¨B¨Ö0‰NˆJÜ˜b¤#×&Ñ&Ø—Y‘Y“[�Ø—8‘8˜C“=‰DˆAØˆ eÓ+Ø)+� 1�oÑ&Ø˜q�/Ñ"×)Ñ)¬%°«(Ö3ó 1ñ ð €CØ€GÜ˜uŸ{™{›}Ñ2CÔD‰‰	ˆ�1Ü—’˜Q“ˆÜ˜#œs×#Ñ#Ø—*‘*“,ˆCÜ—J’J˜vÓ&¬¯	ª	°&Ó(9ˆcˆØ�‰˜ SÐ)Ð*Ö+ñ Eð €Nr(   Ú_ARTÚscorec                 ó(  • [         R                  " 5       nUS:w  d   eUS:X  a  U $ [        U [        5      (       a  [	        S5      e[
        R                  " U /5      n[         R                  " U[         R                  R                  5      U-  nUS   $ )z›Helper function for computing customized metric in distributed
environment.  Not strictly correct as many functions don't use mean value
as final result.

r   r   zBxgboost.cv function should not be used in distributed environment.)
r   Úget_world_sizerP   ÚtupleÚ
ValueErrorrW   rX   Ú	allreduceÚOpÚSUM)rl   Úworldr_   s      r%   Ú_allreduce_metricru   ƒ   sƒ   € ô ×%Ò%Ó'€EØ�A‹:Ðˆ:Ø�ƒzØˆÜ�%œ×ÑÜØPó
ð 	
ô �+Š+�u�gÓ
€CÜ
×
Ò
˜s¤J§M¡M×$5Ñ$5Ó
6¸Ñ
>€CØˆq‰6€Mr(   c                   ó  • \ rS rSrSr   SS\\   S\\   S\	S\	SS4
S	 jjr
S
\S\4S jrS
\S\4S jrS
\S\S\S\\\\\4         S\	4
S jrS\\\\\4      \\\\\4      4   S\SS4S jrS
\S\S\S\\\\\4         S\	4
S jrSrg)r   é–   z^A special internal callback for invoking a list of other callbacks.

.. versionadded:: 1.3.0

NÚ	callbacksÚmetricÚoutput_marginÚis_cvr    c                 óf  • [        [        R                  U5      5      U l        U H#  n[	        U[
        5      (       a  M  [        S5      e   SnUb  [        U5      (       d  [        U5      eX l        [        R                  " 5       U l        X0l        X@l        U R                  (       a  S U l        g g )Nz3callback must be an instance of `TrainingCallback`.z†metric must be callable object for monitoring.  For builtin metrics, passing them in training parameter invokes monitor automatically.)ÚlistÚdictÚfromkeysrx   rP   r   Ú	TypeErrorÚcallablery   ÚcollectionsÚOrderedDictÚhistoryÚ_output_marginr{   Úaggregated_cv)r$   rx   ry   rz   r{   Úcbrd   s          r%   r&   ÚCallbackContainer.__init__�   s˜   € ô œdŸm™m¨IÓ6Ó7ˆŒÛˆBÜ˜bÔ"2×3Ó3ÜÐ UÓVÐVñ ð
Rð 	ð Ñ¤h¨v×&6Ñ&6Ü˜C“.Ð àŒÜ!,×!8Ò!8Ó!:ˆŒØ+ÔØŒ
à�:�:ØKOˆDÕð r(   r)   c                 óø   • U R                    Hi  nUR                  US9nSnU R                  (       a(  [        UR                  [
        5      (       d   U5       eMM  [        U[        5      (       a  Md   U5       e   U$ )z Function called before training.©r)   z'before_training should return the model)rx   r,   r{   rP   Úcvfoldsr}   r   ©r$   r)   Úcrd   s       r%   r,   Ú!CallbackContainer.before_training¸   sj   € à—”ˆAØ×%Ñ%¨EÐ%Ð2ˆEØ;ˆCØ�z�zÜ! %§-¡-´×6Ñ6Ð;¸Ó;Ò6ä! %¬×1Ó1Ð6°3Ó6Ð1ñ  ð ˆr(   c                 óø   • U R                    Hi  nUR                  US9nSnU R                  (       a(  [        UR                  [
        5      (       d   U5       eMM  [        U[        5      (       a  Md   U5       e   U$ )zFunction called after training.rŠ   z&after_training should return the model)rx   r0   r{   rP   r‹   r}   r   rŒ   s       r%   r0   Ú CallbackContainer.after_trainingÃ   sj   € à—”ˆAØ×$Ñ$¨5Ð$Ð1ˆEØ:ˆCØ�z�zÜ! %§-¡-´×6Ñ6Ð;¸Ó;Ò6ä! %¬×1Ó1Ð6°3Ó6Ð1ñ  ð ˆr(   r2   ÚdtrainÚevalsc                 óJ   ^ ^^• [        UUU 4S jT R                   5       5      $ )z*Function called before training iteration.c              3   ó\   >#   • U  H!  oR                  TTTR                  5      v •  M#     g 7fr"   )r6   r„   ©Ú.0r�   r2   r)   r$   s     €€€r%   Ú	<genexpr>Ú5CallbackContainer.before_iteration.<locals>.<genexpr>×   s(   øé € ð 
ÚDR¸q×Ñ˜u e¨T¯\©\×:Ð:ÂNùó   ƒ),)Úanyrx   )r$   r)   r2   r‘   r’   s   ```  r%   r6   Ú"CallbackContainer.before_iterationÏ   s#   ú€ ô ö 
ØDHÇNÂNó
ó 
ð 	
r(   rl   c           	      ó  • U GHy  nUS   nUS   nU R                   (       a2  [        [        [        [        [        [        4   U5      S   5      nXV4nOUnUR                  S5      nUS   n	SR                  USS  5      n
[        U5      nX�R                  ;  a"  [        R                  " 5       U R                  U	'   U R                  U	   nX«;  a  [        [        / 5      Xº'   Xº   nU R                   (       aQ  [        [        [        [        [        4      U5      R                  [        [        [        [        4   U5      5        GME  [        [        [           U5      R                  [        [        U5      5        GM|     g )Nr   r   é   Ú-)r{   rT   r   r
   rQ   rN   Újoinru   r„   r‚   rƒ   r   r   rS   )r$   rl   r2   Údrg   rh   rZ   rJ   Úsplited_namesÚ	data_nameÚmetric_nameÚdata_historyÚmetric_historys                r%   Ú_update_historyÚ!CallbackContainer._update_historyÛ   s5  € ô
 ˆAØ˜!™ˆDØ˜‘tˆAØ�z�zÜœD¤¤s¬E´5Ð'8Ñ!9¸1Ó=¸aÑ@ÓA�Ø˜H‘à�Ø ŸJ™J s›OˆMØ% aÑ(ˆIØŸ(™( =°°Ð#4Ó5ˆKÜ! !Ó$ˆAØ§¡Ó,Ü*5×*AÒ*AÓ*C�—‘˜YÑ'ØŸ<™<¨	Ñ2ˆLØÓ.Ü,0´¸RÓ,@�Ñ)Ø)Ñ6ˆNØ�z�zÜ”Tœ%¤¤u Ñ-Ñ.°Ó?×FÑFÜœœu¤e˜|Ñ,¨aÓ0÷ô ”Tœ%‘[ .Ó1×8Ñ8¼¼eÀQ»×Hò/ r(   c                 óî  ^ ^^• T R                   (       aL  TR                  TT R                  T R                  5      n[	        U5      nUT l        T R                  UT5        OsUc  / OUnU H!  u  pgUR                  S5      S:X  a  M   S5       e   TR                  UTT R                  T R                  5      n[        U5      n	T R                  U	T5        [        UUU 4S jT R                   5       5      n
U
$ )z)Function called after training iteration.rž   éÿÿÿÿz#Dataset name should not contain `-`c              3   ó\   >#   • U  H!  oR                  TTTR                  5      v •  M#     g 7fr"   )r9   r„   r•   s     €€€r%   r—   Ú4CallbackContainer.after_iteration.<locals>.<genexpr>  s%   øé € ÐXÊÀA×#Ñ# E¨5°$·,±,×?Ð?Êùr™   )r{   Úevalry   r…   rj   r†   r¦   ÚfindÚeval_setr   rš   rx   )r$   r)   r2   r‘   r’   Úscoresrf   rg   rl   Úmetric_scoreÚrets   ```        r%   r9   Ú!CallbackContainer.after_iterationù   sÍ   ú€ ð �:�:Ø—Z‘Z  t§{¡{°D×4GÑ4GÓHˆFÜ˜F“^ˆFØ!'ˆDÔØ× Ñ  ¨Õ/à™-‘B¨UˆEÛ ‘�Ø—y‘y “~¨Õ+ÐRÐ-RÓRÐ+ñ !àŸ™¨¨u°d·k±kÀ4×CVÑCVÓWˆEÜ*¨5Ó1ˆLØ× Ñ  ¨uÔ5ÜÖXÈÏÊÓXÓXˆØˆ
r(   )r…   r†   rx   r„   r{   ry   )NTF)r;   r<   r=   r>   r?   r	   r   r   r   rC   r&   rA   r,   r0   rB   r   r   r
   rQ   r6   r   rT   r¦   r9   rD   r#   r(   r%   r   r   –   s\  † ñð &*Ø"ØñPàÐ,Ñ-ðPð ˜Ñ"ðPð ð	Pð
 ðPð 
õPð6	 Vð 	°ô 	ð
 Fð 
¨vô 
ð

àð

ð ð

ð ð	

ð
 ˜˜U 7¨C <Ñ0Ñ1Ñ2ð

ð 
ô

ðIà�T˜%  U 
Ñ+Ñ,¨d°5¸¸eÀUÐ9JÑ3KÑ.LÐLÑMðIð ðIð 
ô	Ið<àðð ðð ð	ð
 ˜˜U 7¨C <Ñ0Ñ1Ñ2ðð 
÷r(   r   c                   ón   ^ • \ rS rSrSrS\\\/\4   \	\   4   SS4U 4S jjr
S\S\S	\S\4S
 jrSrU =r$ )r   i  a[  Callback function for scheduling learning rate.

.. versionadded:: 1.3.0

Parameters
----------

learning_rates :
    If it's a callable object, then it should accept an integer parameter
    `epoch` and returns the corresponding learning rate.  Otherwise it
    should be a sequence like list or tuple with the same size of boosting
    rounds.

Úlearning_ratesr    Nc                 ó
  >^• [        T5      (       d@  [        T[        R                  R                  5      (       d  [        S[        T5       35      e[        T5      (       a  TU l        OU4S jU l        [        TU ]%  5         g )Nz=Invalid learning rates, expecting callable or sequence, got: c                 ó*   >• [        [        T5      U    $ r"   )r   r	   )r2   r´   s    €r%   rK   Ú0LearningRateScheduler.__init__.<locals>.<lambda>/  s   ø€ ´´X¸~Ó0NÈuÒ0Ur(   )
r�   rP   r‚   Úabcr	   r€   Útyper´   Úsuperr&   )r$   r´   Ú	__class__s    `€r%   r&   ÚLearningRateScheduler.__init__!  su   ù€ ô ˜×'Ñ'´
ØœKŸO™O×4Ñ4÷1
ñ 1
ô ØOÜ˜Ó'Ð(ð*óð ô
 �N×#Ñ#Ø"0ˆDÕä"UˆDÔÜ‰ÑÕr(   r)   r2   r3   c                 óF   • UR                  SU R                  U5      5        g)NÚlearning_rateF)Ú	set_paramr´   r5   s       r%   r9   Ú%LearningRateScheduler.after_iteration2  s   € Ø�‰˜¨×)<Ñ)<¸UÓ)CÔDØr(   )r´   )r;   r<   r=   r>   r?   r   r   rB   rT   r	   r&   rA   r   rC   r9   rD   Ú__classcell__©r»   s   @r%   r   r     s]   ø† ñðØ# H¨c¨U°E¨\Ñ$:¸HÀU¹OÐ$KÑLðà	÷ð" Vð °Cð ÀHð ÐQU÷ ò r(   r   c                   óÞ   ^ • \ rS rSrSr\SSSSSS.S\S\\   S	\\   S
\\	   S\\	   S\
SS4U 4S jjj5       rS\S\4S jrS\S\S\S\S\S\	4S jrS\S\S\S\	4S jrS\S\4S jrSrU =r$ )r   i8  aÉ  Callback function for early stopping

.. versionadded:: 1.3.0

Parameters
----------
rounds :
    Early stopping rounds.
metric_name :
    Name of metric that is used for early stopping.
data_name :
    Name of dataset that is used for early stopping.
maximize :
    Whether to maximize evaluation metric.  None means auto (discouraged).
save_best :
    Whether training should return the best model or the last model. If set to
    `True`, it will only keep the boosting rounds up to the detected best iteration,
    discarding the ones that come after. This is only supported with tree methods
    (not `gblinear`). Also, the `cv` function doesn't return a model, the parameter
    is not applicable.
min_delta :

    .. versionadded:: 1.5.0

    Minimum absolute change in score to be qualified as an improvement.

Examples
--------

.. code-block:: python

    es = xgboost.callback.EarlyStopping(
        rounds=2,
        min_delta=1e-3,
        save_best=True,
        maximize=False,
        data_name="validation_0",
        metric_name="mlogloss",
    )
    clf = xgboost.XGBClassifier(tree_method="hist", device="cuda", callbacks=[es])

    X, y = load_digits(return_X_y=True)
    clf.fit(X, y, eval_set=[(X, y)])
NFg        )r£   r¢   ÚmaximizeÚ	save_bestÚ	min_deltaÚroundsr£   r¢   rÄ   rÅ   rÆ   r    c                óØ   >• X0l         X l        Xl        XPl        X@l        0 U l        X`l        U R                  S:  a  [        S5      eSU l        0 U l	        SU l
        [        TU ]1  5         g )Nr   z(min_delta must be greater or equal to 0.)Údatar£   rÇ   rÅ   rÄ   Ústopping_historyÚ
_min_deltarp   Úcurrent_roundsÚbest_scoresÚstarting_roundrº   r&   )r$   rÇ   r£   r¢   rÄ   rÅ   rÆ   r»   s          €r%   r&   ÚEarlyStopping.__init__g  sg   ø€ ð Œ	Ø&ÔØŒØ"ŒØ ŒØ*,ˆÔØ#ŒØ�?‰?˜QÓÜÐGÓHÐHà#$ˆÔØ!#ˆÔØ#$ˆÔÜ‰ÑÕr(   r)   c                 ó’   • UR                  5       U l        [        U[        5      (       d  U R                  (       a  [        S5      eU$ )NzP`save_best` is not applicable to the `cv` function as it doesn't return a model.)Únum_boosted_roundsrÎ   rP   r   rÅ   rp   r+   s     r%   r,   ÚEarlyStopping.before_training�  s?   € Ø#×6Ñ6Ó8ˆÔÜ˜%¤×)Ñ)¨d¯n¯nÜð#óð ð ˆr(   rl   rg   ry   r2   c                óX  ^ ^^• S[         S[        4S jmS[         S[         S[        4UU 4S jjnS[         S[         S[        4UU 4S jjnT R                  c1  SnTS	:w  a"  [	        U4S
 jU 5       5      (       a  ST l        OST l        T R                  (       a  Un	OUn	T R
                  (       d‚  ST l        0 T R
                  U'   [        [        U/5      T R
                  U   T'   0 T R                  U'   U/T R                  U   T'   UR                  [        T" U5      5      [        U5      S9  OÞU	" UT R                  U   T   S   5      (       d7  T R
                  U   T   R                  U5        T =R                  S-  sl        O†T R
                  U   T   R                  U5        T R                  U   T   R                  U5        T R
                  U   T   S   n
UR                  [        T" U
5      5      [        U5      S9  ST l        T R                  T R                  :¼  a  gg)NÚvaluer    c                 ó:   • [        U [        5      (       a  U S   $ U $ )z+get score if it's cross validation history.r   )rP   ro   )rÔ   s    r%   Úget_sÚ+EarlyStopping._update_rounds.<locals>.get_s�  s   € ä)¨%´×7Ñ7�5˜‘8ÐB¸UÐBr(   ÚnewÚbestc                 ód   >• [         R                  " T" U 5      TR                  -
  T" U5      5      $ )z-New score should be greater than the old one.©rW   ÚgreaterrË   ©rØ   rÙ   rÖ   r$   s     €€r%   rÄ   Ú.EarlyStopping._update_rounds.<locals>.maximize‘  s%   ø€ ä—=’=¡ s£¨d¯o©oÑ!=¹uÀT»{ÓKÐKr(   c                 ód   >• [         R                  " T" U5      TR                  -
  T" U 5      5      $ )z,New score should be lesser than the old one.rÛ   rÝ   s     €€r%   ÚminimizeÚ.EarlyStopping._update_rounds.<locals>.minimize•  s%   ø€ ä—=’=¡ t£¨t¯©Ñ!>ÁÀcÃ
ÓKÐKr(   )
ÚaucÚaucprÚprezpre@ÚmapÚndcgzauc@zaucpr@zmap@zndcg@Úmapec              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr"   )Ú
startswith)r–   rJ   ry   s     €r%   r—   Ú/EarlyStopping._update_rounds.<locals>.<genexpr>¨  s!   øé € Ð'WÒFVÀ¨×(9Ñ(9¸!×(<Ð(<ÒFVùs   ƒ!TFr   )Ú
best_scoreÚbest_iterationr©   r   )Ú_ScorerT   rC   rÄ   rš   rÊ   rÌ   r   r   rÍ   Úset_attrrQ   rS   rÇ   )r$   rl   rg   ry   r)   r2   rÄ   rà   Úmaximize_metricsÚ
improve_opÚrecordrÖ   s   `  `       @r%   Ú_update_roundsÚEarlyStopping._update_roundsŠ  s  ú€ ð	Cœð 	C¤Eô 	Cð	Lœ&ð 	L¬ð 	L´4÷ 	Lð 	Lð	Lœ&ð 	L¬ð 	L´4÷ 	Lð 	Lð �=‰=Ñ ð Ðð ˜Ó¤CÔ'WÑFVÓ'W×$WÑ$WØ $�•à %�”à�=�=Ø!‰Jà!ˆJà×$×$Ø"#ˆDÔØ*,ˆD×!Ñ! $Ñ'Ü26´zÀEÀ7Ó2KˆD×!Ñ! $Ñ'¨Ñ/Ø%'ˆD×Ñ˜TÑ"Ø.3¨WˆD×Ñ˜TÑ" 6Ñ*Ø�N‰N¤c©%°«,Ó&7ÌÈEË
ˆNÒSÙ˜E 4×#3Ñ#3°DÑ#9¸&Ñ#AÀ"Ñ#E×FÑFà×!Ñ! $Ñ'¨Ñ/×6Ñ6°uÔ=Ø×Ò 1Ñ$Öà×!Ñ! $Ñ'¨Ñ/×6Ñ6°uÔ=Ø×Ñ˜TÑ" 6Ñ*×1Ñ1°%Ô8Ø×*Ñ*¨4Ñ0°Ñ8¸Ñ<ˆFØ�N‰N¤c©%°«-Ó&8ÌÈUËˆNÑTØ"#ˆDÔà×Ñ $§+¡+Ó-àØr(   r3   c                 ó6  • X R                   -  nSn[        UR                  5       5      S:  a  [        U5      eU R                  (       a  U R                  nO[        UR                  5       5      S   nXS;  a  [        SU 35      e[        U[        5      (       d  [        S[        U5       35      eX5   nU R                  (       a  U R                  nO[        UR                  5       5      S   nXv;  a  [        SU 35      eXg   S   nU R                  X…XqUS9$ )Nz;Must have at least 1 validation dataset for early stopping.r   r©   zNo dataset named: z1The name of the dataset should be a string. Got: zNo metric named: )rl   rg   ry   r)   r2   )rÎ   ÚlenÚkeysrp   rÉ   r}   rP   rQ   r€   r¹   r£   rò   )	r$   r)   r2   r3   rd   r¢   Údata_logr£   rl   s	            r%   r9   ÚEarlyStopping.after_iterationÉ  s  € Ø×$Ñ$Ñ$ˆØKˆÜˆy�~‰~ÓÓ  1Ó$Ü˜S“/Ð!ð �9�9ØŸ	™	‰Iô ˜YŸ^™^Ó-Ó.¨rÑ2ˆIØÓ%ÜÐ1°)°Ð=Ó>Ð>ä˜)¤S×)Ñ)ÜØCÄDÈÃOÐCTÐUóð ð Ñ'ˆð ××Ø×*Ñ*‰Kô ˜xŸ}™}›Ó/°Ñ3ˆKØÓ&ÜÐ0°°Ð>Ó?Ð?ð Ñ% bÑ)ˆØ×"Ñ"Ø°ÐPUð #ð 
ð 	
r(   c                 óÒ   • U R                   (       d  U$  UR                  nUR                  nUb  Uc   eUS US-    nX!l        X1l        U$ ! [         a  n[        S5      UeS nAff = f)Nr   z4`save_best` is not applicable to the current booster)rÅ   rì   rë   r   )r$   r)   rì   rë   Úes        r%   r0   ÚEarlyStopping.after_trainingí  s„   € Ø�~�~ØˆLð
	Ø"×1Ñ1ˆNØ×)Ñ)ˆJØ!Ñ-°*Ñ2HÐHÐHØÐ.˜N¨QÑ.Ð/ˆEØ#1Ô Ø)Ôð ˆøô ó 	ÜØFóàðûð	ús   •4A Á
A&ÁA!Á!A&)
rË   rÍ   rÌ   rÉ   rÄ   r£   rÇ   rÅ   rÎ   rÊ   )r;   r<   r=   r>   r?   r   rB   r   rQ   rC   rT   r&   rA   r,   rí   rò   r   r9   r0   rD   rÁ   rÂ   s   @r%   r   r   8  s  ø† ñ+ð\  ð
 &*Ø#'Ø#'Ø$)Øòð ðð ˜c‘]ð	ð
 ˜C‘=ðð ˜4‘.ðð ˜D‘>ðð ðð 
÷ó  ðð2 Vð °ô ð=Øð=Ø&)ð=Ø36ð=Ø?Eð=ØNQð=à	ô=ð~"
 Vð "
°Cð "
ÀHð "
ÐQUô "
ðH Fð ¨v÷ ò r(   r   c                   ó¼   ^ • \ rS rSrSrSSS\R                  4S\S\S\S	\	\
/S
4   4U 4S jjjrS\
S\
S\S\\   S\
4
S jrS\S\S\S\4S jrS\S\4S jrSrU =r$ )r   i   ab  Print the evaluation result at each iteration.

.. versionadded:: 1.3.0

Parameters
----------

rank :
    Which worker should be used for printing the result.
period :
    How many epoches between printing.
show_stdv :
    Used in cv to show standard deviation.  Users should not specify it.
logger :
    A callable used for logging evaluation result.

r   r   FÚrankÚperiodÚ	show_stdvÚloggerNc                 óp   >• Xl         X0l        X l        X@l        US:”  d   eS U l        [
        TU ]  5         g rI   )Úprinter_rankrÿ   rþ   Ú_loggerÚ_latestrº   r&   )r$   rý   rþ   rÿ   r   r»   s        €r%   r&   ÚEvaluationMonitor.__init__  s8   ø€ ð !ÔØ"ŒØŒØŒØ˜‹zÐˆzà&*ˆŒÜ‰ÑÕr(   rÉ   ry   rl   rZ   r    c                 óv   • Ub&  U R                   (       a  SUS-   U-    SUS SUS 3nU$ SUS-   U-    SUS 3nU$ )NÚ	rž   rG   z.5fÚ+)rÿ   )r$   rÉ   ry   rl   rZ   rd   s         r%   Ú_fmt_metricÚEvaluationMonitor._fmt_metric#  sa   € ð ‰?˜tŸ~Ÿ~Ø�t˜c‘z FÑ*Ð+¨1¨U°3¨K°q¸¸S¸	ÐBˆCð ˆ
ð �t˜c‘z FÑ*Ð+¨1¨U°3¨KÐ8ˆCØˆ
r(   r)   r2   r3   c           	      óÞ  • U(       d  gSU S3n[         R                  " 5       U R                  :X  a¼  UR                  5        Hb  u  pVUR                  5        HI  u  pxS n	[	        US   [
        5      (       a  US   S   n
US   S   n	OUS   n
X@R                  XWX©5      -  nMK     Md     US-  nX R                  -  S:X  d  U R                  S:X  a  U R                  U5        S U l	        gX@l	        g)NFÚ[Ú]r©   r   r   Ú
)
r   Úget_rankr  rV   rP   ro   r	  rþ   r  r  )r$   r)   r2   r3   rd   rÉ   ry   r£   ÚlogÚstdvrl   s              r%   r9   Ú!EvaluationMonitor.after_iteration,  sç   € ÞØà�u�g˜Q�<ˆÜ×ÒÓ  D×$5Ñ$5Ó5Ø )§¡Ö 1‘�Ø(.¯©®Ñ$�KØ,0�DÜ! # b¡'¬5×1Ñ1Ø # B¡¨¡
˜Ø" 2™w q™z™à # B¡˜Ø×+Ñ+¨D¸uÓKÑK’Có )7ñ !2ð �4‰KˆCàŸ™Ñ#¨Ó)¨T¯[©[¸AÓ-=Ø—‘˜SÔ!Ø#�”ð ð  #”Ør(   c                 óœ   • [         R                  " 5       U R                  :X  a(  U R                  b  U R	                  U R                  5        U$ r"   )r   r  r  r  r  r+   s     r%   r0   Ú EvaluationMonitor.after_trainingE  s7   € Ü×ÒÓ  D×$5Ñ$5Ó5¸$¿,¹,Ñ:RØ�L‰L˜Ÿ™Ô&Øˆr(   )r  r  rþ   r  rÿ   )r;   r<   r=   r>   r?   r   Úcommunicator_printrB   rC   r   rQ   r&   rT   r   r	  rA   r   r9   r0   rD   rÁ   rÂ   s   @r%   r   r      sÂ   ø† ñð( ØØØ(2×(EÑ(Eñàðð ðð ð	ð
 ˜#˜ ˜Ñ%÷ð ð ØðØ!$ðØ-2ðØ9AÀ%¹ðà	ôð Vð °Cð ÀHð ÐQUô ð2 Fð ¨v÷ ò r(   r   c                   óœ   ^ • \ rS rSrSrSr   SS\\\R                  4   S\S\
S\S	S
4
U 4S jjjrS\S	\4S jrS\S\S\S	\
4S jrSrU =r$ )r   iK  a  Checkpointing operation. Users are encouraged to create their own callbacks for
checkpoint as XGBoost doesn't handle distributed file systems. When checkpointing on
distributed systems, be sure to know the rank of the worker to avoid multiple
workers checkpointing to the same place.

.. versionadded:: 1.3.0

Since XGBoost 2.1.0, the default format is changed to UBJSON.

Parameters
----------

directory :
    Output model directory.
name :
    pattern of output model file.  Models will be saved as name_0.ubj, name_1.ubj,
    name_2.ubj ....
as_pickle :
    When set to True, all training parameters will be saved in pickle format,
    instead of saving only the model.
interval :
    Interval of checkpointing.  Checkpointing is slow so setting a larger number can
    reduce performance hit.

Úubjr)   Ú	directoryrg   Ú	as_pickleÚintervalr    Nc                 ó˜   >• [         R                  " U5      U l        X l        X0l        X@l        SU l        SU l        [        TU ]%  5         g rI   )
ÚosÚfspathÚ_pathÚ_nameÚ
_as_pickleÚ_iterationsÚ_epochÚ_startrº   r&   )r$   r  rg   r  r  r»   s        €r%   r&   ÚTrainingCheckPoint.__init__h  s>   ø€ ô —Y’Y˜yÓ)ˆŒ
ØŒ
Ø#ŒØ#ÔØˆŒØˆŒÜ‰ÑÕr(   c                 ó0   • UR                  5       U l        U$ r"   )rÑ   r#  r+   s     r%   r,   Ú"TrainingCheckPoint.before_trainingw  s   € Ø×.Ñ.Ó0ˆŒØˆr(   r2   r3   c                 óD  • U R                   U R                  :X  aà  [        R                  R	                  U R
                  U R                  S-   [        X R                  -   5      -   U R                  (       a  SOSU R                   3-   5      nSU l         [        R                  " 5       S:X  aN  U R                  (       a,  [        US5       n[        R                  " X5        S S S 5        OUR!                  U5        U =R                   S-  sl         g! , (       d  f       N$= f)Nrf   z.pklÚ.r   Úwbr   F)r"  r!  r  ÚpathrŸ   r  r  rQ   r#  r   Údefault_formatr   r  ÚopenÚpickleÚdumpÚ
save_model)r$   r)   r2   r3   r*  Úfds         r%   r9   Ú"TrainingCheckPoint.after_iteration{  sÜ   € Ø�;‰;˜$×*Ñ*Ó*Ü—7‘7—<‘<Ø—
‘
Ø—
‘
Øñä�uŸ{™{Ñ*Ó+ñ-ð "Ÿ_Ÿ_‘6°A°d×6IÑ6IÐ5JÐ2KñMóˆDð ˆDŒKÜ×"Ò"Ó$¨Ó)à—?—?Ü˜d DÔ)¨RÜŸš EÔ.÷ *Ð)ð ×$Ñ$ TÔ*Ø�Š�qÑ�Ø÷ *Õ)ús   Ã
DÄ
D)r   r"  r!  r  r  r#  )r)   Féd   )r;   r<   r=   r>   r?   r+  r   rQ   r  ÚPathLikerC   rB   r&   rA   r,   r   r9   rD   rÁ   rÂ   s   @r%   r   r   K  sœ   ø† ñð4 €Nð
 ØØñà˜˜bŸk™kÐ)Ñ*ðð ðð ð	ð
 ðð 
÷ð ð Vð °ô ð Vð °Cð ÀHð ÐQU÷ ò r(   r   ),r?   r‚   r  r-  r¸   r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   rW   Ú r   Ú_typingr   r   Úcorer   r   r   r   r   Ú__all__rT   rí   rA   r   rQ   rj   rk   ru   r   r   r   r   r   r#   r(   r%   Ú<module>r9     s  ðñó
 Û 	Û Ý ÷÷ ÷ ñ ó å ß )÷õ ò€ð 
ˆu�e˜E 5˜LÑ)Ð)Ñ	*€à	€ô/�sô /ðd�$�s‘)ð   U¨3°°uÐ+<Ñ%=Ñ >ô ñ6 ˆvƒ€ð˜Tð  dô ÷&xñ xôv#Ð,ô #ôNEÐ$ô EôPHÐ(ô HôVBÐ)õ Br(   