Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Data Normalization in Keras

Introduction

Data normalization is a crucial step in the data preparation process, particularly when working with machine learning models. It ensures that the features of the dataset are on a similar scale, which can lead to improved model performance and convergence speed.

What is Data Normalization?

Normalization is the process of scaling individual samples to have a mean of zero and a variance of one or scaling features to a specific range, typically [0, 1]. This is done to eliminate biases caused by varying scales of features, which can adversely affect the training of models.

Types of Normalization

There are several methods of normalization:

  • Min-Max Normalization: Scales the data to a fixed range, usually [0, 1].
  • Z-score Normalization: Centers the data around the mean with a unit standard deviation.
  • MaxAbs Normalization: Scales the data by its maximum absolute value.

Min-Max Normalization

This method transforms features by scaling them to a given range. The formula used is:

Xnorm = (X - Xmin) / (Xmax - Xmin)

Where:

  • Xnorm is the normalized value.
  • X is the original value.
  • Xmin is the minimum value of the feature.
  • Xmax is the maximum value of the feature.

Example: Given a feature with values [10, 20, 30, 40, 50], the normalized values will be:

Xnorm = (X - 10) / (50 - 10)
Xnorm = [0, 0.25, 0.5, 0.75, 1]

Z-score Normalization

This method standardizes the data by subtracting the mean and dividing by the standard deviation. The formula used is:

Xstd = (X - μ) / σ

Where:

  • Xstd is the standardized value.
  • X is the original value.
  • μ is the mean of the feature.
  • σ is the standard deviation of the feature.

Example: Given a feature with values [10, 20, 30, 40, 50], if the mean is 30 and the standard deviation is 15, the standardized values will be:

Xstd = (X - 30) / 15
Xstd = [-1.33, -0.67, 0, 0.67, 1.33]

Implementing Normalization in Keras

Keras provides utilities to easily normalize data. Below is an example using the MinMaxScaler from the scikit-learn library:

Code Example:

from sklearn.preprocessing import MinMaxScaler
import numpy as np

# Sample data
data = np.array([[10], [20], [30], [40], [50]])

# Create a scaler
scaler = MinMaxScaler()

# Fit and transform the data
normalized_data = scaler.fit_transform(data)

print(normalized_data)
                    
Output: [[0. ], [0.25], [0.5 ], [0.75], [1. ]]

Conclusion

Data normalization is an essential step in the data preprocessing pipeline. By ensuring that all features contribute equally to the distance calculations used in many machine learning algorithms, normalization can lead to better model performance and faster convergence. Keras, along with libraries like scikit-learn, makes it straightforward to implement normalization techniques effectively.