
    ^i<                         d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZmZ ddlmZmZ d	d
lmZ dededededdf
dZdeeeef      fdZdedededededdfdZy)zTests for callback functions.    N)product)DictListTuple   )LearningRateScheduler)BoosterDMatrix)cvtrain   )Devicetree_methoddtraindtestdevicereturnc           
         t         }|df|dfg}d}dddd| |d}i }t        |||| |g d	      g|
      }	t        t        t        |d   d               }
t        |	t              sJ |
d   |
d   kD  sJ dddd| |d}i }t        |||| |g d	      g|
      }	t        t        t        |d   d               }t        |	t              sJ |d   |d   kD  sJ ddd| |d}i }t        |||| |g d      g|
      }	t        t        t        |d   d               }t        |	t              sJ |d   |d   k(  sJ |fdt        dt        dt        fd}i }t        |||| ||      g|
      }	t        t        t        |d   d               }t        |	t              sJ |d   |d   k(  sJ t        dt        |
            D ]  }||   ||   k7  rJ  t        ||| ||      g       y)z=Test learning rate scheduler, used by both CPU and GPU tests.evalr      r   r   binary:logisticerror)	max_deptheta	objectiveeval_metricr   r   )g?gffffff?g333333?g      ?)evals	callbacksevals_result)r   learning_rater   r   r   r   r   r   r   r   r   )r   r   r   r   ithroundnum_boost_roundr   c                     || dz   z  S Nr    )r#   r$   s     Z/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/xgboost/testing/callbacks.py	eta_decayz run_eta_decay.<locals>.eta_decay^   s    (Q,//    r   )r   N)r   r   listmapfloat
isinstancer	   intrangelenr   )r   r   r   r   	scheduler	watchlist	num_roundparamr   bsteval_errors_0eval_errors_1eval_errors_2r)   eval_errors_3is                   r(   run_eta_decayr<      s    &I67"34II
 &"E %'L
123!C UL$8$ABCMc7###mB//// &"E L
123!C UL$8$ABCMc7###mB//// &"E L
\*+!C UL$8$ABCMc7###}R0000 9B 0C 0# 0e 0 L
Y'(!C UL$8$ABCMc7###}Q////1c-() 4Q=#33334 ufiIi,@+ABr*   c                  4    t        t        ddgg d            S )z)Test parameters for the leaf output test.approxhist)r   zreg:absoluteerrorreg:quantileerror)r+   r   r'   r*   r(   tree_methods_objsrA   v   s$    v	
	 	r*   r   c           	      z   dt         }|df|dfg}d|d| |d}|dk(  rd|d	<   d
t        dt        ffd}t        ||| ||      g      }	d
t        dt        ffd}
t        ||| ||
      g      }|	j	                  d      }|j	                  d      }t        j                  |      }t        j                  |      }|d   d   d   d   d   }|d   d   d   d   d   }|d   |d   k(  sJ |d   |d   k(  sJ |d   d   d   d   d   }|d   d   d   d   d   }|d   |d   k7  sJ |d   |d   k7  sJ y)z&check decay has effect on leaf output.r   r   r   r   r   r"   r@   g333333?quantile_alphar;   r   c                     | dz   z  S r&   r'   r;   r4   s    r(   eta_decay_0z.run_eta_decay_leaf_output.<locals>.eta_decay_0   s    AE""r*   )r   r   c                      | dkD  ry| dz   z  S )Nr   g      @r'   rE   s    r(   eta_decay_1z.run_eta_decay_leaf_output.<locals>.eta_decay_1   s    q5AE""r*   json)
raw_formatlearnergradient_boostermodeltreesbase_weightssplit_conditions   N)r   r/   r-   r   save_rawrI   loads)r   r   r   r   r   r2   r3   r5   rF   bst0rH   bst1	bst_json0	bst_json1j0j1
tree_2th_0
tree_2th_1
tree_3th_0
tree_3th_1r4   s                       @r(   run_eta_decay_leaf_outputr^      s    I%I67"34I "E ''"%#s #u # [)*D#s #u #
 [)*D 0I0I	I	B	I	BI127;GDQGJI127;GDQGJn%N)CCCC()Z8J-KKKKI127;GDQGJI127;GDQGJn%N)CCCC()Z8J-KKKKr*   )__doc__rI   	itertoolsr   typingr   r   r   callbackr   corer	   r
   trainingr   r   utilsr   strr<   rA   r^   r'   r*   r(   <module>rg      s    #   $ $ , #   eCeC%eC.5eC?EeC	eCP4c3h0 8L8L!$8L.58L>E8LOU8L	8Lr*   