ElasticNet#

classsklearn.linear_model.ElasticNet(alpha=1.0,*,l1_ratio=0.5,fit_intercept=True,precompute=False,max_iter=1000,copy_X=True,tol=0.0001,warm_start=False,positive=False,random_state=None,selection='cyclic')[source]#

Linear regression with combined L1 and L2 priors as regularizer.

Minimizes the objective function:

1/(2*n_samples)*||y-Xw||^2_2+alpha*l1_ratio*||w||_1+0.5*alpha*(1-l1_ratio)*||w||^2_2

If you are interested in controlling the L1 and L2 penaltyseparately, keep in mind that this is equivalent to:

a*||w||_1+0.5*b*||w||_2^2

where:

alpha=a+bandl1_ratio=a/(a+b)

The parameter l1_ratio corresponds to alpha in the glmnet R package whilealpha corresponds to the lambda parameter in glmnet. Specifically, l1_ratio= 1 is the lasso penalty. Currently, l1_ratio <= 0.01 is not reliable,unless you supply your own sequence of alpha.

Read more in theUser Guide.

Parameters:
alphafloat, default=1.0

Constant that multiplies the penalty terms. Defaults to 1.0.See the notes for the exact mathematical meaning of thisparameter.alpha=0 is equivalent to an ordinary least square,solved by theLinearRegression object. For numericalreasons, usingalpha=0 with theLasso object is not advised.Given this, you should use theLinearRegression object.

l1_ratiofloat, default=0.5

The ElasticNet mixing parameter, with0<=l1_ratio<=1. Forl1_ratio=0 the penalty is an L2 penalty.Forl1_ratio=1 itis an L1 penalty. For0<l1_ratio<1, the penalty is acombination of L1 and L2.

fit_interceptbool, default=True

Whether the intercept should be estimated or not. IfFalse, thedata is assumed to be already centered.

precomputebool or array-like of shape (n_features, n_features), default=False

Whether to use a precomputed Gram matrix to speed upcalculations. The Gram matrix can also be passed as argument.For sparse input this option is alwaysFalse to preserve sparsity.Checkan example on how to use a precomputed Gram Matrix in ElasticNetfor details.

max_iterint, default=1000

The maximum number of iterations.

copy_Xbool, default=True

IfTrue, X will be copied; else, it may be overwritten.

tolfloat, default=1e-4

The tolerance for the optimization: if the updates aresmaller thantol, the optimization code checks thedual gap for optimality and continues until it is smallerthantol, see Notes below.

warm_startbool, default=False

When set toTrue, reuse the solution of the previous call to fit asinitialization, otherwise, just erase the previous solution.Seethe Glossary.

positivebool, default=False

When set toTrue, forces the coefficients to be positive.

random_stateint, RandomState instance, default=None

The seed of the pseudo random number generator that selects a randomfeature to update. Used whenselection == ‘random’.Pass an int for reproducible output across multiple function calls.SeeGlossary.

selection{‘cyclic’, ‘random’}, default=’cyclic’

If set to ‘random’, a random coefficient is updated every iterationrather than looping over features sequentially by default. This(setting to ‘random’) often leads to significantly faster convergenceespecially when tol is higher than 1e-4.

Attributes:
coef_ndarray of shape (n_features,) or (n_targets, n_features)

Parameter vector (w in the cost function formula).

sparse_coef_sparse matrix of shape (n_features,) or (n_targets, n_features)

Sparse representation of the fittedcoef_.

intercept_float or ndarray of shape (n_targets,)

Independent term in decision function.

n_iter_list of int

Number of iterations run by the coordinate descent solver to reachthe specified tolerance.

dual_gap_float or ndarray of shape (n_targets,)

Given param alpha, the dual gaps at the end of the optimization,same shape as each observation of y.

n_features_in_int

Number of features seen duringfit.

Added in version 0.24.

feature_names_in_ndarray of shape (n_features_in_,)

Names of features seen duringfit. Defined only whenXhas feature names that are all strings.

Added in version 1.0.

See also

ElasticNetCV

Elastic net model with best model selection by cross-validation.

SGDRegressor

Implements elastic net regression with incremental training.

SGDClassifier

Implements logistic regression with elastic net penalty (SGDClassifier(loss="log_loss",penalty="elasticnet")).

Notes

To avoid unnecessary memory duplication the X argument of the fit methodshould be directly passed as a Fortran-contiguous numpy array.

The precise stopping criteria based ontol are the following: First, check thatthat maximum coordinate update, i.e.\(\max_j |w_j^{new} - w_j^{old}|\)is smaller thantol times the maximum absolute coefficient,\(\max_j |w_j|\).If so, then additionally check whether the dual gap is smaller thantol times\(||y||_2^2 / n_{ ext{samples}}\).

