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=Truepara 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_estimatorsi 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_probamá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
yes binario o multiclase, se utilizaStratifiedKFold. Siyno 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_estimatorya 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.
Nonesignifica 1 a menos que esté en un contextojoblib.parallel_backend.-1significa 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
cvno es'prefit'. Se ignora sicv='prefit'.Si es
True, elbase_estimatorse ajusta utilizando datos de entrenamiento y se calibra usando datos de pruebas, para cada plieguecv. El estimador final es un conjunto den_cvpares ajustados de clasificadores y calificadores, donden_cves el número de pliegues de validación cruzada. La salida es el promedio de probabilidades predichas de todos los pares.Si es
False,cvse 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_estimatorentrenado en todos los datos. Ten en cuenta que este método también se implementa internamente en los estimadoressklearn.svmcon 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_estimatorajustado y el calibrador ajustado.Cuando
cvno es «prefit» yensemble=True,n_cvajusta los paresbase_estimatory calibrador.n_cves el número de pliegues de validación cruzada.Cuando
cvno es «prefit» yensemble=False, elbase_estimatorse 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.