code: def _get_abs_corr_mat(self, X_filled, tolerance=1e-6):
          
          n_features = X_filled.shape[1]
          if (self.n_nearest_features is None or
                  self.n_nearest_features >= n_features):
              return None
          abs_corr_mat = np.abs(np.corrcoef(X_filled.T))
          # np.corrcoef is not defined for features with zero std
          abs_corr_mat[np.isnan(abs_corr_mat)] = tolerance
          # ensures exploration, i.e. at least some probability of sampling
          np.clip(abs_corr_mat, tolerance, None, out=abs_corr_mat)
          # features are not their own neighbors
          np.fill_diagonal(abs_corr_mat, 0)
          # needs to sum to 1 for np.random.choice sampling
          abs_corr_mat = normalize(abs_corr_mat, norm='l1', axis=0, copy=False)
          return abs_corr_mat
docs: Get absolute correlation matrix between features.
  
          Parameters
          ----------
          X_filled : ndarray, shape (n_samples, n_features)
              Input data with the most recent imputations.
  
          tolerance : float, optional (default=1e-6)
              ``abs_corr_mat`` can have nans, which will be replaced
              with ``tolerance``.
  
          Returns
          -------
          abs_corr_mat : ndarray, shape (n_features, n_features)
              Absolute correlation matrix of ``X`` at the beginning of the
              current round. The diagonal has been zeroed out and each feature's
              absolute correlations with all others have been normalized to sum
              to 1.