Saltar al contenido

lección 3

Limpiar los extractos y montar la tabla de modelado

Limpiar los extractos sucios y montar una tabla fiable, una fila por lesión con el target: tú decides imputación, codificación y duplicados.

⏱ 55 min

## Martes, 9:40. Lo que trae de verdad el extracto

Ya sabes qué hay y cuánto pesa cada error. Hoy toca la parte menos glamurosa y más importante del oficio: dejar los datos en condiciones de modelar. Lucía no exageraba. El tamaño de la lesión viene como texto, con milímetros y centímetros mezclados y hasta con comas decimales a la española: «8 mm», «12mm», «0,9 cm», «1,2 mm». El sexo aparece como M, F, H, Mujer, varon o incluso una V suelta. La zona del cuerpo la escribe cada centro a su manera: «espalda», «Espalda», «ESPALDA», «dorso». La evolución reportada igual: «crece», «Ha crecido», «estable», «igual», «sin cambios». Hay edades imposibles, un 0 y algún 200 que son errores de tecleo. Los descriptores traen un 8% de nulos de cuando la foto era mala. Y están las lesiones duplicadas.

Cada una de esas marranadas tiene una decisión detrás, y en un encargo avanzado las tomas tú. El tamaño hay que unificarlo a milímetros, pasando los centímetros y cambiando la coma por punto. El sexo, la zona y la evolución hay que normalizarlos a un conjunto canónico, para que «ESPALDA» y «dorso» cuenten como lo mismo. Las edades imposibles no son dato: fuera, y se imputan como un nulo más. Los descriptores nulos no se pueden tirar sin más —perderías lesiones enteras—, así que se imputan, por ejemplo con la mediana de la columna. Y los duplicados se resuelven dejando una fila por lesión. Ninguna de estas decisiones es la única posible; lo que no vale es no tomarlas.

Por qué los duplicados no son inocuos. Si la misma lesión aparece dos veces, puede caer una copia en entrenamiento y otra en prueba: el modelo la habría visto al evaluarla e infla el resultado. Dejar una fila por lesión lo evita.
El trabajo del martes de un vistazo. Cada columna sucia se convierte en una o varias columnas limpias y numéricas. El resultado es tabla_modelado.csv, que a partir de mañana alimenta todos los modelos: por eso tiene que estar bien.

## Por qué las categóricas se convierten en columnas de ceros y unos

Un modelo de scikit-learn no entiende la palabra «espalda»: solo entiende números. Hay una tentación fácil y equivocada, que es asignar un número a cada zona —espalda 1, cara 2, brazo 3— y pasarlo así. El problema es que eso le dice al modelo que brazo es mayor que cara y que cara es el doble que espalda, un orden que no existe. La forma correcta de meter una categórica sin orden es la codificación one-hot: una columna nueva por cada valor posible, con un 1 si la lesión es de esa zona y un 0 si no. Así «espalda» pasa a ser zona_espalda=1 y el resto a 0, sin inventar ningún orden.

En Pandas eso se hace con pd.get_dummies sobre las columnas categóricas ya normalizadas. La tabla de modelado que vas a usar a partir de mañana ya trae las zonas, la evolución y el sexo codificados así: verás columnas como zona_espalda, zona_cara, evol_crece, sexo_F. Una de ellas, por cierto, lleva un espacio en el nombre —la del cuero cabelludo—, cosa que no da problema mientras la trates por su nombre completo y no intentes accederla como un atributo.

Por qué one-hot y no un número por categoría. Asignar 1, 2, 3 a las zonas le dice al modelo que brazo es mayor que cara, un orden que no existe. Una columna de ceros y unos por zona codifica solo la pertenencia, sin inventar nada.

Para los ejercicios de modelado de mañana en adelante partirás de datos/tabla_modelado.csv, que ya viene limpia y cruzada. Es el mismo patrón que en tus encargos anteriores: así todos los ejercicios arrancan del mismo punto y las cifras cuadran. El trabajo de hoy —cargar los crudos y limpiarlos— es el que, en el repo final, construye esa tabla. Dentro de la plataforma cada ejercicio corre aislado, así que la limpieza de hoy lee de los CSV crudos y la tabla limpia te la damos ya hecha para mañana.

Consejo de senior: cuando normalices una categórica sucia, cuenta los valores distintos antes y después. Si antes tenías veinte formas y después del mapeo siguen quedando más valores de los que esperabas, es que una variante se te ha escapado. «dorso» que no cae en «espalda» no da error: simplemente crea una categoría fantasma que el modelo tratará como una zona más.

Regístrate para guardar tu progreso.