yaeda 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. yaeda-0.1.0/.github/workflows/ci.yml +34 -0
  2. yaeda-0.1.0/.github/workflows/publish.yml +30 -0
  3. yaeda-0.1.0/.gitignore +33 -0
  4. yaeda-0.1.0/.python-version +1 -0
  5. yaeda-0.1.0/LICENSE +21 -0
  6. yaeda-0.1.0/PKG-INFO +118 -0
  7. yaeda-0.1.0/README.md +78 -0
  8. yaeda-0.1.0/pyproject.toml +68 -0
  9. yaeda-0.1.0/src/yaeda/__init__.py +28 -0
  10. yaeda-0.1.0/src/yaeda/analyze.py +354 -0
  11. yaeda-0.1.0/src/yaeda/charts.py +1260 -0
  12. yaeda-0.1.0/src/yaeda/clustering.py +232 -0
  13. yaeda-0.1.0/src/yaeda/correlation.py +238 -0
  14. yaeda-0.1.0/src/yaeda/exports/export.py +172 -0
  15. yaeda-0.1.0/src/yaeda/exports/html.py +357 -0
  16. yaeda-0.1.0/src/yaeda/exports/markdown.py +108 -0
  17. yaeda-0.1.0/src/yaeda/exports/pdf.py +446 -0
  18. yaeda-0.1.0/src/yaeda/exports/tabs/base.py +31 -0
  19. yaeda-0.1.0/src/yaeda/exports/tabs/charts.py +37 -0
  20. yaeda-0.1.0/src/yaeda/exports/tabs/cluster.py +125 -0
  21. yaeda-0.1.0/src/yaeda/exports/tabs/correlation.py +35 -0
  22. yaeda-0.1.0/src/yaeda/exports/tabs/feature_importance.py +76 -0
  23. yaeda-0.1.0/src/yaeda/exports/tabs/features.py +169 -0
  24. yaeda-0.1.0/src/yaeda/exports/tabs/health.py +71 -0
  25. yaeda-0.1.0/src/yaeda/exports/tabs/interactions.py +166 -0
  26. yaeda-0.1.0/src/yaeda/exports/tabs/model_diagnostics.py +157 -0
  27. yaeda-0.1.0/src/yaeda/exports/tabs/pdp.py +120 -0
  28. yaeda-0.1.0/src/yaeda/extract.py +242 -0
  29. yaeda-0.1.0/src/yaeda/feature_importance.py +300 -0
  30. yaeda-0.1.0/src/yaeda/interaction.py +158 -0
  31. yaeda-0.1.0/src/yaeda/model_diagnostics.py +357 -0
  32. yaeda-0.1.0/tests/__init__.py +1 -0
  33. yaeda-0.1.0/tests/conftest.py +81 -0
  34. yaeda-0.1.0/tests/test_analyze.py +111 -0
  35. yaeda-0.1.0/tests/test_clustering.py +82 -0
  36. yaeda-0.1.0/tests/test_correlation.py +39 -0
  37. yaeda-0.1.0/tests/test_diagnostics.py +131 -0
  38. yaeda-0.1.0/tests/test_export.py +56 -0
  39. yaeda-0.1.0/tests/test_feature_importance.py +36 -0
  40. yaeda-0.1.0/tests/test_interactions.py +40 -0
  41. yaeda-0.1.0/tests/test_profiler.py +49 -0
  42. yaeda-0.1.0/uv.lock +2602 -0
