Spec-Zone.ru › scikit-learn

CalibratedClassifierCV

classsklearn.calibration.CalibratedClassifierCV(estimator=None, *, method='sigmoid', cv=None, n_jobs=None, ensemble='auto')[исходный код]

Калибровка вероятностей с помощью изотонического, сигмоидального или температурного масштабирования.

Этот класс использует перекрёстную проверку как для оценки параметров классификатора, так и для последующей калибровки классификатора. При ensemble=True для каждого разбиения cv копия базового оценщика обучается на обучающей подвыборке и калибруется с использованием тестовой подвыборки. При предсказании вероятности усредняются по отдельным калиброванным классификаторам. Если задано ensemble=False, перекрёстная проверка используется для получения несмещённых предсказаний с помощью cross_val_predict, которые затем используются для калибровки. При предсказании используется базовый оценщик, обученный на всех данных. Этот метод предсказания применяется, когда для оценщиков SVC и NuSVC задано probabilities=True (подробности см. в руководстве пользователя).

Уже обученные классификаторы можно калибровать, обернув модель в FrozenEstimator. В этом случае все предоставленные данные используются для калибровки. Пользователь должен самостоятельно следить за тем, чтобы данные для обучения модели и калибровки не пересекались.

Калибровка основывается на методе decision_function оценщика estimator, если он существует, иначе — на predict_proba.

Подробнее см. в руководстве пользователя. Чтобы узнать больше о классе CalibratedClassifierCV, ознакомьтесь со следующими примерами калибровки: Калибровка вероятностей классификаторов, Кривые калибровки вероятностей и Калибровка вероятностей для классификации на 3 класса.

Параметры:
estimatorэкземпляр оценщика, по умолчанию=None

Классификатор, выходные данные которого нужно откалибровать, чтобы получить более точные выходные данные predict_proba. По умолчанию используется классификатор LinearSVC.

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

method{‘sigmoid’, ‘isotonic’, ‘temperature’}, по умолчанию=’sigmoid’

Метод калибровки. Возможные значения:

  • ‘sigmoid’ — соответствует методу Платта (то есть модели бинарной логистической регрессии).
  • ‘isotonic’ — непараметрический подход.
  • ‘temperature’ — температурное масштабирование.

Методы сигмоидальной и изотонической калибровки изначально поддерживают только бинарные классификаторы; для многоклассовой классификации они расширяются с помощью стратегии «один против остальных» (OvR) с последующей перенормировкой, то есть корректировкой вероятностей после калибровки, чтобы их сумма равнялась 1.

В отличие от них, температурное масштабирование естественным образом поддерживает многоклассовую калибровку: применяется softmax(classifier_logits/T) со значением T (температуры), оптимизирующим логарифмическую функцию потерь.

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

Изотоническая калибровка не рекомендуется, если число калибровочных примеров слишком мало (≪1000), поскольку в таком случае она склонна к переобучению.

Изменено в версии 1.8: добавлен вариант ‘temperature’.

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

Определяет стратегию разбиения для перекрёстной проверки. Возможные значения cv:

  • None — использовать перекрёстную проверку с 5 блоками по умолчанию;
  • целое число — задать количество блоков;
  • разбиватель CV;
  • итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.

Для целочисленных значений и None, если y — бинарная или многоклассовая, используется StratifiedKFold. Если y не является ни бинарной, ни многоклассовой, используется KFold.

Различные стратегии перекрёстной проверки, которые можно использовать здесь, описаны в руководстве пользователя.

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

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

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

Клоны базового оценщика обучаются параллельно в ходе итераций перекрёстной проверки.

Подробности см. в глоссарии.

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

ensemblebool или “auto”, по умолчанию=”auto”

Определяет способ обучения калибратора.

Значение “auto” использует False, если estimator является FrozenEstimator, и True в противном случае.

Если задано True, для каждого блока cv estimator обучается на обучающих данных и калибруется на тестовых данных. Итоговый оценщик представляет собой ансамбль из пар обученных классификаторов и калибраторов n_cv, где n_cv — количество блоков перекрёстной проверки. Результатом является среднее предсказанных вероятностей всех пар.

Если задано False, cv используется для вычисления несмещённых предсказаний с помощью cross_val_predict; затем они используются для калибровки. Во время предсказания используется классификатор estimator, обученный на всех данных. Обратите внимание, что этот метод также реализован внутри оценщиков sklearn.svm с параметром probabilities=True.

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

Изменено в версии 1.6: добавлен вариант "auto", используемый по умолчанию.

Атрибуты:
classes_ndarray формы (n_classes,)

Метки классов.

n_features_in_int

Количество признаков, обнаруженных во время fit. Определён только в том случае, если базовый оценщик предоставляет такой атрибут при обучении.

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

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, обнаруженных во время fit. Определён только в том случае, если базовый оценщик предоставляет такой атрибут при обучении.

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

calibrated_classifiers_list (длина равна cv или 1, если ensemble=False)

Список пар классификаторов и калибраторов.

  • Если задано ensemble=True, n_cv обученных пар estimator и калибраторов. n_cv — количество блоков перекрёстной проверки.
  • Если задано ensemble=False, estimator, обученный на всех данных, и обученный калибратор.

