class_docstr: Loda: Lightweight on-line detector of anomalies. See
  :cite:`pevny2016loda` for more information.
  
  Two versions of LODA are supported:        
  - Static number of bins: uses a static number of bins for all random cuts.
  - Automatic number of bins: every random cut uses a number of bins deemed 
    to be optimal according to the Birge-Rozenblac method
    (:cite:`birge2006many`).
  
  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_bins : int or string, optional (default = 10)
      The number of bins for the histogram. If set to "auto", the 
      Birge-Rozenblac method will be used to automatically determine the 
      optimal number of bins.
  
  n_random_cuts : int, optional (default = 100)
      The number of random cuts.
  
  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_``.
class_docstr_tok: ["Loda",":","Lightweight","on-line","detector","of","anomalies",".","See",":","cite",":","`","pevny2016loda","`","for","more","information",".","Two","versions","of","LODA","are","supported",":","-","Static","number","of","bins",":","uses","a","static","number","of","bins","for","all","random","cuts",".","-","Automatic","number","of","bins",":","every","random","cut","uses","a","number","of","bins","deemed","to","be","optimal","according","to","the","Birge-Rozenblac","method","(",":","cite",":","`","birge2006many","`",")",".","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_bins",":","int","or","string",",","optional","(","default","=","10",")","The","number","of","bins","for","the","histogram",".","If","set","to","``","auto","''",",","the","Birge-Rozenblac","method","will","be","used","to","automatically","determine","the","optimal","number","of","bins",".","n_random_cuts",":","int",",","optional","(","default","=","100",")","The","number","of","random","cuts",".","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,
          ["projections_", "decision_scores_", "threshold_", "labels_"],
      )
  
      X = check_array(X)
      pred_scores = np.zeros([X.shape[0], 1])
  
      if isinstance(self.n_bins, str) and self.n_bins.lower() == "auto":
          for i in range(self.n_random_cuts):
              projected_data = self.projections_[i, :].dot(X.T)
  
              inds = np.searchsorted(
                  self.limits_[i][: self.n_bins_[i] - 1],
                  projected_data,
                  side="left",
              )
              pred_scores[:, 0] += -self.weights[i] * np.log(
                  self.histograms_[i][inds]
              )
  
      elif isinstance(self.n_bins, numbers.Integral):
          for i in range(self.n_random_cuts):
              projected_data = self.projections_[i, :].dot(X.T)
  
              inds = np.searchsorted(
                  self.limits_[i, : self.n_bins - 1],
                  projected_data,
                  side="left",
              )
              pred_scores[:, 0] += -self.weights[i] * np.log(
                  self.histograms_[i, inds]
              )
      else:
          raise ValueError(
              "n_bins must be an int or 'auto', "
              "got: %f" % self.n_bins
          )
  
      pred_scores /= self.n_random_cuts
      return pred_scores.ravel()
  
file_path: pyod/pyod/models/loda.py
imports: from __future__ import division
  from __future__ import print_function
  import numbers
  import numpy
  from sklearn.utils import check_array
  from sklearn.utils.validation import check_is_fitted
  from .base import BaseDetector
  from ..utils.utility import get_optimal_n_bins
label_desc: Use image node_id 3 for calling the LODA obj's underlying member method code with example usage: obj.decision_function(X) and returns: pred_scores