o
    `۷i                     @   s   d dl mZm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Zd dlmZ d dlmZ d dlmZ dZdefd	d
ZdefddZdddZddefddZedkryd dlZe Zejdddd e \ZZ eej!Z"ej!s{ee"Z#dS dS dS )    )DictListN)train_test_split)tune)TuneReportCheckpointCallback)ASHASchedulerzbooster-checkpoint.jsonconfigc           	   	   C   sl   t jjdd\}}t||dd\}}}}tj||d}tj||d}tj| ||dfgdtdtd	gd
 d S )NT
return_X_yg      ?)	test_sizelabeltestF   )	frequencyfilename)evalsverbose_eval	callbacks)	sklearndatasetsload_breast_cancerr   xgbDMatrixtrainr   CHECKPOINT_FILENAME)	r   datalabelstrain_xtest_xtrain_ytest_y	train_settest_set r$   W/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/tune/examples/xgboost_example.pytrain_breast_cancer   s   

r&   c              	   C   sh   t jjdd\}}dtttt f dtttf fdd}tj||d}tj	| |ddt
|d	d
gd d S )NTr	   results_dictreturnc                 S   s   dd |   D S )Nc                 S   s   i | ]
\}}|t |qS r$   )npmean).0kvr$   r$   r%   
<dictcomp>2   s    zDtrain_breast_cancer_cv.<locals>.average_cv_folds.<locals>.<dictcomp>)items)r'   r$   r$   r%   average_cv_folds1   s   z0train_breast_cancer_cv.<locals>.average_cv_foldsr   Fr   )results_postprocessing_fnr   )r   
stratifiedr   )r   r   r   r   strr   floatr   r   cvr   )r   r   r   r0   r"   r$   r$   r%   train_breast_cancer_cv)   s   &
r6   best_resultray.tune.Resultc                 C   sB   t j| jtd}d| jd  }td| j  td|d |S )N)r         ?z
test-errorzBest model parameters: zBest model total accuracy: z.4f)r   	get_model
checkpointr   metricsprintr   )r7   best_bstaccuracyr$   r$   r%   get_best_model_checkpointE   s   r@   Fuse_cvc              	   C   s   dddgt ddt g dt ddt d	d
d}tdddd}t jt j| s+tnt	ddidt j
ddd|d|d}| }| S )Nzbinary:logisticloglosserrorr   	   )r         g      ?r9   g-C6?g?)	objectiveeval_metric	max_depthmin_child_weight	subsampleeta
   rE   )max_tgrace_periodreduction_factorcpu)	resourcesztest-loglossmin)metricmodenum_samples	scheduler)tune_configparam_space)r   randintchoiceuniform
loguniformr   Tunerwith_resourcesr&   r6   
TuneConfigfitget_best_result)rA   search_spacerW   tunerresultsr$   r$   r%   tune_xgboostO   s2   




rf   __main__z--use-cv
store_truez$Use `xgb.cv` instead of `xgb.train`.)actionhelp)r7   r8   )F)$typingr   r   numpyr)   sklearn.datasetsr   sklearn.metricsxgboostr   sklearn.model_selectionr   rayr   ray.tune.integration.xgboostr   ray.tune.schedulersr   r   dictr&   r6   r@   boolrf   __name__argparseArgumentParserparseradd_argumentparse_known_argsargs_rA   r7   r>   r$   r$   r$   r%   <module>   s6    

"
