Profundidad del árbol
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 29 de 58.
Un árbol puede seguir preguntando hasta que cada fila de entrenamiento tenga su propia respuesta. Entonces ha memorizado, no aprendido:
Los árboles profundos aprenden el ruido de sus propias filas de entrenamiento, por lo que la precisión en las pruebas alcanza su máximo y después disminuye. Prueba varias profundidades:
train = []
test = []
for d in range(1, 13):
tree = DecisionTreeClassifier(max_depth=d, random_state=0)
tree.fit(X_train, y_train)
train.append(tree.score(X_train, y_train))
test.append(tree.score(X_test, y_test))En estas lunas, la profundidad 6 funciona mejor con filas nuevas: consérvala, por ahora. A partir de la profundidad 8, el árbol es perfecto con las filas memorizadas, pero peor con el resto.
Desafío
IntermedioUn estudio telescópico clasifica los objetos celestes en estrellas y galaxias. El código inicial los divide y configura el gráfico.
- Para cada profundidad en
depths, entrena un árbol (random_state=0) y guarda ambas precisiones. - Imprime la profundidad con la mejor precisión de prueba como se muestra a continuación.
- Traza ambas líneas, etiquetadas como
trainytest, marca la mejor profundidad con una línea discontinuaax.axvline, añade una leyenda y muestra el gráfico.
Para un clasificador de mangos:
Best depth: 5, test accuracy 0.867Después, Coddy describe tu gráfico. El suyo se ve así:
Pruébalo tú mismo
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Una fila por cada objeto celeste en un estudio con telescopio: 1 en galaxy significa que es una galaxia; 0, que es una estrella
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)
fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")
# 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éstamosPractica por tu cuenta: Compilador de Python online