Examples

>>>fromsklearn.linear_modelimportElasticNet>>>fromsklearn.datasetsimportmake_regression
>>>X,y=make_regression(n_features=2,random_state=0)>>>regr=ElasticNet(random_state=0)>>>regr.fit(X,y)ElasticNet(random_state=0)>>>print(regr.coef_)[18.83816048 64.55968825]>>>print(regr.intercept_)1.451>>>print(regr.predict([[0,0]]))[1.451]
fit(X,y,sample_weight=None,check_input=True)[source]#

Fit model with coordinate descent.

Parameters:
X{ndarray, sparse matrix, sparse array} of (n_samples, n_features)

Data.

Note that large sparse matrices and arrays requiringint64indices are not accepted.

yndarray of shape (n_samples,) or (n_samples, n_targets)

Target. Will be cast to X’s dtype if necessary.

sample_weightfloat or array-like of shape (n_samples,), default=None

Sample weights. Internally, thesample_weight vector will berescaled to sum ton_samples.

Added in version 0.23.

check_inputbool, default=True

Allow to bypass several input checking.Don’t use this parameter unless you know what you do.

Returns:
selfobject

Fitted estimator.

Notes

Coordinate descent is an algorithm that considers each column ofdata at a time hence it will automatically convert the X inputas a Fortran-contiguous numpy array if necessary.

To avoid memory re-allocation it is advised to allocate theinitial data in memory directly using that format.

get_metadata_routing()[source]#

Get metadata routing of this object.

Please checkUser Guide on how the routingmechanism works.

Returns:
routingMetadataRequest

AMetadataRequest encapsulatingrouting information.

get_params(deep=True)[source]#

Get parameters for this estimator.

Parameters:
deepbool, default=True

If True, will return the parameters for this estimator andcontained subobjects that are estimators.

Returns:
paramsdict

Parameter names mapped to their values.

staticpath(X,y,*,l1_ratio=0.5,eps=0.001,n_alphas=100,alphas=None,precompute='auto',Xy=None,copy_X=True,coef_init=None,verbose=False,return_n_iter=False,positive=False,check_input=True,**params)[source]#

Compute elastic net path with coordinate descent.

The elastic net optimization function varies for mono and multi-outputs.

For mono-output tasks it is:

1/(2*n_samples)*||y-Xw||^2_2+alpha*l1_ratio*||w||_1+0.5*alpha*(1-l1_ratio)*||w||^2_2

For multi-output tasks it is:

(1/(2*n_samples))*||Y-XW||_Fro^2+alpha*l1_ratio*||W||_21+0.5*alpha*(1-l1_ratio)*||W||_Fro^2

Where:

||W||_21= \sum_i \sqrt{\sum_jw_{ij}^2}

i.e. the sum of norm of each row.

Read more in theUser Guide.

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Training data. Pass directly as Fortran-contiguous data to avoidunnecessary memory duplication. Ify is mono-output thenXcan be sparse.

y{array-like, sparse matrix} of shape (n_samples,) or (n_samples, n_targets)

Target values.

l1_ratiofloat, default=0.5

Number between 0 and 1 passed to elastic net (scaling betweenl1 and l2 penalties).l1_ratio=1 corresponds to the Lasso.

epsfloat, default=1e-3

Length of the path.eps=1e-3 means thatalpha_min/alpha_max=1e-3.

n_alphasint, default=100

Number of alphas along the regularization path.

alphasarray-like, default=None

List of alphas where to compute the models.If None alphas are set automatically.

precompute‘auto’, bool or array-like of shape (n_features, n_features), default=’auto’

Whether to use a precomputed Gram matrix to speed upcalculations. If set to'auto' let us decide. The Grammatrix can also be passed as argument.

Xyarray-like of shape (n_features,) or (n_features, n_targets), default=None

Xy = np.dot(X.T, y) that can be precomputed. It is usefulonly when the Gram matrix is precomputed.

copy_Xbool, default=True

IfTrue, X will be copied; else, it may be overwritten.

coef_initarray-like of shape (n_features, ), default=None

The initial values of the coefficients.

verbosebool or int, default=False

Amount of verbosity.

return_n_iterbool, default=False

Whether to return the number of iterations or not.

positivebool, default=False

If set to True, forces coefficients to be positive.(Only allowed wheny.ndim==1).

check_inputbool, default=True

If set to False, the input validation checks are skipped (including theGram matrix when provided). It is assumed that they are handledby the caller.

**paramskwargs

Keyword arguments passed to the coordinate descent solver.

Returns:
alphasndarray of shape (n_alphas,)

The alphas along the path where models are computed.

coefsndarray of shape (n_features, n_alphas) or (n_targets, n_features, n_alphas)

