LogisticRegressionCV
- classsklearn.linear_model.LogisticRegressionCV(*, Cs=10, l1_ratios='warn', fit_intercept=True, cv=None, dual=False, penalty='deprecated', scoring='warn', 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')[исходный код]
-
Классификатор логистической регрессии с перекрёстной проверкой (также известный как 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 или список значений с плавающей точкой, по умолчанию=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. В версии 1.10 значение по умолчанию изменится сNoneна(0.0,). - fit_interceptbool, по умолчанию=True
-
Указывает, следует ли добавлять константу (также называемую смещением или свободным членом) к функции принятия решения.
- cvint или генератор перекрёстной проверки, по умолчанию=None
-
По умолчанию используется генератор перекрёстной проверки Stratified K-Folds. Если задано целое число, оно определяет количество используемых блоков,
n_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ниже, чтобы узнать, какие штрафы совместимы с какими решателями.Устарело с версии 1.8: Параметр
penaltyобъявлен устаревшим в версии 1.8 и будет удалён в версии 1.10. Вместо него используйтеl1_ratioиC.l1_ratio=0дляpenalty='l2',l1_ratio=1дляpenalty='l1',l1_ratioзадайте любое число с плавающей точкой от 0 до 1 дляpenalty='elasticnet', аC=np.inf— дляpenalty=None. -
- scoringstr или вызываемый объект, по умолчанию=None
-
Метод оценки для перекрёстной проверки. Возможные варианты:
- str: варианты см. в разделе оценщики с именами в виде строк.
- callable: вызываемый объект-оценщик (например, функция) с сигнатурой
scorer(estimator, X, y). Подробнее см. в разделе вызываемые оценщики. -
None: используется точность.
Изменено в версии 1.11: В версии 1.11 значение по умолчанию изменится с None (то есть точности) на ‘neg_log_loss’.
- solver{‘lbfgs’, ‘liblinear’, ‘newton-cg’, ‘newton-cholesky’, ‘sag’, ‘saga’}, по умолчанию=’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), а также от поддержки (мультиномиальной) многоклассовой классификации:решатель
l1_ratio
мультиномиальная многоклассовая классификация
‘lbfgs’
l1_ratio=0
да
‘liblinear’
l1_ratio=1 или l1_ratio=0
нет
‘newton-cg’
l1_ratio=0
да
‘newton-cholesky’
l1_ratio=0
да
‘sag’
l1_ratio=0
да
‘saga’
0<=l1_ratio<=1
да
Примечание
Быстрая сходимость ‘sag’ и ‘saga’ гарантируется только для признаков примерно одинакового масштаба. Данные можно предварительно обработать с помощью масштабировщика из
sklearn.preprocessing.Добавлено в версии 0.17: Решатель стохастического градиента со средним значением (SAG). Поддержка мультиномиальной классификации добавлена в версии 0.18.
Добавлено в версии 0.19: Решатель SAGA.
Добавлено в версии 1.2: Решатель newton-cholesky. Поддержка мультиномиальной классификации добавлена в версии 1.6.
- tolfloat, по умолчанию=1e-4
-
Допуск для критерия остановки.
- max_iterint, по умолчанию=100
-
Максимальное количество итераций алгоритма оптимизации.
- class_weightdict или ‘balanced’, по умолчанию=None
-
Веса классов в формате
{class_label: weight}. Если параметр не задан, предполагается, что вес каждого класса равен единице.Режим “balanced” использует значения y, чтобы автоматически подобрать веса, обратно пропорциональные частотам классов во входных данных, по формуле
n_samples / (n_classes * np.bincount(y)).Обратите внимание: если задан sample_weight, эти веса будут умножены на него (передаваемый через метод fit).
Добавлено в версии 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_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_— dict, где ключами являются метки классов, а значениями — ndarray -
scores_— dict, где ключами являются метки классов, а значениями — ndarray -
n_iter_— ndarray формы (1, n_folds, n_cs) или аналогичной
Если задано False, для атрибутов используются новые значения:
-
C_— float -
l1_ratio_— float -
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: В версии 1.10 значение по умолчанию изменится с True на False.
Устарело с версии 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_dict из 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), если задано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,), ... scoring="neg_log_loss", ... ).fit(X, y) >>> clf.predict(X[:2, :]) array([0, 0]) >>> clf.predict_proba(X[:2, :]).shape (2, 3) >>> clf.score(X, y) -0.041...
- decision_function(X)[исходный код]
-
Предсказать оценки уверенности для образцов.
Оценка уверенности для образца пропорциональна знаковому расстоянию этого образца до гиперплоскости.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (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{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Обучающий вектор, где
n_samples— количество образцов, аn_features— количество признаков. - yмассивоподобный объект формы (n_samples,)
-
Целевой вектор, соответствующий X.
- sample_weightмассивоподобный объект формы (n_samples,), по умолчанию=None
-
Массив весов, назначенных отдельным образцам. Если не задан, каждому образцу присваивается вес, равный единице.
- **paramsdict
-
Параметры, передаваемые базовому разделителю и оценщику.
Добавлено в версии 1.4.
- Возвращает:
-
- selfobject
-
Обученный оцениватель LogisticRegressionCV.
- get_metadata_routing()[исходный код]
-
Получить маршрутизацию метаданных этого объекта.
О том, как работает механизм маршрутизации, см. в руководстве пользователя.
Добавлено в версии 1.4.
- Возвращает:
-
- routingMetadataRouter
-
Объект
MetadataRouter, содержащий информацию о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценивателя.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если задано True, будут возвращены параметры этого оценивателя и содержащихся в нём подобъектов, которые являются оценивателями.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- predict(X)[исходный код]
-
Предсказать метки классов для образцов из X.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Матрица данных, для которой требуется получить предсказания.
- Возвращает:
-
- y_predndarray формы (n_samples,)
-
Вектор, содержащий метки классов для каждого образца.
- predict_log_proba(X)[исходный код]
-
Предсказать логарифмы оценок вероятностей.
Возвращаемые оценки для всех классов упорядочены по меткам классов.
- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Вектор для оценки, где
n_samples— количество образцов, аn_features— количество признаков.
- Возвращает:
-
- Tмассивоподобный объект формы (n_samples, n_classes)
-
Возвращает логарифм вероятности образца для каждого класса модели; классы упорядочены так же, как в
self.classes_.
- predict_proba(X)[исходный код]
-
Оценки вероятностей.
Возвращаемые оценки для всех классов упорядочены по меткам классов.
Для задачи с несколькими классами / мультиномиальной задачи для определения предсказанной вероятности каждого класса используется функция softmax.
- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Вектор для оценки, где
n_samples— количество образцов, аn_features— количество признаков.
- Возвращает:
-
- Tмассивоподобный объект формы (n_samples, n_classes)
-
Возвращает вероятность принадлежности образца к каждому классу модели; классы упорядочены так же, как в
self.classes_.
- score(X, y, *, sample_weight=None, **score_params)[исходный код]
-
Оценка с использованием параметра
scoringна заданных тестовых данных и метках.- Параметры:
-
- Xмассивоподобный объект формы (n_samples, n_features)
-
Тестовые образцы.
- yмассивоподобный объект формы (n_samples,)
-
Истинные метки для X.
- sample_weightмассивоподобный объект формы (n_samples,), по умолчанию=None
-
Веса образцов.
Устарело с версии 1.9:
sample_weightнеобходимо передавать как аргумент по ключевому слову, а не как позиционный аргумент. - **score_paramsсловарь
-
Параметры, передаваемые методу
scoreиспользуемой функции оценки.Добавлено в версии 1.4.
- Возвращает:
-
- scoreчисло с плавающей точкой
-
Оценка self.predict(X) относительно y.
- set_callbacks(*callbacks)[исходный код]
-
Задать обратные вызовы для оценщика.
- Параметры:
-
- *callbacksэкземпляры обратных вызовов
-
Обратные вызовы, которые нужно задать.
- Возвращает:
-
- selfэкземпляр оценщика
-
Сам экземпляр оценщика.
- 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.
- Возвращает:
-
- selfобъект
-
Обновлённый объект.
-
- set_params(**params)[исходный код]
-
Задать параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). У последних параметры имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsсловарь
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- set_score_request() LogisticRegressionCV[исходный код]
-
Ничего не делает.
Вызов этого метода не оказывает никакого эффекта.
- Возвращает:
-
- selfобъект
-
Обновлённый объект.
- sparsify()[исходный код]
-
Преобразовать матрицу коэффициентов в разреженный формат.
Преобразует атрибут
coef_в матрицу scipy.sparse, которая для моделей с L1-регуляризацией может быть гораздо эффективнее обычного представления numpy.ndarray с точки зрения использования памяти и хранения.Атрибут
intercept_не преобразуется.Предупреждение
Этот метод не поддерживается для оценщиков, обученных с использованием входных данных Array API (то есть когда
sklearn.config_contextиспользуется сarray_api_dispatch=True). Вызов может завершиться успешно, однако последующие вызовыpredictи других методов, принимающих массивы, могут вызвать ошибку или вернуть неожиданные результаты.- Возвращает:
-
- self
-
Обученный оценщик.
Примечания
Для моделей, не являющихся разреженными, то есть когда в
coef_мало нулей, этот метод может фактически увеличить использование памяти, поэтому применяйте его с осторожностью. Как правило, для получения существенных преимуществ доля нулевых элементов, которую можно вычислить с помощью(coef_ == 0).sum(), должна превышать 50%.После вызова этого метода дальнейшее обучение с помощью метода partial_fit (если он есть) будет невозможно до вызова densify.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.linear_model.LogisticRegressionCV.html