docs: def rank(self, X, algorithm=None):
          """
          Returns the feature ranking.
  
          Parameters
          ----------
          X : ndarray or DataFrame of shape n x m
              A matrix of n instances with m features
  
          algorithm : str or None
              The ranking mechanism to use, or None for the default
  
          Returns
          -------
          ranks : ndarray
              An n-dimensional, symmetric array of rank scores, where n is the
              number of features. E.g. for 1D ranking, it is (n,), for a
              2D ranking it is (n,n) and so forth.
          """
          algorithm = algorithm or self.ranking_
          algorithm = algorithm.lower()
  
          if algorithm not in self.ranking_methods:
              raise YellowbrickValueError(
                  "'{}' is unrecognized ranking method".format(algorithm)
              )
  
          # Extract matrix from dataframe if necessary
          if is_dataframe(X):
              X = X.values
  
          return self.ranking_methods[algorithm](X)