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 — библиотека для линейной классификации больших объемов данных
- SAG — Mark Schmidt, Nicolas Le Roux и Francis Bach
-
Минимизация конечных сумм методом стохастического градиентного спуска с усреднением https://hal.inria.fr/hal-00860051/document
- SAGA — Defazio, A., Bach F. и Lacoste-Julien S. (2014).
- 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.
Примеры из галереи
© 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