class_docstr: Estimator for learning linear classifiers by SAGA.
  
  Solves the following objective:
  
  .. code-block::
  
      minimize_w  1 / n_samples * \sum_i loss(w^T x_i, y_i)
                  + alpha * 0.5 * ||w||^2_2 + beta * penalty(w)
  
  Parameters
  ----------
  eta : float or {'auto', 'line-search'}, defaults to 'auto'
      step size for the gradient updates. If set to 'auto',
      this will calculate a step size based on the input data.
      If set to 'line-search', it will perform a line-search
      to find the step size based for the current iteration.
  alpha : float
      amount of squared L2 regularization
  beta : float
      amount of regularization for the penalty term
  loss : string
      loss to use in the objective function. Can be one of
      "smooth_hinge", "squared_hinge" or "log" (for logistic loss).
  penalty : string or Penalty object
      penalty term to use in the objective function. Can be "l1"
      or a custom Penalty object (object defined in
      lightning/impl/sag_fast.pxd)
  gamma : float
      gamma parameter in the "smooth_hinge" loss (not used for other
      loss functions)
  max_iter : int
      maximum number of outer iterations (also known as epochs).
  tol : float
      stopping criterion tolerance.
  verbose : int
      verbosity level. Set positive to print progress information.
  callback : callable or None
      if given, callback(self) will be called on each outer iteration
      (epoch).
  random_state: int or RandomState
      Pseudo-random number generator state used for random sampling.
code: def __init__(
      self,
      eta="auto",
      alpha=1.0,
      beta=0.0,
      loss="smooth_hinge",
      penalty=None,
      gamma=1.0,
      max_iter=10,
      n_inner=1.0,
      tol=1e-3,
      verbose=0,
      callback=None,
      random_state=None,
  ):
      super().__init__(
          eta=eta,
          alpha=alpha,
          beta=beta,
          loss=loss,
          penalty=penalty,
          gamma=gamma,
          max_iter=max_iter,
          n_inner=n_inner,
          tol=tol,
          verbose=verbose,
          callback=callback,
          random_state=random_state,
      )
      self.is_saga = True
  
imports: import numpy
  from .base import BaseClassifier, BaseRegressor
  from .dataset_fast import get_dataset
  from .sag_fast import _sag_fit, get_auto_step_size
  from .sgd_fast import ModifiedHuber
  from .sgd_fast import SmoothHinge
  from .sgd_fast import SquaredHinge
  from .sgd_fast import Log
  from .sgd_fast import SquaredLoss
  from .sag_fast import L1Penalty
label_desc: Use image node_id 1 to create a new SAGAClassifier object from inherited base classes: SAGClassifier with example: obj = SAGAClassifier(eta, alpha, beta, loss, penalty, gamma, max_iter, n_inner, tol, verbose, callback, random_state)