Feature Engineering
Aggregator
- class modeva.data.feature_engineering.base.FeatureEngineering(dataset)[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_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]
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
- 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).
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.
- 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.
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.
- 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.
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.
- 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).
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.
- 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.
- 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.
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.
- 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.