Skip to main content

BreezeML — Production-grade machine learning with zero boilerplate, built on scikit-learn.

Project description

BreezeML Banner

BreezeML

Machine learning without the boilerplate.

Train, evaluate, and save a model in a single Python expression.


PyPI version PyPI Downloads CI Status GitHub Release Python 3.8+ License: MIT Open In Colab scikit-learn


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:

Open In Colab

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 / auto API
  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

breezeml-0.2.3.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

breezeml-0.2.3-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file breezeml-0.2.3.tar.gz.

File metadata

  • Download URL: breezeml-0.2.3.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for breezeml-0.2.3.tar.gz
Algorithm Hash digest
SHA256 aff39453252a51722636c7b083be3721b5fd52b34839e73e085fa6b2edc8177b
MD5 7391eee8563fdb41b940016accfb4a5f
BLAKE2b-256 5b96ceac6fbb6482cf49aa41e3b2072d8c653836bb053620380a364ddde4f0a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for breezeml-0.2.3.tar.gz:

Publisher: publish.yml on venomez-viper/breezeml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file breezeml-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: breezeml-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for breezeml-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 21a072449a29fcf335f21a75760b4682502df38ca5349c16b7799b7391913008
MD5 9411096f19bce7871defd42c34032ef8
BLAKE2b-256 6cb7fef1a37a651ca815ae90d72baf6c7185ff4cdf9ce7935b31081a4b0f0027

See more details on using hashes here.

Provenance

The following attestation bundles were made for breezeml-0.2.3-py3-none-any.whl:

Publisher: publish.yml on venomez-viper/breezeml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page