Spec-Zone.ru › scikit-learn

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 – Библиотека для большой линейной классификации

https://www.csie.ntu.edu.tw/~cjlin/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

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

END_OF_DOCUMENT_MARKER
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.

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

Основные моменты выпуска scikit-learn 1.5

Основные моменты выпуска scikit-learn 1.3

Основные моменты выпуска scikit-learn 1.1

Основные моменты выпуска scikit-learn 1.0

Основные моменты выпуска scikit-learn 0.24

Основные моменты выпуска scikit-learn 0.23

Основные моменты выпуска scikit-learn 0.22

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

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

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

График вероятностей классов, рассчитанных VotingClassifier

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

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

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

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

Сравнение различных онлайн-решателей

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

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

Логистическая функция

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

Мультиклассовая разреженная логистическая регрессия на 20newsgroups

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

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

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

Представление API set_output

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

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

Многоклассовая кривая ROC

Настройка порога функции принятия решений постфактум

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

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

Особенности Restricted Boltzmann Machine для распознавания цифр

Преобразователь столбцов с разными типами

Конвейерное использование: цепочки PCA и логистической регрессии

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

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

© 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

Spec-Zone.ru

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