sklearn.ensemble.StackingClassifier

class sklearn.ensemble.StackingClassifier

Pila de estimadores con un clasificador final.

La generalización apilada consiste en apilar la salida del estimador individual y utilizar un clasificador para calcular la predicción final. El apilamiento permite el uso de la fuerza de cada estimador individual, usando su salida como entrada de un estimador final.

Tenga en cuenta que estimators_ son encajados en el X completo mientras que final_estimator_ es entrenado utilizando predicciones validadas en cruz de los estimadores base utilizando cross_val_predict.

Más información en el Manual de usuario.

Nuevo en la versión 0.22.

Parámetros
estimatorslista de (str, estimator)

Estimadores base que serán apilados juntos. Cada elemento de la lista es definido como una tupla de cadena (es decir, nombre) y una instancia de estimador. Un estimador puede ser establecido como “drop” utilizando set_params.

final_estimatorestimador, default=None

Un clasificador que sera utilizado para combinar los estimadores base. El clasificador predeterminado es un LogisticRegression.

cvint, generador de validación cruzada o un iterable, default=None

Determina la estrategia de división de validación cruzada utilizada en cross_val_predict para entrenar el final_estimator. Las entradas posibles para cv son:

  • None, para usar la validación cruzada de 5 partes por defecto,

  • un entero, para especificar el número de plegados en un KFold (estratificado)

  • Un objeto a ser usado como generador de validación cruzada,

  • Un iterable dando divisiones de entrenamiento o prueba.

Para entradas de enteros/None, si el estimador es un clasificador e y es binario o multiclase, StratifiedKFold es utilizado. En todos los demás casos, KFold es utilizado.

Consulta Manual de usuario para las diversas estrategias de validación cruzada que pueden ser utilizadas aquí.

Nota

Un número grande de divisiones no proporcionara beneficios si el número de muestras de entrenamiento es lo suficientemente grande. De hecho, el tiempo de entrenamiento aumentará. cv no es utilizado para la evaluación del modelo sino para la predicción.

stack_method{“auto”, “predict_proba”, “decision_function”, “predict”}, default=”auto”

Métodos llamados para cada estimador base. Puede ser:

  • si “auto”, intentara invocar, para cada estimador, 'predict_proba', 'decision_function' o 'predict' en ese orden.

  • de otra manera, uno de 'predict_proba', 'decision_function' o 'predict'. Si el método no es implementado por el estimador, emitirá un error.

n_jobsint, default=None

El número de trabajos a ejecutar en paralelo para todos los estimators fit. None significa 1 excepto en un contexto de joblib.parallel_backend. -1 significa usar todos los procesadores. Ver el Glosario para más detalles.

passthroughbool, default=False

Cuando es False, solo las predicciones de los estimadores serán utilizadas como datos de entrenamiento para final_estimator. Cuando es True, el final_estimator es entrenado tanto en las predicciones como los datos de entrenamiento originales.

verboseint, default=0

Nivel de verbosidad.

Atributos
classes_ndarray de forma (n_classes,)

Etiquetas de clase.

estimators_lista de estimadores

Los elementos del parámetro de los estimadores, tras haber sido encajados en los datos de entrenamiento. Si un estimador ha sido establecido a 'drop', no aparecerá en estimators_.

named_estimators_Bunch

Atributo para acceder a cualquier subestimador ajustado por su nombre.

final_estimator_estimator

El clasificador que predice dado la salida de estimators_.

stack_method_lista de str

El método utilizado por cada estimador base.

Notas

Cuando predict_proba es utilizado por cada estimador (es decir, la mayor parte del tiempo para stack_method='auto' o específicamente para stack_method='predict_proba'). La primera columna predecida por cada estimador será eliminada en el caso de un problema de clasificación binaria. De hecho, ambas características serán perfectamente colineales.

Referencias

1

Wolpert, David H. «Stacked generalization.» Neural networks 5.2 (1992): 241-259.

Ejemplos

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.svm import LinearSVC
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.ensemble import StackingClassifier
>>> X, y = load_iris(return_X_y=True)
>>> estimators = [
...     ('rf', RandomForestClassifier(n_estimators=10, random_state=42)),
...     ('svr', make_pipeline(StandardScaler(),
...                           LinearSVC(random_state=42)))
... ]
>>> clf = StackingClassifier(
...     estimators=estimators, final_estimator=LogisticRegression()
... )
>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, stratify=y, random_state=42
... )
>>> clf.fit(X_train, y_train).score(X_test, y_test)
0.9...