@@ -0,0 +1,34 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.10", "3.11", "3.12"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Install uv
20
+ uses: astral-sh/setup-uv@v3
21
+ with:
22
+ enable-cache: true
23
+
24
+ - name: Set up Python ${{ matrix.python-version }}
25
+ run: uv python install ${{ matrix.python-version }}
26
+
27
+ - name: Install dependencies
28
+ run: uv sync --extra dev --extra shap
29
+
30
+ - name: Check code formatting & lint
31
+ run: uv run ruff check .
32
+
33
+ - name: Run test suite
34
+ run: uv run pytest --cov=yaeda --cov-report=term-missing
@@ -0,0 +1,30 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ pypi-publish:
10
+ name: Build distribution and publish to PyPI
11
+ runs-on: ubuntu-latest
12
+ environment:
13
+ name: pypi
14
+ url: https://pypi.org/p/yaeda
15
+ permissions:
16
+ id-token: write # Mandatory for Trusted Publishing OIDC
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v3
23
+
24
+ - name: Build sdist and wheel
25
+ run: uv build
26
+
27
+ - name: Publish to PyPI
28
+ uses: pypa/gh-action-pypi-publish@release/v1
29
+ with:
30
+ packages-dir: dist/
yaeda-0.1.0/.gitignore ADDED
@@ -0,0 +1,33 @@
1
+ # Byte-compiled / optimized files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Distribution / Packaging
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ .eggs/
11
+
12
+ # Virtual Environments (uv & venv)
13
+ .venv/
14
+ venv/
15
+ ENV/
16
+
17
+ # Testing & Coverage
18
+ .pytest_cache/
19
+ .coverage
20
+ htmlcov/
21
+ .ruff_cache/
22
+
23
+ # Local Reports & Data
24
+ *.html
25
+ *.pdf
26
+ *.json
27
+ *.csv
28
+ !tests/data/*.csv
29
+
30
+ # IDEs & System
31
+ .vscode/
32
+ .idea/
33
+ .DS_Store
@@ -0,0 +1 @@
1
+ 3.12
yaeda-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Rafael Cunha
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
yaeda-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,118 @@
1
+ Metadata-Version: 2.5
2
+ Name: yaeda
3
+ Version: 0.1.0
4
+ Summary: Yet Another EDA - Tabular Feature Discovery, Interaction Analysis, and Error Diagnostics.
5
+ Project-URL: Homepage, https://github.com/your-username/yaEDA
6
+ Project-URL: Repository, https://github.com/your-username/yaEDA
7
+ Project-URL: Issues, https://github.com/your-username/yaEDA/issues
8
+ Author-email: Rafael Cunha <rnascunha@gmail.com>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: eda,feature-engineering,kaggle,machine-learning,shap,tabular
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: matplotlib>=3.7.0
23
+ Requires-Dist: numpy>=1.24.0
24
+ Requires-Dist: pandas>=2.0.0
25
+ Requires-Dist: scikit-learn>=1.3.0
26
+ Requires-Dist: scipy>=1.10.0
27
+ Requires-Dist: seaborn>=0.12.0
28
+ Provides-Extra: all
29
+ Requires-Dist: shap>=0.42.0; extra == 'all'
30
+ Requires-Dist: weasyprint>=60.0; extra == 'all'
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
33
+ Requires-Dist: pytest>=7.4.0; extra == 'dev'
34
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
35
+ Provides-Extra: pdf
36
+ Requires-Dist: weasyprint>=60.0; extra == 'pdf'
37
+ Provides-Extra: shap
38
+ Requires-Dist: shap>=0.42.0; extra == 'shap'
39
+ Description-Content-Type: text/markdown
40
+
41
+ # yaEDA: Yet Another EDA 🚀
42
+
43
+ [![CI](https://github.com/rnascunha/yaEDA/actions/workflows/ci.yml/badge.svg)](https://github.com/your-username/yaEDA/actions)
44
+ [![PyPI version](https://img.shields.io/pypi/v/yaeda.svg)](https://pypi.org/project/yaeda/)
45
+ [![Python versions](https://img.shields.io/pypi/pyversions/yaeda.svg)](https://pypi.org/project/yaeda/)
46
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
47
+
48
+ **yaEDA** (Yet Another EDA) is an automated exploratory data analysis, feature intelligence, and model error diagnostics engine built for competitive tabular data science and machine learning.
49
+
50
+ ---
51
+
52
+ ## Features
53
+
54
+ - **Golden Feature Ranking**: Combines tree MDI, out-of-sample permutation drop, and Mutual Information into a composite rank score.
55
+ - **Partial Dependence & ICE Curves**: Evaluates individual non-linear response curves across primary predictors.
56
+ - **Arithmetic Synergy Engine**: Evaluates combinations ($A \times B$, $A / B$, $A \pm B$) to identify feature interactions exceeding baseline performance.
57
+ - **KMeans & PCA Clustering**: Identifies distinct clusters and measures target alignment using mutual information.
58
+ - **Model Error Diagnostics**: Partitions false positive/negative cohorts and residual tails with global beeswarms and local SHAP waterfall plots.
59
+ - **Self-Contained Dashboard**: Exports standalone HTML reports with zero runtime dependencies.
60
+
61
+ ---
62
+
63
+ ## Installation
64
+
65
+ ```bash
66
+ # Core package
67
+ $ pip install yaeda
68
+
69
+ # With SHAP support
70
+ $ pip install "yaeda[shap]"
71
+
72
+ # With PDF export (WeasyPrint)
73
+ $ pip install "yaeda[pdf]"
74
+ ```
75
+
76
+ Using `uv`:
77
+
78
+ ```bash
79
+ $ uv add yaeda --extra shap
80
+ ```
81
+
82
+ ## Quickstart
83
+
84
+ ```python
85
+ import pandas as pd
86
+ from yaeda import TabularEDA
87
+
88
+ df = pd.read_csv("train.csv")
89
+
90
+ eda = TabularEDA(
91
+ df=df,
92
+ target="target_col",
93
+ target_type="classification",
94
+ )
95
+
96
+ # Generate offline HTML dashboard
97
+ eda.to_html("report.html")
98
+
99
+ # Export structured intelligence as JSON
100
+ eda.to_json("metadata.json")
101
+ ```
102
+
103
+ ## Development Setup
104
+
105
+ ```bash
106
+ # Clone the repository
107
+ git clone [https://github.com/your-username/yaEDA.git](https://github.com/your-username/yaEDA.git)
108
+ cd yaEDA
109
+
110
+ # Create virtual environment and sync dependencies using uv
111
+ uv sync --extra dev --extra all
112
+
113
+ # Run test suite
114
+ uv run pytest
115
+
116
+ # Run linting
117
+ uv run ruff check .
118
+ ```
yaeda-0.1.0/README.md ADDED
@@ -0,0 +1,78 @@
1
+ # yaEDA: Yet Another EDA 🚀
2
+
3
+ [![CI](https://github.com/rnascunha/yaEDA/actions/workflows/ci.yml/badge.svg)](https://github.com/your-username/yaEDA/actions)
4
+ [![PyPI version](https://img.shields.io/pypi/v/yaeda.svg)](https://pypi.org/project/yaeda/)
5
+ [![Python versions](https://img.shields.io/pypi/pyversions/yaeda.svg)](https://pypi.org/project/yaeda/)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ **yaEDA** (Yet Another EDA) is an automated exploratory data analysis, feature intelligence, and model error diagnostics engine built for competitive tabular data science and machine learning.
9
+
10
+ ---
11
+
12
+ ## Features
13
+
14
+ - **Golden Feature Ranking**: Combines tree MDI, out-of-sample permutation drop, and Mutual Information into a composite rank score.
15
+ - **Partial Dependence & ICE Curves**: Evaluates individual non-linear response curves across primary predictors.
16
+ - **Arithmetic Synergy Engine**: Evaluates combinations ($A \times B$, $A / B$, $A \pm B$) to identify feature interactions exceeding baseline performance.
17
+ - **KMeans & PCA Clustering**: Identifies distinct clusters and measures target alignment using mutual information.
18
+ - **Model Error Diagnostics**: Partitions false positive/negative cohorts and residual tails with global beeswarms and local SHAP waterfall plots.
19
+ - **Self-Contained Dashboard**: Exports standalone HTML reports with zero runtime dependencies.
20
+
21
+ ---
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ # Core package
27
+ $ pip install yaeda
28
+
29
+ # With SHAP support
30
+ $ pip install "yaeda[shap]"
31
+
32
+ # With PDF export (WeasyPrint)
33
+ $ pip install "yaeda[pdf]"
34
+ ```
35
+
36
+ Using `uv`:
37
+
38
+ ```bash
39
+ $ uv add yaeda --extra shap
40
+ ```
41
+
42
+ ## Quickstart
43
+
44
+ ```python
45
+ import pandas as pd
46
+ from yaeda import TabularEDA
47
+
48
+ df = pd.read_csv("train.csv")
49
+
50
+ eda = TabularEDA(
51
+ df=df,
52
+ target="target_col",
53
+ target_type="classification",
54
+ )
55
+
56
+ # Generate offline HTML dashboard
57
+ eda.to_html("report.html")
58
+
59
+ # Export structured intelligence as JSON
60
+ eda.to_json("metadata.json")
61
+ ```
62
+
63
+ ## Development Setup
64
+
65
+ ```bash
66
+ # Clone the repository
67
+ git clone [https://github.com/your-username/yaEDA.git](https://github.com/your-username/yaEDA.git)
68
+ cd yaEDA
69
+
70
+ # Create virtual environment and sync dependencies using uv
71
+ uv sync --extra dev --extra all
72
+
73
+ # Run test suite
74
+ uv run pytest
75
+
76
+ # Run linting
77
+ uv run ruff check .
78
+ ```
@@ -0,0 +1,68 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "yaeda"
7
+ version = "0.1.0"
8
+ description = "Yet Another EDA - Tabular Feature Discovery, Interaction Analysis, and Error Diagnostics."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "Rafael Cunha", email = "rnascunha@gmail.com" }]
13
+ keywords = [
14
+ "eda",
15
+ "tabular",
16
+ "machine-learning",
17
+ "feature-engineering",
18
+ "kaggle",
19
+ "shap",
20
+ ]
21
+ classifiers = [
22
+ "Development Status :: 4 - Beta",
23
+ "Intended Audience :: Science/Research",
24
+ "Intended Audience :: Developers",
25
+ "License :: OSI Approved :: MIT License",
26
+ "Programming Language :: Python :: 3",
27
+ "Programming Language :: Python :: 3.10",
28
+ "Programming Language :: Python :: 3.11",
29
+ "Programming Language :: Python :: 3.12",
30
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
31
+ ]
32
+ dependencies = [
33
+ "pandas>=2.0.0",
34
+ "numpy>=1.24.0",
35
+ "scipy>=1.10.0",
36
+ "scikit-learn>=1.3.0",
37
+ "matplotlib>=3.7.0",
38
+ "seaborn>=0.12.0",
39
+ ]
40
+
41
+ [project.optional-dependencies]
42
+ shap = ["shap>=0.42.0"]
43
+ pdf = ["weasyprint>=60.0"]
44
+ all = ["shap>=0.42.0", "weasyprint>=60.0"]
45
+ dev = ["pytest>=7.4.0", "pytest-cov>=4.1.0", "ruff>=0.4.0"]
46
+
47
+ [project.urls]
48
+ Homepage = "https://github.com/your-username/yaEDA"
49
+ Repository = "https://github.com/your-username/yaEDA"
50
+ Issues = "https://github.com/your-username/yaEDA/issues"
51
+
52
+ [tool.hatch.build.targets.wheel]
53
+ packages = ["src/yaeda"]
54
+
55
+ [tool.ruff]
56
+ line-length = 100
57
+ target-version = "py310"
58
+
59
+ [tool.ruff.lint]
60
+ ignore = [
61
+ "I001", # Ban/ignore isort import sorting checks,
62
+ "BLE001", # Ignore base Exception class
63
+ ]
64
+
65
+ [tool.pytest.ini_options]
66
+ testpaths = ["tests"]
67
+ pythonpath = ["src"]
68
+ addopts = "-ra -q --strict-markers"
@@ -0,0 +1,28 @@
1
+ """tabulareda - Automated Tabular EDA & Golden Feature Engineering Toolkit."""
2
+
3
+ from .analyze import TabularEDA
4
+ from .clustering import ClusterReport, TabularClusterAnalyzer
5
+ from .correlation import CorrelationReport, FeatureTargetAnalyzer
6
+ from .extract import FeatureProfile, TableProfile, TabularDataProfiler
7
+ from .feature_importance import FeatureImportanceAnalyzer, FeatureImportanceReport
8
+ from .interaction import FeatureInteractionAnalyzer, InteractionReport
9
+ from .model_diagnostics import ModelDiagnosticsAnalyzer, ModelDiagnosticsReport
10
+
11
+ __all__ = [
12
+ "ClusterReport",
13
+ "CorrelationReport",
14
+ "FeatureImportanceAnalyzer",
15
+ "FeatureImportanceReport",
16
+ "FeatureInteractionAnalyzer",
17
+ "FeatureProfile",
18
+ "FeatureTargetAnalyzer",
19
+ "InteractionReport",
20
+ "ModelDiagnosticsAnalyzer",
21
+ "ModelDiagnosticsReport",
22
+ "TableProfile",
23
+ "TabularClusterAnalyzer",
24
+ "TabularDataProfiler",
25
+ "TabularEDA",
26
+ ]
27
+
28
+ __version__ = "0.1.0"