Skip to main content

EasyResearch

tests License: MIT DOI

Machine learning without programming: analysis cores for researchers who do not code. They follow the rules of EasyClassifier:

  • every step that learns from data uses training data only;
  • models use their authors' default settings with fixed random seeds (no tuning), so results are reproducible;
  • when several models are compared, the selected one gets a separate, honest final score;
  • every run writes a plain-language report with a Methods paragraph, figures, tables, predictions, the trained model, citations and a log.

The cores have no user interaction (settings in, results out), so a terminal wizard, the desktop application or a web server can all drive them.

This repository holds:

Folder What it is
src/easyresearch, tests the analysis cores and their tests (pip install easyresearch)
desktop EasyResearch Desktop, a Windows application that runs classification, regression, forecasting and signal classification without code (README)
benchmarks correctness and honesty benchmarks, with all results
docs development guide, release plan, publishing steps
papers the EasyResearch paper
Core Task Status
Classification predict a category from a table EasyClassifier 0.8.2
easyresearch.regression predict a number from a table ready
easyresearch.timeseries – forecasting forecast one series ready
easyresearch.timeseries – signals classify recordings (ECG, EEG, sensors) ready (one channel)

Install and run

Windows, without Python: download EasyResearchDesktop-0.1.1-setup.exe from the Releases page and run it. It installs EasyResearch Desktop with its own Python and every package it needs; no administrator rights are required. Windows may show "Windows protected your PC" because the program is not code-signed: choose More info, then Run anyway.

Python (any system):

pip install easyresearch    # installs EasyClassifier, PyTorch and statsmodels
easyresearch forecast --demo
easyresearch forecast sales.csv --value Sales --horizon 12
easyresearch regress houses.xlsx --target Price
easyresearch signals ECG200_TRAIN.tsv
easyresearch models forecast            # list models; * = default fast set

Add --models all, or a list such as --models ets,lstm,nbeats, to choose models. Results go to a new folder in ./Results (or --out). Deep models use a GPU automatically when PyTorch finds one.

