Leer un árbol
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 28 de 58.
Las preguntas de un árbol son legibles, así que puedes comprobar lo que aprendió. Sigue una flor de 5.1 cm de largo y 1.6 cm de ancho por el árbol de iris:
export_text imprime las mismas preguntas como texto, con una sangría por nivel:
from sklearn.tree import export_text
print(export_text(tree, feature_names=["petal_length", "petal_width"]))Esto imprime:
|--- petal_width <= 0.80
| |--- class: 0
|--- petal_width > 0.80
| |--- petal_length <= 4.95
| | |--- class: 1
| |--- petal_length > 4.95
| | |--- class: 2Cada fila responde únicamente a las preguntas de su propio recorrido. La clase 2 es virginica, una respuesta razonable para pétalos largos y anchos.
Desafío
IntermedioEl árbol de una quesería nombra un queso como fresh, soft o hard según su contenido de agua y sus semanas de maduración. El programa inicial lo entrena y lee un queso nuevo.
- Imprime las preguntas del árbol con los nombres de las características.
- Ejecútalo, lee las preguntas y completa
by_handpara que haga las mismas preguntas con if/else y devuelva la misma respuesta.
Después de la salida, para un queso que el árbol clasifica como soft:
By hand: soft
The tree: softPruébalo tú mismo
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_text
# Una fila por queso: contenido de agua (%), semanas de maduración y tipo de queso
cheeses = pd.read_csv("cheeses.csv")
features = ["moisture_pct", "aged_weeks"]
X_train, X_test, y_train, y_test = train_test_split(cheeses[features], cheeses["cheese"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)
# Un queso nuevo al que poner nombre
moisture = int(input())
aged = int(input())
new_cheese = pd.DataFrame([[moisture, aged]], columns=features)
# Escribe tu código a continuación: imprime el árbol y luego responde en by_hand de la misma manera que él
def by_hand(moisture, aged):
return "fresh"
# No cambies las líneas de abajo
print("By hand:", by_hand(moisture, aged))
print("The tree:", tree.predict(new_cheese)[0])
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