Spec-Zone.ru › scikit-learn

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

Spec-Zone.ru

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