Spec-Zone.ru › scikit-learn

LogisticRegression

classsklearn.linear_model.LogisticRegression(penalty='deprecated', *, C=1.0, l1_ratio=0.0, dual=False, tol=0.0001, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, verbose=0, warm_start=False, n_jobs=None)[исходный код]

Классификатор логистической регрессии (также logit, MaxEnt).

Этот класс реализует регуляризованную логистическую регрессию с использованием набора доступных решателей. Обратите внимание: регуляризация применяется по умолчанию. Класс поддерживает как плотные, так и разреженные входные X. Для оптимальной производительности используйте массивы в порядке C или матрицы CSR с 64-разрядными числами с плавающей точкой; любой другой формат входных данных будет преобразован (и скопирован).

Решатели ‘lbfgs’, ‘newton-cg’, ‘newton-cholesky’ и ‘sag’ поддерживают только регуляризацию L2 с прямой формулировкой либо отсутствие регуляризации. Решатель ‘liblinear’ поддерживает регуляризацию L1 и L2 (но не обе одновременно, то есть не elastic-net); двойственная формулировка доступна только для штрафа L2. Регуляризация Elastic-Net (сочетание L1 и L2) поддерживается только решателем ‘saga’.

В задачах многоклассовой классификации (если выполняется n_classes >= 3) все решатели, кроме ‘liblinear’, оптимизируют мультиномиальную функцию потерь (со штрафом). ‘liblinear’ поддерживает только бинарную классификацию, но его можно расширить для поддержки многоклассовой классификации с помощью OneVsRestClassifier.

Подробнее см. в руководстве пользователя.

Параметры:
penalty{‘l1’, ‘l2’, ‘elasticnet’, None}, default=’l2’

Задает норму штрафа:

  • None: штраф не добавляется;
  • 'l2': добавляется штраф слагаемым L2; это значение используется по умолчанию;
  • 'l1': добавляется штраф слагаемым L1;
  • 'elasticnet': добавляются штрафные слагаемые L1 и L2.

Предупреждение

Некоторые штрафы могут быть несовместимы с отдельными решателями. См. параметр solver ниже, чтобы узнать о совместимости штрафов и решателей.

Добавлено в версии 0.19: штраф L1 с решателем SAGA (поддержка сочетания ‘multinomial’ и L1)

Устарело с версии 1.8: penalty устарел в версии 1.8 и будет удален в версии 1.10. Вместо него используйте l1_ratio и C. l1_ratio=0 для penalty='l2', l1_ratio=1 для penalty='l1', l1_ratio со значением любого числа с плавающей точкой от 0 до 1 для penalty='elasticnet' и C=np.inf для penalty=None.

Cfloat, default=1.0

Обратная величина силы регуляризации; должна быть положительным числом с плавающей точкой. Как и в методе опорных векторов, меньшие значения задают более сильную регуляризацию. C=np.inf приводит к логистической регрессии без штрафа. Визуальный пример влияния настройки параметра C при использовании штрафа L1 см. в разделе Траектория регуляризации логистической регрессии с L1.

l1_ratiofloat, default=0.0

Параметр смешивания Elastic-Net, где 0 <= l1_ratio <= 1. Значение l1_ratio=1 задает чистый штраф L1, а l1_ratio=0 — чистый штраф L2. Любое значение от 0 до 1 задает штраф Elastic-Net вида l1_ratio * L1 + (1 - l1_ratio) * L2.

Предупреждение

Некоторые значения l1_ratio, то есть некоторые штрафы, могут быть несовместимы с отдельными решателями. См. параметр solver ниже, чтобы узнать о совместимости штрафов и решателей.

Изменено в версии 1.8: значение по умолчанию изменено с None на 0.0.

Устарело с версии 1.8: None устарел и будет удален в версии 1.10. Всегда используйте l1_ratio, чтобы задать тип штрафа.

dualbool, default=False

Двойственная (с ограничениями) или прямая (регуляризованная, см. также это уравнение) формулировка. Двойственная формулировка реализована только для штрафа L2 с решателем liblinear. Если n_samples > n_features, предпочтительно использовать dual=False.

tolfloat, default=1e-4

Допуск для критерия остановки.

fit_interceptbool, default=True

