Random Forest e Iris

Apliquemos este algoritmo al dataset Iris. Comencemos leyendo los datos y dividiéndolos en bloques de entrenamiento y validación:

iris = sns.load_dataset("Iris")
X = iris.drop("species", axis = 1)
y = iris.species
X_train, X_test, y_train, y_test = train_test_split(X, y)

Ahora importemos la clase RandomForestClassifier, instanciemos el algoritmo y entrenemos el modelo:

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train.values, y_train)

Random Forest e Iris

Podemos visualizar el porcentaje de muestras bien clasificadas con el método .score():

model.score(X_test.values, y_test)
0.9736842105263158

Comprobamos que se trata de un porcentaje superior al obtenido por un único árbol de decisión.

Por defecto, la clase RandomForestClassifier entrena 100 árboles, cosa que podemos comprobar en la configuración del modelo (clave n_estimators):

model.get_params()
{'bootstrap': True,
 'ccp_alpha': 0.0,
 'class_weight': None,
 'criterion': 'gini',
 'max_depth': None,
 'max_features': 'sqrt',
 'max_leaf_nodes': None,
 'max_samples': None,
 'min_impurity_decrease': 0.0,
 'min_samples_leaf': 1,
 'min_samples_split': 2,
 'min_weight_fraction_leaf': 0.0,
 'n_estimators': 100,
 'n_jobs': None,
 'oob_score': False,
 'random_state': None,
 'verbose': 0,
 'warm_start': False}

Por supuesto, esto en configurable dando al parámetro n_estimators el valor deseado.