Изменено в версии 0.24: случай с одним калиброванным классификатором, если задано ensemble=False.

См. также

calibration_curve

Вычисление истинных и предсказанных вероятностей для кривой калибровки.

Ссылки

[1]

B. Zadrozny и C. Elkan. Получение откалиброванных оценок вероятностей с помощью деревьев решений и наивных байесовских классификаторов, ICML 2001.

[2]

B. Zadrozny и C. Elkan. Преобразование оценок классификатора в точные оценки многоклассовых вероятностей, KDD 2002.

[3]

J. Platt. Вероятностные выходные данные машин опорных векторов и сравнение с методами регуляризованного правдоподобия, 1999.

[4]

A. Niculescu-Mizil и R. Caruana. Предсказание хороших вероятностей с помощью обучения с учителем, ICML 2005.

[5]

Chuan Guo, Geoff Pleiss, Yu Sun, Kilian Q. Weinberger. О калибровке современных нейронных сетей. Материалы 34-й Международной конференции по машинному обучению, PMLR 70:1321-1330, 2017.

Примеры

>>> from sklearn.datasets import make_classification
>>> from sklearn.naive_bayes import GaussianNB
>>> from sklearn.calibration import CalibratedClassifierCV
>>> X, y = make_classification(n_samples=100, n_features=2,
...                            n_redundant=0, random_state=42)
>>> base_clf = GaussianNB()
>>> calibrated_clf = CalibratedClassifierCV(base_clf, cv=3)
>>> calibrated_clf.fit(X, y)
CalibratedClassifierCV(...)
>>> len(calibrated_clf.calibrated_classifiers_)
3
>>> calibrated_clf.predict_proba(X)[:5, :]
array([[0.110, 0.889],
       [0.072, 0.927],
       [0.928, 0.072],
       [0.928, 0.072],
       [0.072, 0.928]])
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_classification(n_samples=100, n_features=2,
...                            n_redundant=0, random_state=42)
>>> X_train, X_calib, y_train, y_calib = train_test_split(
...        X, y, random_state=42
... )
>>> base_clf = GaussianNB()
>>> base_clf.fit(X_train, y_train)
GaussianNB()
>>> from sklearn.frozen import FrozenEstimator
>>> calibrated_clf = CalibratedClassifierCV(FrozenEstimator(base_clf))
>>> calibrated_clf.fit(X_calib, y_calib)
CalibratedClassifierCV(...)
>>> len(calibrated_clf.calibrated_classifiers_)
1
>>> calibrated_clf.predict_proba([[-0.5, 0.5]])
array([[0.936, 0.063]])
fit(X, y, sample_weight=None, **fit_params)[исходный код]

Обучение калиброванной модели.

Параметры:
Xarray-like формы (n_samples, n_features)

Обучающие данные.

yarray-like формы (n_samples,)

Целевые значения.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса примеров. Если значение равно None, все примеры имеют одинаковый вес.

**fit_paramsdict

Параметры, передаваемые методу fit базового классификатора.

Возвращает:
selfобъект

Возвращает экземпляр self.

get_metadata_routing()[исходный код]

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

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

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

MetadataRouter, содержащий сведения о маршрутизации.

get_params(deep=True)[исходный код]

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

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

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

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

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

predict(X)[исходный код]

Предсказание целевых значений для новых примеров.

Предсказанным классом является класс с наибольшей вероятностью, поэтому он может отличаться от предсказания некалиброванного классификатора.

Параметры:
Xarray-like формы (n_samples, n_features)

Примеры в формате, принимаемом estimator.predict.

Возвращает:
Cndarray формы (n_samples,)

Предсказанный класс.

predict_proba(X)[исходный код]

Откалиброванные вероятности классов.

Эта функция возвращает откалиброванные вероятности принадлежности к каждому классу для массива тестовых векторов X.

Параметры:
Xarray-like формы (n_samples, n_features)

Примеры в формате, принимаемом estimator.predict_proba.

Возвращает:
Cndarray формы (n_samples, n_classes)

Предсказанные вероятности.

score(X, y, sample_weight=None)[исходный код]

Возвращает точность на предоставленных данных и метках.

В многометочной классификации это точность по подмножествам — строгая метрика, поскольку для каждого примера необходимо правильно предсказать весь набор меток.

Параметры:
Xarray-like формы (n_samples, n_features)

Тестовые примеры.

yarray-like формы (n_samples,) или (n_samples, n_outputs)

Истинные метки для X.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса примеров.

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

Средняя точность self.predict(X) относительно y.

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → CalibratedClassifierCV[исходный код]

Настройка запроса на передачу метаданных методу 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>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → CalibratedClassifierCV[исходный код]

Настройка запроса на передачу метаданных методу 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.

Возвращает:
selfобъект

Обновлённый объект.

Примеры в галерее

Калибровка вероятностей классификаторов

Кривые калибровки вероятностей

Калибровка вероятностей при классификации на 3 класса

Примеры использования FrozenEstimator

Основные нововведения scikit-learn 1.8

Влияние изменения порога на самообучение

Граница решений классификаторов с частичным привлечением учителя и SVM на наборе данных Iris

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.calibration.CalibratedClassifierCV.html

Spec-Zone.ru

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