o
    Ú­j  ã                
   @   sr   d Z ddlmZ ddl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d„ZdS )z(Tests for basic features of the Booster.é    )ÚTupleN)Útestingé   )ÚBoosterÚDMatrix)ÚcvÚtrainé   )ÚDeviceÚtree_methodÚdeviceÚdtrainÚdtestÚreturnc              	      sJ  ddd| |dœ}|df|dfg}d}dt jd	td
ttt jf fdd„}t||||tj|d�}t	|t
ƒs5J ‚| |¡‰| ¡ ‰ t‡ ‡fdd„ttˆƒƒD ƒƒttˆƒƒ }	|	dk sZJ ‚t|||ddtj|d� dt jd	td
tttf fdd„}
t||||tj|
dd�}| |¡‰t‡ ‡fdd„ttˆƒƒD ƒƒttˆƒƒ }|	|ks£J ‚dS )z,Tests custom objective and metric functions.r   r	   zreg:logistic)Ú	max_depthÚetaÚ	objectiver   r   Úevalr   é
   Úpredsr   r   c                 S   s   t j| |dd�S )NT)Úrev_link)ÚtmÚeval_error_metric)r   r   © r   úY/var/www/html/CropPilot/venv/lib/python3.10/site-packages/xgboost/testing/basic_models.pyÚ	evalerror   s   z'run_custom_objective.<locals>.evalerror)ÚevalsÚobjÚcustom_metricc                 3   ó,   � | ]}t ˆ| d kƒˆ | krdV  qdS ©g      à?r	   N©Úint©Ú.0Úi)Úlabelsr   r   r   Ú	<genexpr>.   s   €* z'run_custom_objective.<locals>.<genexpr>gš™™™™™¹?é   r   )ÚnfoldÚseedr   r   c                 S   s<   |  ¡ }ddt |  ¡  } dtt|| dkkƒƒt|ƒ fS )Ng      ð?Úerrorg        )Ú	get_labelÚnpÚexpÚfloatÚsumÚlen)r   r   r&   r   r   r   Úneg_evalerror?   s    z+run_custom_objective.<locals>.neg_evalerrorT)r   r   r   Úmaximizec                 3   r   r    r!   r#   )r&   Úpreds2r   r   r'   N   s   € "ÿN)r-   Úndarrayr   r   ÚstrÚfloat64r   r   Ú	logregobjÚ
isinstancer   Úpredictr,   r0   Úranger1   r/   r   )r   r   r   r   ÚparamÚ	watchlistÚ	num_roundr   ÚbstÚerrr2   Úbst2Úerr2r   )r&   r   r4   r   Úrun_custom_objective   sd   û"ú
 ÿù ù
	
ÿ
þrC   )Ú__doc__Útypingr   Únumpyr-   Úxgboostr   r   Úcorer   r   Útrainingr   r   Úutilsr
   r6   rC   r   r   r   r   Ú<module>   s$    ÿþýüû