Note
Go to the end to download the full example code.
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)