How To Split Dataset Into Train Test And Validation Python

Python Programming

When working on machine learning projects, it is essential to split the dataset into separate subsets for training, testing, and validation purposes. This allows us to assess the performance of our machine learning model accurately. In this article, I will guide you through the process of splitting a dataset into train, test, and validation sets using Python.

Why is Dataset Splitting Important?

Dataset splitting plays a crucial role in machine learning model development. By dividing the dataset into different subsets, we can evaluate the performance of our model on unseen data. This helps us to understand how well our model will generalize to new, unseen instances.

When we train a machine learning model using the entire dataset, it may result in overfitting. Overfitting occurs when the model learns the training data too well and fails to perform well on new, unseen data. By splitting the dataset, we can avoid overfitting and obtain more reliable performance metrics.

Now that we understand the importance of dataset splitting let’s dive into the process of splitting a dataset into train, test, and validation sets using Python.

Step 1: Import the Required Libraries

To split the dataset, we need to import the required libraries in Python:

import pandas as pd
from sklearn.model_selection import train_test_split

We will be using the pandas library to load and manipulate the dataset and the train_test_split function from the sklearn.model_selection module to split the dataset.

Step 2: Load the Dataset

Next, we need to load the dataset into our Python environment. This can be done using the pandas library:

data = pd.read_csv('dataset.csv')

Make sure to replace ‘dataset.csv’ with the actual file path of your dataset.

Step 3: Split the Dataset

Now comes the crucial step of splitting the dataset into train, test, and validation sets. The typical ratio for splitting the dataset is 70% for training, 15% for testing, and 15% for validation. We can achieve this by using the train_test_split function:

train_data, test_data, val_data = train_test_split(data, test_size=0.3, random_state=42)

In the above code, we pass the data dataframe to the train_test_split function and set the test_size parameter to 0.3, indicating that 30% of the data will be allocated for testing and validation. The random_state parameter ensures reproducibility of the split.

Step 4: Inspect the Split Datasets

Once the split is done, it’s a good practice to inspect the resulting train, test, and validation datasets:

print("Training dataset:", train_data.shape)
print("Testing dataset:", test_data.shape)
print("Validation dataset:", val_data.shape)

Running the above code will display the shapes (i.e., number of rows and columns) of each split dataset. This helps us ensure that the split has been performed correctly.

Step 5: Use the Split Datasets for Model Development

With the dataset successfully split into train, test, and validation sets, we can now use them for model development and evaluation. The training dataset is used to train the machine learning model, while the testing dataset is used to evaluate its performance. The validation dataset can be used to fine-tune the model and perform hyperparameter tuning if required.


In this article, we explored the importance of splitting a dataset into train, test, and validation sets for machine learning model development. We learned how to use the train_test_split function from the sklearn.model_selection module to perform the dataset split in Python. By following the steps outlined in this article, you can ensure that your machine learning models are developed and evaluated accurately. Remember, proper dataset splitting is crucial for obtaining reliable performance metrics and avoiding overfitting.