code: def predict_cumulative_hazard(self, X):
          
          n, _ = X.shape
  
          cols = _get_index(X)
          if isinstance(X, pd.DataFrame):
              order = self.cumulative_hazards_.columns
              order = order.drop("_intercept") if self.fit_intercept else order
              X_ = X[order].values
          else:
              X_ = X
  
          X_ = X_ if not self.fit_intercept else np.c_[X_, np.ones((n, 1))]
  
          timeline = self._index
          individual_cumulative_hazards_ = pd.DataFrame(
              np.dot(self.cumulative_hazards_, X_.T), index=timeline, columns=cols
          )
  
          return individual_cumulative_hazards_
docs: Returns the hazard rates for the individuals
  
          Parameters
          ----------
          X: 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.