Vamos a probar la implementación de Scikit-Learn del clasificador basado en Gradient Boosting y a compararlo con el árbol de decisión en el que se basa. Utilizaremos para esto el dataset de cáncer de pecho ofrecido por Scikit-Learn.
Comenzamos importando el algoritmo, cargando el dataset y separando los datos en el conjunto de características (X) y el de etiquetas (y).
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
X = pd.DataFrame(cancer.data, columns = cancer["feature_names"])
y = cancer["target"]
A continuación, creamos los datasets de entrenamiento y prueba, dejando el porcentaje de muestras por defecto (75% para el conjunto de entrenamiento y 25% para el conjunto de prueba):
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)
Importamos el clasificador basado en el árbol de decisión, lo instanciamos, entrenamos y comprobamos su precisión media:
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier()
tree.fit(X_train, y_train)
tree.score(X_test, y_test)
0.8811188811188811
Importamos ahora el clasificador gradient boosting, lo instanciamos, entrenamos y comprobamos su precisión media:
from sklearn.ensemble import GradientBoostingClassifier
gbrt = GradientBoostingClassifier(random_state = 0)
gbrt.fit(X_train, y_train)
gbrt.score(X_test, y_test)
0.958041958041958
La mejora, aun con los parámetros por defecto, es sustancial, como podemos ver.