docs: def find_knee(self, ):
          """
          Finds and returns the "knee"or "elbow" value, the normalized knee
          value, and the x value where the knee is located.
  
          """
          if not self.xmx_idx.size:
              warning_message = \
                  'No "knee" or "elbow point" detected ' \
                  'This could be due to bad clustering, no '\
                  'actual clusters being formed etc.'        
              warnings.warn(warning_message,YellowbrickWarning)
              return None, None, None
  
          mxmx_iter = np.arange(self.xmx_idx[0], len(self.xsn))
          xmx_idx_iter = np.append(self.xmx_idx, len(self.xsn))
  
          knee_, norm_knee_, knee_x = 0.0, 0.0, None
          for mxmx_i, mxmx in enumerate(xmx_idx_iter):
              # stopping criteria for exhasuting array
              if mxmx_i == len(xmx_idx_iter) - 1:
                  break
              # indices between maxima/minima
              idxs = (mxmx_iter > xmx_idx_iter[mxmx_i]) * \
                  (mxmx_iter < xmx_idx_iter[mxmx_i + 1])
              between_local_mx = mxmx_iter[np.where(idxs)]
  
              for j in between_local_mx:
                  if j in self.xmn_idx:
                      # reached a minima, x indices are unique
                      # only need to check if j is a min
                      if self.yd[j + 1] > self.yd[j]:
                          self.Tmx[mxmx_i] = 0
                          knee_x = None  # reset x where yd crossed Tmx
                      elif self.yd[j + 1] <= self.yd[j]:
                          warning_message="If this is a minima, " \
                                          "how would you ever get here."
                          warnings.warn(warning_message, YellowbrickWarning)
                  if self.yd[j] < self.Tmx[mxmx_i] or self.Tmx[mxmx_i] < 0:
                      # declare a knee
                      if not knee_x:
                          knee_x = j
                      knee_ = self.x[self.xmx_idx[mxmx_i]]
                      norm_knee_ = self.xsn[self.xmx_idx[mxmx_i]]
          return knee_, norm_knee_, knee_x