class_docstr: ElasticNet scikit-learn estimator based on Celer solver
  
  The optimization objective for ElasticNet is::
  
      1 / (2 * n_samples) * ||y - X w||^2_2
      + alpha * l1_ratio * \sum_j weights_j |w_j|
      + 0.5 * alpha * (1 - l1_ratio) * \sum_j weights_j |w_j|^2)
  
  Parameters
  ----------
  alpha : float, optional
      Constant that multiplies the penalty term. Defaults to 1.0.
      ``alpha = 0`` is equivalent to an ordinary least square.
      For numerical reasons, using ``alpha = 0`` with the
      ``Lasso`` object is not advised.
  
  l1_ratio : float, optional
      The ElasticNet mixing parameter, with ``0 < l1_ratio <= 1``.
      Defaults to 1.0 which corresponds to L1 penalty (Lasso).
      ``l1_ratio = 0`` (Ridge regression) is not supported.
  
  max_iter : int, optional
      The maximum number of iterations (subproblem definitions).
  
  max_epochs : int
      Maximum number of CD epochs on each subproblem.
  
  p0 : int
      First working set size.
  
  verbose : bool or integer
      Amount of verbosity.
  
  tol : float, optional
      Stopping criterion for the optimization: the solver runs until the
      duality gap is smaller than ``tol * norm(y) ** 2 / len(y)`` or the
      maximum number of iteration is reached.
  
  prune : 0 | 1, optional
      Whether or not to use pruning when growing working sets.
  
  fit_intercept : bool, optional (default=True)
      Whether or not to fit an intercept.
  
  weights : array, shape (n_features,), optional (default=None)
      Strictly positive weights used in the L1 penalty part of the Lasso
      objective. If None, weights equal to 1 are used.
  
  warm_start : bool, optional (default=False)
      When set to True, reuse the solution of the previous call to fit as
      initialization, otherwise, just erase the previous solution.
  
  positive : bool, optional (default=False)
      When set to True, forces the coefficients to be positive.
  
  Attributes
  ----------
  coef_ : array, shape (n_features,)
      parameter vector (w in the cost function formula).
  
  sparse_coef_ : scipy.sparse matrix, shape (n_features, 1)
      ``sparse_coef_`` is a readonly property derived from ``coef_``.
  
  intercept_ : float
      constant term in decision function.
  
  n_iter_ : int
      Number of subproblems solved by Celer to reach the specified tolerance.
  
  Examples
  --------
  >>> from celer import ElasticNet
  >>> clf = ElasticNet(l1_ratio=0.8, alpha=0.1)
  >>> clf.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
  ElasticNet(alpha=0.1, l1_ratio=0.8)
  >>> print(clf.coef_)
  [0.43470641 0.43232388]
  >>> print(clf.intercept_)
  0.13296971635785026
  
  See also
  --------
  celer_path
  LassoCV
  
  References
  ----------
  .. [1] M. Massias, A. Gramfort, J. Salmon
    "Celer: a Fast Solver for the Lasso wit Dual Extrapolation", ICML 2018,
    http://proceedings.mlr.press/v80/massias18a.html
