class_docstr: Base class for training attack models.
  
  Attributes:
    backend: Name of Scikit-Learn parallel backend to use for this attack
      model. The default value of `None` performs single-threaded training.
    model: The trained attack model.
    ctx_mgr: The backend context manager within which to perform training.
      Defaults to the null context manager for single-threaded training.
    n_jobs: Number of jobs that can run in parallel when using a backend.
      Set to `1` for single-threading, and to `-1` for all parallel
      backends.
docstr: Predicts the probability that input_features belongs to train.
  
  Args:
    input_features : A vector of features with the same semantics as x_train
      passed to train_model.
  
  Returns:
    An array of probabilities that the examples belongs to train.
code: def predict(self, input_features):
      """Predicts the probability that input_features belongs to train.
  
      Args:
        input_features : A vector of features with the same semantics as x_train
          passed to train_model.
  
      Returns:
        An array of probabilities that the examples belongs to train.
      """
      if self.model is None:
          raise AssertionError(
              "Model not trained yet. Please call train_model first."
          )
      return self.model.predict_proba(input_features)[:, 1]
  
imports: import contextlib
  import dataclasses
  import logging
  from typing import Optional
  import numpy
  from sklearn import ensemble
  from sklearn import linear_model
  from sklearn import model_selection
  from sklearn import neighbors
  from sklearn import neural_network
  from sklearn.utils import parallel_backend
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack import data_structures
label_desc: Use image node_id 3 for calling the TrainedAttacker obj's underlying member method code with example usage: obj.predict(input_features) and returns: self