Spec-Zone.ru › scikit-learn

LogisticRegressionCV

classsklearn.linear_model.LogisticRegressionCV(*, Cs=10, fit_intercept=True, cv=None, dual=False, penalty='l2', scoring=None, solver='lbfgs', tol=0.0001, max_iter=100, class_weight=None, n_jobs=None, verbose=0, refit=True, intercept_scaling=1.0, multi_class='deprecated', random_state=None, l1_ratios=None)[source]

Классификатор логистической регрессии с перекрёстной проверкой (также известен как logit, MaxEnt).

См. определение в глоссарии для эстиматора перекрёстной проверки.

Этот класс реализует логистическую регрессию с использованием оптимизаторов liblinear, newton-cg, sag или lbfgs. Оптимизаторы newton-cg, sag и lbfgs поддерживают только L2 регуляризацию с примитивной формулировкой. Оптимизатор liblinear поддерживает L1 и L2 регуляризацию, с двойственной формулировкой только для L2 штрафа. Штраф Elastic-Net поддерживается только оптимизатором saga.

Для набора значений Cs и значений l1_ratios, лучший гиперпараметр выбирается с помощью перекрёстного валидатора StratifiedKFold, но его можно изменить, используя параметр cv. Оптимизаторы ‘newton-cg’, ‘sag’, ‘saga’ и ‘lbfgs’ могут использовать предварительные результаты для коэффициентов (см. словарь).

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

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

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

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

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

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

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

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

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

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

penalty{‘l1’, ‘l2’, ‘elasticnet’}, по умолчанию=’l2’

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

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

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

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

scoringстрока или вызываемый объект, по умолчанию=None

Строка (см. Параметр scoring: определение правил оценки моделей) или вызываемый объект/функция со сигнатурой scorer(estimator, X, y). Для списка функций оценки, которые можно использовать, см. sklearn.metrics. По умолчанию используется функция оценки ‘accuracy’.

solver{‘lbfgs’, ‘liblinear’, ‘newton-cg’, ‘newton-cholesky’, ‘sag’, ‘saga’}, по умолчанию=’lbfgs’

Алгоритм для использования в задаче оптимизации. По умолчанию — ‘lbfgs’. При выборе решателя следует учитывать следующие аспекты:

  • Для небольших наборов данных ‘liblinear’ — хороший выбор, а ‘sag’ и ‘saga’ быстрее для больших наборов данных;
  • Для многоклассовых задач все решатели, кроме ‘liblinear’, минимизируют полную многоклассовую потерю;
  • ‘liblinear’ может быть медленнее в LogisticRegressionCV, потому что он не обрабатывает тёплый старт.
  • ‘liblinear’ по умолчанию может обрабатывать только бинарную классификацию. Чтобы применить схему один-против-всех для многоклассовой задачи, можно обернуть её с помощью OneVsRestClassifier.
  • ‘newton-cholesky’ — хороший выбор для n_samples >> n_features * n_classes, особенно с кодированием категориальных признаков one-hot с редкими категориями. Имейте в виду, что использование памяти этим решателем имеет квадратичную зависимость от n_features * n_classes , так как он явно вычисляет полную матрицу Гессе.

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

Выбор алгоритма зависит от выбранного штрафа и от поддержки (многоклассовой) многоклассовой задачи:

решатель

штраф

многоклассовая задача multinomial

‘lbfgs’

‘l2’

да

‘liblinear’

‘l1’, ‘l2’

нет

‘newton-cg’

‘l2’

да

‘newton-cholesky’

‘l2’,

нет

‘sag’

‘l2’,

да

‘saga’

‘elasticnet’, ‘l1’, ‘l2’

да

Примечание

Быстрая сходимость ‘sag’ и ‘saga’ гарантируется только для признаков с примерно одинаковым масштабом. Вы можете обработать данные с помощью масштабирующего преобразования из sklearn.preprocessing.

Добавлен в версии 0.17: Стохастический решатель градиентного спуска.

Добавлен в версии 0.19: Решатель SAGA.

Добавлен в версии 1.2: Решатель newton-cholesky.

tolчисло с плавающей точкой, по умолчанию=1e-4

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

max_iterцелое число, по умолчанию=100

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

class_weightсловарь или ‘balanced’, по умолчанию=None

Веса, связанные с классами, в формате {class_label: weight}. Если не указаны, все классы предполагаются с весом один.

Режим “balanced” использует значения y, чтобы автоматически скорректировать веса, обратно пропорционально частоте классов в входных данных, как n_samples / (n_classes * np.bincount(y)).

Обратите внимание, что эти веса будут умножены на sample_weight (переданные через метод fit), если sample_weight указан.

Добавлен в версии 0.17: class_weight == ‘balanced’

n_jobsint, по умолчанию=None

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

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

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

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

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

intercept_scalingчисло с плавающей точкой, по умолчанию=1

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

Примечание! Вес синтетического признака подчиняется l1/l2-регуляризации, как и все остальные признаки. Для уменьшения влияния регуляризации на вес синтетического признака (и, следовательно, на свободный член) необходимо увеличить intercept_scaling.

