class_docstr: Add 3 to every category.
code: def _convert_and_check_X(self, X):
      X_data = X.data if sparse.issparse(X) else X
  
      # Check if data is numeric and positive
      if X_data.dtype.kind not in set("buif") or np.nanmin(X_data) < 0:
          raise ValueError(
              "Categories should be non-negative numbers. "
              "NOTE: floats will be casted to integers."
          )
  
      # Use check_array to make sure we are using the right kind of sparse array
      # Notice that we cannot convert the array to integer right now. That would get
      # rid of the np.nans and we need them later on for the imputation.
      X = check_array(
          X, accept_sparse="csc", force_all_finite=False, copy=True
      )
      return X
  
file_path: auto-sklearn/autosklearn/pipeline/implementations/CategoryShift.py
imports: import numpy
  from scipy import sparse
  from sklearn.base import BaseEstimator, TransformerMixin
  from sklearn.utils import check_array
label_desc: Use image node_id 2 for calling the CategoryShift obj's underlying member method code with example usage: obj._convert_and_check_X(X) and returns: X