Указывает, нужно ли добавлять константу (также называемую смещением или свободным членом) к функции принятия решения.

intercept_scalingfloat, default=1

Используется только при выборе решателя liblinear и значении self.fit_intercept, равном True. В этом случае x становится [x, self.intercept_scaling], то есть к вектору объекта добавляется «синтетический» признак с постоянным значением intercept_scaling. Свободный член становится intercept_scaling * synthetic_feature_weight.

Примечание

Вес синтетического признака подвергается регуляризации L1 или L2, как и веса всех остальных признаков. Чтобы уменьшить влияние регуляризации на вес синтетического признака (и, следовательно, на свободный член), необходимо увеличить intercept_scaling.

class_weightdict or ‘balanced’, default=None

Веса классов в форме {class_label: weight}. Если значение не задано, предполагается, что вес каждого класса равен единице.

Режим “balanced” автоматически корректирует веса на основе значений y обратно пропорционально частотам классов во входных данных, используя формулу n_samples / (n_classes * np.bincount(y)).

Обратите внимание: если задан параметр sample_weight, эти веса будут перемножены с ним (параметр передается через метод fit).

Добавлено в версии 0.17: class_weight=’balanced’

random_stateint, экземпляр RandomState, default=None

Используется для перемешивания данных, если solver == ‘sag’, ‘saga’ или ‘liblinear’. Подробности см. в глоссарии.

solver{‘lbfgs’, ‘liblinear’, ‘newton-cg’, ‘newton-cholesky’, ‘sag’, ‘saga’}, default=’lbfgs’

Алгоритм для решения задачи оптимизации. По умолчанию используется ‘lbfgs’. При выборе решателя следует учитывать следующие особенности:

  • ‘lbfgs’ — хороший решатель по умолчанию, поскольку он достаточно эффективен для широкого класса задач.
  • В задачах многоклассовой классификации (n_classes >= 3) все решатели, кроме ‘liblinear’, минимизируют полную мультиномиальную функцию потерь; ‘liblinear’ вызовет ошибку.
  • ‘newton-cholesky’ хорошо подходит, если n_samples >> n_features * n_classes, особенно при использовании категориальных признаков с one-hot-кодированием и редкими категориями. Обратите внимание: потребление памяти этим решателем квадратично зависит от n_features * n_classes, поскольку он явно вычисляет полную матрицу Гессе.
  • Для небольших наборов данных хорошо подходит ‘liblinear’, тогда как ‘sag’ и ‘saga’ работают быстрее на больших наборах;
  • По умолчанию ‘liblinear’ поддерживает только бинарную классификацию. Чтобы применить схему «один против остальных» для многоклассовой классификации, его можно обернуть в OneVsRestClassifier.

Предупреждение

Выбор алгоритма зависит от выбранного штрафа (l1_ratio=0 для штрафа L2, l1_ratio=1 для штрафа L1 и 0 < l1_ratio < 1 для Elastic-Net), а также от поддержки многоклассовой (мультиномиальной) классификации:

решатель

l1_ratio

мультиномиальная многоклассовая классификация

‘lbfgs’

l1_ratio=0

да

‘liblinear’

l1_ratio=1 или l1_ratio=0

нет

‘newton-cg’

l1_ratio=0

да

‘newton-cholesky’

l1_ratio=0

да

‘sag’

l1_ratio=0

да

‘saga’

0<=l1_ratio<=1

да

Примечание

Быстрая сходимость ‘sag’ и ‘saga’ гарантируется только для признаков примерно одинакового масштаба. Данные можно предварительно обработать с помощью масштабировщика из sklearn.preprocessing.

См. также

Дополнительные сведения о LogisticRegression, а также таблицу таблицу со сводкой поддерживаемых сочетаний решателей и штрафов см. в руководстве пользователя.

Добавлено в версии 0.17: решатель стохастического градиентного спуска с усреднением (SAG). Поддержка мультиномиальной классификации добавлена в версии 0.18.

Добавлено в версии 0.19: решатель SAGA.

Изменено в версии 0.22: в версии 0.22 решатель по умолчанию изменен с ‘liblinear’ на ‘lbfgs’.

Добавлено в версии 1.2: решатель newton-cholesky. Поддержка мультиномиальной классификации добавлена в версии 1.6.

max_iterint, default=100

