Menu
CoddyTech

Repaso: reparaciones de monopatines

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

challenge icon

Desafío

Intermedio

El mostrador de alquiler de un parque de skate quiere un modelo que detecte las tablas devueltas que necesitan reparación. El programa lee el valor máximo de k que se probará.

  1. Separa el 25% como filas de prueba (random_state=0).
  2. Para cada k en ks, valida de forma cruzada k-NN en las filas de entrenamiento (cv=5). Dibuja las medias en forma de barras e imprime el mejor k.
  3. Busca en una cuadrícula el max_depth de un árbol entre los valores de depths (cv=5, random_state=0) e imprime el mejor.
  4. Gana la media más alta: imprime Winner: k-NN o Winner: tree con su precisión en los datos de prueba.

Para otro parque y 13:

Best k: 13 (mean 0.785)
Best depth: 5 (mean 0.763)
Winner: k-NN, test accuracy 0.822

Coddy describe después tu gráfico. El suyo se ve así:

Barras tituladas Reparaciones de monopatines: precisión según k, una por cada k del 1 al 13, eje de 0.6 a 0.9. Oscilan cerca de 0.72 para valores pequeños de k y después suben hasta 0.785 en k = 13

Pruébalo tú mismo

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier

# El valor máximo de k que se probará, por ejemplo, 15
max_k = int(input())

# Una fila por cada monopatín devuelto: alquileres desde su último mantenimiento, puntuaciones de desgaste de 0 a 10
# y grietas en la tabla; 1 en repair significa que fue al taller
boards = pd.read_csv("skateboards.csv")
features = ["rentals", "wheel_wear", "bearing_noise", "grip_wear", "truck_wobble", "deck_cracks"]
X = boards[features]
y = boards["repair"]
# Cada característica es un recuento o una puntuación pequeña, así que k-NN no necesita escalado aquí
ks = list(range(1, max_k + 1, 2))
depths = [2, 3, 4, 5, 6, 7, 8]

fig, ax = plt.subplots()
ax.set_title("Skateboard Repairs: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("Mean CV accuracy")
ax.set_xticks(ks)
ax.set_ylim(0.6, 0.9)  # empieza en 0.6 para que se aprecien las pequeñas diferencias

# Escribe tu código a continuación

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online