logo

Cómo dividir el conjunto de datos con la función train_test_split() de scikit-learn

En este artículo, discutiremos cómo dividir un conjunto de datos usando train_test_split() de scikit-learns.

Función sklearn.model_selection.train_test_split():

El método train_test_split() se utiliza para dividir nuestros datos en conjuntos de entrenamiento y de prueba. Primero, necesitamos dividir nuestros datos en características (X) y etiquetas (y). El marco de datos se divide en X_train, X_test, y_train e y_test. Los conjuntos X_train e y_train se utilizan para entrenar y ajustar el modelo. Los conjuntos X_test e y_test se utilizan para probar el modelo si predice las salidas/etiquetas correctas. Podemos probar explícitamente el tamaño del tren y los conjuntos de prueba. Se sugiere mantener nuestros conjuntos de trenes más grandes que los de prueba.



    Conjunto de trenes: el conjunto de datos de entrenamiento es un conjunto de datos que se utilizó para ajustarse al modelo. El conjunto de datos en el que se entrena el modelo. Estos datos son vistos y aprendidos por el modelo. Conjunto de pruebas: el conjunto de datos de prueba es un subconjunto del conjunto de datos de entrenamiento que se utiliza para brindar una evaluación precisa del ajuste final del modelo. conjunto de validación: un conjunto de datos de validación es una muestra de datos del conjunto de entrenamiento de su modelo que se utiliza para estimar el rendimiento del modelo mientras se ajustan los hiperparámetros del modelo. Desajuste: un modelo de datos que no está suficientemente ajustado tiene una alta tasa de error tanto en el conjunto de entrenamiento como en los datos no observados porque no puede representar de manera efectiva la relación entre las variables de entrada y salida. sobreajuste: cuando un modelo estadístico coincide exactamente con sus datos de entrenamiento pero el objetivo del algoritmo se pierde porque no puede ejecutarse con precisión contra datos invisibles, se denomina sobreajuste.

