Menu
CoddyTech

Por qué funcionan los bosques

Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 42 de 58.

Los árboles de un bosque difieren a propósito. Cada uno se entrena con una muestra de bootstrap: filas seleccionadas al azar con reemplazo, así que algunas se repiten y otras quedan fuera.

Cada pregunta también selecciona al azar unas pocas características. Los árboles cometen errores diferentes y el voto los cancela. Dos especies de luciérnagas:

Dos gráficos de 150 luciérnagas, con la duración del destello en el eje horizontal y la pausa en el vertical, círculos azules para una especie y triángulos rojos para la otra. A la izquierda, un árbol: su frontera tiene franjas finas que llegan hasta luciérnagas individuales. A la derecha, un bosque de 100 árboles: una frontera suave entre los grupos

El bosque conserva una franja solo donde la mayoría de los árboles está de acuerdo.

Los árboles están en forest.estimators_:

third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))

Esto imprime 0.737. El bosque completo obtiene una puntuación de 0.895.

challenge icon

Desafío

Intermedio

¿Un bosque supera a sus propios árboles? El código inicial ajusta forest con riders.csv, ciclistas que terminaron o no un recorrido de 160 km en menos de 6 horas, y configura el gráfico.

  1. Calcula la puntuación de cada árbol del bosque con las filas de prueba.
  2. Representa las puntuaciones en un histograma, bins=10, y marca forest_acc con una línea vertical roja.
  3. Imprime cuántos árboles supera el bosque.

En otro recorrido se imprimió The forest beats 88 of its 100 trees y se dibujó esto:

Un histograma titulado El bosque y sus árboles: las precisiones de prueba de los árboles van de aproximadamente 0.53 a 0.85, la mayoría cerca de 0.70, y una línea vertical roja cerca de 0.77, a la derecha de la mayoría de las barras

Después, Coddy describe tu gráfico.

Pruébalo tú mismo

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# Participantes en una ruta ciclista benéfica de 160 km: terminaron en menos de 6 horas (1) o no (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy()  # un arreglo simple, el formato que esperan los árboles del bosque
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)

fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online