sklearn.calibration
.CalibratedClassifierCV¶
- class sklearn.calibration.CalibratedClassifierCV¶
Calibración de la probabilidad con regresión isotónica o regresión logística.
Esta clase utiliza la validación cruzada tanto para estimar los parámetros de un clasificador como para calibrar posteriormente un clasificador. Con el valor predeterminado
ensemble=True
, para cada división cv ajusta una copia del estimador base al subconjunto de entrenamiento, y lo calibra utilizando el subconjunto de prueba. Para la predicción, las probabilidades predichas se promedian entre estos clasificadores calibrados individuales. Cuandoensemble=False
, se utiliza la validación cruzada para obtener predicciones insesgadas, a través decross_val_predict
, que luego se utilizan para la calibración. Para la predicción, se utiliza el estimador base, entrenado con todos los datos. Este es el método implementado cuandoprobabilidades=True
para los estimadoressklearn.svm
.Los clasificadores ya ajustados pueden calibrarse mediante el parámetro
cv="prefit"
. En este caso, no se utiliza la validación cruzada y todos los datos proporcionados se utilizan para la calibración. El usuario debe tener cuidado manualmente de que los datos para el ajuste del modelo y la calibración estén separados.La calibración se basa en el método decision_function del
base_estimator
si existe, sino en predict_proba.Lee más en el Manual de usuario.
- Parámetros
- base_estimatorinstancia del estimador, default=None
El clasificador cuya salida necesita ser calibrada para proporcionar salidas
predict_proba
más precisas. El clasificador predeterminado es unLinearSVC
.- method{“sigmoid”, “isotonic”}, default=”sigmoid”
El método a utilizar para la calibración. Puede ser “sigmoide” que corresponde al método de Platt (es decir, un modelo de regresión logística) o “isotonic” que es un enfoque no paramétrico. No se aconseja utilizar la calibración isotónica con muy pocas muestras de calibración
(<<1000)
ya que tiende a sobreajustarse.- cventero, generador de validación cruzada, iterable o «prefit», default=None
Determina la estrategia de división de la validación cruzada. Las entradas posibles para cv son:
None, para utilizar la validación cruzada de 5-pliegues (fold) por defecto,
entero, para especificar el número de pliegues.
Un iterable que produce divisiones (train, test) como arreglos de índices.
Para entradas enteras/None, si
y
es binario o multiclase, se utilizaStratifiedKFold
. Siy
no es binario ni multiclase, se utilizaKFold
.Consulta el Manual de Usuario para conocer las distintas estrategias de validación cruzada que se pueden utilizar aquí.
Si se pasa «prefit», se asume que
base_estimator
ya ha sido ajustado y se utilizan todos los datos para la calibración.Distinto en la versión 0.22: El valor predeterminado de
cv
, None, cambió de 3 partes a 5 partes.- n_jobsentero, default=None
Número de trabajos a ejecutar en paralelo.
None
significa 1 a menos que esté en un contextojoblib.parallel_backend
.-1
significa utilizar todos los procesadores.Los clones del estimador base se ajustan en paralelo a través de las iteraciones de validación cruzada. Por lo tanto, el paralelismo sólo se produce cuando
cv != "prefit"
.Consulta Glosario para más detalles.
Nuevo en la versión 0.24.
- ensemblebool, default=True
Determina cómo se ajusta el calibrador cuando
cv
no es'prefit'
. Se ignora sicv='prefit'
.Si es
True
, elbase_estimator
se ajusta utilizando datos de entrenamiento y se calibra usando datos de pruebas, para cada plieguecv
. El estimador final es un conjunto den_cv
pares ajustados de clasificadores y calificadores, donden_cv
es el número de pliegues de validación cruzada. La salida es el promedio de probabilidades predichas de todos los pares.Si es
False
,cv
se utiliza para calcular predicciones insesgadas, a través decross_val_predict
, que luego se usan para la calibración. En el momento de la predicción, el clasificador utilizado es elbase_estimator
entrenado en todos los datos. Ten en cuenta que este método también se implementa internamente en los estimadoressklearn.svm
con el parámetroprobabilities=True
.Nuevo en la versión 0.24.
- Atributos
- classes_ndarray de forma (n_classes,)
Las etiquetas de clase.
- calibrated_classifiers_ : list (len() equal to cv or 1 if
cv="prefit"
oensemble=False
)list (len() equal to cv or 1 ifcv="prefit"
orensemble=False
) La lista de pares de clasificadores y calibradores.
Cuando
cv="prefit"
, elbase_estimator
ajustado y el calibrador ajustado.Cuando
cv
no es «prefit» yensemble=True
,n_cv
ajusta los paresbase_estimator
y calibrador.n_cv
es el número de pliegues de validación cruzada.Cuando
cv
no es «prefit» yensemble=False
, elbase_estimator
se ajusta a todos los datos y ajusta el calibrador.
Distinto en la versión 0.24: Caso de clasificador único calibrado cuando
ensemble=False
.
Referencias
- 1
Obtaining calibrated probability estimates from decision trees and naive Bayesian classifiers, B. Zadrozny & C. Elkan, ICML 2001
- 2
Transforming Classifier Scores into Accurate Multiclass Probability Estimates, B. Zadrozny & C. Elkan, (KDD 2002)
- 3
Probabilistic Outputs for Support Vector Machines and Comparisons to Regularized Likelihood Methods, J. Platt, (1999)
- 4
Predicting Good Probabilities with Supervised Learning, A. Niculescu-Mizil & R. Caruana, ICML 2005
Ejemplos
>>> 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_estimator=base_clf, cv=3) >>> calibrated_clf.fit(X, y) CalibratedClassifierCV(base_estimator=GaussianNB(), cv=3) >>> len(calibrated_clf.calibrated_classifiers_) 3 >>> calibrated_clf.predict_proba(X)[:5, :] array([[0.110..., 0.889...], [0.072..., 0.927...], [0.928..., 0.071...], [0.928..., 0.071...], [0.071..., 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() >>> calibrated_clf = CalibratedClassifierCV( ... base_estimator=base_clf, ... cv="prefit" ... ) >>> calibrated_clf.fit(X_calib, y_calib) CalibratedClassifierCV(base_estimator=GaussianNB(), cv='prefit') >>> len(calibrated_clf.calibrated_classifiers_) 1 >>> calibrated_clf.predict_proba([[-0.5, 0.5]]) array([[0.936..., 0.063...]])
Métodos
Ajusta el modelo calibrado.
Obtiene los parámetros para este estimador.
Predice el objetivo de las nuevas muestras.
Probabilidades de clasificación calibradas.
Devuelve la precisión media en los datos y etiquetas de prueba dados.
Establece los parámetros de este estimador.
- fit()¶
Ajusta el modelo calibrado.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Datos de entrenamiento.
- yarray-like de forma (n_samples,)
Valores objetivo.
- sample_weightarray-like de forma (n_samples,), default=None
Ponderaciones de las muestras. Si es None, las muestras se ponderan por igual.
- Devuelve
- selfobject
Devuelve una instancia de sí misma.
- get_params()¶
Obtiene los parámetros para este estimador.
- Parámetros
- deepbool, default=True
Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Los nombres de los parámetros mapeados a sus valores.
- predict()¶
Predice el objetivo de las nuevas muestras. La clase predicha es la que tiene la mayor probabilidad, por lo que puede ser diferente de la predicción del clasificador no calibrado.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Las muestras.
- Devuelve
- Cndarray de forma (n_samples,)
La clase predicha.
- predict_proba()¶
Probabilidades de clasificación calibradas.
Esta función devuelve las probabilidades calibradas de clasificación según cada clase en un arreglo de vectores de prueba X.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Las muestras.
- Devuelve
- Cndarray de forma (n_samples, n_classes)
Las probabilidades predichas.
- score()¶
Devuelve la precisión media en los datos y etiquetas de prueba dados.
En la clasificación multietiqueta, se trata de la precisión del subconjunto, que es una métrica rigurosa, ya que se requiere para cada muestra que cada conjunto de etiquetas sea predicho correctamente.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Muestras de prueba.
- yarray-like de forma (n_samples,) o (n_samples, n_outputs)
Etiquetas verdaderas para
X
.- sample_weightarray-like de forma (n_samples,), default=None
Ponderaciones de la muestra.
- Devuelve
- scorefloat
Precisión media de
self.predict(X)
con respecto ay
.
- set_params()¶
Establece los parámetros de este estimador.
El método funciona tanto en estimadores simples como en objetos anidados (como
Pipeline
). Estos últimos tienen parámetros de la forma<component>__<parameter>
para que sea posible actualizar cada componente de un objeto anidado.- Parámetros
- **paramsdict
Parámetros del estimador.
- Devuelve
- selfinstancia de estimador
Instancia del estimador.