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. Значение по умолчанию изменится сNoneto(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
Метод оценки для перекрестной проверки. Варианты:
str: см. Строковые имена скореров для опций.
callable: вызываемый объект scorer (например, функция) с сигнатурой
scorer(estimator, X, y). См. Вызываемые скореры подробности.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)ifpenalty='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.