Métodos

decision_function

Predice la función de decisión para muestras en X utilizando final_estimator_.decision_function.

fit

Ajusta los estimadores.

fit_transform

Lo ajusta a los datos, y después lo transforma.

get_params

Obtiene los parámetros de un estimador del ensemble.

predict

Predice el objetivo para X.

predict_proba

Predice las probabilidades de clase para X utilizando final_estimator_.predict_proba.

score

Devuelve la precisión media en los datos y etiquetas de prueba dados.

set_params

Establece los parámetros de un estimador del conjunto.

transform

Devuelve las etiquetas o probabilidades de clase para X para cada estimador.

decision_function()

Predice la función de decisión para muestras en X utilizando final_estimator_.decision_function.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Vectores de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

Devuelve
decisionsndarray de forma (n_samples,), (n_samples, n_classes), o (n_samples, n_classes * (n_classes-1) / 2)

La función de decisión calculada por el estimador final.

fit()

Ajusta los estimadores.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Vectores de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

yarray-like de forma (n_samples,)

Valores objetivo.

sample_weightarray-like de forma (n_samples,), default=None

Ponderaciones de muestra. Si es None, entonces las muestras están igualmente ponderadas. Ten en cuenta que esto sólo es soportado si todos los estimadores subyacentes soportan ponderaciones de muestra.

Devuelve
selfobject
fit_transform()

Lo ajusta a los datos, y después lo transforma.

Ajusta el transformador a X e y con los parámetros opcionales fit_params y devuelve una versión transformada de X.

Parámetros
Xarray-like de forma (n_samples, n_features)

Muestras de entrada.

yarray-like de forma (n_samples,) o (n_samples, n_outputs), default=None

Valores objetivo (Ninguno para transformaciones no supervisadas).

**fit_paramsdict

Parámetros de ajuste adicionales.

Devuelve
X_newarreglo ndarray de forma (n_samples, n_features_new)

Arreglo transformado.

get_params()

Obtiene los parámetros de un estimador del ensemble.

Devuelve los parámetros dados en el constructor así como los estimadores contenidos en el parámetro estimators.

Parámetros
deepbool, default=True

Establecerlo a True también obtiene los diversos estimadores y parámetros de los estimadores.

property n_features_in_

Número de características vistas durante el fit.

predict()

Predice el objetivo para X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Vectores de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

**predict_paramsdict de str -> obj

Parámetros al predict llamado por el final_estimator. Note que esto podría ser utilizado para devolver incertidumbres de algunos estimadores con return_std o return_cov. Tenga en cuenta que solo tendrá en cuenta la incertidumbre para el estimador final.

Devuelve
y_predndarray de forma (n_samples,) o (n_samples, n_output)

Objetivos predichos.

predict_proba()

Predice las probabilidades de clase para X utilizando final_estimator_.predict_proba.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Vectores de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

Devuelve
probabilitiesndarray de forma (n_samples, n_classes) o lista de ndarray de forma (n_output,)

Las probabilidades de clase de las muestras de entrada.

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 exigente, 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

Ponderados de muestras.

Devuelve
scorefloat

Precisión media de self.predict(X) con respecto a y.

set_params()

Establece los parámetros de un estimador del conjunto.

Las claves de parámetro válidas pueden ser listadas con get_params(). Ten en cuenta que puedes establecer directamente los parámetros de los estimadores contenidos en estimators.

Parámetros
**paramsargumentos de palabras clave

Parámetros específicos utilizando, por ejemplo, set_params(parameter_name=new_value). Además de establecer los parámetros del estimador, también se puede establecer el estimador individual de los estimadores, o se puede eliminar estableciéndolos en “drop”.

transform()

Devuelve las etiquetas o probabilidades de clase para X para cada estimador.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Vectores de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

Devuelve
y_predsndarray de forma (n_samples, n_estimators), o (n_samples, n_classes * n_estimators)

Salidas de predicción para cada estimador.

Ejemplos usando sklearn.ensemble.StackingClassifier