Figures: --figures residuals,comparison draws only the named figures (the default is the task's usual set), --figure-theme chooses colour-blind safe (default), greyscale or high-contrast colours, and --figure-format png+pdf or png+svg adds vector files for journals.

Forecasting

  • Data: a CSV/Excel table with a date column (detected automatically) and the value to forecast. Hourly, daily, business-daily, weekly, monthly, quarterly and yearly series are recognised; the season length follows (24, 7, 5, 52, 12, 4, none). Repeated time points are averaged; missing points are filled with the last known value (never a later one). Without a date column, rows are taken in order with no season.
  • Models: reference rules (naive, seasonal naive) are always included. Statistical: exponential smoothing (damped trend, seasonal) and Theta. Machine learning on the last L values: Ridge, Random Forest, Gradient Boosting, KNN with the Hassanat distance. Deep (PyTorch): MLP, LSTM, GRU, TCN, N-BEATS, Transformer. Default set: ETS, Theta, Ridge, Random Forest (deep models are optional because each takes minutes).
  • Honest evaluation: never shuffled. Models are compared at up to five rolling origins before a final period (the last ~20%); the selected model is then scored in the final period, which played no part in choosing it, retrained before each origin. The automatic horizon is the usual one for the time unit, shortened (with a note) when the series is too short to evaluate it honestly; a series too short for any horizon is refused with the number of values it needs.
  • Measures: MASE (used to choose, by default), MAE, RMSE, sMAPE and MHSP (mean Hassanat similarity percentage) – any of MASE, RMSE, MAE or MHSP can choose the model (--metric mhsp).
  • Outputs: the future forecast with an 80% band (its coverage in the final period is checked and reported), final-period forecasts, comparison table, five figures, report, trained model, settings.json (what was asked and what was used) and versions.txt (the software used).

MHSP

For each prediction, the Hassanat similarity between actual a and forecast f is (1 + min(a, f)) / (1 + max(a, f)), with the signed form (1 + min + |min|) / (1 + max + |min|) when the smaller value is negative. MHSP is 100 × the mean of these similarities (100% = perfect), computed on the values as they are. It is also reported by the regression core. Reference: Hassanat, A. B., et al. (2024). A novel outlier-robust accuracy measure for machine learning regression using a non-convex distance metric. Mathematics, 12(22), 3623. https://doi.org/10.3390/math12223623

Signal classification (ECG, EEG, sensors)

  • Data: one recording per row – a CSV/Excel table with a label column and the signal values in the other numeric columns, or UCR/UEA archive files (.tsv/.txt, label first). Gaps inside a recording are filled from its own neighbouring values.
  • Models: KNN with the Hassanat distance (each recording scaled to 0–1), ROCKET (10,000 random convolution kernels), signal features + Random Forest, and deep FCN, ResNet, InceptionTime and LSTM.
  • Evaluation: EasyClassifier's own – stratified cross-validation to compare; nested cross-validation for the final score (up to 2,000 recordings, without deep networks) or an untouched stratified 20% test set (larger data, or when deep networks are compared, because they take minutes each on a normal computer).
  • The demo (--demo) uses synthetic heartbeats for trying the tool; it is not patient data.
  • Not yet: several channels per recording (multichannel EEG) and long recordings to be cut into windows.

Regression

See the EasyResearch Desktop README for details: linear and ridge regression, decision tree, random forest, gradient boosting, SVR, KNN with the Hassanat distance and a neural network; R², RMSE, MAE, median absolute error, MAPE and MHSP against the reference of always predicting the average. XGBoost and LightGBM are added when installed (pip install -e ".[full]").

Development

pip install -e ".[test]"
python -m pytest tests

From the repository root, python tools/run_all_tests.py runs every suite (these cores and the desktop adapters); see docs/DEVELOPMENT.md. benchmarks/easyresearch_benchmarks.py measures accuracy, run time, memory and agreement with reference implementations, and benchmarks/easyresearch_honesty.py measures whether the reported scores are honest, against data that is never touched (results in benchmarks/results/easyresearch_honesty).

The tests include a check that no forecasting model – statistical, machine learning or deep – changes its forecast when every value after the forecast origin is changed.

Citing

If you use EasyResearch in published work, please cite it (GitHub's "Cite this repository" button uses CITATION.cff); every run also writes the exact references for the methods it used to citations.txt.

Licence

MIT. Ahmad Hassanat.

Metadata

Release files for easyresearch 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for easyresearch 0.1.1
File Size Uploaded Provenance Actions
easyresearch-0.1.1.tar.gz 79.6 kB With provenance Details for easyresearch-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for easyresearch 0.1.1
File Interpreter ABI Platform Actions
easyresearch-0.1.1-py3-none-any.whl Python 3 none any Details for easyresearch-0.1.1-py3-none-any.whl

Total release size: 160.7 kB

Release files / easyresearch-0.1.1.tar.gz

Download URL easyresearch-0.1.1.tar.gz
Size 79.6 kB
Tags Source
SHA-256 checksum
How to use checksums
abc247deba8d5e0917160560472927f3a3195c98dfe21c76d98e74aa4736a2eb
BLAKE2b-256 checksum
How to use checksums
a9ae835df779ce010ff5d0bfa43fdf8666a0299ddbb48a98cc065d405962bb2b
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 14, 2026.

Transparency log

Release files / easyresearch-0.1.1-py3-none-any.whl

Download URL easyresearch-0.1.1-py3-none-any.whl
Size 81.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55d990917631065c6f9cab329ca1cce4115a252d5289e642827395d8914d4c58
BLAKE2b-256 checksum
How to use checksums
b4999d5605c4707913b3e31bbf2dd80ef63aac4d7e48ed843652f0e340242f96
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 14, 2026.

Transparency log

Security for easyresearch 0.1.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for easyresearch-0.1.1.tar.gz

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 14, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page