.. note::
:class: sphxglrdownloadlinknote
Click :ref:`here ` to download the full example code
.. rstclass:: sphxglrexampletitle
.. _sphx_glr_auto_examples_linear_model_plot_logistic_path.py:
==============================================
Regularization path of L1 Logistic Regression
==============================================
Train l1penalized logistic regression models on a binary classification
problem derived from the Iris dataset.
The models are ordered from strongest regularized to least regularized. The 4
coefficients of the models are collected and plotted as a "regularization
path": on the lefthand side of the figure (strong regularizers), all the
coefficients are exactly 0. When regularization gets progressively looser,
coefficients can get nonzero values one after the other.
Here we choose the SAGA solver because it can efficiently optimize for the
Logistic Regression loss with a nonsmooth, sparsity inducing l1 penalty.
Also note that we set a low value for the tolerance to make sure that the model
has converged before collecting the coefficients.
We also use warm_start=True which means that the coefficients of the models are
reused to initialize the next model fit to speedup the computation of the
fullpath.
.. image:: /auto_examples/linear_model/images/sphx_glr_plot_logistic_path_001.png
:class: sphxglrsingleimg
.. rstclass:: sphxglrscriptout
Out:
.. codeblock:: none
Computing regularization path ...
This took 2.008s

.. codeblock:: python
print(__doc__)
# Author: Alexandre Gramfort
# License: BSD 3 clause
from time import time
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
from sklearn import datasets
from sklearn.svm import l1_min_c
iris = datasets.load_iris()
X = iris.data
y = iris.target
X = X[y != 2]
y = y[y != 2]
X /= X.max() # Normalize X to speedup convergence
# #############################################################################
# Demo path functions
cs = l1_min_c(X, y, loss='log') * np.logspace(0, 7, 16)
print("Computing regularization path ...")
start = time()
clf = linear_model.LogisticRegression(penalty='l1', solver='saga',
tol=1e6, max_iter=int(1e6),
warm_start=True)
coefs_ = []
for c in cs:
clf.set_params(C=c)
clf.fit(X, y)
coefs_.append(clf.coef_.ravel().copy())
print("This took %0.3fs" % (time()  start))
coefs_ = np.array(coefs_)
plt.plot(np.log10(cs), coefs_, marker='o')
ymin, ymax = plt.ylim()
plt.xlabel('log(C)')
plt.ylabel('Coefficients')
plt.title('Logistic Regression Path')
plt.axis('tight')
plt.show()
**Total running time of the script:** ( 0 minutes 2.022 seconds)
.. _sphx_glr_download_auto_examples_linear_model_plot_logistic_path.py:
.. only :: html
.. container:: sphxglrfooter
:class: sphxglrfooterexample
.. container:: sphxglrdownload
:download:`Download Python source code: plot_logistic_path.py `
.. container:: sphxglrdownload
:download:`Download Jupyter notebook: plot_logistic_path.ipynb `
.. only:: html
.. rstclass:: sphxglrsignature
`Gallery generated by SphinxGallery `_