code: def fit(
      self,
      ctx: Context,
      train_data,
      validate_data=None,
      skip_none=False,
  ):
      # only bin given `col_bin` cols
      if self.bin_col is None:
          self.bin_col = train_data.schema.columns.to_list()
      select_data = train_data[self.bin_col]
  
      if self.method == "quantile":
          q = list(np.arange(0, 1, 1 / self.n_bins)) + [1.0]
          split_pt_df = select_data.quantile(
              q=q, relative_error=self.relative_error
          ).drop(0)
      elif self.method == "bucket":
          split_pt_df = select_data.qcut(q=self.n_bins)
      elif self.method == "manual":
          split_pt_df = pd.DataFrame.from_dict(
              self._manual_split_pt_dict
          )
      else:
          raise ValueError(
              f"Unknown binning method {self.method} encountered. Please check"
          )
      # self._split_pt_dict = split_pt_df.to_dict()
      self._split_pt_dict = split_pt_df
  
      def __get_col_bin_count(col):
          count = len(col.unique())
          return count
  
      bin_count = split_pt_df.apply(__get_col_bin_count, axis=0)
      self._bin_count_dict = bin_count.to_dict()
  
imports: import logging
  import numpy
  import pandas
  from fate.arch import Context
  from fate.arch.histogram import HistogramBuilder
  from ..abc.module import HeteroModule, Module
label_desc: Use image node_id 3 for calling the StandardBinning obj's underlying member method code with example usage: obj.fit(ctx, train_data, validate_data, skip_none) and returns: count