docs: def P(self):
          """Diffusion operator (cached)
  
          Return or calculate the diffusion operator
  
          Returns
          -------
  
          P : array-like, shape=[n_samples, n_samples]
              diffusion operator defined as a row-stochastic form
              of the kernel matrix
          """
          try:
              return self._diff_op
          except AttributeError:
              self._diff_op = normalize(self.kernel, 'l1', axis=1)
              return self._diff_op