Максимальное число итераций, выполняемых решателями до сходимости.

verboseint, default=0

Для решателей liblinear и lbfgs задайте любое положительное значение verbose, чтобы включить подробный вывод.

warm_startbool, default=False

Если задано значение True, решение предыдущего вызова fit используется в качестве начального приближения; в противном случае предыдущее решение просто сбрасывается. Не используется для решателя liblinear. См. глоссарий.

Добавлено в версии 0.17: поддержка параметра warm_start для решателей lbfgs, newton-cg, sag, saga.

n_jobsint, default=None

Не оказывает никакого влияния.

Устарело с версии 1.8: n_jobs устарел в версии 1.8 и будет удален в версии 1.10.

Атрибуты:
classes_ndarray of shape (n_classes, )

Список меток классов, известных классификатору.

coef_ndarray or CSR matrix of shape (1, n_features) or (n_classes, n_features)

Коэффициенты признаков в функции принятия решения.

coef_ имеет форму (1, n_features), если задача является бинарной.

По умолчанию атрибут создается как плотный массив, но его можно преобразовать в разреженный формат (CSR) с помощью sparsify (это может быть полезно при регуляризации L1, если многие коэффициенты равны нулю), а затем обратно в плотный формат с помощью densify.

intercept_ndarray of shape (1,) or (n_classes,)

Свободный член (также называемый смещением), добавляемый к функции принятия решения.

Если fit_intercept имеет значение False, свободный член равен нулю. intercept_ имеет форму (1,), если задача является бинарной.

n_features_in_int

Количество признаков, использованных при вызове fit.

Добавлено в версии 0.24.

feature_names_in_ndarray of shape (n_features_in_,)

Названия признаков, использованных при вызове fit. Определяется только в том случае, если X содержит названия признаков, каждое из которых является строкой.

Добавлено в версии 1.0.

n_iter_ndarray of shape (1, )

Фактическое число итераций для всех классов.

Изменено в версии 0.20: В SciPy <= 1.0.0 число итераций lbfgs могло превышать max_iter. Теперь n_iter_ будет сообщать не более max_iter.

См. также

SGDClassifier

Логистическая регрессия с инкрементальным обучением (если задан параметр loss="log_loss").

LogisticRegressionCV

Логистическая регрессия со встроенной перекрестной проверкой.

Примечания

В базовой реализации на C используется генератор случайных чисел для выбора признаков при обучении модели. Поэтому при одинаковых входных данных результаты могут немного различаться. Если это происходит, попробуйте уменьшить параметр tol.

В некоторых случаях результат predict может отличаться от результата отдельной библиотеки liblinear. См. раздел отличия от liblinear в описательной документации.

Ссылки

L-BFGS-B — программное обеспечение для крупномасштабной оптимизации с ограничениями на переменные

Ciyou Zhu, Richard Byrd, Jorge Nocedal и Jose Luis Morales. http://users.iems.northwestern.edu/~nocedal/lbfgsb.html

LIBLINEAR — библиотека для линейной классификации больших объемов данных

https://www.csie.ntu.edu.tw/~cjlin/liblinear/

SAG — Mark Schmidt, Nicolas Le Roux и Francis Bach

Минимизация конечных сумм методом стохастического градиентного спуска с усреднением https://hal.inria.fr/hal-00860051/document

SAGA — Defazio, A., Bach F. и Lacoste-Julien S. (2014).

«SAGA: быстрый метод инкрементального градиентного спуска с поддержкой составных целевых функций, не являющихся сильно выпуклыми»

Hsiang-Fu Yu, Fang-Lan Huang, Chih-Jen Lin (2011). Двойственный покоординатный спуск

для логистической регрессии и моделей максимальной энтропии. Machine Learning 85(1-2):41-75. https://www.csie.ntu.edu.tw/~cjlin/papers/maxent_dual.pdf

Примеры

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :])
array([[9.82e-01, 1.82e-02, 1.44e-08],
       [9.72e-01, 2.82e-02, 3.02e-08]])
>>> clf.score(X, y)
0.97

Сравнение LogisticRegression с другими классификаторами см. в разделе Визуализация вероятностей классификации.

decision_function(X)[исходный код]

Предсказать оценки уверенности для объектов.

