class_docstr: Abstract base class for all KBinsDiscretizers.
  
  Essentially a thin wraper around ``pd.cut``.
  
  Expects either ``self.stats_`` or ``self.bins`` to be set and
  contain {column:list_of_bin_intervals}.
class_docstr_tok: ["Abstract","base","class","for","all","KBinsDiscretizers",".","Essentially","a","thin","wraper","around","``","pd.cut","``",".","Expects","either","``","self.stats_","``","or","``","self.bins","``","to","be","set","and","contain","{","column",":","list_of_bin_intervals","}","."]
code: def _validate_bins_columns(self):
      if isinstance(self.bins, dict) and not all(
          col in self.bins for col in self.columns
      ):
          raise ValueError(
              "If `bins` is a dictionary, all elements of `columns` must be present "
              "in it."
          )
  
imports: from typing import Dict, Iterable, List, Optional, Type, Union
  import numpy
  import pandas
  from ray.data import Dataset
  from ray.data.aggregate import Max, Min
  from ray.data.preprocessor import Preprocessor
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 2 for calling the _AbstractKBinsDiscretizer obj's underlying member method code with example usage: obj._validate_bins_columns() without return types