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, для каждого блокаcvestimatorобучается на обучающих данных и калибруется на тестовых данных. Итоговый оценщик представляет собой ансамбль из пар обученных классификаторов и калибраторов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объект
-
Обновлённый объект.
-
Примеры в галерее
© 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