Оценка уверенности объекта пропорциональна знаковому расстоянию от этого объекта до гиперплоскости.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Матрица данных, для которой требуется получить оценки уверенности.

Возвращает:
scoresndarray of shape (n_samples,) or (n_samples, n_classes)

Оценки уверенности для каждой комбинации (n_samples, n_classes). В бинарном случае оценка уверенности для self.classes_[1], большая 0, означает, что будет предсказан этот класс.

densify()[исходный код]

Преобразовать матрицу коэффициентов в формат плотного массива.

Преобразует атрибут coef_ обратно в numpy.ndarray. Это формат по умолчанию для coef_, который необходим для обучения, поэтому вызывать этот метод нужно только для моделей, ранее преобразованных в разреженный формат; в остальных случаях вызов ничего не делает.

Возвращает:
self

Обученный оцениватель.

fit(X, y, sample_weight=None)[исходный код]

Обучить модель на заданных обучающих данных.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Обучающий вектор, где n_samples — число объектов, а n_features — число признаков.

yarray-like of shape (n_samples,)

Целевой вектор, соответствующий X.

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

Массив весов, назначенных отдельным объектам. Если не задан, каждому объекту присваивается вес, равный единице.

Добавлено в версии 0.17: поддержка параметра sample_weight в LogisticRegression.

Возвращает:
self

Обученный оцениватель.

Примечания

Решатель SAGA поддерживает массивы типа float64 и float32.

get_metadata_routing()[исходный код]

Получить настройки маршрутизации метаданных этого объекта.

Описание работы механизма маршрутизации см. в руководстве пользователя.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий информацию о маршрутизации.

get_params(deep=True)[исходный код]

Получить параметры этого оценивателя.

Параметры:
deepbool, default=True

Если True, будут возвращены параметры этого оценивателя и содержащихся в нем объектов, которые являются оценивателями.

Возвращает:
paramsdict

Сопоставление имен параметров с их значениями.

predict(X)[исходный код]

Предсказать метки классов для объектов в X.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Матрица данных, для которой требуется получить предсказания.

Возвращает:
y_predndarray of shape (n_samples,)

Вектор с метками классов для каждого объекта.

predict_log_proba(X)[исходный код]

Предсказать логарифмы оценок вероятностей.

Возвращаемые оценки для всех классов упорядочены по меткам классов.

Параметры:
Xarray-like of shape (n_samples, n_features)

Вектор для оценки, где n_samples — число объектов, а n_features — число признаков.

Возвращает:
Tarray-like of shape (n_samples, n_classes)

Возвращает логарифм вероятности объекта для каждого класса модели; классы упорядочены так же, как в self.classes_.

predict_proba(X)[исходный код]

Оценки вероятностей.

Возвращаемые оценки для всех классов упорядочены по меткам классов.

Для многоклассовой / мультиномиальной задачи для вычисления предсказанной вероятности каждого класса используется функция softmax.

Параметры:
Xarray-like of shape (n_samples, n_features)

Вектор для оценки, где n_samples — число объектов, а n_features — число признаков.

Возвращает:
Tarray-like of shape (n_samples, n_classes)

Возвращает вероятность объекта для каждого класса модели; классы упорядочены так же, как в self.classes_.

score(X, y, sample_weight=None)[исходный код]

Вернуть точность на предоставленных данных и метках.

При многометочной классификации это точность по подмножествам — строгая метрика, поскольку для каждого объекта требуется правильно предсказать весь набор меток.

Параметры:
Xarray-like of shape (n_samples, n_features)

Тестовые объекты.

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

Истинные метки для X.

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

Веса объектов.

Возвращает:
scorefloat

Средняя точность self.predict(X) относительно y.

set_callbacks(*callbacks)[исходный код]

Задает callback-функции для оценщика.

Параметры:
*callbacksэкземпляры callback-функций

Callback-функции, которые нужно задать.

Возвращает:
selfэкземпляр оценщика

Сам экземпляр оценщика.

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → LogisticRegression[исходный код]

Настраивает, следует ли запрашивать передачу метаданных методу fit.

Обратите внимание, что этот метод имеет значение только тогда, когда данный оценщик используется как подоценщик внутри метаоценщика и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. в руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в fit, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метаоценщик не будет передавать их в fit.
  • None: метаданные не запрашиваются, и метаоценщик вызовет ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценщику под указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не затрагивая остальные.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight метода fit.

