LogisticRegressionCV#

класс sklearn.linear_model.LogisticRegressionCV(*, Cs=10, l1_ratios='warn', fit_intercept=True, cv=None, dual=False, штраф='устаревший', оценка=None, solver='lbfgs', tol=0.0001, max_iter=100, class_weight=None, n_jobs=None, verbose=0, refit=True, intercept_scaling=1.0, random_state=None, use_legacy_attributes='warn')[источник]#

Логистическая регрессия CV (также известная как logit, MaxEnt) классификатор.

См. запись в глоссарии для оценщик перекрестной проверки.

Этот класс реализует регуляризованную логистическую регрессию с неявной перекрестной проверкой для параметров штрафа C и l1_ratio, см. LogisticRegression, используя набор доступных решателей.

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

Для сетки Cs значения и l1_ratios значения, лучший гиперпараметр выбирается кросс-валидатором StratifiedKFold, но это может быть изменено с использованием cv параметр. Все решатели, кроме 'liblinear', могут использовать тёплый старт коэффициентов (см. Глоссарий).

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

Параметры:
Csint или список floats, по умолчанию=10

Каждое из значений в Cs описывает обратную величину силы регуляризации. Если Cs задано как целое число, то сетка значений Cs выбирается в логарифмическом масштабе между 1e-4 и 1e4. Как и в машинах опорных векторов, меньшие значения указывают на более сильную регуляризацию.

l1_ratiosмассивоподобный формы (n_l1_ratios), по умолчанию=None

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

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

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

Устарело с версии 1.8: l1_ratios=None устарел в версии 1.8 и будет вызывать ошибку в версии 1.10. Значение по умолчанию изменится с None to (0.0,) в версии 1.10.

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

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

cvint или генератор перекрестной проверки, по умолчанию=None

Генератор перекрестной проверки по умолчанию — это стратифицированные K-кратные разбиения. Если указано целое число, оно определяет количество фолдов, n_folds, используется. См. модуль sklearn.model_selection модуль для списка возможных объектов кросс-валидации.

Изменено в версии 0.22: cv значение по умолчанию, если None изменено с 3-кратного на 5-кратное.

dualbool, по умолчанию=False

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

штраф{‘l1’, ‘l2’, ‘elasticnet’}, по умолчанию=’l2’

Укажите норму штрафа:

  • 'l2': добавить член штрафа L2 (используется по умолчанию);

  • 'l1': добавить штрафной член L1;

  • 'elasticnet': добавляются как L1, так и L2 штрафные члены.

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

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

Устарело с версии 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'.

оценкаstr или callable, по умолчанию=None

Метод оценки для перекрестной проверки. Варианты:

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' может работать медленнее в LogisticRegressionCV потому что он не поддерживает теплый старт.

  • ‘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.

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

Добавлено в версии 0.19: SAGA solver.

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

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

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

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

Максимальное количество итераций алгоритма оптимизации.

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’

n_jobsint, default=None

Количество ядер процессора, используемых во время цикла перекрестной проверки. None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

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

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

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

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

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

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

Примечание

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

random_stateint, экземпляр RandomState, по умолчанию=None

Используется, когда solver='sag', ‘saga’ или ‘liblinear’ для перемешивания данных. Обратите внимание, что это относится только к решателю, а не к генератору перекрёстной проверки. См. Глоссарий подробности.

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

Если True, использовать устаревшие значения для атрибутов:

  • C_ является ndarray формы (n_classes,) с повторяющимся тем же значением

  • l1_ratio_ является ndarray формы (n_classes,) с повторяющимся тем же значением

  • coefs_paths_ является словарем с метками классов в качестве ключей и ndarrays в качестве значений

  • scores_ является словарем с метками классов в качестве ключей и ndarrays в качестве значений

  • n_iter_ является ndarray формы (1, n_folds, n_cs) или аналогичной

