Menu
CoddyTech

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:

El árbol de iris como cajas con un camino iluminado en naranja: ¿ancho del pétalo de 0.80 o menos? No, 1.6. ¿Longitud del pétalo de 4.95 o menos? No, 5.1. El camino termina en la clase 2

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: 2

Cada fila responde únicamente a las preguntas de su propio recorrido. La clase 2 es virginica, una respuesta razonable para pétalos largos y anchos.

challenge icon

Desafío

Intermedio

El á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.

  1. Imprime las preguntas del árbol con los nombres de las características.
  2. Ejecútalo, lee las preguntas y completa by_hand para 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: soft

Prué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])
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