Open In Colab

Full Feature Engineering Pipeline

This example demonstrates a comprehensive feature engineering pipeline combining multiple transformer categories: bivector interactions, whitening, phase encoding, and density estimation.

Setup

Import libraries and suppress warnings.

import warnings
warnings.filterwarnings("ignore")

import numpy as np
from modeva import DataSet

Load Dataset

ds = DataSet()
ds.load(name="CaliforniaHousing")
ds.set_random_split()

# Keep a copy of the raw (un-engineered) data; the fitted pipeline is applied
# to raw-feature input below, not to the already-engineered frame.
raw_df = ds.to_df()

original_n_features = len(ds.feature_names)
print(f"Original features ({original_n_features}): {ds.feature_names}")
Original features (8): ['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude']

Build Pipeline

Queue multiple feature engineering steps across different categories.

# Pairwise interactions
ds.fe_bivector(max_features=30, selection="variance")

# Coordinate transform
ds.fe_whitening()

# Pairwise shear
ds.fe_shear(threshold=0.01)

# Phase encoding
ds.fe_phase_encoder(n_thresholds=3, include_original=False)

# Local density
ds.fe_density(bandwidth="median", n_reference=300)

Execute Pipeline

ds.engineer_features()

new_n_features = len(ds.all_feature_names)
print(f"Features: {original_n_features} -> {new_n_features}")
print(f"New features added: {new_n_features - original_n_features}")
Features: 8 -> 625
New features added: 617

Verify Transform on New Data

Apply the fitted pipeline to a fresh batch of data.

test_df = raw_df.iloc[:3]
transformed = ds.transform_features(test_df)

print(f"Input shape:  {test_df.shape}")
print(f"Output shape: {transformed.shape}")
print(f"All columns match: {list(transformed.columns) == list(ds.to_df().columns)}")
Input shape:  (3, 9)
Output shape: (3, 625)
All columns match: True

Total running time of the script: (0 minutes 2.262 seconds)

Gallery generated by Sphinx-Gallery