New to ML? Start with Learn ML from scratch — plain English, no maths, and you will train a real model in your browser before you finish reading. Already comfortable? Jump to any feature. Every snippet marked Run here executes live, no install. Or open the blank canvas and try your own ideas.
Learn ML from scratch
Never done machine learning before? Start here. No maths, no jargon, just plain English and pictures in your head. By the end of this page you will understand what a model is, and you will have trained a real one in your browser.
What is machine learning?
Imagine teaching a child to recognise a cat. You do not write down rules like 'four legs, whiskers, pointy ears'. You just show them lots of cats, and soon they can spot a new cat they have never seen. Machine learning is the same idea for computers: instead of writing rules, we show the computer many examples, and it learns the pattern by itself. That learned pattern is called a MODEL.
Data, features, and the target
features = the clues · target = the answer
Think of a spreadsheet. Each ROW is one example (say, one flower). Each COLUMN is a FEATURE, a fact about it (petal length, petal width, colour). One special column is the TARGET, the thing we want to predict (which species of flower). BreezeML learns the link between the features and the target. That is why you only ever tell it two things: your table, and the name of the target column.
Two big jobs: sorting vs guessing a number
classification = buckets · regression = a number
Almost every ML problem is one of two jobs. CLASSIFICATION is sorting things into buckets: spam or not spam, cat or dog, which of 3 flowers. REGRESSION is guessing a number: tomorrow's temperature, a house price, how many visitors. BreezeML looks at your target column and picks the right job automatically, but now you know the difference.
Training and testing (no cheating!)
When you study for an exam, you practise on some questions and then the real test uses NEW questions you have not seen. If the teacher tested you on the exact practice questions, a good score would not mean you actually learned. Models are the same: we TRAIN on some rows and TEST on other, unseen rows. BreezeML always keeps a fair, unseen test set for you, so its scores are honest.
See it: train a real model now
Run here
Enough theory. Press Run. This loads 150 real flowers, learns to tell three species apart, and prints how often it is right, all inside this web page. You just did machine learning.
Try it yourself
Output
Press Run to execute this snippet.
What makes a score 'good'?
accuracy · F1 · ROC AUC
ACCURACY means 'out of 100 guesses, how many were right?'. Simple, but it can lie. If 99 out of 100 emails are NOT spam, a lazy model that always says 'not spam' is 99% accurate and completely useless. That is why BreezeML also shows F1 (a fairer score when the buckets are uneven) and, for yes/no problems, ROC AUC (how well it ranks the risky cases). More than one number keeps you honest.
Overfitting: memorising vs understanding
A student who memorises the answer key gets 100% on practice and fails the real exam. A model can do this too: it 'memorises' the training rows instead of learning the real pattern, so it looks amazing in practice and flops on new data. This is called OVERFITTING. The cure is testing on unseen data, which BreezeML does for you every time.
Cross-validation: five fair grades
5-fold cross-validation, always on
One test could be lucky or unlucky. So BreezeML splits your data into 5 parts, trains on 4 and tests on the 1 left out, then rotates until every part has been the test once. Averaging those 5 grades gives a score you can actually trust. That is CROSS-VALIDATION, and it runs by default.
Data leakage: the sneaky trap
breezeml.audit(df, target)Run here
Imagine predicting whether a patient is sick, but one column is 'medicine already prescribed'. The model will look brilliant, because that column basically contains the answer, but it is useless in real life where you do not know it yet. This is LEAKAGE. BreezeML's audit() hunts for these traps before you train. Honesty first.
Try it yourself
Output
Press Run to execute this snippet.
The cool stuff
BreezeML wraps scikit-learn so a beginner can go from a spreadsheet to an honest, deployable model in three lines, while an expert keeps full control. Here is what makes it special. Every promise below is a real feature.
A model in three lines
fit(df, target) -> modelRun here
No pipelines to wire, no config files. Give it a table and the name of the column you want to predict. BreezeML figures out the rest (classification vs regression, cleaning, encoding, scaling, cross-validation) and hands back a trained model.
Try it yourself
Output
Press Run to execute this snippet.
It explains itself
auto(df, target, explain_decisions=True)
Set explain_decisions=True and BreezeML narrates every choice it makes in plain English as it makes it: why it picked a model, how it cleaned the data, which metric it optimized. It teaches while it works.
export() writes a standalone scikit-learn script that reproduces your exact pipeline with NO breezeml import. Delete the library and your model still runs. You are never trapped.
Exampleruns locally after pip install
import breezeml
df = breezeml.datasets.iris()
model = breezeml.fit(df, "species")
breezeml.export(model, "train.py") # pure sklearn
Four dependencies. Always.
scikit-learn · pandas · numpy · joblib
The core installs with only four packages, and a CI test fails the build if anyone adds a fifth. That discipline is why the whole library can even run inside this web page.
Exampleruns locally after pip install
# the entire core dependency list
# scikit-learn, pandas, numpy, joblib
# (xgboost, lightgbm, onnx, etc. are optional extras)
It is honest by default
audit() · conformal · fairness · drift · significanceRun here
Most tools shout a single accuracy number. BreezeML ships a whole honesty toolkit: leakage detection, fairness gaps, drift monitoring, statistical significance, and distribution-free uncertainty. See the Honesty section.
Try it yourself
Output
Press Run to execute this snippet.
AI agents can use it
breezeml-mcp
A built-in Model Context Protocol server lets Claude and other agents train, compare, explain, and deploy models with sound statistical defaults, and get the same explanations you would.
Exampleruns locally after pip install
pip install "breezeml[mcp]"
claude mcp add breezeml -- breezeml-mcp
It has a soul
zen() · haiku() · fortune() · sensei()
When the work is done, breezeml.zen() rakes the gravel: a breathing pause, a haiku about your model, a fortune, or a word from the sensei. Machine learning, with calm.
Practice datasets return a pandas DataFrame with a named target column. Available: iris, wine, breast_cancer, diabetes (regression), and penguins (needs seaborn).
Try it yourself
Output
Press Run to execute this snippet.
fit()
fit(df, target, task='auto') -> ModelRun here
The main entry point. Name the target and BreezeML trains a solid model with 5-fold cross-validation. task='auto' detects classification vs regression for you.
Try it yourself
Output
Press Run to execute this snippet.
predict()
predict(model, X) -> arrayRun here
Use a trained model on new rows.
Try it yourself
Output
Press Run to execute this snippet.
model.evaluate()
Model.evaluate() -> dictRun here
Read the honest, cross-validated scores of a fitted model.
The teaching entry point: trains the best default model AND returns a report. With explain_decisions=True it narrates every step; with balanced=True it handles class imbalance.
Train straight from a CSV file, then save and reload a model to disk with joblib.
Exampleruns locally after pip install
import breezeml
model = breezeml.from_csv("data.csv", "target")
breezeml.save(model, "model.joblib")
same = breezeml.load("model.joblib")
Classifiers
Predicting a category (spam or not, which species, which class). BreezeML ships 24 classifiers. Use classifiers.compare() to rank them all on your data, or call any one directly. Each returns a fitted model plus an honest cross-validated report.
All 24 classifiers
call as breezeml.classifiers.<name>(df, target). Marked * need the optional [boost] extra and run locally, not in the browser.
Model
Call
Good for
Logistic Regression
logistic
Fast, interpretable baseline. Always try this first.
Random Forest
random_forest
Robust all-rounder. Great default on tabular data.
Gradient Boosting
gradient_boosting
Strong accuracy by correcting its own mistakes.
Hist Gradient Boosting
hist_gradient_boosting
Fast boosting for larger datasets.
Extra Trees
extra_trees
Like random forest, more randomness, often faster.
AdaBoost
adaboost
Boosts weak learners; good on clean data.
Decision Tree
decision_tree
One readable tree of if/else rules.
K-Nearest Neighbors
knn
Predicts from the closest examples. No training.
SVM (RBF)
svm
Powerful non-linear boundaries on small/medium data.
Linear SVM
linear_svm
Fast linear margin classifier for many features.
MLP (neural net)
mlp
A small neural network for non-linear patterns.
Ridge Classifier
ridge
Regularized linear classifier, resists overfitting.
SGD Classifier
sgd
Scales to huge datasets via online learning.
Passive Aggressive
passive_aggressive
Online learner for streaming text/data.
LDA
lda
Linear discriminant analysis, elegant on Gaussian data.
QDA
qda
Quadratic version, curved boundaries.
Gaussian NB
gaussian_nb
Naive Bayes for continuous features. Very fast.
Multinomial NB
multinomial_nb
Naive Bayes for counts, classic for text.
Complement NB
complement_nb
Naive Bayes tuned for imbalanced text.
Bernoulli NB
bernoulli_nb
Naive Bayes for binary features.
Nearest Centroid
nearest_centroid
Assigns to the closest class average. Tiny + fast.
Bagging
bagging
Averages many models to cut variance.
XGBoostextra
xgboost
Kaggle-winning gradient boosting.
LightGBMextra
lightgbm
Very fast, memory-light boosting.
compare()
classifiers.compare(df, target) -> leaderboardRun here
The signature move: rank every classifier on the SAME cross-validation folds, then light the winner. Fair by construction. (The browser runs a fast subset; run locally for all 24.)
A score is a claim. These tools test that claim against the ways models quietly lie, before production does. This is the heart of BreezeML.
audit()
audit(df, target, show=True) -> dictRun here
Scans for target leakage (a feature that 'knows' the answer), duplicate rows, ID columns, and class imbalance, before you waste time training on broken data.
Distribution-free prediction sets with a guaranteed coverage level. Instead of one guess, you get 'the answer is in {A, B} with 90% coverage', honest uncertainty on every prediction.
For rare-event problems (fraud, disease): summarize the imbalance, move the decision threshold to what you care about, calibrate probabilities, and cost out false positives vs negatives.