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

    Args:
        model: The LightGBM 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      y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/train/lightgbm/lightgbm_predictor.pyr   zLightGBMPredictor.__init__   s*     
&&&&&    c                 @    | j         j         d| j        d| j        dS )Nz(model=z, preprocessor=))r   __name__r   _preprocessor)r   s    r   __repr__zLightGBMPredictor.__repr__"   s<    ~& 4 4tz 4 4 .4 4 4	
r   
checkpointreturnc                 l    |                                 }|                                } | ||          S )zInstantiate the predictor from a LightGBMCheckpoint.

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

        )r   r   )	get_modelget_preprocessor)clsr"   r   r   s       r   from_checkpointz!LightGBMPredictor.from_checkpoint(   s;     $$&&!2244s\::::r   datafeature_columnsc                 ,    t          j        | |fd|i|S )a  Run inference on data batch.

        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``.
            **predict_kwargs: Keyword arguments passed to
                ``lightgbm.Booster.predict``.

        Examples:
            .. testcode::

                import numpy as np
                import lightgbm as lgbm
                from ray.train.lightgbm import LightGBMPredictor

                train_X = np.array([[1, 2], [3, 4]])
                train_y = np.array([0, 1])

                model = lgbm.LGBMClassifier().fit(train_X, train_y)
                predictor = LightGBMPredictor(model=model.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])

                import pandas as pd
                import lightgbm as lgbm
                from ray.train.lightgbm import LightGBMPredictor

                train_X = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
                train_y = pd.Series([0, 1])

                model = lgbm.LGBMClassifier().fit(train_X, train_y)
                predictor = LightGBMPredictor(model=model.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   predict)r   r)   r*   predict_kwargss       r   r,   zLightGBMPredictor.predict4   s4    t  $
 
(7
;I
 
 	
r   zpd.DataFramec                    d }t           |v r|t                                                    }t          |          }|r|d d |f         }t          j        ||          }|                                }i }|j        D ]4}|j        |         }t          |          rt          j	                    ||<   5|r|
                    |d          }n
|r||         }t          j         | j        j        |fi |          }t          |j                  dk    rdgn*d t          t          |j                            D             |_        |S )N)columnsF)copy   predictionsc                     g | ]}d | S )predictions_ ).0is     r   
<listcomp>z5LightGBMPredictor._predict_pandas.<locals>.<listcomp>   s!    EEE$$$EEEr   )r   to_numpyr
   pd	DataFrameinfer_objectsr/   dtypesr   CategoricalDtypeastyper   r,   lenrange)	r   r)   r*   r-   feature_namesupdate_dtypescolumndtypedfs	            r   _predict_pandasz!LightGBMPredictor._predict_pandasr   sg    %%*+4466D8>>D 0AAA./<m<<<D%%''D M, B BF+"5)) B,.,?,A,AM&) >{{=u{== 	)(D\,$*,TDD^DDEE 2:!## OOEEeC
OO.D.DEEE 	

 	r   r   )r   
__module____qualname____doc__lightgbmBoosterr   r   r!   classmethodr   r(   r	   r   r   strintr,   r:   r;   rG   __classcell__)r   s   @r   r   r      sS         QU' '%'5=n5M' ' ' ' ' '
 
 
 	;); 	;@S 	; 	; 	; [	; BF<
 <
<
 "%S	49(<"=><

 
<
 <
 <
 <
B BF' '' "%S	49(<"=>'
 
' ' ' ' ' ' ' 'r   r   )typingr   r   r   r   rK   pandasr:   pandas.api.typesr   ray.air.constantsr   ray.air.data_batch_typer	   "ray.air.util.data_batch_conversionr
   ray.train.lightgbmr   ray.train.predictorr   ray.util.annotationsr   ray.data.preprocessorr   r   r5   r   r   <module>r[      s.   7 7 7 7 7 7 7 7 7 7 7 7      , , , , , , 0 0 0 0 0 0 1 1 1 1 1 1 T T T T T T 1 1 1 1 1 1 ) ) ) ) ) ) * * * * * * 3222222 VF F F F F	 F F F F Fr   