LogisticRegression#

класс sklearn.linear_model.LogisticRegression(штраф='устаревший', *, 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.

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

Параметры:
штраф{‘l1’, ‘l2’, ‘elasticnet’, None}, по умолчанию=’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 вместо этого. l1_ratio=0 для penalty='l2', l1_ratio=1 для penalty='l1' и l1_ratio установить любое число с плавающей точкой от 0 до 1 для 'penalty='elasticnet'.

Cfloat, по умолчанию=1.0

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

l1_ratiofloat, по умолчанию=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, по умолчанию=False

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

tolfloat, по умолчанию=1e-4

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

fit_interceptbool, по умолчанию=True

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

intercept_scalingfloat, по умолчанию=1

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

Примечание

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

class_weightdict или 'balanced', по умолчанию=None

Weights associated with classes in the form {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, по умолчанию=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) и для (мультиномиальной) многоклассовой поддержки:

solver

l1_ratio

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

'lbfgs'

l1_ratio=0

да

'liblinear'

l1_ratio=1 или l1_ratio=0

нет

‘newton-cg’

l1_ratio=0

да

Как было сказано ранее, "положительная метка" не определена как значение "1", и вызов некоторых метрик с этим нестандартным значением вызывает ошибку. Нам нужно указать "положительную метку" для метрик.

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

Изменено в версии 0.22: Солвер по умолчанию изменился с 'liblinear' на 'lbfgs' в версии 0.22.

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

max_iterint, по умолчанию=100

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

verboseint, по умолчанию=0

Для решателей liblinear и lbfgs установите verbose в любое положительное число для вывода подробной информации.

warm_startbool, по умолчанию=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 формы (n_classes, )

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

coef_ndarray формы (1, n_features) или (n_classes, n_features)

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

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

intercept_ndarray формы (1,) или (n_classes,)

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

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

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только когда X имеет имена признаков, которые все являются строками.

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

n_iter_ndarray формы (1, )

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

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

Смотрите также

SGDClassifier

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

LogisticRegressionCV

Логистическая регрессия со встроенной кросс-валидацией.

Примечания

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

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

Ссылки

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

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

LIBLINEAR – A Library for Large Linear Classification

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). Dual coordinate descent

методы для логистической регрессии и моделей максимальной энтропии. 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} формы (n_samples, n_features)

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

Возвращает:
scoresndarray формы (n_samples,) или (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} формы (n_samples, n_features)

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

yarray-like формы (n_samples,)

Целевой вектор относительно X.

sample_weightarray-like формы (n_samples,) по умолчанию=None

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

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

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

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

Примечания

Решатель SAGA поддерживает массивы как с плавающей точкой 64, так и 32 бит.

6332()[источник]#

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

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

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

Параметры:
глубокийbool, по умолчанию=True

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

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

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

predict(X)[источник]#

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

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

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

Возвращает:
y_predndarray формы (n_samples,)

Вектор, содержащий метки классов для каждого образца.

predict_log_proba(X)[источник]#

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

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

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

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

Возвращает:
Tarray-like формы (n_samples, n_classes)

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

predict_proba(X)[источник]#

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

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

Для многоклассовой / мультиномиальной задачи функция 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)[источник]#

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

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

Параметры:
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[источник]#

Настроить, следует ли запрашивать передачу метаданных в 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.

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

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

set_params(**params)[источник]#

Установить параметры этого оценщика.

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

Параметры:
**paramsdict

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

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

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

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.

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

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

разрежать()[источник]#

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

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

The intercept_ Член не преобразован.

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

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

Примечания

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

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