def METHOD_NAME(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()