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