cancel
Showing results for 
Search instead for 
Did you mean: 
Machine Learning
Dive into the world of machine learning on the Databricks platform. Explore discussions on algorithms, model training, deployment, and more. Connect with ML enthusiasts and experts.
cancel
Showing results for 
Search instead for 
Did you mean: 

Do One-Hot-Encoding (OHE) before or after split data to train and test dataframe

NhatHoang
Valued Contributor II

Hi,

I wonder that I should do OHE before or after I split data to build up a ML model.

Please give some advise.

1 ACCEPTED SOLUTION

Accepted Solutions

LandanG
Databricks Employee
Databricks Employee

Hi @Nhat Hoang​ ,

While not Databricks-specific, here's a good answer:

"If you perform the encoding before the split, it will lead to data leakage (train-test contamination). In this sense, you will introduce new data (integers of Label Encoders) and use it for your models thus it will affect the end predictions results (good validation scores but poor in deployment).

After the train and validation data category is already matched up, you can perform fit_transform on the train data, then only transform for the validation data - based on the encoding maps from the train data.

Almost all feature engineering like standardization, Normalisation etc should be done after the train test split. "

Additionally, if you were to run an AutoML experiment and look at the underlying notebook you should see that the data is split before encoding is applied.

View solution in original post

3 REPLIES 3

LandanG
Databricks Employee
Databricks Employee

Hi @Nhat Hoang​ ,

While not Databricks-specific, here's a good answer:

"If you perform the encoding before the split, it will lead to data leakage (train-test contamination). In this sense, you will introduce new data (integers of Label Encoders) and use it for your models thus it will affect the end predictions results (good validation scores but poor in deployment).

After the train and validation data category is already matched up, you can perform fit_transform on the train data, then only transform for the validation data - based on the encoding maps from the train data.

Almost all feature engineering like standardization, Normalisation etc should be done after the train test split. "

Additionally, if you were to run an AutoML experiment and look at the underlying notebook you should see that the data is split before encoding is applied.

NhatHoang
Valued Contributor II

Hi @Landan George​ ,

Thank you very much. It is clear for me now.

5 stars support, Databricks team. :)​

LandanG
Databricks Employee
Databricks Employee

Thank you @Nhat Hoang​, I'm glad I could help

Join Us as a Local Community Builder!

Passionate about hosting events and connecting people? Help us grow a vibrant local community—sign up today to get started!

Sign Up Now