Возвращает:
selfобъект

Обновленный объект.

set_params(**params)[исходный код]

Задает параметры этого оценщика.

Метод работает как с простыми оценщиками, так и с вложенными объектами (например, Pipeline). У последних параметры имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsсловарь

Параметры оценщика.

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → LogisticRegression[исходный код]

Настраивает, следует ли запрашивать передачу метаданных методу score.

Обратите внимание, что этот метод имеет значение только тогда, когда данный оценщик используется как подоценщик внутри метаоценщика и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. в руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в score, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метаоценщик не будет передавать их в score.
  • None: метаданные не запрашиваются, и метаоценщик вызовет ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценщику под указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не затрагивая остальные.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight метода score.

Возвращает:
selfобъект

Обновленный объект.

sparsify()[исходный код]

Преобразует матрицу коэффициентов в разреженный формат.

Преобразует атрибут coef_ в матрицу scipy.sparse, которая для моделей с L1-регуляризацией может быть значительно эффективнее обычного представления numpy.ndarray с точки зрения памяти и хранения.

Атрибут intercept_ не преобразуется.

Предупреждение

Этот метод не поддерживается для оценщиков, обученных с входными данными Array API (то есть при использовании sklearn.config_context с array_api_dispatch=True). Вызов может выполниться успешно, однако последующие вызовы predict и других методов, принимающих массивы, могут вызвать ошибку или вернуть неожиданные результаты.

Возвращает:
self

Обученный оценщик.

Примечания

Для моделей, не являющихся разреженными, то есть когда в coef_ мало нулей, это может фактически увеличить расход памяти, поэтому используйте этот метод с осторожностью. Как правило, количество нулевых элементов, которое можно вычислить с помощью (coef_ == 0).sum(), должно превышать 50%, чтобы метод обеспечивал существенные преимущества.

После вызова этого метода дальнейшее обучение с помощью метода partial_fit (если он доступен) будет невозможно, пока вы не вызовете densify.

Примеры из галереи

Калибровочные кривые вероятностей

Анализ сходимости моделей логистической регрессии со штрафом

Построение графика вероятностей классификации

ColumnTransformer для данных смешанных типов

Построение конвейера: объединение PCA и логистической регрессии

Преобразование признаков с помощью ансамблей деревьев

Визуализация вероятностных предсказаний VotingClassifier

Рекурсивное исключение признаков

Рекурсивное исключение признаков с кросс-валидацией

Отбор признаков на основе модели и последовательный отбор

Примеры использования FrozenEstimator

Штраф L1 и разреженность в логистической регрессии

Границы принятия решений для мультиномиальной логистической регрессии и регрессии «один против остальных»

Траектория регуляризации логистической регрессии с L1

Разреженная многоклассовая логистическая регрессия на наборе данных 20newgroups

Классификация MNIST с помощью мультиномиальной логистической регрессии и L1

Визуализация с помощью объектов отображения

Отображение оценивателей и сложных конвейеров

Отображение конвейеров

Знакомство с API set_output

Оценка качества классификатора с помощью матрицы ошибок

Настройка порога принятия решения после обучения для обучения с учетом стоимости ошибок

Баланс между сложностью модели и оценкой по кросс-валидации

Отношения правдоподобия классов для оценки качества классификации

Многоклассовая характеристическая кривая (ROC)

Характеристическая кривая (ROC) с кросс-валидацией

Апостериорная настройка порогового значения функции принятия решений

Многометочная классификация с помощью цепочки классификаторов

Признаки машины Больцмана с ограничениями для классификации цифр

Дискретизация признаков

Основные нововведения scikit-learn 0.22

Основные нововведения scikit-learn 0.23

Основные нововведения scikit-learn 0.24

Основные нововведения scikit-learn 1.0

Основные нововведения scikit-learn 1.1

Основные нововведения scikit-learn 1.3

Основные нововведения scikit-learn 1.5

Основные нововведения scikit-learn 1.7

Основные нововведения scikit-learn 1.8

Основные нововведения scikit-learn 1.9

Классификация текстовых документов с помощью разреженных признаков

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.linear_model.LogisticRegression.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API