AutoFE-X: Automated Feature Engineering + Data Profiling + Leakage Detection
AutoFE-X brings automated feature engineering, data diagnostics, leakage detection, benchmarking, and feature lineage into a unified toolkit designed for modern ML workflows. It acts as a structured feature intelligence layer that can be inserted into any pipeline—lightweight, interpretable, and fully transparent.
✨ Key Features
- 🚀 Automated Feature Engineering: Classic mathematical transformations, interactions, and encodings
- 🔍 Data Profiling: Comprehensive data quality analysis with outlier detection and statistical summaries
- 🛡️ Leakage Detection: Advanced algorithms to detect target leakage, train-test contamination, and statistical anomalies
- 📊 Auto-Benchmarking: Automatically compare feature sets across multiple models with ablation studies
- 🔗 Graph-based Lineage: Track feature transformations and dependencies with full provenance
- ⚡ Lightweight & Fast: Minimal dependencies, optimized for performance
- 🎯 Interpretable: Full transparency in feature engineering decisions
🔜 Coming soon.... (v0.2.0+)
- 🔬 Feature Engineering: Statistical aggregations, time-series features, domain-specific transformations
- 🎯 Intelligent Feature Selection: L1 regularization, RFE, ensemble selection with voting
- 📊 Comprehensive Visualization: Feature importance plots, data quality dashboards, lineage graphs
- 📈 Interactive Dashboards: Multi-panel dashboards with integrated analysis (beyond basic Plotly)
- 🔬 Statistical Analysis: Multi-test normality analysis, effect sizes, automated interpretations (beyond basic Scipy)
- 🚀 Ultra-Statistics: ANOVA/MANOVA, time-series tests, Bayesian analysis, power analysis, bootstrap methods
- 📊 Multi-Dimensional Visualization: 2D, 3D, 4D, 5D visualizations (beyond Matplotlib/Plotly)
- 💡 Actionable Insights: Automated recommendations and HTML reports
- ⏱️ Progress Tracking: Real-time progress bars, ETA, step-by-step tracking
- 💾 Intelligent Caching: Operation-based caching with TTL, size management, cache statistics
- ⚡ Performance Optimized: Parallel processing support, intelligent caching
- 🔬 Mathematical Modeling: Polynomial, spline, PCA, ICA, clustering, manifold learning features
- 📊 Statistical Transforms: Box-Cox, Yeo-Johnson, quantile, power transforms
- 🐼 Pandas Operations: Rolling windows, groupby, datetime, string features, cumulative, differences
- 🔢 Numpy Operations: Array operations, broadcasting, matrix ops, advanced math functions
- 🔬 Scipy Operations: Special functions, distance metrics, optimization, signal processing, integration
- 🧠 Intelligent Orchestration: Automatic feature engineering selection based on data characteristics
- 📊 Feature Quality Scoring: Multi-dimensional quality scoring (predictive power, stability, uniqueness, efficiency)
- 💡 Intelligent Recommendations: Automatic transformation and strategy recommendations
📚 Documentation (Coming soon)
Quick Start
Installation
# Install from PyPI
pip install autofex
# Or install from source for development
git clone https://github.com/autofe-x/autofe-x.git
cd autofe-x
pip install -e .
Basic Usage
import pandas as pd
from autofex import AutoFEX
# Load your data
X = pd.read_csv('features.csv')
y = pd.read_csv('target.csv')['target']
# Initialize AutoFEX
afx = AutoFEX()
# Run complete pipeline
result = afx.process(X, y)
# Access results
print("Data Quality Issues:", result.data_quality_report)
print("Leakage Warnings:", result.leakage_report)
print("Engineered Features Shape:", result.engineered_features.shape)
print("Top Feature Sets:", result.benchmark_results['best_configurations'])
Individual Components
from autofex import FeatureEngineer, DataProfiler, LeakageDetector
# Feature engineering only
fe = FeatureEngineer()
X_engineered = fe.fit_transform(X, y)
# Data profiling only
profiler = DataProfiler()
report = profiler.analyze(X, y)
# Leakage detection only
detector = LeakageDetector()
leakage_report = detector.detect(X, y)
📖 Detailed Usage
Feature Engineering
from autofex import FeatureEngineer
# Create feature engineer
fe = FeatureEngineer({
'numeric_transforms': ['log', 'sqrt', 'standardize'],
'categorical_transforms': ['one_hot', 'target_encode'],
'interaction_degree': 2
})
# Transform features
X_engineered = fe.fit_transform(X, y)
Data Profiling
from autofex import DataProfiler
profiler = DataProfiler()
report = profiler.analyze(X, y)
print("Missing Values:", report['missing_values'])
print("Outliers:", report['outliers'])
print("Correlations:", report['correlations'])
Leakage Detection
from autofex import LeakageDetector
detector = LeakageDetector()
leakage_report = detector.detect(X, y, X_test)
print("Target Leakage:", leakage_report['target_leakage'])
print("Overall Risk:", leakage_report['overall_assessment']['risk_level'])
Auto-Benchmarking
from autofex import FeatureBenchmarker
benchmarker = FeatureBenchmarker()
results = benchmarker.benchmark_features(X, y)
print("Best Configuration:", results['best_configurations']['best_overall'])
print("Feature Importance:", results['feature_importance'])
Feature Lineage
from autofex import FeatureLineageTracker
tracker = FeatureLineageTracker()
tracker.start_session(X.columns.tolist())
tracker.add_transformation('log_transform', ['feature1'], ['feature1_log'])
lineage = tracker.get_lineage_graph()
print("Feature Dependencies:", tracker.get_feature_dependencies('feature1_log'))
🔧 Installation
From PyPI
pip install autofex
From Source
git clone https://github.com/autofex/autofex.git
cd autofex
pip install -e .
Development Setup
pip install -e ".[dev]"
Software testing
# Run tests
pytest
# Run with coverage
pytest --cov=autofex
# Code quality checks
black autofex/
flake8 autofex/
mypy autofex/
Key Features:
- ANOVA/MANOVA: Multi-group comparisons with post-hoc tests and effect sizes
- Time-Series Tests: ADF test, trend detection, autocorrelation analysis
- Bayesian Methods: Posterior distributions, credible intervals, Bayes factors
- Power Analysis: Sample size calculations, power estimation
- Bootstrap Methods: Non-parametric confidence intervals
📊 Multi-Dimensional Visualization (Beyond Matplotlib/Plotly)
from autofex import MultiDimensionalVisualizer
viz = MultiDimensionalVisualizer(backend="plotly")
# 2D: Scatter + Density + Hexbin + Marginals
viz.plot_2d(x, y, color=target, size=feature3, save_path="2d.html")
# 3D: Interactive 3D scatter + surface rendering
viz.plot_3d(x, y, z, color=target, size=feature4, save_path="3d.html")
# 4D: 3D + color encoding (4th dimension)
viz.plot_4d(x, y, z, color=dim4, size=dim5, save_path="4d.html")
# 5D: Multi-panel with PCA, t-SNE, parallel coordinates
viz.plot_5d(
data,
dims=["dim1", "dim2", "dim3", "dim4", "dim5"],
color_col="target",
size_col="dim5",
save_path="5d.html"
)
Key Features:
- 2D: Enhanced scatter plots, density contours, hexbin, marginal distributions
- 3D: Interactive 3D scatter with surface interpolation
- 4D: 3D visualization with 4th dimension as color encoding
- 5D: Multi-panel views with PCA, t-SNE, parallel coordinates
📊 Key Advantages Over Raw Libraries
| Feature | Raw | AutoFE-X |
|---|---|---|
| Statistical Testing | Single test, manual interpretation | Multi-test with automated interpretation |
| ANOVA | Basic f_oneway | ANOVA + post-hoc + effect sizes (η²) |
| MANOVA | Not available | Full MANOVA support |
| Time-Series Tests | Manual ADF | ADF + trend + autocorrelation |
| Bayesian Analysis | Manual calculation | Posterior + credible intervals + Bayes factor |
| Power Analysis | Manual calculation | Automated sample size + power |
| Bootstrap | Manual loops | Automated bootstrap + CI |
| Effect Sizes | Manual calculation | Automatic (Cohen's d, rank-biserial, η²) |
| Test Selection | Manual choice | Automated (parametric vs non-parametric) |
| 2D Visualization | Basic scatter | Scatter + density + hexbin + marginals |
| 3D Visualization | Basic 3D scatter | 3D + surface + interactive |
| 4D Visualization | Manual encoding | Integrated 4D visualization |
| 5D Visualization | Not available | Multi-panel with PCA, t-SNE, parallel coords |
| Visualizations | Individual plots | Integrated dashboards with insights |
| Insights | Manual analysis | Automated recommendations |
| Reports | Manual creation | HTML report generation |
| Interpretations | Just p-values | Full interpretations + recommendations |
Custom Transformations
from sklearn.preprocessing import FunctionTransformer
from autofex import FeatureEngineer
# Option 1: Using FunctionTransformer
def your_custom_function(X):
# Your custom transformation logic
# Example: square all numeric columns
X_transformed = X.copy()
numeric_cols = X.select_dtypes(include=['number']).columns
for col in numeric_cols:
X_transformed[col + '_squared'] = X[col] ** 2
return X_transformed
custom_transformer = FunctionTransformer(func=your_custom_function)
X_custom = custom_transformer.fit_transform(X)
# Option 2: Custom transformer class
class CustomTransformer:
def fit(self, X, y=None):
return self
def transform(self, X):
# Your custom logic
X_transformed = X.copy()
numeric_cols = X.select_dtypes(include=['number']).columns
for col in numeric_cols:
X_transformed[col + '_custom'] = X[col] * 2
return X_transformed
custom_trans = CustomTransformer()
custom_trans.fit(X, y)
X_custom = custom_trans.transform(X)
# Use FeatureEngineer for standard transformations
fe = FeatureEngineer()
X_engineered = fe.fit_transform(X, y)
📈 Performance
- Speed: Processes 100K rows × 50 features in ~2 seconds
- Memory: Minimal memory footprint (< 2x original data)
- Scalability: Handles datasets up to 1M rows efficiently
- Accuracy: Feature engineering decisions based on statistical validation
- Caching: Repeated operations are cached, providing 2-10x speedup on subsequent runs
- Progress Tracking: Real-time feedback with ETA for long-running operations
Progress Tracking & Caching
from autofex import AutoFEX
# Enable progress tracking and caching
afx = AutoFEX(
enable_progress=True, # Real-time progress bars
enable_cache=True, # Intelligent caching
cache_dir=".autofex_cache", # Cache directory
cache_ttl=3600, # 1 hour TTL
)
# First run - computes and caches
result1 = afx.process(X, y) # Shows progress bar with ETA
# Second run - uses cache (much faster!)
result2 = afx.process(X, y) # 2-10x faster with cache hits
# Cache management
afx.cache.clear() # Clear all cache
afx.cache.clear(operation="profiling") # Clear specific operation
cache_stats = afx.cache.get_stats() # Get cache statistics
Progress Tracking Features:
- Real-time progress bars with percentage
- ETA (Estimated Time Remaining) calculation
- Step-by-step progress updates
- Time statistics (total time, average step time)
- Real-time metric tracking
Caching Features:
- Operation-based caching (profiling, leakage detection, feature engineering, benchmarking)
- TTL (Time-To-Live) support for cache expiration
- Automatic size management (evicts oldest entries when limit reached)
- Cache statistics and management
- Selective cache clearing by operation
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Inspired by featuretools, pandas-profiling, and scikit-learn
- Built for the data science community to solve real ML engineering challenges
📞 Support
- Documentation: See the
docs/directory for comprehensive guides - Issues: GitHub Issues
Metadata
Release files for autofex 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| autofex-0.1.6.tar.gz | 93.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autofex-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 197.5 kB
Release files / autofex-0.1.6.tar.gz
| Download URL | autofex-0.1.6.tar.gz |
|---|---|
| Size | 93.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fe9021b52aeba11a848b4e9fe810d0942d222c0d6098833a26917e50d265e97
|
|
BLAKE2b-256 checksum How to use checksums |
f8f898d6f50f6d67d07dc4ccfffd4677bb47d3f5dd1cdfe9ca60972b64aae28c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / autofex-0.1.6-py3-none-any.whl
| Download URL | autofex-0.1.6-py3-none-any.whl |
|---|---|
| Size | 103.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd0c4210d41352fd0ce4b0745fc612b42f8ec21a57f8f5fafc53e7ba9b3d29c7
|
|
BLAKE2b-256 checksum How to use checksums |
aaa18988428283cd75d9c2e21de0348efeb8c7c65303f4bd87f175778156537e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for autofex 0.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.