
Proyecto Javierre — Sesión 6: poniendo a prueba el modelo con pacientes nuevos
En las sesiones anteriores hemos medido cómo de bien acierta el modelo con números: exactitud, matriz de confusión, precisión, exhaustividad. Hoy cambiamos de perspectiva: en lugar de mirar un porcentaje, vamos a coger pacientes nuevos, uno a uno, y ver qué predicción da el modelo para cada uno — igual que se usaría en la vida real.
Los cinco pacientes de hoy son reales, del mismo estudio de 1999, y el modelo no los ha visto nunca durante el entrenamiento (forman parte del conjunto de prueba que reservamos desde la Sesión 2). Por ahora solo os damos sus cuatro genes — su diagnóstico real lo revelamos al final.
Vuestro turno primero: adivinad sin el ordenador
Antes de tocar el teclado, mirad esta tabla y, usando lo que aprendisteis en la Sesión 1 (MPO y CD33 altos apuntan a AML; CD19 y TdT altos apuntan a ALL), apuntad en un papel qué creéis que tiene cada paciente:
Paciente MPO CD33 CD19 TdT
A 478 155 285 7686
B 14230 646 -95 80
C 228 341 -119 249
D 16 140 -16 780
E 2005 970 -47 455
Fijaos en que no todos son igual de claros: algunos tienen un gen disparado que lo deja bastante evidente, y otros tienen números mucho más discretos, sin ningún valor que destaque especialmente. Anotad vuestra respuesta para los cinco antes de seguir.
Pidiendo la predicción al modelo
Con vuestras cinco respuestas ya escritas, le pasamos los mismos datos al Random Forest de la Sesión 4:
import pandas as pd
# Los mismos cinco pacientes, en el mismo orden A-B-C-D-E
nuevos_pacientes = pd.DataFrame({
"MPO": [478, 14230, 228, 16, 2005],
"CD33": [155, 646, 341, 140, 970],
"CD19": [285, -95, -119, -16, -47],
"TdT": [7686, 80, 249, 780, 455],
})
predicciones = bosque.predict(nuevos_pacientes)
print(predicciones)

También podemos pedirle al bosque que nos diga con cuánta seguridad ha votado cada árbol, en vez de solo el resultado final — recordad la metáfora del comité de médicos de la Sesión 4:
probabilidades = bosque.predict_proba(nuevos_pacientes)
print("Clases:", bosque.classes_)
print(probabilidades)
Cada fila os da el porcentaje de árboles que votó ALL y el porcentaje que votó AML, para cada paciente. Cuando las dos cifras están muy repartidas (por ejemplo, cerca de 50-50), significa que el bosque ha dudado — igual que puede que hayáis dudado vosotros con el paciente C.
[COMPLETAR CON VUESTROS DATOS REALES: predicciones del modelo para A, B, C, D, E = ___]

¿Acertasteis vosotros? ¿Acertó el modelo?
Estos son los diagnósticos reales de los cinco pacientes, confirmados en el estudio original:
Paciente Diagnóstico real
A ALL
B AML
C AML
D ALL
E AML
Comparad tres cosas: vuestra respuesta a mano, la predicción del modelo, y el diagnóstico real. Prestad especial atención al paciente C: es el que tiene los números más discretos de los cinco, sin ningún valor que salte a la vista — comprobad si a vosotros también os costó más decidiros con ese, y mirad qué porcentaje de votos le dio el bosque en el paso anterior.
Cierre del proyecto (por ahora)
Con esto habéis recorrido el camino completo de un proyecto de ciencia de datos real: desde entender de dónde vienen los datos y por qué importan (Sesión 1), pasando por entrenar y medir un primer modelo (Sesiones 2 y 3), mejorarlo con un algoritmo más potente (Sesión 4), hasta usarlo para predecir sobre pacientes que nunca había visto (hoy). Son exactamente los mismos pasos, con las mismas herramientas, que sigue cualquier investigador — como Biola Javierre, a quien dedicamos este proyecto — cuando empieza a trabajar con datos nuevos.



