Menu
CoddyTech

Los árboles hacen preguntas

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

Este capítulo termina con un árbol que explica un préstamo agrícola. Un árbol de decisión juega a las veinte preguntas: una pregunta de sí o no sobre una característica cada vez, hasta llegar a una respuesta:

Un diagrama de árbol. El cuadro superior pregunta: ¿el ancho del pétalo es de 0,8 cm o menos? Sí lleva a setosa. No lleva a un segundo cuadro: ¿la longitud del pétalo es de 4,95 cm o menos? Sí lleva a versicolor, no a virginica

El entrenamiento elige cada pregunta para que sus respuestas separen las clases de la forma más clara posible:

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)  # longitud y anchura del pétalo, cm
print(tree.predict([[4.5, 1.4]]))

Esto imprime [1], versicolor. max_depth=2 permite dos preguntas por ruta. No se necesita escalar: cada pregunta lee una característica.

challenge icon

Desafío

Intermedio

Una tienda de alquiler de cámaras envía un recordatorio por mensaje de texto cuando es posible que el equipo se devuelva tarde. El código inicial divide los alquileres anteriores y lee un nuevo alquiler en la tabla de una fila new_rental.

  1. Entrena un árbol de decisión con como máximo 2 preguntas por ruta (random_state=0).
  2. Imprime su precisión de prueba (3 decimales) y su respuesta para el nuevo alquiler: likely late para 1, likely on time para 0.

Para otra tienda:

Test accuracy: 0.792
This rental: likely on time

Pruébalo tú mismo

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

# Alquileres anteriores: 1 en late significa que el equipo se devolvió con retraso
rentals = pd.read_csv("rentals.csv")
features = ["rental_weeks", "gear_value_usd", "customer_age", "late_before"]
X_train, X_test, y_train, y_test = train_test_split(rentals[features], rentals["late"], test_size=0.25, random_state=0)

# Un nuevo alquiler: semanas reservadas, valor del equipo, edad del cliente y sus devoluciones con retraso hasta ahora
weeks = int(input())
value = int(input())
age = int(input())
late_before = int(input())
new_rental = pd.DataFrame([[weeks, value, age, late_before]], columns=features)

# 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