BreezeML — Production-grade machine learning with zero boilerplate, built on scikit-learn.
Project description
BreezeML
Machine learning without the boilerplate.
Train, evaluate, and save a model in a single Python expression.
Getting Started · API Reference · Examples · Contributing · Changelog
Overview
BreezeML is a high-level machine learning library built on top of scikit-learn, designed to eliminate boilerplate while preserving full statistical rigor. Whether you are a student exploring ML for the first time or a practitioner who needs a fast prototyping layer, BreezeML handles preprocessing, model selection, hyperparameter search, and evaluation — all behind a clean, expressive API.
from breezeml import datasets, fit, predict
df = datasets.iris()
model = fit(df, "species")
preds = predict(model, df.drop(columns=["species"]))
That's it. No manual train/test splits. No encoder boilerplate. No metric aggregation.
✨ Key Features
| Feature | Description |
|---|---|
| Auto task detection | Automatically selects classification or regression based on the target column |
| 12 classifiers | From Logistic Regression to Neural Nets, available in one function call |
| Classifier leaderboard | classifiers.compare() benchmarks all 12 models and ranks them by accuracy and F1 |
| Auto hyperparameter tuning | quick_tune() runs RandomizedSearchCV with curated parameter grids |
| Detailed evaluation reports | Confusion matrix, precision, recall, ROC-AUC, and full classification report |
| 3 clustering algorithms | K-Means, Agglomerative, DBSCAN — all one-liners |
| Built-in benchmark datasets | Iris, Wine, Breast Cancer, Diabetes — ready in one line |
| Seamless CSV ingestion | from_csv("data.csv", target="price") handles loading, preprocessing, and training |
| Model persistence | save() / load() powered by joblib |
| Fully type-hinted | Clean, IDE-friendly API surface |
📐 Architecture
breezeml/
├── breezeml.py # Core: fit, predict, auto, from_csv, save, load
├── classifiers.py # 12 classifiers + compare, detailed_report, quick_tune
├── clustering.py # kmeans, agglomerative, dbscan
└── __init__.py # Public API surface
Internal Pipeline (all algorithms)
Raw DataFrame
│
▼
┌─────────────────────────────────────────┐
│ ColumnTransformer (Auto-detected) │
│ ├── Numeric → Median Imputer + Scaler │
│ └── Categorical → Mode Imputer + OHE │
└────────────────┬────────────────────────┘
│
▼
sklearn Estimator
│
▼
EasyModel wrapper
(pipeline + task + target)
📦 Installation
Stable release (recommended)
pip install breezeml
Latest from source
git clone https://github.com/venomez-viper/breezeml.git
cd breezeml
pip install -e .
Requirements: Python ≥ 3.8, scikit-learn, pandas, numpy, joblib
🚀 Quickstart
Classification in 3 lines
from breezeml import datasets, fit, predict
df = datasets.iris()
model = fit(df, "species")
print(predict(model, df.drop(columns=["species"]))[:5])
# [0, 0, 0, 0, 0]
Auto mode (classification or regression — chosen for you)
from breezeml import auto, datasets
df = datasets.diabetes()
model, report = auto(df, "target")
print(report)
# {'r2': 0.4526, 'mae': 44.23, 'rmse': 57.81}
Load your own CSV
from breezeml import from_csv
model, report = from_csv("sales_data.csv", target="revenue")
print(report)
📖 API Reference
Core Functions
fit(df, target) → EasyModel
Train a model. Task (classification vs regression) is inferred automatically from the target column.
model = fit(df, "target_column")
predict(model, X) → np.ndarray
Run inference on new data.
predictions = predict(model, new_df)
auto(df, target) → (EasyModel, dict)
Same as fit, but also returns an evaluation report.
model, report = auto(df, "target_column")
from_csv(path, target) → (EasyModel, dict)
Load a CSV, train, and evaluate in one call.
model, report = from_csv("data.csv", target="label")
save(model, path) / load(path)
Persist and restore any trained EasyModel.
save(model, "my_model.joblib")
model = load("my_model.joblib")
classifiers Module
All classifier functions share the same signature:
model, report = classifiers.<name>(df, target)
# report = {'accuracy': float, 'f1': float}
Available Classifiers
| Function | Algorithm | Notes |
|---|---|---|
classifiers.logistic |
Logistic Regression | Linear baseline |
classifiers.svm |
SVM (RBF kernel) | Robust for small–medium datasets |
classifiers.linear_svm |
Linear SVM | Scales to large datasets |
classifiers.gaussian_nb |
Gaussian Naïve Bayes | Fast; good for continuous features |
classifiers.multinomial_nb |
Multinomial Naïve Bayes | Best for text/count features |
classifiers.decision_tree |
Decision Tree | Fully interpretable |
classifiers.random_forest |
Random Forest | Strong general-purpose baseline |
classifiers.knn |
K-Nearest Neighbors | Non-parametric |
classifiers.gradient_boosting |
Gradient Boosting | High accuracy on tabular data |
classifiers.adaboost |
AdaBoost | Ensemble boosting |
classifiers.extra_trees |
Extra Trees | Faster than Random Forest |
classifiers.mlp |
Neural Network (MLP) | Deep learning baseline |
classifiers.compare(df, target) — Leaderboard
Benchmark every classifier and receive a ranked comparison table.
from breezeml import classifiers, datasets
df = datasets.iris()
results = classifiers.compare(df, "species")
🏆 BreezeML Classifier Leaderboard — target: 'species'
Rank Classifier Accuracy F1
──────────────────────────────────────────────────
1 Random Forest 1.0000 1.0000
2 Extra Trees 1.0000 1.0000
3 Gradient Boosting 0.9667 0.9667
4 K-Nearest Neighbors 0.9667 0.9667
...
classifiers.detailed_report(df, target) — Full Evaluation
Returns confusion matrix, per-class precision/recall, and ROC-AUC.
info = classifiers.detailed_report(df, "species")
print(info["accuracy"]) # 0.9667
print(info["precision"]) # 0.9683
print(info["recall"]) # 0.9667
print(info["roc_auc"]) # 0.9958
print(info["confusion_matrix"]) # [[10, 0, 0], [0, 9, 1], ...]
classifiers.quick_tune(df, target, algo) — Hyperparameter Search
Runs RandomizedSearchCV with a curated search space for the chosen algorithm. Returns the best model, best parameters, and evaluation report.
model, params, report = classifiers.quick_tune(
df, "species", algo="random_forest"
)
print(params) # {'max_depth': 10, 'min_samples_split': 2, 'n_estimators': 200}
print(report) # {'accuracy': 1.0, 'f1': 1.0}
Supported algorithms: logistic, svm, knn, decision_tree, random_forest, gradient_boosting, adaboost, extra_trees, mlp
clustering Module
from breezeml import clustering, datasets
df = datasets.wine()
res = clustering.kmeans(df.drop(columns=["class"]), n_clusters=3)
print(res["silhouette"]) # 0.2841
print(res["labels"][:10]) # [0, 0, 0, 2, 0, 0, 1, 0, 0, 0]
| Function | Algorithm |
|---|---|
clustering.kmeans(df, n_clusters) |
K-Means |
clustering.agglomerative(df, n_clusters) |
Agglomerative Hierarchical |
clustering.dbscan(df, eps, min_samples) |
DBSCAN |
Built-in Datasets
| Function | Source | Target Column | Task |
|---|---|---|---|
datasets.iris() |
sklearn | species |
Classification |
datasets.wine() |
sklearn | class |
Classification |
datasets.breast_cancer() |
sklearn | label |
Classification |
datasets.diabetes() |
sklearn | target |
Regression |
🧪 Examples
All examples are in /examples. Run them directly or open the Colab notebook:
| File | Description |
|---|---|
breezeml_quickstart.ipynb |
Interactive notebook walkthrough |
test_classification.py |
Basic classification smoke test |
test_classifiers.py |
All 12 classifiers end-to-end |
test_clustering.py |
Clustering algorithms |
test_regression.py |
Regression pipeline |
test_save_load.py |
Model persistence |
test_v020_features.py |
Full v0.2.0 feature coverage |
🔧 Troubleshooting
| Error | Cause | Fix |
|---|---|---|
ModuleNotFoundError: breezeml |
Library not installed | pip install breezeml |
ValueError: columns do not match |
Feature mismatch at inference | Ensure prediction data has the same column names as training data |
ConvergenceWarning |
Logistic Regression not converged | Increase max_iter or normalize features |
Version conflict |
Outdated dependencies | pip install --upgrade scikit-learn pandas numpy |
🗺️ Roadmap
- Core
fit/predict/autoAPI - 12 classifiers with unified interface
- Classifier leaderboard (
compare) - Hyperparameter auto-tuning (
quick_tune) - Detailed evaluation reports (confusion matrix, ROC-AUC)
- Clustering (K-Means, DBSCAN, Agglomerative)
-
explain()— SHAP-based feature importance - Native plotting (
plot_confusion_matrix,plot_roc) - Additional datasets (Titanic, MNIST subset)
-
Pipeline.export()— export trained pipeline as Python script -
BreezeAutoML— full AutoML via Optuna integration
🤝 Contributing
Contributions are welcome. Please read CONTRIBUTING.md first.
git clone https://github.com/venomez-viper/breezeml.git
cd breezeml
pip install -e ".[dev]"
pytest examples/
All PRs must:
- Pass the existing CI suite
- Include tests for new functionality
- Follow the existing docstring style
📜 License
MIT © 2025 Akash Anipakalu Giridhar
See LICENSE for full terms.
Maintained by Akash Anipakalu Giridhar
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file breezeml-0.2.1.tar.gz.
File metadata
- Download URL: breezeml-0.2.1.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d0b3aa11af81f4968cd955a9a469c53e549d5e094cf35f7b3039e17f995f02f
|
|
| MD5 |
88a80393d28bd6043ba7ea13b0326fec
|
|
| BLAKE2b-256 |
9284ee3c07f7fdbba0c1237a39fbc0efbe16873ad994689c05f4ea1d0539a6e4
|
Provenance
The following attestation bundles were made for breezeml-0.2.1.tar.gz:
Publisher:
publish.yml on venomez-viper/breezeml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
breezeml-0.2.1.tar.gz -
Subject digest:
3d0b3aa11af81f4968cd955a9a469c53e549d5e094cf35f7b3039e17f995f02f - Sigstore transparency entry: 1356453190
- Sigstore integration time:
-
Permalink:
venomez-viper/breezeml@5ba714543b0459b7f2b781eb4ad1981bd9461719 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/venomez-viper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5ba714543b0459b7f2b781eb4ad1981bd9461719 -
Trigger Event:
push
-
Statement type:
File details
Details for the file breezeml-0.2.1-py3-none-any.whl.
File metadata
- Download URL: breezeml-0.2.1-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e45a4b5eddfb8feaa6bcc1e3ba69b0e0dbd1631f4b6ff844282173e73e06a3b8
|
|
| MD5 |
38bfdd8893b27571b3c7a949ab75d52f
|
|
| BLAKE2b-256 |
229fb12b084e0b7aa2dd98da2c9020b20ecc8cc402e2531e1808e6b216aa6b3f
|
Provenance
The following attestation bundles were made for breezeml-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on venomez-viper/breezeml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
breezeml-0.2.1-py3-none-any.whl -
Subject digest:
e45a4b5eddfb8feaa6bcc1e3ba69b0e0dbd1631f4b6ff844282173e73e06a3b8 - Sigstore transparency entry: 1356453228
- Sigstore integration time:
-
Permalink:
venomez-viper/breezeml@5ba714543b0459b7f2b781eb4ad1981bd9461719 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/venomez-viper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5ba714543b0459b7f2b781eb4ad1981bd9461719 -
Trigger Event:
push
-
Statement type: