code: def predict_cumulative_hazard(self, X, times=None):
          
  
          if self.strata:
              cumulative_hazard_ = pd.DataFrame()
              for stratum, stratified_X in X.groupby(self.strata):
                  try:
                      c_0 = self.baseline_cumulative_hazard_[[stratum]]
                  except KeyError:
                      raise StatError(
                          """The stratum %s was not found in the original training data. For example, try
  the following on the original dataset, df: `df.groupby(%s).size()`. Expected is that %s is not present in the output.
  """
                          % (stratum, self.strata, stratum)
                      )
                  col = _get_index(stratified_X)
                  v = self.predict_partial_hazard(stratified_X)
                  cumulative_hazard_ = cumulative_hazard_.merge(
                      pd.DataFrame(np.dot(c_0, v.T), index=c_0.index, columns=col),
                      how="outer",
                      right_index=True,
                      left_index=True,
                  )
          else:
  
              c_0 = self.baseline_cumulative_hazard_
              v = self.predict_partial_hazard(X)
              col = _get_index(v)
              cumulative_hazard_ = pd.DataFrame(np.dot(c_0, v.T), columns=col, index=c_0.index)
  
          if times is not None:
              # non-linear interpolations can push the survival curves above 1 and below 0.
              return dataframe_interpolate_at_times(cumulative_hazard_, times)
          return cumulative_hazard_
docs: Parameters
          ----------
  
          X: numpy array or DataFrame
              a (n,d) covariate numpy array or DataFrame. If a DataFrame, columns
              can be in any order. If a numpy array, columns must be in the
              same order as the training data.
          times: iterable, optional
              an iterable of increasing times to predict the cumulative hazard at. Default
              is the set of all durations (observed and unobserved). Uses a linear interpolation if
              points in time are not in the index.
  
          Returns
          -------
          cumulative_hazard_ : DataFrame
              the cumulative hazard of individuals over the timeline