class_docstr_tok: ["ElasticNet","scikit-learn","estimator","based","on","Celer","solver","The","optimization","objective","for","ElasticNet","is",":",":","1","\/","(","2","*","n_samples",")","*","||y","-","X","w||^2_2","+","alpha","*","l1_ratio","*","\\sum_j","weights_j","|w_j|","+","0.5","*","alpha","*","(","1","-","l1_ratio",")","*","\\sum_j","weights_j","|w_j|^2",")","Parameters","--","--","--","--","--","alpha",":","float",",","optional","Constant","that","multiplies","the","penalty","term",".","Defaults","to","1.0",".","``","alpha","=","0","``","is","equivalent","to","an","ordinary","least","square",".","For","numerical","reasons",",","using","``","alpha","=","0","``","with","the","``","Lasso","``","object","is","not","advised",".","l1_ratio",":","float",",","optional","The","ElasticNet","mixing","parameter",",","with","``","0","<","l1_ratio","<","=","1","``",".","Defaults","to","1.0","which","corresponds","to","L1","penalty","(","Lasso",")",".","``","l1_ratio","=","0","``","(","Ridge","regression",")","is","not","supported",".","max_iter",":","int",",","optional","The","maximum","number","of","iterations","(","subproblem","definitions",")",".","max_epochs",":","int","Maximum","number","of","CD","epochs","on","each","subproblem",".","p0",":","int","First","working","set","size",".","verbose",":","bool","or","integer","Amount","of","verbosity",".","tol",":","float",",","optional","Stopping","criterion","for","the","optimization",":","the","solver","runs","until","the","duality","gap","is","smaller","than","``","tol","*","norm","(","y",")","*","*","2","\/","len","(","y",")","``","or","the","maximum","number","of","iteration","is","reached",".","prune",":","0","|","1",",","optional","Whether","or","not","to","use","pruning","when","growing","working","sets",".","fit_intercept",":","bool",",","optional","(","default=True",")","Whether","or","not","to","fit","an","intercept",".","weights",":","array",",","shape","(","n_features",",",")",",","optional","(","default=None",")","Strictly","positive","weights","used","in","the","L1","penalty","part","of","the","Lasso","objective",".","If","None",",","weights","equal","to","1","are","used",".","warm_start",":","bool",",","optional","(","default=False",")","When","set","to","True",",","reuse","the","solution","of","the","previous","call","to","fit","as","initialization",",","otherwise",",","just","erase","the","previous","solution",".","positive",":","bool",",","optional","(","default=False",")","When","set","to","True",",","forces","the","coefficients","to","be","positive",".","Attributes","--","--","--","--","--","coef_",":","array",",","shape","(","n_features",",",")","parameter","vector","(","w","in","the","cost","function","formula",")",".","sparse_coef_",":","scipy.sparse","matrix",",","shape","(","n_features",",","1",")","``","sparse_coef_","``","is","a","readonly","property","derived","from","``","coef_","``",".","intercept_",":","float","constant","term","in","decision","function",".","n_iter_",":","int","Number","of","subproblems","solved","by","Celer","to","reach","the","specified","tolerance",".","Examples","--","--","--","--",">",">",">","from","celer","import","ElasticNet",">",">",">","clf","=","ElasticNet","(","l1_ratio=0.8",",","alpha=0.1",")",">",">",">","clf.fit","(","[","[","0",",","0","]",",","[","1",",","1","]",",","[","2",",","2","]","]",",","[","0",",","1",",","2","]",")","ElasticNet","(","alpha=0.1",",","l1_ratio=0.8",")",">",">",">","print","(","clf.coef_",")","[","0.43470641","0.43232388","]",">",">",">","print","(","clf.intercept_",")","0.13296971635785026","See","also","--","--","--","--","celer_path","LassoCV","References","--","--","--","--","--","..","[","1","]","M.","Massias",",","A.","Gramfort",",","J.","Salmon","``","Celer",":","a","Fast","Solver","for","the","Lasso","wit","Dual","Extrapolation","''",",","ICML","2018",",","http",":","\/\/proceedings.mlr.press\/v80\/massias18a.html"]
code: def __init__(
      self,
      alpha=1.0,
      l1_ratio=1.0,
      max_iter=100,
      max_epochs=50000,
      p0=10,
      verbose=0,
      tol=1e-4,
      prune=True,
      fit_intercept=True,
      weights=None,
      warm_start=False,
      positive=False,
  ):
      if l1_ratio > 1 or l1_ratio < 0:
          raise ValueError(
              "l1_ratio must be between 0 and 1; " f"got {l1_ratio:.2e}"
          )
  
      if l1_ratio == 0:
          raise NotImplementedError(
              "Fitting with l1_ratio=0 (Ridge regression) "
              "not supported"
          )
  
      super(ElasticNet, self).__init__(
          alpha=alpha,
          tol=tol,
          max_iter=max_iter,
          fit_intercept=fit_intercept,
          warm_start=warm_start,
      )
      self.l1_ratio = l1_ratio
      self.verbose = verbose
      self.max_epochs = max_epochs
      self.p0 = p0
      self.prune = prune
      self.positive = positive
      self.weights = weights
  
imports: import numbers
  import numpy
  from sklearn.base import RegressorMixin, MultiOutputMixin
  from sklearn.utils.validation import check_X_y
  from sklearn.utils.multiclass import check_classification_targets
  from sklearn.linear_model import ElasticNet, Lasso, LogisticRegression, MultiTaskLasso
  from sklearn.linear_model._coordinate_descent import LinearModelCV
  from sklearn.linear_model._base import _preprocess_data
  from sklearn.preprocessing import LabelEncoder
  from sklearn.multiclass import OneVsRestClassifier
  from .homotopy import celer_path, mtl_path
label_desc: Use image node_id 1 to create a new ElasticNet object from inherited base classes: ElasticNet_sklearn with example: obj = ElasticNet(alpha, l1_ratio, max_iter, max_epochs, p0, verbose, tol, prune, fit_intercept, weights, warm_start, positive)