Если False, используйте новые значения для атрибутов:

  • C_ является числом с плавающей точкой

  • l1_ratio_ является числом с плавающей точкой

  • coefs_paths_ это ndarray формы (n_folds, n_l1_ratios, n_cs, n_classes, n_features) Для бинарных задач (n_classes=2), предпоследнее измерение равно 1.

  • scores_ является ndarray формы (n_folds, n_l1_ratios, n_cs)

  • n_iter_ является ndarray формы (n_folds, n_l1_ratios, n_cs)

Изменено в версии 1.10: Значение по умолчанию изменится с True на False в версии 1.10.

Устарело с версии 1.10: use_legacy_attributes будет устаревшим в версии 1.10 и удален в 1.12.

Атрибуты:
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,) когда задача бинарная.

Cs_ndarray формы (n_cs)

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

l1_ratios_ndarray формы (n_l1_ratios)

Массив l1_ratios, используемых для кросс-валидации. Если используется l1_ratios=None (т.е. штраф не 'elasticnet'), это устанавливается в [None]

coefs_paths_словарь ndarray формы (n_folds, n_cs, n_dof) или (n_folds, n_cs, n_l1_ratios, n_dof)

Словарь с классами в качестве ключей и путями коэффициентов, полученных во время кросс-валидации по каждому фолду (n_folds) и затем по каждому Cs (n_cs). Размер коэффициентов — это количество степеней свободы (n_dof), т.е. без свободного члена n_dof=n_features и с пересечением n_dof=n_features+1. Если penalty='elasticnet', есть дополнительное измерение для количества значений l1_ratio (n_l1_ratios), что дает форму (n_folds, n_cs, n_l1_ratios_, n_dof)См. также параметр use_legacy_attributes.

scores_dict

Словарь с классами в качестве ключей и значениями в виде сетки оценок, полученных при кросс-валидации каждого фолда. Одна и та же оценка повторяется для всех классов. Каждое значение словаря имеет форму (n_folds, n_cs) или (n_folds, n_cs, n_l1_ratios) if penalty='elasticnet'См. также параметр use_legacy_attributes.

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

Значение C, соответствующее наилучшей оценке, повторённое n_classes раз. Если refit установлен в False, лучшее C — это среднее значений C, соответствующих наилучшей оценке для каждого фолда. C_ имеет форму (1,) когда задача бинарная. См. также параметр use_legacy_attributes.

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

Значение l1_ratio, соответствующее наилучшему результату, повторенное n_classes раз. Если refit установлен в False, лучший l1_ratio - это среднее значение l1_ratio, соответствующих наилучшему результату для каждого фолда. l1_ratio_ имеет форму (1,) когда задача бинарная. См. также параметр use_legacy_attributes.

n_iter_ndarray формы (1, n_folds, n_cs) или (1, n_folds, n_cs, n_l1_ratios)

Фактическое количество итераций для всех классов, фолдов и Cs. Если penalty='elasticnet', форма (1, n_folds, n_cs, n_l1_ratios)См. также параметр use_legacy_attributes.

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

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

LogisticRegression

Логистическая регрессия без настройки гиперпараметра C.

Примеры

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegressionCV
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegressionCV(
...     cv=5, random_state=0, use_legacy_attributes=False, l1_ratios=(0,)
... ).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :]).shape
(2, 3)
>>> clf.score(X, y)
0.98...
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, **params)[источник]#

Обучает модель на основе предоставленных обучающих данных.

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

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

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

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

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

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

**paramsdict

Параметры для передачи в базовый разделитель и оценщик.

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

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

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

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

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

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

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

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

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

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, **score_params)[источник]#

Оценка с использованием scoring опцию на предоставленных тестовых данных и метках.

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

Тестовые выборки.

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

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

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

Веса выборок.

**score_paramsdict

Параметры для передачи в score метод базового скорера.

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

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

Оценка self.predict(X) относительно y.

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LogisticRegressionCV[источник]#

Настроить, следует ли запрашивать передачу метаданных в 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$') LogisticRegressionCV[источник]#

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