class_docstr: A predictor for LightGBM models.
  
  Args:
      model: The LightGBM booster to use for predictions.
      preprocessor: A preprocessor used to transform data batches prior
          to prediction.
class_docstr_tok: ["A","predictor","for","LightGBM","models",".","Args",":","model",":","The","LightGBM","booster","to","use","for","predictions",".","preprocessor",":","A","preprocessor","used","to","transform","data","batches","prior","to","prediction","."]
code: def _predict_pandas(
      self,
      data: "pd.DataFrame",
      feature_columns: Optional[Union[List[str], List[int]]] = None,
      **predict_kwargs,
  ) -> pd.DataFrame:
      feature_names = None
      if TENSOR_COLUMN_NAME in data:
          data = data[TENSOR_COLUMN_NAME].to_numpy()
          data = _unwrap_ndarray_object_type_if_needed(data)
          if feature_columns:
              # In this case feature_columns is a list of integers
              data = data[:, feature_columns]
          # Turn into dataframe to make dtype resolution easy
          data = pd.DataFrame(data, columns=feature_names)
          data = data.infer_objects()
  
          # Pandas does not detect categorical dtypes. Any remaining object
          # dtypes are probably categories, so convert them.
          # This will fail if we have a category composed entirely of
          # integers, but this is the best we can do here.
          update_dtypes = {}
          for column in data.columns:
              dtype = data.dtypes[column]
              if is_object_dtype(dtype):
                  update_dtypes[column] = pd.CategoricalDtype()
  
          if update_dtypes:
              data = data.astype(update_dtypes, copy=False)
      elif feature_columns:
          # feature_columns is a list of integers or strings
          data = data[feature_columns]
  
      df = pd.DataFrame(self.model.predict(data, **predict_kwargs))
      df.columns = (
          ["predictions"]
          if len(df.columns) == 1
          else [f"predictions_{i}" for i in range(len(df.columns))]
      )
      return df
  
file_path: ray/python/ray/train/lightgbm/lightgbm_predictor.py
imports: from typing import TYPE_CHECKING, List, Optional, Union
  import lightgbm
  import pandas
  from pandas.api.types import is_object_dtype
  from ray.air.constants import TENSOR_COLUMN_NAME
  from ray.air.data_batch_type import DataBatchType
  from ray.air.util.data_batch_conversion import _unwrap_ndarray_object_type_if_needed
  from ray.train.lightgbm import LightGBMCheckpoint
  from ray.train.predictor import Predictor
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 5 for calling the LightGBMPredictor obj's underlying member method code with example usage: obj._predict_pandas(data, feature_columns) and returns: df