Feature Engineering

Aggregator

class modeva.data.feature_engineering.base.FeatureEngineering(dataset)[source]
static engineer_one_step(data, step)[source]
engineer(data)[source]
fe_bivector(features: str | Tuple = None, dataset: str = 'main', max_features: int = 300, selection: str = 'variance')[source]
fe_blade_spectrum(features: str | Tuple = None, dataset: str = 'main', n_neighbors: int = 10)[source]
fe_density(features: str | Tuple = None, dataset: str = 'main', bandwidth: str | float = 'median', n_reference: int = 500, log_density: bool = True)[source]
fe_direct_rs(features: str | Tuple = None, dataset: str = 'main', n_estimators: int = 50, max_depth: int = 4, regularization: float = 1e-08)[source]
fe_grade_ratio(features: str | Tuple = None, dataset: str = 'main', max_triplets: int = 50, regularization: float = 1e-08)[source]
fe_kinematics(features: str | Tuple = None, dataset: str = 'main', n_timesteps: int = None, n_features_per_step: int = None)[source]
fe_multi_grade_shape(features: str | Tuple = None, dataset: str = 'main', grades: List[int] = None, n_bins: int = 5, regularization: float = 1e-08)[source]
fe_phase_encoder(features: str | Tuple = None, dataset: str = 'main', n_thresholds: int = 5, include_original: bool = False)[source]
fe_rf_proximity(features: str | Tuple = None, dataset: str = 'main', n_estimators: int = 100, max_depth: int = 6, n_landmarks: int = 50)[source]
fe_shear(features: str | Tuple = None, dataset: str = 'main', threshold: float = 0.0)[source]
fe_spectral_proximity(features: str | Tuple = None, dataset: str = 'main', n_estimators: int = 100, max_depth: int = 6, n_components: int = 10)[source]
fe_wedge_bivector(features: str | Tuple = None, dataset: str = 'main', max_features: int = 300, selection: str = 'variance')[source]
fe_whitening(features: str | Tuple = None, dataset: str = 'main', regularization: float = 1e-08)[source]
get_status()[source]
load(path_or_buf)[source]
reset()[source]
save(path_or_buf)[source]
transform(data)[source]

Bivector Features

