
    &`iV                         d dl mZmZmZmZmZm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 d dlmZ d dlmZ erd d	lmZ  ed
           G d de                      ZdS )    )TYPE_CHECKINGAnyDictListOptionalUnionN)TENSOR_COLUMN_NAME)DataBatchType)%_unwrap_ndarray_object_type_if_needed)	Predictor)XGBoostCheckpoint)	PublicAPI)Preprocessorbeta)	stabilityc            
       H    e Zd ZdZ	 ddej        ded         f fdZd Ze	de
d	d fd
            Z	 	 ddedeeee         ee         f                  deeeef                  d	efdZ	 	 ddddeeee         ee         f                  deeeef                  d	dfdZ xZS )XGBoostPredictorzA predictor for XGBoost models.

    Args:
        model: The XGBoost booster to use for predictions.
        preprocessor: A preprocessor used to transform data batches prior
            to prediction.
    Nmodelpreprocessorr   c                 X    || _         t                                          |           d S N)r   super__init__)selfr   r   	__class__s      w/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/train/xgboost/xgboost_predictor.pyr   zXGBoostPredictor.__init__   s*     
&&&&&    c                 @    | j         j         d| j        d| j        dS )Nz(model=z, preprocessor=))r   __name__r   _preprocessor)r   s    r   __repr__zXGBoostPredictor.__repr__!   s<    ~& 4 4tz 4 4 .4 4 4	
r   
checkpointreturnc                 l    |                                 }|                                } | ||          S )a  Instantiate the predictor from a Checkpoint.

        This is a helper constructor that instantiates the predictor from a
        framework-specific XGBoost checkpoint.

        Args:
            checkpoint: The checkpoint to load the model and preprocessor from.

        )r   r   )	get_modelget_preprocessor)clsr#   r   r   s       r   from_checkpointz XGBoostPredictor.from_checkpoint'   s;     $$&&!2244s\::::r   datafeature_columnsdmatrix_kwargsc                 .    t          j        | |f||d|S )a  Run inference on data batch.

        The data is converted into an XGBoost DMatrix before being inputted to
        the model.

        Args:
            data: A batch of input data.
            feature_columns: The names or indices of the columns in the
                data to use as features to predict on. If None, then use
                all columns in ``data``.
            dmatrix_kwargs: Dict of keyword arguments passed to ``xgboost.DMatrix``.
            **predict_kwargs: Keyword arguments passed to ``xgboost.Booster.predict``.


        Examples:

        .. testcode::

            import numpy as np
            import xgboost as xgb
            from ray.train.xgboost import XGBoostPredictor
            train_X = np.array([[1, 2], [3, 4]])
            train_y = np.array([0, 1])
            model = xgb.XGBClassifier().fit(train_X, train_y)
            predictor = XGBoostPredictor(model=model.get_booster())
            data = np.array([[1, 2], [3, 4]])
            predictions = predictor.predict(data)
            # Only use first and second column as the feature
            data = np.array([[1, 2, 8], [3, 4, 9]])
            predictions = predictor.predict(data, feature_columns=[0, 1])

        .. testcode::

            import pandas as pd
            import xgboost as xgb
            from ray.train.xgboost import XGBoostPredictor
            train_X = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
            train_y = pd.Series([0, 1])
            model = xgb.XGBClassifier().fit(train_X, train_y)
            predictor = XGBoostPredictor(model=model.get_booster())
            # Pandas dataframe.
            data = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
            predictions = predictor.predict(data)
            # Only use first and second column as the feature
            data = pd.DataFrame([[1, 2, 8], [3, 4, 9]], columns=["A", "B", "C"])
            predictions = predictor.predict(data, feature_columns=["A", "B"])


        Returns:
            Prediction result.

        )r+   r,   )r   predict)r   r*   r+   r,   predict_kwargss        r   r.   zXGBoostPredictor.predict6   s<    v  
 ,)	
 

 
 
 	
r   zpd.DataFramec                    |pi }d }t           |v r=|t                                                    }t          |          }|r|d d |f         }n|r6||                                         }t          d |D                       r|}nH|j                                        }|                                }t          d |D                       r|}|r||d<   t          j        |fi |}t          j	         | j
        j        |fi |          }t          |j                  dk    rdgn*d t          t          |j                            D             |_        |S )Nc              3   @   K   | ]}t          |t                    V  d S r   
isinstancestr.0fcs     r   	<genexpr>z3XGBoostPredictor._predict_pandas.<locals>.<genexpr>   ,      AA2:b#&&AAAAAAr   c              3   @   K   | ]}t          |t                    V  d S r   r2   r5   s     r   r8   z3XGBoostPredictor._predict_pandas.<locals>.<genexpr>   r9   r   feature_names   predictionsc                     g | ]}d | S )predictions_ )r6   is     r   
<listcomp>z4XGBoostPredictor._predict_pandas.<locals>.<listcomp>   s!    EEE$$$EEEr   )r	   to_numpyr   allcolumnstolistxgboostDMatrixpd	DataFramer   r.   lenrange)r   r*   r+   r,   r/   r;   matrixdfs           r   _predict_pandasz XGBoostPredictor._predict_pandasy   s    (-2%%*+4466D8>>D 0AAA./ 	0(1133DAAAAAAA 0 /"l1133O==??DAAAAAAA 0 / 	<.;N?+8888\,$*,VFF~FFGG 2:!## OOEEeC
OO.D.DEEE 	

 	r   r   )NN)r    
__module____qualname____doc__rG   Boosterr   r   r"   classmethodr   r)   r
   r   r   r4   intr   r   r.   rO   __classcell__)r   s   @r   r   r      s         PT' '_'4<^4L' ' ' ' ' '
 
 
 ;): ;?Q ; ; ; [;" BF37	A
 A
A
 "%S	49(<"=>A
 !c3h0	A
 
A
 A
 A
 A
L BF37	' '' "%S	49(<"=>' !c3h0	' 
' ' ' ' ' ' ' 'r   r   )typingr   r   r   r   r   r   pandasrI   rG   ray.air.constantsr	   ray.air.data_batch_typer
   "ray.air.util.data_batch_conversionr   ray.train.predictorr   ray.train.xgboostr   ray.util.annotationsr   ray.data.preprocessorr   r   r@   r   r   <module>r`      s(   B B B B B B B B B B B B B B B B      0 0 0 0 0 0 1 1 1 1 1 1 T T T T T T ) ) ) ) ) ) / / / / / / * * * * * * 3222222 VN N N N Ny N N N N Nr   