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:
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.
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.
- Calcula la puntuación de cada árbol del bosque con las filas de prueba.
- Representa las puntuaciones en un histograma,
bins=10, y marcaforest_acccon una línea vertical roja. - Imprime cuántos árboles supera el bosque.
En otro recorrido se imprimió The forest beats 88 of its 100 trees y se dibujó esto:
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
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje supervisado
1Tu primer modelo
Aprender de ejemplosConjuntos de entrenamiento y pruebaAjustar y predecirEvaluar un modeloRepaso: clasificador de semillas4Regresión logística
Predicciones de sí o noEl umbral de decisiónLos pesos como evidenciaVarias clasesRepaso: filtro de spam2Vecinos más cercanos
Cómo decide k-NNCómo elegir kFronteras de decisiónEscalado para los vecinosRepaso: vecinos del vino5Medición de clasificadores
La matriz de confusiónPrecisión y exhaustividadLa puntuación F1Clases desequilibradasCurvas ROCRepaso: prueba de detección8Validación cruzada
Validación K-FoldComparación justa de modelosBúsqueda en cuadrículaRepaso: reparaciones de monopatines11Proyecto: especies de pingüinos
Conoce a los pingüinosPrepara los datosElige un modeloAjusta el modelo ganadorPublica el modelo3Regresión lineal
Predicción de númerosVarias característicasMedición de erroresGráficos de residuosRepaso: alquiler de bicicletas6Árboles de decisión
Los árboles hacen preguntasLeer un árbolProfundidad del árbolImportancia de las característicasRepaso: decisiones de préstamos9Métodos de conjunto
Bosques aleatoriosPor qué funcionan los bosquesAumento de gradienteRepaso: guardabosquesPractica por tu cuenta: Compilador de Python online