feature-dash ⚡
High-performance feature evaluation & interactive web dashboards for tabular ML workflows.
Why feature-dash?
Note: Want to see it in action? View the Sample Interactive Dashboard (HTML) directly in your browser, or check out the Sample WoE Rules (JSON).
Overview
feature-dash is a Python library and CLI tool for evaluating tabular features and generating zero-dependency, interactive web dashboards — all from a single function call.
Unlike generic EDA tools, feature-dash is built specifically for machine learning workflows. It supports both unsupervised feature EDA (distributions, percentiles, correlation heatmaps) and supervised predictive intelligence (Information Value, Weight of Evidence, Mutual Information, target leakage detection, and Scikit-Learn WoE transformers).
✨ Key Features
Feature Analysis
- Smart Adaptive Binning — 4-tier strategy handling discrete, zero-inflated, skewed, and continuous distributions automatically.
- Information Value (IV) — Quantile-binned predictive power scoring across all features.
- Mutual Information (MI) — Non-linear dependency scoring for classification and regression targets.
- Weight of Evidence (WoE) — Per-bin WoE values with interactive Chart.js visualizations.
- Target Leakage Detection — Automatic flagging of suspected leakage features ($IV \ge 1.0$ or $|r| \ge 0.95$).
PII Safeguards & Column Exclusion
- Automatic PII Detection — Detects and excludes raw PII columns (emails, phone numbers, names, SSNs, addresses, etc.) using broad pattern matching.
- Explicit
exclude_cols— Pass explicit column exclusion lists for fine-grained control. - Interactive Badge & Modal — Displays a
🛡️ Excluded Columnsbadge with a detailed modal in the dashboard.
Bivariate Analysis
- Spearman Rank Correlation Matrix — Hierarchically clustered heatmap (Ward distance), excluding nominal noise.
- Redundant Pair Detection ($|r| \ge 0.75$) — With recommended retention based on Information Value.
- 2D Quantile Interaction Heatmaps — 5×5 risk grids supporting binary
pos_rateand regressiontarget_mean.
Production Integration
- WoE Scoring Export — Save binning rules as JSON (
report.export_woe_rules("woe_rules.json")). - Scikit-Learn Transformer —
WoETransformerconverts DataFrames into WoE-encoded numeric matrices, compatible with pipelines and production inference. - DataFrame & CSV Export —
report.to_dataframe()andreport.to_csv("summary.csv").
Dashboard & Deployment
- Self-Contained HTML — Single-file dashboards with embedded Chart.js visualizations.
- Dual Theme — 🌙 Dark Mode / ☀️ Light Mode toggle with dynamic re-rendering.
- Print & PDF Export — One-click export unwraps multi-tab UI into a clean linear layout.
- Inline Jupyter Rendering —
report.display_in_notebook()for notebook workflows. - Single-File Standalone — Zero-dependency
standalone_feature_dash.pyfor air-gapped and restricted environments wherepip installis not available.
📦 Installation
pip install feature-dash
⚡ Quickstart
Supervised Feature Analysis
import pandas as pd
from feature_dash import FeatureAnalyzer
df = pd.read_csv("dataset.csv")
analyzer = FeatureAnalyzer(
df,
target="SeriousDlqin2yrs",
n_bins=10,
exclude_cols=["customer_id", "phone_number"],
)
report = analyzer.fit()
# Generate interactive HTML dashboard
report.to_html(output_path="./reports")
# Export metrics
df_summary = report.to_dataframe()
report.to_csv("feature_summary.csv")
Unsupervised Feature Analysis
analyzer = FeatureAnalyzer(df, target=None, n_bins=15)
report = analyzer.fit()
report.to_html(output_path="./unsupervised_reports")
Inline Jupyter Rendering
report.display_in_notebook(height=850)
WoE Scoring & Scikit-Learn Transformer
# Export WoE binning rules
rules = report.export_woe_rules(filepath="woe_rules.json")
# Convert to scikit-learn transformer
woe_encoder = report.to_transformer()
X_test_woe = woe_encoder.transform(df_test)
# Production: reload from JSON (no FeatureAnalyzer needed)
from feature_dash import WoETransformer
prod_encoder = WoETransformer.from_json("woe_rules.json")
X_prod_woe = prod_encoder.transform(df_prod)
🔒 Air-Gapped & Restricted Environments
For environments where package installation is prohibited (air-gapped clusters, locked-down Jupyter servers, etc.), use the self-contained single-file script:
from standalone_feature_dash import create_feature_dashboard
create_feature_dashboard(
df,
target="SeriousDlqin2yrs",
output_path="feature_dash_report.html",
display_notebook=True,
)
Note:
standalone_feature_dash.pybundles the full analysis engine, HTML template, and dashboard renderer into a single.pyfile with no external dependencies beyondpandasandnumpy.
💻 CLI
# Check version
feature-dash --version
# Supervised analysis
feature-dash analyze dataset.csv --target SeriousDlqin2yrs --output-dir ./reports
# Unsupervised analysis
feature-dash analyze dataset.csv --output-dir ./unsupervised_reports
⚙️ Configuration
analyzer = FeatureAnalyzer(
df,
target="target_column",
n_bins=10, # Quantile bins for IV and distributions
sample_size=100_000, # Max rows for MI & correlation computation
n_bivariate_features=6, # Top features for 2D interaction grids
max_corr_features=40, # Max features in correlation matrix
exclude_cols=["id", "phone"], # Explicit column exclusions
force_include=["zipcode_id"], # Force-include columns that would be auto-dropped
leakage_iv_threshold=1.0, # IV threshold for leakage flagging
leakage_corr_threshold=0.95, # Correlation threshold for leakage flagging
drop_high_cardinality=True, # Auto-drop high-cardinality ID/PII columns
max_cardinality_ratio=0.7, # Cardinality ratio cutoff (for n >= 100)
)
📄 License
MIT License — see LICENSE for details.
Metadata
Release files for feature-dash 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| feature_dash-0.1.0.tar.gz | 44.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| feature_dash-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 82.9 kB
Release files / feature_dash-0.1.0.tar.gz
| Download URL | feature_dash-0.1.0.tar.gz |
|---|---|
| Size | 44.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f648da535909735f131e644094f4edddcaa96067c945e3ef7f81578f309ad62
|
|
BLAKE2b-256 checksum How to use checksums |
dd032c01839f6d7b0072fbe38b91b1d6608344d7bd098175ea2db4916a5ba796
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.
Transparency logRelease files / feature_dash-0.1.0-py3-none-any.whl
| Download URL | feature_dash-0.1.0-py3-none-any.whl |
|---|---|
| Size | 38.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d4aac9ca32b3741964fb02cae2afc6b9293e19068943b76114b269d7b06f157a
|
|
BLAKE2b-256 checksum How to use checksums |
93eaa134cb35e0ce83134bd448ecf593af6deb8551f81f0e95eadfc5eb5a2367
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.
Transparency log