Sintaxis: sklearn.model_selection.train_test_split(*arrays, test_size=Ninguno, train_size=Ninguno, random_state=Ninguno, shuffle=Verdadero, estratificar=Ninguno

Parámetros:

    *arrays: secuencia de indexables. Listas, matrices numpy, matrices scipy-sparse y marcos de datos pandas son todas entradas válidas. test_size: int o float, por defecto Ninguno. Si es flotante, debe estar entre 0,0 y 1,0 y representar el porcentaje del conjunto de datos para probar la división. Si se utiliza int, se refiere al número total de muestras de prueba. Si el valor es Ninguno, se utiliza el complemento del tamaño del tren. Se establecerá en 0,25 si el tamaño del tren también es Ninguno. train_size: int o float, por defecto Ninguno. random_state: int, por defecto Ninguno. Controla cómo se mezclan los datos antes de implementar la división. Para obtener resultados repetibles en varias llamadas a funciones, pase un int. aleatorio: objeto booleano, por defecto Verdadero. Si los datos deben mezclarse o no antes de dividirlos. La estratificación debe ser Ninguna si barajar = Falso. estratificar: objeto similar a una matriz, por defecto es Ninguno. Si se selecciona Ninguno, los datos se estratifican utilizándolos como etiquetas de clase.

Devoluciones:



terrible: La división de entradas de prueba de tren se representa como una lista.

Pasos para dividir el conjunto de datos:

Paso 1: Importe los paquetes o módulos necesarios:

En este paso, importamos los paquetes o módulos necesarios al entorno de trabajo de Python.

Python3






cómo cambiar el nombre de un directorio en Linux

# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split>

>

>

Paso 2: Importe el marco de datos/conjunto de datos:

Aquí, cargamos el CSV usando el método pd.read_csv() de pandas y obtenemos la forma del conjunto de datos usando la función shape().

CSV utilizado:

Python3




# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)>

>

>

Producción:

(13, 3)>

Paso 3: Obtenga las variables de características X e Y:

Aquí, estamos asignando las variables X e Y en las cuales la variable característica X tiene variables independientes y la variable característica y tiene una variable dependiente.

Python3




X>=> df[>'area'>]> y>=>df[>'prices'>]>

>

>

largo para encadenar java

Paso 4: utilice la clase dividida de prueba de tren para dividir los datos en conjuntos de prueba y tren:

Aquí, la clase train_test_split() de sklearn.model_selection se usa para dividir nuestros datos en conjuntos de entrenamiento y prueba donde las variables de características se proporcionan como entrada en el método. test_size determina la porción de los datos que se incluirán en los conjuntos de prueba y se utiliza un estado aleatorio para la reproducibilidad de los datos.

Python3




# using the train test split function> X_train, X_test, y_train, y_test>=> train_test_split(> >X,y , random_state>=>104>,test_size>=>0.25>, shuffle>=>True>)>

>

>

Ejemplo:

En este ejemplo, se importa el archivo 'predictions.csv'. El atributo df.shape se utiliza para recuperar la forma del marco de datos. La forma del marco de datos es (13,3). Las columnas de características se toman en la variable X y la columna de resultados se toma en la variable y. Las variables X e y se pasan en el método train_test_split() para dividir el marco de datos en conjuntos de tren y prueba. El parámetro de estado aleatorio se utiliza para la reproducibilidad de los datos. test_size se da como 0,25, lo que significa que el 25% de los datos van a los conjuntos de prueba. 4 de 13 filas en el marco de datos van a los conjuntos de prueba. El 75% de los datos van a los conjuntos de trenes, que son 9 de 13 filas. Los conjuntos de trenes se utilizan para adaptar y entrenar el modelo de aprendizaje automático. Los conjuntos de prueba se utilizan para la evaluación.

CSV utilizado:

Python3




# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> # importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)> # head of the data> print>(>'Head of the dataframe : '>)> print>(df.head())> print>(df.columns)> X>=> df[>'area'>]> y>=>df[>'prices'>]> # using the train test split function> X_train, X_test, y_train, y_test>=> train_test_split(> >X,y , random_state>=>104>,test_size>=>0.25>, shuffle>=>True>)> # printing out train and test sets> print>(>'X_train : '>)> print>(X_train.head())> print>(X_train.shape)> print>('')> print>(>'X_test : '>)> print>(X_test.head())> print>(X_test.shape)> print>('')> print>(>'y_train : '>)> print>(y_train.head())> print>(y_train.shape)> print>('')> print>(>'y_test : '>)> print>(y_test.head())> print>(y_test.shape)>

>

>

Producción:

(13, 3) Head of the dataframe : Unnamed: 0 area prices 0 0 1000 316404.109589 1 1 1500 384297.945205 2 2 2300 492928.082192 3 3 3540 661304.794521 4 4 4120 740061.643836 Index(['Unnamed: 0', 'area', 'prices'], dtype='object') X_train : 3 3540 7 3460 4 4120 0 1000 8 4750 Name: area, dtype: int64 (9,) X_test : 12 7100 2 2300 11 8600 10 9000 Name: area, dtype: int64 (4,) y_train : 3 661304.794521 7 650441.780822 4 740061.643836 0 316404.109589 8 825607.876712 Name: prices, dtype: float64 (9,) y_test : 12 1.144709e+06 2 4.929281e+05 11 1.348390e+06 10 1.402705e+06 Name: prices, dtype: float64 (4,)>

Ejemplo:

En este ejemplo se ejecutan los siguientes pasos:

  • Se importan los paquetes necesarios.
  • El conjunto de datos Advertising.csv se carga y limpia y los valores nulos se eliminan.
  • Se crean matrices de características y objetivos (X andy).
  • Las matrices creadas se dividen en conjuntos de tren y de prueba. El 30% del conjunto de datos se incluye en el conjunto de prueba, lo que significa que el 70% de los datos son un conjunto de trenes.
  • Se crea un objeto escalador estándar.
  • X_train encaja en el escalador.
  • X_train y X_test se transforman utilizando el método transform().
  • Se crea un modelo de regresión lineal simple.
  • Los juegos de trenes encajan en el modelo.
  • El método predict() se utiliza para realizar predicciones en el conjunto X_test.
  • La métrica mean_squared_error() se utiliza para evaluar el modelo.

Para ver y descargar el archivo CSV utilizado en este ejemplo, haga clic en aquí .

Python3




ubicación df

# import packages> import> pandas as pd> import> numpy as np> from> sklearn.model_selection>import> train_test_split> from> sklearn.preprocessing>import> StandardScaler> from> sklearn.linear_model>import> LinearRegression> from> sklearn.metrics>import> mean_squared_error> df>=> pd.read_csv(>'Advertising.csv'>)> # dropping rows which have null values> df.dropna(inplace>=>True>,axis>=>0>)> y>=> df[>'sales'>]> X>=> df.drop(>'sales'>,axis>=>1>)> # splitting the dataframe into train and test sets> X_train,X_test,y_train,y_test>=> train_test_split(> >X,y,test_size>=>0.3>,random_state>=>101>)> scaler>=> StandardScaler()> scaler.fit(X_train)> X_train>=> scaler.transform(X_train)> X_test>=> scaler.transform(X_test)> model>=> LinearRegression().fit(X_train,y_train)> y_pred>=> model.predict(X_test)> print>(y_pred)> print>(mean_squared_error(y_test,y_pred))>

>

>

Producción:

matriz ([19.82000933, 14.23636718, 12.80417236, 7.75461569, 8.31672266,

15.4001915 , 11.6590983 , 15.22650923, 15.53524916, 19.46415132,

17.21364106, 16.69603229, 16.46449309, 10.15345178, 13.44695953,

24.71946196, 18.67190453, 15.85505154, 14.45450049, 9.91684409,

10.41647177, 4.61335238, 17.41531451, 17.31014955, 21.72288151,

5.87934089, 11.29101265, 17.88733657, 21.04225992, 12.32251227,

14.4099317 , 15.05829814, 10.2105313 , 7.28532072, 12.66133397,

23.25847491, 18.87101505, 4.55545854, 19.79603707, 9.21203026,

10.24668718, 8.96989469, 13.33515217, 20.69532628, 12.17013119,

21.69572633, 16.7346457 , 22.16358256, 5.34163764, 20.43470231,

7.58252563, 23.38775769, 10.2270323 , 12.33473902, 24.10480458,

9.88919804, 21.7781076 ])

2.7506859249500466

Ejemplo:

En este ejemplo, usaremos el modelo clasificador de K vecinos más cercanos.

En este ejemplo se ejecutan los siguientes pasos:

  • Se importan los paquetes necesarios.
  • Los datos del iris se cargan desde sklearn.datasets.
  • Se crean matrices de características y objetivos (X andy).
  • Las matrices creadas se dividen en conjuntos de tren y de prueba. El 30% del conjunto de datos se incluye en el conjunto de prueba, lo que significa que el 70% de los datos son un conjunto de trenes.
  • Se crea un modelo Knn básico utilizando la clase KNeighborsClassifier.
  • Los juegos de trenes encajan en el modelo knn.
  • El método predict() se utiliza para realizar predicciones en el conjunto X_test.

Python3




# Import packages> from> sklearn.neighbors>import> KNeighborsClassifier> from> sklearn.model_selection>import> train_test_split> from> sklearn.datasets>import> load_iris> > # Load the data> irisData>=> load_iris()> > # Create feature and target arrays> X>=> irisData.data> y>=> irisData.target> > # Split data into train and test sets> X_train, X_test, y_train, y_test>=> train_test_split(> >X, y, test_size>=> 0.2>, random_state>=>42>)> > knn>=> KNeighborsClassifier(n_neighbors>=>1>)> > knn.fit(X_train, y_train)> > # predicting on the X_test data set> print>(knn.predict(X_test))>

>

Java instanciado

>

Producción:

[1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0]