sklearn.ensemble.StackingRegressor

class sklearn.ensemble.StackingRegressor

Pila de estimadores con un regresor final.

La generalización apilada consiste en apilar la salida del estimador individual y utilizar un regresor 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 regresor que sera utilizado para combinar los estimadores base. El regresor predeterminado es un RidgeCV.

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.

n_jobsint, default=None

El número de trabajos a ejecutar en paralelo para fit de todos los estimators. 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
estimators_lista de estimador

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 regresor a apilar los estimadores de base ajustados.

Referencias

1

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

Ejemplos

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.linear_model import RidgeCV
>>> from sklearn.svm import LinearSVR
>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.ensemble import StackingRegressor
>>> X, y = load_diabetes(return_X_y=True)
>>> estimators = [
...     ('lr', RidgeCV()),
...     ('svr', LinearSVR(random_state=42))
... ]
>>> reg = StackingRegressor(
...     estimators=estimators,
...     final_estimator=RandomForestRegressor(n_estimators=10,
...                                           random_state=42)
... )
>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=42
... )
>>> reg.fit(X_train, y_train).score(X_test, y_test)
0.3...

Métodos

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.

score

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

set_params

Establece los parámetros de un estimador del ensemble.

transform

Devuelve las predicciones de X para cada estimador.

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 (None 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.

score()

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

El coeficiente \(R^2\) se define como \((1 - \frac{u}{v})\), donde \(u\) es la suma residual de cuadrados ((y_true - y_pred) ** 2).sum() y \(v\) es la suma total de cuadrados ((y_true - y_true.mean()) ** 2).sum(). La mejor puntuación posible es 1,0 y puede ser negativa (porque el modelo puede ser arbitrariamente peor). Un modelo constante que siempre predice el valor esperado de y, sin tener en cuenta las características de entrada, obtendría una puntuación \(R^2\) de 0,0.

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

Muestras de prueba. Para algunos estimadores puede ser una matriz de núcleo precalculada o una lista de objetos genéricos con forma (n_samples, n_samples_fitted), donde n_samples_fitted es el número de muestras utilizadas en el ajuste para el estimador.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Valores verdaderos para X.

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

Ponderaciones de la muestra.

Devuelve
scorefloat

\(R^2\) de self.predict(X) con respecto a y.

Notas

La puntuación \(R^2\) utilizada al llamar a score en un regresor utiliza multioutput='uniform_average' desde la versión 0.23 para mantener la coherencia con el valor predeterminado de r2_score`. Esto influye en el método score de todos los regresores de salida múltiple (excepto para MultiOutputRegressor).

set_params()

Establece los parámetros de un estimador del ensemble.

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 predicciones de 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)

Salidas de predicción para cada estimador.

Ejemplos usando sklearn.ensemble.StackingRegressor