Easy-ML Studio
Easy-ML Studio is a no-code machine learning studio that runs on your own machine. Upload a dataset in the browser, train several models side by side, compare their metrics, make predictions, explain them with SHAP, and export a trained model as a ready-to-run FastAPI service.
It covers three workflows:
- Tabular classification and regression (CSV / Excel)
- Text classification (TF-IDF or sentence embeddings)
- Image classification (SimpleCNN, ResNet18, MobileNetV2, or your own CNN)
Everything stays local: the UI, the models and your data never leave your computer.
Install
pip install easy-ml-studio
The core install covers tabular ML with scikit-learn models and TF-IDF text classification. Add extras for more:
| Extra | Adds |
|---|---|
[boost] |
XGBoost, LightGBM, CatBoost models |
[nlp] |
Lemmatization (spaCy) and sentence-embedding features |
[cv] |
Image classification with PyTorch |
[eda] |
SHAP explanations and automatic EDA reports |
[all] |
Everything above |
pip install "easy-ml-studio[all]"
easy-ml download-models # spaCy English model, needed for lemmatization
Python 3.10 – 3.12 is supported. Features whose extra is not installed are greyed out in the UI with the command to enable them.
Launch
easy-ml
The studio opens in your browser at http://127.0.0.1:5010. Useful options:
easy-ml --port 8080 # use another port
easy-ml --no-browser # don't open a browser tab
easy-ml --host 0.0.0.0 # expose on your network (see Security below)
python -m easyml # same as easy-ml
Features
- Train several models in one run and compare accuracy, confusion matrices and classification reports
- Result charts for every model: ROC and precision-recall curves, predicted vs actual, errors, feature importance and top words
- Light or thorough hyperparameter search (GridSearchCV)
- Missing-value imputation, scaling, PCA, one-hot encoding, and SMOTE / Tomek Links for imbalanced classes
- Live progress and training curves while models train; stop a run at any time
- Run history stored in SQLite, so every model can be reused later
- Retrain any run on new data with the same settings, and compare two runs side by side
- Move a run to another computer as a single .zip (download and import)
- Single-record and batch (CSV) predictions
- SHAP waterfall explanations for tabular predictions
- One-click export of a tabular model as a FastAPI app with Dockerfile
- Use any trained model from Python or the command line (
easyml.load_model,easy-ml predict) - Automatic EDA reports with ydata-profiling
- Light and dark themes, works fully offline
Use your models outside the studio
Every run is saved, so you can use its models from any Python program or script on the same machine:
import easyml
model = easyml.load_model(5) # run #5, best model by default
model.predict({"age": 45, "city": "NY"}) # -> ["high"]
model.predict("new_customers.csv") # one prediction per row
model.predict(["great phone", "late delivery"]) # text runs
model.predict("photos/") # image runs: a file, a list or a folder
Or from the command line:
easy-ml runs # list runs with their best model
easy-ml predict 5 new_customers.csv -o out.csv # adds Prediction (and Confidence) columns
easy-ml predict 3 "my laptop got a software update" # text runs print the label
easy-ml predict 7 photos/ -o labels.csv # image runs: one row per image
easy-ml retrain 5 october.csv # run #5's recipe on new data
easy-ml export 5 -o churn.zip # move run #5 to another computer...
easy-ml import churn.zip # ...and load it there
Pick a specific model with model_name= / --model (for example RandomForestClassifier). The studio's prediction page shows these snippets pre-filled for each run.
Train from Python
from easyml import MLTrainer
run = MLTrainer(
task="MLClassification", # or "MLRegression", "NLPTextClassification"
name="churn",
dataset_path="churn.csv",
target_column="churned",
models=["logistic_regression", "random_forest"],
).run()
print(run.run_id, run.performance)
Runs trained from Python appear in the studio's Run History and can be used for predictions there. The Python guide lists every option.
Where data is stored
Uploads, trained models, the run database and logs live outside the package, so upgrading never deletes them:
| OS | Default location |
|---|---|
| Windows | %LOCALAPPDATA%\easy-ml |
| macOS | ~/Library/Application Support/easy-ml |
| Linux | ~/.local/share/easy-ml |
Set the EASYML_DATA_DIR environment variable to use another folder. Settings → Clear Data in the studio deletes everything stored there.
Security
Easy-ML Studio is a local, single-user tool with no login.
- By default it only listens on
127.0.0.1, so other machines cannot reach it. - Requests from other websites are rejected, so a page you visit cannot drive the studio.
- Only use
--host 0.0.0.0on a network you trust: anyone who can reach the port can use the studio and its data.
Docker
docker compose up --build
The image targets base, ml, nlp, cv and full (default) select which extras are installed. Data is kept in the easyml-data volume.
Documentation
- User guide
- Python guide: train and use models from code and the command line
- Developer guide
Development
git clone https://github.com/Yatrik07/easy-ml.git
cd easy-ml
python -m venv venv
venv\Scripts\activate # Windows; use `source venv/bin/activate` on macOS/Linux
pip install -e ".[all,dev]"
pytest
easy-ml
License
Apache License 2.0
Metadata
Release files for easy-ml-studio 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| easy_ml_studio-0.6.1.tar.gz | 656.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| easy_ml_studio-0.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.3 MB
Release files / easy_ml_studio-0.6.1.tar.gz
| Download URL | easy_ml_studio-0.6.1.tar.gz |
|---|---|
| Size | 656.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8d045d608c28c93922e309162931a091d84bed6a8d6caf6e9cd45f1492e70df4
|
|
BLAKE2b-256 checksum How to use checksums |
ff840a3d8305b656c1f78234a22fa27d77051ec5cbf9fa2c0efe85ea7dfb1721
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / easy_ml_studio-0.6.1-py3-none-any.whl
| Download URL | easy_ml_studio-0.6.1-py3-none-any.whl |
|---|---|
| Size | 677.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e1ccb4094370fd0d2f3d573b3743deaa143d361ad1bff01174360476b9df4751
|
|
BLAKE2b-256 checksum How to use checksums |
c23ed188655a4db02f03c8f1e36051d7958088c776d467bb415328b6e2bc1d31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log