multi_class{‘auto’, ‘ovr’, ‘multinomial’}, по умолчанию=’auto’

Если выбран вариант ‘ovr’, то для каждого метка будет подобрана бинарная задача. Для ‘multinomial’ минимизируемая потеря — многоклассовая потеря по всему распределению вероятностей, *даже когда данные бинарны*. ‘multinomial’ недоступен, когда solver=’liblinear’. ‘auto’ выбирает ‘ovr’, если данные бинарны, или если solver=’liblinear’, в противном случае выбирает ‘multinomial’.

Добавлен в версии 0.18: Стохастический решатель градиентного спуска для случая ‘multinomial’.

Изменено в версии 0.22: Значение по умолчанию изменено с ‘ovr’ на ‘auto’ в 0.22.

Устарело начиная с версии 1.5: multi_class было устарело в версии 1.5 и будет удалено в 1.7. С этого момента рекомендуется использовать ‘multinomial’ всегда для n_classes >= 3. Решатели, не поддерживающие ‘multinomial’, будут генерировать ошибку. Используйте sklearn.multiclass.OneVsRestClassifier(LogisticRegressionCV()) если вам всё ещё нужно использовать OvR.

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

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

l1_ratiosсписок чисел с плавающей точкой, по умолчанию=None

Список параметров смешивания Elastic-Net с 0 <= l1_ratio <= 1. Используется только, если penalty='elasticnet'. Значение 0 эквивалентно использованию penalty='l2', а 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), когда задача бинарная.

intercept_ndarray of shape (1,) or (n_classes,)

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

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

Cs_ndarray of shape (n_cs)

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

l1_ratios_ndarray of shape (n_l1_ratios)

Массив значений l1_ratios, используемых для перекрестной проверки. Если не используется l1_ratio (т.е. штраф не ‘elasticnet’), значение равно [None]

coefs_paths_ndarray of shape (n_folds, n_cs, n_features) or (n_folds, n_cs, n_features + 1)

Словарь с классами в качестве ключей и путями коэффициентов, полученными во время перекрестной проверки по каждой паре fold и C после применения OvR для соответствующего класса в качестве значений. Если опция ‘multi_class’ установлена в ‘multinomial’, coefs_paths содержат коэффициенты для каждого класса. Каждое значение словаря имеет размерность (n_folds, n_cs, n_features) или (n_folds, n_cs, n_features + 1), в зависимости от того, подгонялся ли свободный член. Если penalty='elasticnet', размерность равна (n_folds, n_cs, n_l1_ratios_, n_features) или (n_folds, n_cs, n_l1_ratios_, n_features + 1)

scores_dict

Словарь с классами в качестве ключей и значениями в виде сетки оценок, полученных во время перекрестной проверки каждой пары fold и C после применения OvR для соответствующего класса. Если опция ‘multi_class’ установлена в ‘multinomial’, те же оценки повторяются для всех классов, так как это многоклассовая классификация. Каждое значение словаря имеет размерность (n_folds, n_cs) или (n_folds, n_cs, n_l1_ratios) если penalty='elasticnet'

C_ndarray of shape (n_classes,) or (n_classes - 1,)

Массив значений C, соответствующий наилучшим оценкам для каждого класса. Если refit установлено в False, для каждого класса наилучшее значение C — среднее значение C, соответствующее лучшим оценкам для каждого fold. C_ имеет размерность (n_classes,), если задача бинарная.

l1_ratio_ndarray of shape (n_classes,) or (n_classes - 1,)

Массив значений l1_ratio, соответствующий наилучшим оценкам для каждого класса. Если refit установлено в False, для каждого класса наилучшее значение l1_ratio — среднее значение l1_ratio, соответствующее лучшим оценкам для каждого fold. l1_ratio_ имеет размерность (n_classes,), если задача бинарная.

n_iter_ndarray of shape (n_classes, n_folds, n_cs) or (1, n_folds, n_cs)

Фактическое количество итераций для всех классов, fold и значений C. В бинарном или многоклассовом случаях размер первой размерности равен 1. Если penalty='elasticnet', размерность равна (n_classes, n_folds, n_cs, n_l1_ratios) или (1, n_folds, n_cs, n_l1_ratios)

n_features_in_int

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

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

feature_names_in_ndarray of shape (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).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)[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_, и он требуется для подгонки, поэтому вызов этого метода требуется только для моделей, которые были предварительно разрежены; в противном случае это просто no-op.

Возвращаемое значение:
self

Обученная модель.

fit(X, y, sample_weight=None, **params)[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

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

**paramsdict

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

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

Возвращаемое значение:
selfobject

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

get_metadata_routing()[source]

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

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

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

Возвращаемое значение:
routingMetadataRouter

Объект MetadataRouter, содержащий маршрутную информацию.

get_params(deep=True)[source]

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

Параметры:
deepbool, по умолчанию=True

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

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

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

predict(X)[source]

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

Параметры:
X{array-like, разреженная матрица} формы (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, **score_params)[source]

Оценка с использованием опции 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[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, or 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$') → LogisticRegressionCV[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, или None, по умолчанию 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.LogisticRegressionCV.html

Spec-Zone.ru

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