class_docstr: Cook's Distance is a measure of how influential an instance is to the computation of
  a regression, e.g. if the instance is removed would the estimated coeficients of the
  underlying model be substantially changed? Because of this, Cook's Distance is
  generally used to detect outliers in standard, OLS regression. In fact, a general
  rule of thumb is that D(i) > 4/n is a good threshold for determining highly
  influential points as outliers and this visualizer can report the percentage of data
  that is above that threshold.
  
  This implementation of Cook's Distance assumes Ordinary Least Squares regression,
  and therefore embeds a ``sklearn.linear_model.LinearRegression`` under the hood.
  Distance is computed via the non-whitened leverage of the projection matrix,
  computed inside of ``fit()``. The results of this visualizer are therefore similar
  to, but not as advanced, as a similar computation using statsmodels. Computing the
  influence for other regression models requires leave one out validation and can be
  expensive to compute.
  
  .. seealso::
      For a longer discussion on detecting outliers in regression and computing
      leverage and influence, see `linear regression in python, outliers/leverage
      detect <http://bit.ly/2If2fga>`_ by Huiming Song.
  
  Parameters
  ----------
  ax : matplotlib Axes, default: None
      The axes to plot the figure on. If None is passed in the current axes
      will be used (or generated if required).
  
  draw_threshold : bool, default: True
      Draw a horizontal line at D(i) == 4/n to easily identify the most influential
      points on the final regression. This will also draw a legend that specifies the
      percentage of data points that are above the threshold.
  
  linefmt : str, default: 'C0-'
      A string defining the properties of the vertical lines of the stem plot, usually
      this will be a color or a color and a line style. The default is simply a solid
      line with the first color of the color cycle.
  
  markerfmt : str, default: ','
      A string defining the properties of the markers at the stem plot heads. The
      default is "pixel", e.g. basically no marker head at the top of the stem plot.
  
  kwargs : dict
      Keyword arguments that are passed to the base class and may influence the final
      visualization (e.g. size or title parameters).
  
  Attributes
  ----------
  distance_ : array, 1D
      The Cook's distance value for each instance specified in ``X``, e.g. an 1D array
      with shape ``(X.shape[0],)``.
  
  p_values_ : array, 1D
      The p values associated with the F-test of Cook's distance distribution. A 1D
      array whose shape matches ``distance_``.
  
  influence_threshold_ : float
      A rule of thumb influence threshold to determine outliers in the regression
      model, defined as It=4/n.
  
  outlier_percentage_ : float
      The percentage of instances whose Cook's distance is greater than the influnce
      threshold, the percentage is 0.0 <= p  <= 100.0.
  
  Notes
  -----
  Cook's Distance is very similar to DFFITS, another diagnostic that is meant to show
  how influential a point is in a statistical regression. Although the computed values
  of Cook's and DFFITS are different, they are conceptually identical and there even
  exists a closed-form formula to convert one value to another. Because of this, we
  have chosen to implement Cook's distance rather than or in addition to DFFITS.
code: def __init__(
      self,
      ax=None,
      draw_threshold=True,
      linefmt="C0-",
      markerfmt=",",
      **kwargs,
  ):
      # Initialize the visualizer
      super(CooksDistance, self).__init__(ax=ax, **kwargs)
  
      # Set "hyperparameters"
      self.draw_threshold = draw_threshold
      self.linefmt = linefmt
      self.markerfmt = markerfmt
  
      # An internal LinearRegression used to compute the residuals and MSE
      # This implementation doesn't support any regressor, it is OLS-specific
      self._model = LinearRegression()
  
file_path: yellowbrick/yellowbrick/regressor/influence.py
imports: import numpy
  import scipy
  from yellowbrick.base import Visualizer
  from sklearn.linear_model import LinearRegression
label_desc: Use image node_id 1 to create a new CooksDistance object from inherited base classes: Visualizer with example: obj = CooksDistance(ax, draw_threshold, linefmt, markerfmt)