class modeva.data.feature_engineering.bivector.FEBivector(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', max_features: int = 300, selection: str = 'variance')[source]

Generates grade-2 bivector features (pairwise feature products).

For each pair (i, j) with i < j, computes B_ij = X_i * X_j. This captures pairwise nonlinear interactions based on Geometric Algebra wedge products.

Parameters:
featuresstr or tuple, default=None

Features to use for bivector computation. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

max_featuresint, default=300

Maximum number of bivector features to generate.

selection{“all”, “random”, “variance”}, default=”variance”

How to select pairs if max_features < C(n,2):

  • “all”: use all pairs (ignore max_features)

  • “random”: random selection

  • “variance”: highest variance pairs

transform(data)[source]
class modeva.data.feature_engineering.bivector.FEWedgeBivector(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', max_features: int = 300, selection: str = 'variance')[source]

Generates wedge-weighted pairwise feature products.

Suppresses nearly-collinear pairs and amplifies orthogonal ones by weighting each product X_i * X_j by the column-level sin(angle) between features i and j.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

max_featuresint, default=300

Maximum number of pairs to generate.

selection{“variance”, “random”}, default=”variance”

Pair selection method if max_features < C(d,2).

transform(data)[source]

Rotation & Shear

class modeva.data.feature_engineering.rotation.FEWhitening(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', regularization: float = 1e-08)[source]

Applies rotor whitening (GA Mahalanobis transformation).

Aligns data with principal axes using SVD-based whitening:

X’ = (X - mu) @ V @ diag(1/sigma)

Parameters:
featuresstr or tuple, default=None

Features to whiten. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

regularizationfloat, default=1e-8

Regularization for variance computation.

transform(data)[source]
class modeva.data.feature_engineering.rotation.FEShear(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', threshold: float = 0.0)[source]

Applies pairwise shear (decorrelation via residualization).

For each feature pair (i, j): X_i’ = X_i - beta_ij * X_j, where beta_ij = cov(X_i, X_j) / var(X_j).

Parameters:
featuresstr or tuple, default=None

Features to decorrelate. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

thresholdfloat, default=0.0

Only apply shear if |beta_ij| > threshold.

transform(data)[source]

Shape Features

class modeva.data.feature_engineering.shape.FEGradeRatio(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', max_triplets: int = 50, regularization: float = 1e-08)[source]

Generates grade-ratio shape feature measuring 3-way vs 2-way interaction complexity.

After whitening, computes ratio E3/E2 where E2 is summed pairwise blade energy and E3 is summed triplet blade energy. High ratio = dominant 3-body structure.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

max_tripletsint, default=50

Maximum number of sampled triplets for E3 estimation.

regularizationfloat, default=1e-8

Regularization for the internal whitening step.

transform(data)[source]
class modeva.data.feature_engineering.shape.FEMultiGradeShape(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', grades: List[int] = None, n_bins: int = 5, regularization: float = 1e-08)[source]

Generates multi-grade shape features (context distances using grades 2-4).

Computes Mahalanobis (grade 2), skewness-weighted (grade 3), and kurtosis-weighted (grade 4) distances to class or quantile-bin centroids. Requires a target variable.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

gradeslist of int, default=None

Which grades to include (2, 3, and/or 4). Defaults to [2].

n_binsint, default=5

Number of bins for regression (uses quantiles).

regularizationfloat, default=1e-8

Regularization for covariance inversion.

transform(data)[source]

Row Geometry

class modeva.data.feature_engineering.row_geometry.FEDensity(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', bandwidth: str | float = 'median', n_reference: int = 500, log_density: bool = True)[source]

Generates RBF kernel density feature per sample.

Computes mean RBF similarity to a reference subset of training points, yielding a scalar density estimate per row.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

bandwidthstr or float, default=”median”

If ‘median’, sigma = median(pairwise_dists) / sqrt(2*log(2)). If float, use directly as sigma.

n_referenceint, default=500

Number of reference points subsampled from training data.

log_densitybool, default=True

If True, return log(density + 1e-10), else return density directly.

transform(data)[source]
class modeva.data.feature_engineering.row_geometry.FEBladeSpectrum(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', n_neighbors: int = 10)[source]

Generates local blade energy spectrum features from k-NN neighborhood.

For each sample, queries k nearest neighbors in whitened space and computes grade 1/2/3 blade energies, normalized proportions, spectral slope, and dominant grade.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

n_neighborsint, default=10

Number of nearest neighbors (k).

transform(data)[source]

Tree-Based Features

class modeva.data.feature_engineering.tree_features.FERFProximity(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', n_estimators: int = 100, max_depth: int = 6, n_landmarks: int = 50)[source]

Generates RF leaf co-occurrence proximity features via Nystrom approximation.

Trains a random forest and uses its leaf co-occurrence as a similarity kernel. The Nystrom method computes a fixed-width feature map from landmark points. Requires a target variable.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

n_estimatorsint, default=100

Number of trees in the forest.

max_depthint, default=6

Maximum tree depth.

n_landmarksint, default=50

Number of Nystrom anchor points.

transform(data)[source]
class modeva.data.feature_engineering.tree_features.FESpectralProximity(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', n_estimators: int = 100, max_depth: int = 6, n_components: int = 10)[source]

Generates spectral embedding features from RF proximity kernel.

Builds the RF proximity matrix, computes the normalized graph Laplacian, and extracts the smoothest eigenvectors as features. Uses Nystrom extension at transform time. Requires a target variable.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

n_estimatorsint, default=100

Number of trees in the forest.

max_depthint, default=6

Maximum tree depth.

n_componentsint, default=10

Number of spectral components.

transform(data)[source]
class modeva.data.feature_engineering.tree_features.FEDirectRS(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', n_estimators: int = 50, max_depth: int = 4, regularization: float = 1e-08)[source]

Generates DirectRS stretch features from random forest leaf geometry.

Builds a weighted outer-product matrix from per-leaf centroids and variances, decomposes via eigendecomposition, and applies the resulting stretch matrix. Requires a target variable.

Parameters:
featuresstr or tuple, default=None

Features to use. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

n_estimatorsint, default=50

Number of trees in the forest.

max_depthint, default=4

Maximum tree depth.

regularizationfloat, default=1e-8

Regularization added to diagonal of G before eigendecomposition.

transform(data)[source]

Encoding & Temporal

class modeva.data.feature_engineering.phase.FEPhaseEncoder(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', n_thresholds: int = 5, include_original: bool = False)[source]

Generates smooth threshold-proximity encoding via phase differences.

For each feature, learns percentile thresholds and encodes each value as its cosine similarity to each threshold in normalized phase space. Avoids hard binning.

Parameters:
featuresstr or tuple, default=None

Features to encode. If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

n_thresholdsint, default=5

Number of threshold points per feature (evenly spaced percentiles).

include_originalbool, default=False

If True, prepend original features to output.

transform(data)[source]
class modeva.data.feature_engineering.kinematics.FEKinematics(dataset)[source]
run(features: str | Tuple = None, dataset: str = 'main', n_timesteps: int = None, n_features_per_step: int = None)[source]

Generates velocity, acceleration, and kinematic summary features from temporal sequences.

Extracts kinematic quantities from multi-step time series data: last velocity, last acceleration, mean speed, kinetic energy, and directional persistence.

Parameters:
featuresstr or tuple, default=None

Features to use (treated as flat temporal sequence). If None, all numerical features are used.

dataset{“main”, “train”, “test”}, default=”main”

Dataset used to fit the transformer.

n_timestepsint, default=None

Number of time steps. If None, inferred from data.

n_features_per_stepint, default=None

Features per time step. If None, inferred from data.

transform(data)[source]