¿Para qué sirve el train_test_split?

Autor: | Última modificación: 30 de noviembre de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

¿Sabes qué es el train_test_split? Si quieres conocerlo y aprender a usarlo, no te pierdas este post. A grandes rasgos, podemos decir que el train_test_split es una función incluida en la librería scikit.learn y sirve para dividir arreglos o matrices en subconjuntos aleatorios de train y test.

Su sintaxis completa es: sklearn.model_selection.train_test_split(*arrays, **options).

¿Qué es train_test_split?

La función train_test_split permite hacer una división de un conjunto de datos en dos bloques de entrenamiento y prueba de un modelo (train and test). Esta función está íntimamente relacionada con la estratificación, proceso que se hace con respecto a una variable que normalmente es la variable target.

Si al train_test_split no le decimos que estratifique, de alguna manera, esta función nos reserva un poco unas proporciones similares. Es decir, es lo suficientemente inteligente como para no hacer divisiones descabelladas, como un 90-10% (recordemos que el estándar ideal es 70-75% para train y 30-25% para test).

Para no confiar, de algún modo, en que el algoritmo de esta función sea lo suficientemente inteligente, lo que se suele hacer es pasarle un parámetro que es la estratificación y le decimos qué queremos estratificar y con respecto a qué variable queremos hacerlo.

Entonces, la proporción que tenga la variable objetivo es la que vamos a tener tanto en train como en test.

Vamos a probar el train_test_split con un ejemplo

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split (x1, y1, test_size = 0.3, shuffle = True, random_state = 0)

knn = KNeighborsClassifier (n_neighbors = 1). fit (x_train, y_train)

plot_decision_boundary (X_test, y_test, 0.05, knn)

Lo primero que hacemos es decirle que importe la función. Lo que hay después de la función es el modo de usarla: X_train, X_test, y_train, y_test = train_test_split (x1, y1, test_size = 0.3, shuffle = True, random_state = 0)

Para saber qué nos falta, explicaremos cada uno de los componentes de estos comandos:

test_size y train_size

Vemos el test_size = 0.3, que corresponde a un 30%. Así como existe el test_size, también existe el train_size, pero uno anula al otro, es decir, no podríamos poner test_size = 0.3 y train_size = 0.3, porque uno de esos dos no va a respetar al otro.

Shuffle y random_state

El shuffle lo que hace es aleatorizar, mientras que el random_state lo que hace es conseguir cierta repetición en los resultados. Cada uno de los train_test que tengamos va a tener como semilla un random_state.

Con esta información, podrás notar que lo que nos falta estratificar. Con la estratificación, la línea de comandos quedaría así:

X_train, X_test, y_train, y_test = train_test_split (x1, y1, test_size = 0.3, shuffle = True, random_state = 0, stratify = y1)

El orden de las variables que estamos declarando tienen un orden específico, es decir, el orden de los factores en este caso sí altera el resultado.

Entonces, ¿qué hacemos después? La línea siguiente ya va teniendo más pinta de un entrenamiento real con un modelo real: knn = KNeighborsClassifier (n_neighbors = 1). fit (x_train, y_train).

Como vemos, el código que requerimos para ejecutar este proceso de machine learning de lanzar un modelo y probar distintas cosas es casi nulo.

El resultado de esta función train_test_split es:

¿Para qué sirve el train_test_split? 1

Esto es lo que hemos conseguido. Este es un resultado real, porque estos datos no los ha visto el modelo previamente. Si comparamos este resultado con otro realizado anteriormente, vamos a ver que es muy distinto.

¿Para qué sirve el train_test_split? 2

Si observamos detenidamente, no hemos hecho nada distinto, solo hemos tenido el mismo modelo entrenado con todos los datos. En cambio, el último es el mismo modelo, con el mismo número de parámetros, entrenado solo con los datos de entrenamiento y probado solo con los datos de test.

Asimismo, este último parece ser un resultado «no real», ya que todo lo que está haciendo el modelo lo ha visto anteriormente. Esto quiere decir que no han ingresado datos nuevos.

¿Quieres seguir aprendiendo sobre machine learning?

Si te ha gustado esta temática y quieres aprender más, ¡tenemos la mejor opción para ti! Con la guía de nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp podrás aprender todo lo necesario para convertirte en un gran profesional en el sector IT. Se trata de una formación intensiva de 8 meses en la que tendrás la oportunidad de seguir tu proceso formativo acompañado de los mejores profesionales. ¡Anímate a transformar tu futuro y solicita más información ya!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.