Примечание
Перейти к концу, чтобы загрузить полный код примера. или запустить этот пример в своём браузере через JupyterLite или Binder
Путь регуляризации для логистической регрессии L1
Обучение моделей логистической регрессии с L1-штрафом на задаче бинарной классификации, полученной из набора данных Iris.
Модели упорядочены от наиболее сильно регуляризованной к наименее. Четыре коэффициента моделей собраны и нанесены на график как «путь регуляризации»: в левой части рисунка (сильные регуляризаторы) все коэффициенты равны точно 0. По мере ослабления регуляризации коэффициенты могут принимать значения, отличные от нуля, по одному.
Здесь мы выбираем решатель liblinear, потому что он может эффективно оптимизировать функцию потерь логистической регрессии с негладкой, индуцирующей разреженность L1-штрафом.
Также обратите внимание, что мы задали небольшое значение для толерантности, чтобы убедиться, что модель сошлась перед сбором коэффициентов.
Мы также используем warm_start=True, что означает, что коэффициенты моделей повторно используются для инициализации следующей модели fit, чтобы ускорить вычисление всего пути.
# Authors: The scikit-learn developers # SPDX-License-Identifier: BSD-3-Clause
Загрузка данных
from sklearn import datasets iris = datasets.load_iris() X = iris.data y = iris.target X = X[y != 2] y = y[y != 2] X /= X.max() # Normalize X to speed-up convergence
Вычисление пути регуляризации
import numpy as np
from sklearn import linear_model
from sklearn.svm import l1_min_c
cs = l1_min_c(X, y, loss="log") * np.logspace(0, 10, 16)
clf = linear_model.LogisticRegression(
penalty="l1",
solver="liblinear",
tol=1e-6,
max_iter=int(1e6),
warm_start=True,
intercept_scaling=10000.0,
)
coefs_ = []
for c in cs:
clf.set_params(C=c)
clf.fit(X, y)
coefs_.append(clf.coef_.ravel().copy())
coefs_ = np.array(coefs_)
Построение пути регуляризации
import matplotlib.pyplot as plt
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()

Общее время выполнения сценария: (0 минут 0,110 секунды)
Связанные примеры
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/linear_model/plot_logistic_path.html