class_docstr: ABOD class for Angle-base Outlier Detection.
  For an observation, the variance of its weighted cosine scores to all
  neighbors could be viewed as the outlying score.
  See :cite:`kriegel2008angle` for details.
  
  Two version of ABOD are supported:
  
  - Fast ABOD: use k nearest neighbors to approximate.
  - Original ABOD: consider all training points with high time complexity at
    O(n^3).
  
  Parameters
  ----------
  contamination : float in (0., 0.5), optional (default=0.1)
      The amount of contamination of the data set, i.e.
      the proportion of outliers in the data set. Used when fitting to
      define the threshold on the decision function.
  
  n_neighbors : int, optional (default=10)
      Number of neighbors to use by default for k neighbors queries.
  
  method: str, optional (default='fast')
      Valid values for metric are:
  
      - 'fast': fast ABOD. Only consider n_neighbors of training points
      - 'default': original ABOD with all training points, which could be
        slow
  
  Attributes
  ----------
  decision_scores_ : numpy array of shape (n_samples,)
      The outlier scores of the training data.
      The higher, the more abnormal. Outliers tend to have higher
      scores. This value is available once the detector is
      fitted.
  
  threshold_ : float
      The threshold is based on ``contamination``. It is the
      ``n_samples * contamination`` most abnormal samples in
      ``decision_scores_``. The threshold is calculated for generating
      binary outlier labels.
  
  labels_ : int, either 0 or 1
      The binary labels of the training data. 0 stands for inliers
      and 1 for outliers/anomalies. It is generated by applying
      ``threshold_`` on ``decision_scores_``.
docstr: Predict raw anomaly score of X using the fitted detector.
  
  The anomaly score of an input sample is computed based on different
  detector algorithms. For consistency, outliers are assigned with
  larger anomaly scores.
  
  Parameters
  ----------
  X : numpy array of shape (n_samples, n_features)
      The training input samples. Sparse matrices are accepted only
      if they are supported by the base estimator.
  
  Returns
  -------
  anomaly_scores : numpy array of shape (n_samples,)
      The anomaly score of the input samples.
docstr_tok: ["Predict","raw","anomaly","score","of","X","using","the","fitted","detector",".","The","anomaly","score","of","an","input","sample","is","computed","based","on","different","detector","algorithms",".","For","consistency",",","outliers","are","assigned","with","larger","anomaly","scores",".","Parameters","--","--","--","--","--","X",":","numpy","array","of","shape","(","n_samples",",","n_features",")","The","training","input","samples",".","Sparse","matrices","are","accepted","only","if","they","are","supported","by","the","base","estimator",".","Returns","--","--","--","-","anomaly_scores",":","numpy","array","of","shape","(","n_samples",",",")","The","anomaly","score","of","the","input","samples","."]
code: def decision_function(self, X):
      """Predict raw anomaly score of X using the fitted detector.
  
      The anomaly score of an input sample is computed based on different
      detector algorithms. For consistency, outliers are assigned with
      larger anomaly scores.
  
      Parameters
      ----------
      X : numpy array of shape (n_samples, n_features)
          The training input samples. Sparse matrices are accepted only
          if they are supported by the base estimator.
  
      Returns
      -------
      anomaly_scores : numpy array of shape (n_samples,)
          The anomaly score of the input samples.
      """
  
      check_is_fitted(
          self,
          [
              "X_train_",
              "n_train_",
              "decision_scores_",
              "threshold_",
              "labels_",
          ],
      )
      X = check_array(X)
  
      if self.method == "fast":  # fast ABOD
          # outliers have higher outlier scores
          return self._decision_function_fast(X) * -1
      else:  # default ABOD
          return self._decision_function_default(X) * -1
  
imports: from __future__ import division
  from __future__ import print_function
  import warnings
  from itertools import combinations
  import numpy
  from numba import njit
  from sklearn.neighbors import KDTree
  from sklearn.neighbors import NearestNeighbors
  from sklearn.utils import check_array
  from sklearn.utils.validation import check_is_fitted
  from .base import BaseDetector
  from ..utils.utility import check_parameter
label_desc: Use image node_id 5 for calling the ABOD obj's underlying member method code with example usage: obj.decision_function(X) and returns: unknown, unknown