Graficar las predicciones de la regresión individual y de la votación

Un regresor de votación es un metaestimador de conjunto (ensemble) que ajusta varios regresores de base, cada uno de ellos en todo el conjunto de datos. A continuación, promedia las predicciones individuales para formar una predicción final. Utilizaremos tres regresores diferentes para predecir los datos: GradientBoostingRegressor, RandomForestRegressor, y LinearRegression). A continuación, se utilizarán los tres regresores anteriores para la clase VotingRegressor.

Por último, graficaremos las predicciones realizadas por todos los modelos para compararlas.

Trabajaremos con el conjunto de datos de la diabetes, que consta de 10 características recogidas de una cohorte de pacientes diabéticos. El objetivo es una medida cuantitativa de la progresión de la enfermedad un año después de la línea de base.

print(__doc__)

import matplotlib.pyplot as plt

from sklearn.datasets import load_diabetes
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import VotingRegressor

Clasificadores de entrenamiento

En primer lugar, cargaremos el conjunto de datos de la diabetes e iniciaremos un regresor de potenciación de gradiente, un regresor de bosque aleatorio y una regresión lineal. A continuación, utilizaremos los 3 regresores para construir el regresor de votación:

X, y = load_diabetes(return_X_y=True)

# Train classifiers
reg1 = GradientBoostingRegressor(random_state=1)
reg2 = RandomForestRegressor(random_state=1)
reg3 = LinearRegression()

reg1.fit(X, y)
reg2.fit(X, y)
reg3.fit(X, y)

ereg = VotingRegressor([('gb', reg1), ('rf', reg2), ('lr', reg3)])
ereg.fit(X, y)
VotingRegressor(estimators=[('gb', GradientBoostingRegressor(random_state=1)),
                            ('rf', RandomForestRegressor(random_state=1)),
                            ('lr', LinearRegression())])
GradientBoostingRegressor(random_state=1)
RandomForestRegressor(random_state=1)
LinearRegression()


Haciendo predicciones

Ahora utilizaremos cada uno de los regresores para hacer las 20 primeras predicciones.

xt = X[:20]

pred1 = reg1.predict(xt)
pred2 = reg2.predict(xt)
pred3 = reg3.predict(xt)
pred4 = ereg.predict(xt)

Graficar los resultados

Por último, visualizaremos las 20 predicciones. Las estrellas rojas muestran la predicción media realizada por VotingRegressor.

plt.figure()
plt.plot(pred1, 'gd', label='GradientBoostingRegressor')
plt.plot(pred2, 'b^', label='RandomForestRegressor')
plt.plot(pred3, 'ys', label='LinearRegression')
plt.plot(pred4, 'r*', ms=10, label='VotingRegressor')

plt.tick_params(axis='x', which='both', bottom=False, top=False,
                labelbottom=False)
plt.ylabel('predicted')
plt.xlabel('training samples')
plt.legend(loc="best")
plt.title('Regressor predictions and their average')

plt.show()
Regressor predictions and their average

Tiempo total de ejecución del script: (0 minutos 0.876 segundos)

Galería generada por Sphinx-Gallery