
Proyecto Javierre — Sesión 2: el primer modelo real
En la Sesión 1 conocimos el origen de los datos y el porqué de los cuatro genes que vamos a usar: MPO, CD33, CD19 y TdT. Hoy damos el paso que ya conocemos de CUTLER: separar los datos en entrenamiento y examen, y entrenar el primer clasificador real sobre ellos.
Separar en entrenamiento y examen
Igual que hicimos con el cáncer de mama, no podemos entrenar y examinar al modelo con los mismos pacientes — sería como dejar a un alumno copiar las respuestas del examen de la libreta con la que ha estudiado. Reservamos una parte de los 72 pacientes para el examen final, y el resto para entrenar.
Hay un detalle que aquí importa más que en CUTLER: de los 72 pacientes, 47 son ALL y solo 25 son AML — las clases no están igual de repartidas. Si la partición se hiciera al azar sin más cuidado, podría tocarnos un examen con muy pocos casos de AML, o incluso ninguno. Por eso usamos stratify=y, que reparte los pacientes de forma que la proporción de ALL y AML sea la misma en el conjunto de entrenamiento y en el de examen — el mismo truco de las canicas de colores que ya vimos en la Sesión 1 de CUTLER.
from sklearn.model_selection import train_test_split
X = datos[["MPO", "CD33", "CD19", "TdT"]]
y = datos["cancer"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
print("Pacientes para entrenar:", X_train.shape[0])
print("Pacientes para el examen:", X_test.shape[0])
El primer clasificador: árbol de decisión
Con los datos ya separados, entrenamos exactamente el mismo tipo de modelo que en la Sesión 2 de CUTLER: un árbol de decisión, sin ningún escalado de variables (el árbol no lo necesita, como ya comprobamos entonces).
from sklearn.tree import DecisionTreeClassifier
arbol = DecisionTreeClassifier(random_state=42)
arbol.fit(X_train, y_train)
exactitud = arbol.score(X_test, y_test)
print(f"Exactitud del árbol en el conjunto de prueba: {exactitud:.2%}")
[COMPLETAR CON VUESTROS DATOS REALES: exactitud del árbol = ___]

Cómo leer este resultado
Con solo 15 pacientes en el conjunto de examen (el 20% de 72), cada acierto o fallo pesa mucho en el porcentaje — un único paciente mal clasificado ya cambia la exactitud varios puntos. No os dejéis impresionar ni desanimar por un número aislado: en la próxima sesión aprenderemos a mirar con más detalle qué tipo de aciertos y de errores está cometiendo el árbol, en lugar de quedarnos con un solo porcentaje.
Lo importante de hoy es otra cosa: hemos entrenado, con datos reales de 72 pacientes y cuatro genes elegidos por su significado clínico, el mismo tipo de modelo que ya sabíamos entrenar — y lo hemos hecho sobre un problema que de verdad importa.
Próximo paso
En la próxima sesión miraremos con detalle los aciertos y los errores del árbol, para saber si se equivoca igual de fácil confundiendo un tipo de leucemia con otro, o si hay una dirección de error más habitual que la otra.




