No uploads, no sign-up, results in realtime, export your model and go.
Everything runs in this browser tab--no data leaves your computer.
Upload
Drop a CSV here to start
First row must be column headers.
Preview (first 12 rows)
Click a column to set the target.
Settings
Target
If enabled, we train on transformed targets and invert predictions back.
Target distribution
—
Waiting…
—
Advanced (classification)
Keep top N classes (map the rest → RARE)
most frequent classes
—
Derived boolean target (binary) from a pythonic expression
Use target for the target-cell value. Examples:
target in (6,7,8),
len(target) > 5.
Assumptions: the value is converted to a trimmed string; comparisons (<, >=, etc.) use numeric compare only if both sides parse as numbers, otherwise string compare; in (...) / not in (...) accept only literal lists (numbers/strings/true/false/none). No regex, arithmetic, or access to other columns.
—
Data
What fraction [0-1] of the data to use for testing.
Pick a cutoff date visually
Building date histogram…
—
Hyperparameters
Defaults follow common best practice for tabular baselines: enough trees, feature subsampling, row bagging, and mild tree limits for speed.
Hover over a setting name to see what it does.
Review columns
If an integer column has ≤ this many unique values, treat it as categorical.
Use
Column
Type
Flags
Missing%
Unique (sample)
Examples
Results
—
—
—
—
—
What matters (feature importance)
Waiting for training…
Aggregation groups derived features (e.g. date parts + missing indicators) back to their original column.
—
—
—
Waiting for training…
—
Run history
No runs yet.
Pruning tools
Use importance or shift diagnostics to drop columns and retrain quickly.
Drops columns below this fraction
—
Shift detector (is_valid model)
—
How to read this
—
Top shift drivers (feature importance)
Predictions explorer
Uncertainty: —
Prediction diagnostics (errors + uncertainty)
What am I looking at?
What this section is
These views help you understand which rows the model struggles with, and whether it knew it was struggling.
Everything here is computed on the test split only (rows the model did not train on).
Worst errors (top-k)
Rows where the prediction was most wrong. Use this to spot data quality issues (missing values, strange units, parsing mistakes),
or segments the model can’t learn from the available features.
Tip: open “Full predictions table” below to see more raw columns for any suspicious row.
Highest uncertainty (top-k)
“Uncertainty” here means tree disagreement (fastai-style).
A Random Forest is many trees voting; if they don’t agree, the model is less confident for that row.
Not all uncertainty is bad: a row can be uncertain but still correct. The scatter below helps separate “uncertain” from “wrong”.
Abs(error) vs uncertainty
—
How to read this: right = more wrong, up = less consensus across trees.
Upper-right often indicates shift or rare edge-cases. Bottom-right can mean “confidently wrong” (often leakage, label noise, or a missing important feature).
Full predictions table (paged)
Filter + paging
This table shows raw input rows from your CSV (test split) alongside predictions, errors, and uncertainty (tree disagreement).
Tree-disagreement uncertainty is a fastai-style confidence signal: higher values mean the trees disagree more.
Export
Example loader code
Note on opening locally
Some browsers restrict ES module imports when opening HTML via file://.
If you see import/CORS errors, run a tiny local server (e.g. python -m http.server) and open http://localhost:8000.