ezyml 2__py3-none-any.whl

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.
@@ -0,0 +1,9 @@
1
+ def render_ascii_dag(nodes, edges):
2
+ lines = []
3
+ for n in nodes:
4
+ children = edges.get(n,[])
5
+ if children:
6
+ lines.append(f"{n} -> {', '.join(children)}")
7
+ else:
8
+ lines.append(n)
9
+ return "\n".join(lines)
File without changes
@@ -0,0 +1,6 @@
1
+ from sklearn.model_selection import GridSearchCV
2
+
3
+ def tune_model(model, param_grid, X, y):
4
+ gs = GridSearchCV(model, param_grid, cv=3)
5
+ gs.fit(X,y)
6
+ return gs.best_estimator_
@@ -0,0 +1,341 @@
1
+ Metadata-Version: 2.4
2
+ Name: ezyml
3
+ Version: 2
4
+ Summary: From dataset to production ML system — in one command.
5
+ Home-page: https://github.com/Rktim/ezyml
6
+ Author: Raktim Kalita
7
+ Author-email: Raktim Kalita <raktimkalita.ai@gmail.com>
8
+ License: MIT
9
+ Keywords: machine-learning,ml,mlops,automation,scikit-learn,deployment,fastapi,streamlit,kubernetes
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Requires-Python: >=3.7
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: numpy>=1.23
24
+ Requires-Dist: pandas>=1.5
25
+ Requires-Dist: scikit-learn>=1.3
26
+ Requires-Dist: scipy>=1.9
27
+ Requires-Dist: xgboost>=1.7
28
+ Requires-Dist: pyyaml>=6.0
29
+ Provides-Extra: demo
30
+ Requires-Dist: streamlit>=1.30; extra == "demo"
31
+ Provides-Extra: api
32
+ Requires-Dist: fastapi>=0.110; extra == "api"
33
+ Requires-Dist: uvicorn>=0.25; extra == "api"
34
+ Provides-Extra: deploy
35
+ Requires-Dist: docker; extra == "deploy"
36
+ Requires-Dist: kubernetes; extra == "deploy"
37
+ Provides-Extra: dev
38
+ Requires-Dist: pytest; extra == "dev"
39
+ Requires-Dist: black; extra == "dev"
40
+ Requires-Dist: ruff; extra == "dev"
41
+ Requires-Dist: mypy; extra == "dev"
42
+ Requires-Dist: twine; extra == "dev"
43
+ Provides-Extra: all
44
+ Requires-Dist: streamlit>=1.30; extra == "all"
45
+ Requires-Dist: fastapi>=0.110; extra == "all"
46
+ Requires-Dist: uvicorn>=0.25; extra == "all"
47
+ Requires-Dist: docker; extra == "all"
48
+ Requires-Dist: kubernetes; extra == "all"
49
+ Dynamic: author
50
+ Dynamic: home-page
51
+ Dynamic: license-file
52
+ Dynamic: requires-python
53
+
54
+ <div align="center">
55
+
56
+ # 📦 ezyml 🚀
57
+
58
+ ### **Version 2.0**
59
+
60
+ **From raw data to a deployable ML system — in one command.**
61
+
62
+ <a href="https://github.com/Rktim/ezyml/blob/main/LICENSE">
63
+ <img alt="License" src="https://img.shields.io/github/license/Rktim/ezyml?color=blue">
64
+ </a>
65
+ <img alt="Python Versions" src="https://img.shields.io/pypi/pyversions/ezyml?logo=python&logoColor=white">
66
+ <img alt="Version" src="https://img.shields.io/badge/version-2.0-success">
67
+
68
+ [![PyPI Downloads](https://static.pepy.tech/badge/ezyml)](https://pepy.tech/projects/ezyml)
69
+
70
+ </div>
71
+
72
+ ---
73
+
74
+ ## 🚀 What’s New in v2.0
75
+
76
+ **ezyml 2.0 is a major architectural upgrade.**
77
+ It is no longer just a trainer — it is a **machine‑learning compiler**.
78
+
79
+ ### 🆕 Major Additions
80
+
81
+ * 🧠 **`ezyml compile`** – one command to generate models, metrics, APIs, demos, and infra
82
+ * 🧩 **Pipeline‑Driven Execution** – YAML‑based pipelines with visual DAGs
83
+ * 🎛 **User‑Controlled Artifacts** – generate *only* what you ask for
84
+ * 📊 **Auto‑EDA + Evaluator** – dataset profiling, metrics, plots
85
+ * 🧪 **Production‑Ready Demos** – high‑quality Streamlit UI generation
86
+ * 📦 **Deployment Tooling** – FastAPI, Docker, Kubernetes YAML
87
+ * 🔍 **Dataset Fingerprinting** – reproducibility by design
88
+
89
+ ---
90
+
91
+ ## 🌟 Why ezyml?
92
+
93
+ **ezyml** removes boilerplate across the *entire* ML lifecycle:
94
+
95
+ > dataset → training → evaluation → deployment → demo
96
+
97
+ All without forcing you into a framework lock‑in.
98
+
99
+ ### Core Philosophy
100
+
101
+ * **Explicit over magic** – nothing is generated unless you ask
102
+ * **Beginner‑friendly, expert‑capable**
103
+ * **Composable, inspectable, debuggable**
104
+
105
+ ---
106
+
107
+ ## 📦 Installation
108
+
109
+ ```bash
110
+ pip install ezyml==2.0.0
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 🚀 CLI Quickstart
116
+
117
+ Below are the **most common ways users interact with ezyml** — via the CLI or Python API.
118
+
119
+ ---
120
+
121
+ ### 🧠 Train a Model (CLI – v1 compatible)
122
+
123
+ ```bash
124
+ ezyml train \
125
+ --data data.csv \
126
+ --target label \
127
+ --model random_forest
128
+ ```
129
+
130
+ This trains a model and prints evaluation metrics.
131
+
132
+ ---
133
+
134
+ ### 🧩 Compile an End-to-End ML System (CLI – v2.0)
135
+
136
+ **Minimal (no pipeline, no extras):**
137
+
138
+ ```bash
139
+ ezyml compile \
140
+ --data heart.csv \
141
+ --target target
142
+ ```
143
+
144
+ Generates:
145
+
146
+ ```
147
+ build/
148
+ ├── model.pkl
149
+ └── metrics.json
150
+ ```
151
+
152
+ ---
153
+
154
+ ### 🎛 Compile With Explicit Outputs
155
+
156
+ ```bash
157
+ ezyml compile \
158
+ --data heart.csv \
159
+ --target target \
160
+ --api \
161
+ --demo \
162
+ --docker \
163
+ --k8s
164
+ ```
165
+
166
+ Each flag enables a specific artifact:
167
+
168
+ * `--api` → FastAPI inference app
169
+ * `--demo` → Interactive Streamlit demo
170
+ * `--docker` → Dockerfile
171
+ * `--k8s` → Kubernetes manifests
172
+
173
+ ---
174
+
175
+ ### 🧩 Compile Using a YAML Pipeline (Advanced)
176
+
177
+ ```bash
178
+ ezyml compile \
179
+ --pipeline pipeline.yaml \
180
+ --data heart.csv \
181
+ --target target \
182
+ --all
183
+ ```
184
+
185
+ ---
186
+
187
+ ### 🧩 Compile a Full ML System (v2.0)
188
+
189
+ ```bash
190
+ ezyml compile \
191
+ --pipeline pipeline.yaml \
192
+ --data data.csv \
193
+ --target label
194
+ ```
195
+
196
+ **Default output (minimal):**
197
+
198
+ ```
199
+ build/
200
+ ├── model.pkl
201
+ └── metrics.json
202
+ ```
203
+
204
+ ---
205
+
206
+ ### 🎛 User‑Controlled Outputs
207
+
208
+ ```bash
209
+ ezyml compile \
210
+ --pipeline pipeline.yaml \
211
+ --data data.csv \
212
+ --target label \
213
+ --api \
214
+ --demo \
215
+ --docker \
216
+ --k8s
217
+ ```
218
+
219
+ ---
220
+
221
+ ## 🧪 Pipeline Example (YAML)
222
+
223
+ ```yaml
224
+ steps:
225
+ trainer:
226
+ type: EZTrainer
227
+ params:
228
+ model: random_forest
229
+ target: label
230
+ ```
231
+
232
+ ---
233
+
234
+ ## 🧠 Python API (Still Supported)
235
+
236
+ You can use **ezyml programmatically** without the CLI.
237
+
238
+ ### Basic Training
239
+
240
+ ```python
241
+ from ezyml.core import EZTrainer
242
+
243
+ trainer = EZTrainer(
244
+ data="heart.csv",
245
+ target="target",
246
+ model="random_forest"
247
+ )
248
+
249
+ trainer.train()
250
+ trainer.save_model("model.pkl")
251
+ trainer.save_report("metrics.json")
252
+ ```
253
+
254
+ ---
255
+
256
+ ### Predictions in Python
257
+
258
+ ```python
259
+ import pandas as pd
260
+ from ezyml.core import EZTrainer
261
+
262
+ trainer = EZTrainer(data="heart.csv", target="target")
263
+ trainer.train()
264
+
265
+ X_new = pd.read_csv("new_samples.csv")
266
+ preds = trainer.predict(X_new)
267
+ print(preds)
268
+ ```
269
+
270
+ ---
271
+
272
+ ### Using ezyml as a Library Component
273
+
274
+ ```python
275
+ from ezyml.compiler.compile import compile_project
276
+ from ezyml.core import EZTrainer
277
+
278
+ trainer = EZTrainer(data="heart.csv", target="target")
279
+ trainer.train()
280
+
281
+ compile_project(
282
+ trainer=trainer,
283
+ schema={"age": "number", "chol": "number"},
284
+ api=True,
285
+ demo=True
286
+ )
287
+ ```
288
+
289
+ ---
290
+
291
+ ## 📊 Evaluation & Analytics
292
+
293
+ * Accuracy, F1, ROC‑AUC (classification)
294
+ * MAE, RMSE, R² (regression)
295
+ * Confusion matrix, ROC & PR curves
296
+ * Drift‑ready metric storage
297
+
298
+ ---
299
+
300
+ ## 📦 Deployment Targets
301
+
302
+ | Layer | Supported |
303
+ | ------------- | ---------- |
304
+ | API | FastAPI |
305
+ | Demo | Streamlit |
306
+ | Container | Docker |
307
+ | Orchestration | Kubernetes |
308
+
309
+ ---
310
+
311
+ ## 🧰 Supported Models
312
+
313
+ | Task | Models |
314
+ | -------------- | -------------------------------------------------------------------------------------------------- |
315
+ | Classification | logistic_regression, random_forest, xgboost, svm, naive_bayes, gradient_boosting, extra_trees, knn |
316
+ | Regression | linear_regression, ridge, lasso, elasticnet, random_forest, xgboost, svr, gradient_boosting |
317
+ | Clustering | kmeans, dbscan, agglo |
318
+ | Dim Reduction | pca, tsne |
319
+
320
+ ---
321
+
322
+ ## 🔮 Roadmap
323
+
324
+ * Learner Mode (explain decisions)
325
+ * SHAP‑based explainability
326
+ * Model comparison dashboards
327
+ * Presets (`--preset production`)
328
+ * CI/CD & MLOps integrations
329
+
330
+ ---
331
+
332
+ ## 📜 License
333
+
334
+ MIT License – [View License](https://github.com/Rktim/ezyml/blob/main/LICENSE)
335
+
336
+ ---
337
+
338
+ ## 👨‍💻 Author
339
+
340
+ Built with ❤️ by **Raktim Kalita**
341
+ GitHub: [https://github.com/Rktim](https://github.com/Rktim)
@@ -0,0 +1,36 @@
1
+ ezyml/__init__.py,sha256=r6E9cDTgLxJb2_HkMvAGyHyfFvQRSj0VIMOWug-BK-M,231
2
+ ezyml/cli.py,sha256=t0Z3ecM6cKQcCr81LQaMvplC9ARGVfokKmKdHoBMYm0,3071
3
+ ezyml/core.py,sha256=vQs1rxDVrxOOSOk7VyrRlH98rlzcmtTKpoUjjXA7pQE,38278
4
+ ezyml/compiler/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
5
+ ezyml/compiler/compile.py,sha256=4E5kStzgqKsSfJifxYvTtI36Px8cRMc9n3rW5TVRinc,3574
6
+ ezyml/deploy/__init__.py,sha256=t9jZDt1yudRUFx7r6xa_tDD3etP11qMTp72tP8RXTO0,211
7
+ ezyml/deploy/docker.py,sha256=ljPha_6abxPv8-3eeEC2EW1S76GegVuZY9swIQvPwwU,437
8
+ ezyml/deploy/fastapi.py,sha256=f2K8dCAqO6xiYk7DSTP_KlW-7b9IPAmfYvszloKBk_U,701
9
+ ezyml/deploy/k8s.py,sha256=hPwhlk9IPSiMUDa2lpKVId2adu6vyBk6jeX_KPurlUk,3585
10
+ ezyml/deploy/openapi.py,sha256=yU5zB6-lAH8HWm06ohth0TodYAFM02IHERkUxZMfFuA,457
11
+ ezyml/deploy/streamlit.py,sha256=4imvZU1oApkCcChPGsiRHcfKvqULImSga6AhBkGipF0,6648
12
+ ezyml/devx/__init___.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
13
+ ezyml/devx/doctor.py,sha256=P_v8QTdWCr1Xci3gFnCz7GuI4M803q_O_9AmeH7DgMY,160
14
+ ezyml/devx/init.py,sha256=_7xxo6hfJ1At7LomjQgcIyRxzMgm4S_LmFD11MbPWis,178
15
+ ezyml/eda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ ezyml/eda/auto_eda.py,sha256=g8k-wcfWGT0TMvtAWSAkeJMsRpnCqKVminKTBZP7Axc,751
17
+ ezyml/evaluation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ ezyml/evaluation/evaluator.py,sha256=aGS3vlWthGBw92zUYBL7-DZ1j4bVya4QUWAiUEqMvw0,1655
19
+ ezyml/evaluation/metrics.py,sha256=MCxMHAiSmStrxHZHu1NX-Ui4wcTRXyNZZn75QE231IM,955
20
+ ezyml/evaluation/plots.py,sha256=t7hJi7H-_J8PDOTTOTsGaZRbGr193GwEIBLO-NDRcs4,869
21
+ ezyml/explain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ ezyml/explain/learner.py,sha256=Tr9ywJdJrjaJtMy5fT5rRoYKTAHdjuzcaIoqEniocqw,503
23
+ ezyml/monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ ezyml/monitoring/drift.py,sha256=PzIN6rkqpQ3MP3-eb4xDeSi41QviRt4V6_JB9b2bk3c,291
25
+ ezyml/monitoring/fingerprint.py,sha256=IKyL5ms5bLeAjWjmcxmTmCOpzSOssqD0rRi6-0-I73Y,240
26
+ ezyml/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ ezyml/pipeline/loader.py,sha256=qK8H0Tk-_Zbgjlid6S0IdRF5BY7grKZ9cF9Y6r6MRWo,2121
28
+ ezyml/pipeline/visualize.py,sha256=W_VFnoEov2p71uO2mTD_azHVI7nc_iOtDCkjxA5AO_A,264
29
+ ezyml/training/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ ezyml/training/tuner.py,sha256=SFP3dUwYwAhMngmFP5tP_sV9sDWvaoakcXzZR7HZIfA,190
31
+ ezyml-2.dist-info/licenses/LICENSE,sha256=nXS6lwSVEKkIzE9fsp6XQrJ0SYuSFDYZDIn514aGMEk,1089
32
+ ezyml-2.dist-info/METADATA,sha256=qyRF4p3rxl0OEZzSQmWxY_I6UoBQ9nDidI5P9ADRLHk,7771
33
+ ezyml-2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
34
+ ezyml-2.dist-info/entry_points.txt,sha256=qI_TMOukrveQBmMa7qvRtmiz196jmbuxVISYfs8-pzg,41
35
+ ezyml-2.dist-info/top_level.txt,sha256=dB_xkaTsYszE2q8C4zSJ97AIB1KrSISOjfNayUV4HQg,6
36
+ ezyml-2.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ ezyml = ezyml.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Raktim Kalita
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.
@@ -0,0 +1 @@
1
+ ezyml