LogisticRegression
- classsklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='deprecated', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)[source]
-
Логистическая регрессия (лог-регрессия, MaxEnt) классификатор.
Этот класс реализует регрессионную модель логистической регрессии, используя библиотеки ‘liblinear’, ‘newton-cg’, ‘sag’, ‘saga’ и ‘lbfgs’. Обратите внимание, что регуляризация применяется по умолчанию. Он может обрабатывать как плотные, так и разреженные данные. Для оптимальной производительности используйте массивы с порядком C или разреженные матрицы CSR, содержащие 64-битные числа с плавающей точкой; любой другой формат ввода будет преобразован (и скопирован).
Регуляризация L1 и L2 поддерживаются для решателя 'liblinear'. Решатели 'newton-cg', 'sag' и 'lbfgs' поддерживают только L2 регуляризацию с примитивной формулировкой или без регуляризации. Решатель 'liblinear' поддерживает как L1, так и L2 регуляризацию с двойственной формулировкой только для L2 штрафа. Регуляризация Elastic-Net поддерживается только решателем 'saga'.
Для задач многоклассовой классификации только решатели 'newton-cg', 'sag', 'saga' и 'lbfgs' обрабатывают многономиальную функцию потерь. 'liblinear' и 'newton-cholesky' обрабатывают только двоичную классификацию, но могут быть расширены для обработки многоклассовой классификации с использованием
OneVsRestClassifier.Подробнее в Руководстве пользователя.
- Параметры:
-
- penalty{‘l1’, ‘l2’, ‘elasticnet’, None}, default=’l2’
-
Укажите норму штрафа:
-
None: штраф не добавляется; -
'l2': добавляется термин штрафа L2, это значение по умолчанию; -
'l1': добавляется термин штрафа L1; -
'elasticnet': добавляются оба термина штрафа L1 и L2.
Предупреждение
Некоторые штрафы могут не работать с некоторыми решателями. Обратитесь к параметру
solverниже, чтобы узнать о совместимости между штрафом и решателем.Добавлен в версии 0.19: штраф l1 с решателем SAGA (позволяющим ‘multinomial’ + L1)
-
- dualbool, default=False
-
Двойственная (ограниченная) или первоначальная (регуляризованная, см. также это уравнение) формулировка. Двойственная формулировка реализована только для штрафа l2 с решателем liblinear. Предпочтительно использовать dual=False, когда n_samples > n_features.
- tolfloat, default=1e-4
-
Допуск для критерия остановки.
- Cfloat, default=1.0
-
Обратная величина силы регуляризации; должна быть положительным числом с плавающей точкой. Как и в машинах опорных векторов, меньшие значения указывают на более сильную регуляризацию.
- 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), если sample_weight указаны.
Добавлен в версии 0.17: class_weight=’balanced’
- random_stateint, RandomState instance, default=None
-
Используется, когда
solver== ‘sag’, ‘saga’ или ‘liblinear’ для перемешивания данных. См. Словарь для получения дополнительной информации. - solver{‘lbfgs’, ‘liblinear’, ‘newton-cg’, ‘newton-cholesky’, ‘sag’, ‘saga’}, default=’lbfgs’
-
Алгоритм, используемый в задаче оптимизации. Значение по умолчанию — ‘lbfgs’. Чтобы выбрать решатель, можно рассмотреть следующие аспекты:
- Для небольших наборов данных ‘liblinear’ — хороший выбор, а ‘sag’ и ‘saga’ быстрее для больших;
- Для многоклассовых задач все решатели, кроме ‘liblinear’, минимизируют полную многоклассовую потерю;
- ‘liblinear’ по умолчанию может обрабатывать только бинарную классификацию. Чтобы применить схему один-против-всех для многоклассовой задачи, можно обернуть ее с помощью
OneVsRestClassifier. - ‘newton-cholesky’ — хороший выбор для
n_samples>>n_features * n_classes, особенно с категориальными признаками, закодированными с помощью one-hot, с редкими категориями. Следует учитывать, что использование памяти этого решателя зависит от квадратаn_features * n_classes, так как он явно вычисляет полную матрицу Гессе.
Предупреждение
Выбор алгоритма зависит от выбранного штрафа и от поддержки многоклассовой задачи (multinomial):
решатель
штраф
многоклассовая задача (multinomial)
‘lbfgs’
‘l2’, None
да
‘liblinear’
‘l1’, ‘l2’
нет
‘newton-cg’
‘l2’, None
да
‘newton-cholesky’
‘l2’, None
нет
‘sag’
‘l2’, None
да
‘saga’
‘elasticnet’, ‘l1’, ‘l2’, None
да
Примечание
Быстрая сходимость ‘sag’ и ‘saga’ гарантирована только для признаков с приблизительно одинаковым масштабом. Вы можете обработать данные с помощью масштабирующего преобразования из
sklearn.preprocessing.См. также
Дополнительную информацию о руководстве пользователя см.
LogisticRegression, а конкретно в таблице, где подытожены возможности решателя/штрафа.Добавлен в версии 0.17: Решатель Stochastic Average Gradient descent.
Добавлен в версии 0.19: Решатель SAGA.
Изменено в версии 0.22: По умолчанию решатель был изменен с ‘liblinear’ на ‘lbfgs’ в 0.22.
Добавлен в версии 1.2: решатель newton-cholesky.
- max_iterint, default=100
-
Максимальное число итераций, выполняемых решателями для достижения сходимости.
- multi_class{‘auto’, ‘ovr’, ‘multinomial’}, default=’auto’
-
Если выбран вариант ‘ovr’, то для каждой метки подгоняется бинарная задача. Для ‘multinomial’ минимизируется многоклассовая потеря по всему распределению вероятностей, *даже когда данные двоичные*. ‘multinomial’ недоступен, когда solver=’liblinear’. ‘auto’ выбирает ‘ovr’, если данные двоичные, или если solver=’liblinear’, в противном случае выбирает ‘multinomial’.
Добавлен в версии 0.18: Решатель Stochastic Average Gradient descent для случая ‘multinomial’.
Изменено в версии 0.22: Значение по умолчанию изменено с ‘ovr’ на ‘auto’ в 0.22.
Устарело начиная с версии 1.5:
multi_classустарело в версии 1.5 и будет удалено в 1.7. Начиная с этого момента, рекомендуемый ‘multinomial’ всегда будет использоваться дляn_classes >= 3. Решатели, которые не поддерживают ‘multinomial’, будут генерировать ошибку. Используйтеsklearn.multiclass.OneVsRestClassifier(LogisticRegression())если вы все еще хотите использовать OvR. - 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
-
Число процессоров CPU, используемых при параллелизации по классам, если multi_class=’ovr’. Этот параметр игнорируется, когда
solverустановлено в ‘liblinear’, независимо от того, указан ли ‘multi_class’ или нет.Noneозначает 1, за исключением контекстаjoblib.parallel_backend.-1означает использование всех процессоров. См. Словарь для получения дополнительной информации. - l1_ratiofloat, default=None
-
Параметр смешивания Elastic-Net, с
0 <= l1_ratio <= 1. Используется только еслиpenalty='elasticnet'. Установкаl1_ratio=0эквивалентна использованиюpenalty='l2', в то время как установкаl1_ratio=1эквивалентна использованиюpenalty='l1'. Для0 < l1_ratio <1, штраф является комбинацией L1 и L2.
- Атрибуты:
-
- classes_ndarray of shape (n_classes, )
-
Список меток классов, известных классификатору.
- coef_ndarray of shape (1, n_features) or (n_classes, n_features)
-
Коэффициенты признаков в функции принятия решений.
coef_имеет форму (1, n_features), когда заданная проблема двоичная. В частности, когдаmulti_class='multinomial',coef_соответствует исходу 1 (True), а-coef_соответствует исходу 0 (False). - intercept_ndarray of shape (1,) or (n_classes,)
-
Перехват (также известный как смещение), добавляемый к функции принятия решений.
Если
fit_interceptустановлено в False, перехват устанавливается в ноль.intercept_имеет форму (1,), когда заданная проблема двоичная. В частности, когдаmulti_class='multinomial',intercept_соответствует исходу 1 (True), а-intercept_соответствует исходу 0 (False). - 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 (n_classes,) or (1, )
-
Фактическое количество итераций для всех классов. Если бинарный или многоклассовый, возвращает только 1 элемент. Для решателя liblinear возвращается только максимальное количество итераций по всем классам.
Изменено в версии 0.20: В SciPy <= 1.0.0 число итераций lbfgs может превышать
max_iter.n_iter_теперь сообщит не болееmax_iter.
См. также
SGDClassifier-
Постепенная логистическая регрессия (при заданном параметре
loss="log_loss"). LogisticRegressionCV-
Логистическая регрессия со встроенной перекрестной проверкой.
Примечания
В базовой реализации на C для выбора признаков при обучении модели используется генератор случайных чисел. Поэтому нередки незначительные различия результатов для одних и тех же входных данных. Если это происходит, попробуйте уменьшить параметр tol.
Вывод предсказания может не совпадать с выводом автономного liblinear в некоторых случаях. См. различия с liblinear в справочной документации.
Ссылки
- L-BFGS-B – Программное обеспечение для оптимизации с ограничениями на большие масштабы
-
Ciyou Zhu, Richard Byrd, Jorge Nocedal and Jose Luis Morales. http://users.iems.northwestern.edu/~nocedal/lbfgsb.html
- LIBLINEAR – Библиотека для большой линейной классификации
- SAG – Mark Schmidt, Nicolas Le Roux, and Francis Bach
-
Минимизация конечных сумм с градиентом стохастического среднего https://hal.inria.fr/hal-00860051/document
- SAGA – Defazio, A., Bach F. & Lacoste-Julien S. (2014).
-
“SAGA: A Fast Incremental Gradient Method With Support for Non-Strongly Convex Composite Objectives”
- 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.8...e-01, 1.8...e-02, 1.4...e-08], [9.7...e-01, 2.8...e-02, ...e-08]]) >>> clf.score(X, y) 0.97...Для сравнения LogisticRegression с другими классификаторами см.: График вероятности классификации.
- decision_function(X)[source]
-
Предсказание оценок уверенности для образцов.
Оценка уверенности для образца пропорциональна подписанному расстоянию этого образца до гиперплоскости.
- Параметры:
-
- 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()[source]
-
Преобразовать матрицу коэффициентов в плотный массив.
Преобразует член
coef_(обратно) в numpy.ndarray. Это стандартный форматcoef_, необходимый для обучения, поэтому вызов этого метода необходим только для моделей, которые ранее были разреженными; в противном случае это бесполезная операция.- Возвращает:
-
- self
-
Обученный оценщик.
- fit(X, y, sample_weight=None)[source]
-
Обучение модели по заданным обучающим данным.
- Параметры:
-
- 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()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
-
- routingMetadataRequest
-
MetadataRequest, инкапсулирующий информацию о маршрутизации.
-
- get_params(deep=True)[source]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, вернёт параметры этого оценщика и содержащихся в нём подобъектов, являющихся оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- predict(X)[source]
-
Предсказать метки классов для выборок в X.
- Параметры:
-
- X{array-like, sparse matrix} формы (n_samples, n_features)
-
Матрица данных, для которых мы хотим получить предсказания.
- Возвращает:
-
- y_predndarray формы (n_samples,)
-
Вектор, содержащий метки классов для каждой выборки.
- predict_log_proba(X)[source]
-
Предсказать логарифм оценок вероятности.
Возвращаемые оценки для всех классов упорядочены по метке классов.
- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Вектор для оценки, где
n_samples— количество выборок, аn_features— количество признаков.
- Возвращает:
-
- Tarray-like формы (n_samples, n_classes)
-
Возвращает логарифм вероятности выборки для каждого класса в модели, где классы упорядочены так же, как и в
self.classes_.
- predict_proba(X)[source]
-
Оценки вероятности.
Возвращаемые оценки для всех классов упорядочены по метке классов.
Для многоклассовой задачи, если multi_class установлен в «multinomial», используется функция softmax для нахождения предсказанной вероятности каждого класса. В противном случае используется подход «один против всех», т.е. вычисляется вероятность каждого класса, предполагая, что он является положительным, с использованием логистической функции, и эти значения нормализуются по всем классам.
- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Вектор для оценки, где
n_samples— количество выборок, аn_features— количество признаков.
- Возвращает:
-
- Tarray-like формы (n_samples, n_classes)
-
Возвращает вероятность выборки для каждого класса в модели, где классы упорядочены так же, как и в
self.classes_.
- score(X, y, sample_weight=None)[source]
-
Возвращает среднюю точность на заданных тестовых данных и метках.
При многомерной классификации это точность подмножества, которая является жёсткой метрикой, так как вам требуется для каждой выборки, чтобы каждый набор меток был правильно предсказан.
- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Тестовые выборки.
- yarray-like формы (n_samples,) или (n_samples, n_outputs)
-
Истинные метки для
X. - sample_weightarray-like формы (n_samples,), по умолчанию=None
-
Веса выборок.
- Возвращает:
-
- scorefloat
-
Средняя точность
self.predict(X)по отношению кy.
- set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') LogisticRegression[source]
-
Запрос метаданных, переданных методу
fit.Обратите внимание, что этот метод актуален только если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, обратитесь к руководству пользователя Руководство пользователя по тому, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: метаданные запрашиваются и передаютсяfitпри наличии. Запрос игнорируется, если метаданные не предоставлены. -
False: метаданные не запрашиваются, и мета-оценщик не передаст ихfit. -
None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь их предоставит. -
str: метаданные должны быть переданы мета-оценщику с данным псевдонимом вместо оригинального имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED): сохраняет существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для других.Добавлен в версии 1.3.
Примечание
Этот метод актуален только если этот оценщик используется как под-оценщик мета-оценщика, например, внутри
Pipeline. В противном случае он не имеет эффекта.- Параметры:
-
- sample_weightstr, True, False, или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвfit.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
- set_params(**params)[source]
-
Установите параметры этого оценщика.
Метод работает как с простыми оценщиками, так и со вложенными объектами (такими как
Pipeline). Последние имеют параметры в формате<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') LogisticRegression[source]
-
Запрос метаданных, передаваемых в метод
score.Обратите внимание, что этот метод актуален только если
enable_metadata_routing=True. (см.sklearn.set_config). Пожалуйста, обратитесь к руководству пользователя Руководство пользователя, чтобы узнать, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: метаданные запрашиваются и передаются вscoreесли указаны. Запрос игнорируется, если метаданные не указаны. -
False: метаданные не запрашиваются, и мета-оценщик не передаст их вscore. -
None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь их предоставит. -
str: метаданные должны передаваться мета-оценщику с указанным псевдонимом вместо исходного имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для других.Добавлен в версии 1.3.
Примечание
Этот метод актуален только если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри
Pipeline. В противном случае он не оказывает влияния.- Параметры:
-
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвscore.
- Возвращает:
-
- selfобъект
-
Обновленный объект.
-
- sparsify()[source]
-
Преобразовать матрицу коэффициентов в разреженный формат.
Преобразует член
coef_в матрицу scipy.sparse, что для моделей с L1-регуляризацией может быть намного более эффективным по памяти и хранилищу, чем обычное представление numpy.ndarray.Член
intercept_не преобразуется.- Возвращает:
-
- self
-
Обученный оценщик.
Примечания
Для неразреженных моделей, то есть когда в
coef_не очень много нулей, это может фактически увеличить использование памяти, поэтому используйте этот метод с осторожностью. Правило большого пальца состоит в том, что количество нулевых элементов, которое можно вычислить с помощью(coef_ == 0).sum(), должно быть больше 50%, чтобы это принесло существенные преимущества.После вызова этого метода дальнейшая подгонка с помощью метода partial_fit (если таковой имеется) не будет работать, пока вы не вызовете densify.
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LogisticRegression.html