Coefficients along the path.

dual_gapsndarray of shape (n_alphas,)

The dual gaps at the end of the optimization for each alpha.

n_iterslist of int

The number of iterations taken by the coordinate descent optimizer toreach the specified tolerance for each alpha.(Is returned whenreturn_n_iter is set to True).

See also

MultiTaskElasticNet

Multi-task ElasticNet model trained with L1/L2 mixed-norm as regularizer.

MultiTaskElasticNetCV

Multi-task L1/L2 ElasticNet with built-in cross-validation.

ElasticNet

Linear regression with combined L1 and L2 priors as regularizer.

ElasticNetCV

Elastic Net model with iterative fitting along a regularization path.

Notes

For an example, seeexamples/linear_model/plot_lasso_lasso_lars_elasticnet_path.py.

Examples

>>>fromsklearn.linear_modelimportenet_path>>>fromsklearn.datasetsimportmake_regression>>>X,y,true_coef=make_regression(...n_samples=100,n_features=5,n_informative=2,coef=True,random_state=0...)>>>true_coefarray([ 0.        ,  0.        ,  0.        , 97.9, 45.7])>>>alphas,estimated_coef,_=enet_path(X,y,n_alphas=3)>>>alphas.shape(3,)>>>estimated_coef array([[ 0.,  0.787,  0.568],        [ 0.,  1.120,  0.620],        [-0., -2.129, -1.128],        [ 0., 23.046, 88.939],        [ 0., 10.637, 41.566]])
predict(X)[source]#

Predict using the linear model.

Parameters:
Xarray-like or sparse matrix, shape (n_samples, n_features)

Samples.

Returns:
Carray, shape (n_samples,)

Returns predicted values.

score(X,y,sample_weight=None)[source]#

Returncoefficient of determination on test data.

The coefficient of determination,\(R^2\), is defined as\((1 - \frac{u}{v})\), where\(u\) is the residualsum of squares((y_true-y_pred)**2).sum() and\(v\)is the total sum of squares((y_true-y_true.mean())**2).sum().The best possible score is 1.0 and it can be negative (because themodel can be arbitrarily worse). A constant model that always predictsthe expected value ofy, disregarding the input features, would geta\(R^2\) score of 0.0.

Parameters:
Xarray-like of shape (n_samples, n_features)

Test samples. For some estimators this may be a precomputedkernel matrix or a list of generic objects instead with shape(n_samples,n_samples_fitted), wheren_samples_fittedis the number of samples used in the fitting for the estimator.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

True values forX.

sample_weightarray-like of shape (n_samples,), default=None

Sample weights.

Returns:
scorefloat

\(R^2\) ofself.predict(X) w.r.t.y.

Notes

The\(R^2\) score used when callingscore on a regressor usesmultioutput='uniform_average' from version 0.23 to keep consistentwith default value ofr2_score.This influences thescore method of all the multioutputregressors (except forMultiOutputRegressor).

set_fit_request(*,sample_weight:bool|None|str='$UNCHANGED$')ElasticNet[source]#

Configure whether metadata should be requested to be passed to thefit method.

Note that this method is only relevant when this estimator is used as asub-estimator within ameta-estimator and metadata routing is enabledwithenable_metadata_routing=True (seesklearn.set_config).Please check theUser Guide on how the routingmechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed tofit if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it tofit.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains theexisting request. This allows you to change the request for someparameters and not others.

Added in version 1.3.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing forsample_weight parameter infit.

Returns:
selfobject

The updated object.

set_params(**params)[source]#

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects(such asPipeline). The latter haveparameters of the form<component>__<parameter> so that it’spossible to update each component of a nested object.

Parameters:
**paramsdict

Estimator parameters.

Returns:
selfestimator instance

Estimator instance.

set_score_request(*,sample_weight:bool|None|str='$UNCHANGED$')ElasticNet[source]#

Configure whether metadata should be requested to be passed to thescore method.

Note that this method is only relevant when this estimator is used as asub-estimator within ameta-estimator and metadata routing is enabledwithenable_metadata_routing=True (seesklearn.set_config).Please check theUser Guide on how the routingmechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed toscore if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it toscore.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains theexisting request. This allows you to change the request for someparameters and not others.

Added in version 1.3.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing forsample_weight parameter inscore.

Returns:
selfobject

The updated object.

Gallery examples#

Fitting an Elastic Net with a precomputed Gram Matrix and Weighted Samples

Fitting an Elastic Net with a precomputed Gram Matrix and Weighted Samples

L1-based models for Sparse Signals

L1-based models for Sparse Signals

Effect of model regularization on training and test error

Effect of model regularization on training and test error

Release Highlights for scikit-learn 0.23

Release Highlights for scikit-learn 0.23