Skip to content

Supervised Learning with Mandatory Splits and Seeds

0packages depend
2.9Kdownloads / year
75.1%test coverage
12/13flavors OK

Overview

About

Implements the split-fit-evaluate-assess workflow from Hastie, Tibshirani, and Friedman (2009, ISBN:978-0-387-84857-0) "The Elements of Statistical Learning", Chapter 7. Provides three-way data splitting with automatic stratification, mandatory seeds for reproducibility, automatic data type handling, and 10 algorithms out of the box. Uses 'Rust' backend for cross-language deterministic splitting. Designed for tabular supervised learning with minimal ceremony. Polyglot parity with the 'Python' 'mlw' package on 'PyPI'.

Changes in 0.1.2

Fixed

  • Per-holdout assess enforcement: ml_assess() now rejects a second call on the same test partition regardless of which model calls it. The provenance registry tracks spent holdouts via content-addressed fingerprinting.
  • Fixed ml_prepare() return value extraction (X and norm fields).

New

  • ml_cv(), ml_cv_temporal(), ml_cv_group() for cross-validation.
  • ml_verify() for post-fit model verification.
  • ml_prepare() for explicit preprocessing.
  • Content-addressed provenance registry (rlang::hash fingerprinting).
  • Cross-verb provenance checks (train/test from same split).

From NEWS.md in the release

Install

Health

CRAN checks
1ERROR12OK
Check messages
ERRORtestsr-devel-windows-x86_64
Running 'testthat.R' [82s]
Running the tests in 'tests/testthat.R' failed.
Complete output:
  > library(testthat)
  > library(ml)
  > 
  > test_check("ml")
  -- Calibrated ml_model [classification | logistic | Platt scaling]
  Saved: D:\temp\2026_10_15_10_16_52_18621\RtmpQJZYWb\file5b7c01e6d62ec.html
  Saved: D:\temp\2026_10_15_10_16_52_18621\RtmpQJZYWb\file5b7c05a7d3349.html
  Saved: D:\temp\2026_10_15_10_16_52_18621\RtmpQJZYWb\file5b7c0796a3f91.html
  Saving _problems/test-screen-13.R
  [ FAIL 1 | WARN 1546 | SKIP 49 | PASS 1547 ]
  
  ══ Skipped tests (49) ══════════════════════════════════════════════════════════
  • Rust backend not available (44): 'test-rust.R:15:3', 'test-rust.R:26:3',
    'test-rust.R:38:3', 'test-rust.R:48:3', 'test-rust.R:63:3',
    'test-rust.R:72:3', 'test-rust.R:81:3', 'test-rust.R:92:3',
    'test-rust.R:102:3', 'test-rust.R:112:3', 'test-rust.R:124:3',
    'test-rust.R:134:3', 'test-rust.R:155:3', 'test-rust.R:164:3',
    'test-rust.R:173:3', 'test-rust.
...[truncated]...
3:3', 'test-rust.R:395:3',
    'test-rust.R:409:3', 'test-rust.R:425:3', 'test-rust.R:438:3',
    'test-rust.R:447:3', 'test-rust.R:463:3', 'test-rust.R:475:3',
    'test-rust.R:487:3', 'test-rust.R:498:3', 'test-rust.R:514:3',
    'test-rust.R:526:3', 'test-rust.R:538:3', 'test-rust.R:550:3'
  • empty test (2): 'test-parity-w3.R:163:1', 'test-screen.R:16:1'
  • gradient_boosting not available: algorithm='gradient_boosting'/'histgradient'
    requires the Rust backend. (2): 'test-workflow.R:195:5',
    'test-workflow.R:391:7'
  • logistic is clf-only — use linear for regression; tested separately (1):
    'test-predict.R:16:3'
  
  ══ Failed tests ════════════════════════════════════════════════════════════════
  ── Failure ('test-screen.R:13:3'): screen has time column (numeric, > 0) ───────
  Expected `all(lb$time > 0)` to be TRUE.
  Differences:
  `actual`:   FALSE
  `expected`: TRUE 
  
  
  [ FAIL 1 | WARN 1546 | SKIP 49 | PASS 1547 ]
  Error:
  ! Test failures.
  Execution halted

CRAN check page ↗

Slowest check: 6.7 min · r-oldrel-macos-x86_64
Status changes
  • ERROR12 OK, 1 ERROR2026-10-17
  • OK13 OK2026-08-06
  • ERROR11 OK, 1 NOTE, 1 ERROR2026-08-04
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK13 OK2026-07-23
Show 26 earlier changesHide 26 earlier changes
  • ERROR12 OK, 1 ERROR2026-07-19
  • OK13 OK2026-07-18
  • ERROR12 OK, 1 ERROR2026-07-16
  • OK13 OK2026-07-07
  • ERROR11 OK, 2 ERROR2026-07-03
  • OK13 OK2026-06-30
  • ERROR12 OK, 1 ERROR2026-06-29
  • OK13 OK2026-06-27
  • ERROR12 OK, 1 ERROR2026-06-24
  • OK13 OK2026-06-18
  • ERROR12 OK, 1 ERROR2026-06-16
  • OK13 OK2026-06-06
  • ERROR10 OK, 3 ERROR2026-06-01
  • OK13 OK2026-05-26
  • ERROR12 OK, 1 ERROR2026-05-24
  • OK13 OK2026-05-17
  • ERROR12 OK, 1 ERROR2026-05-09
  • OK13 OK2026-05-05
  • ERROR11 OK, 2 ERROR2026-04-28
  • OK14 OK2026-04-24
  • ERROR13 OK, 1 ERROR2026-04-16
  • OK14 OK2026-04-15
  • ERROR13 OK, 1 ERROR2026-04-11
  • OK14 OK2026-03-30
  • ERROR13 OK, 1 ERROR2026-03-29
  • OK5 OK2026-03-20
Advisories

none known

Documentation

In release 0.1.2
READMEYes · 520 wordsVignettesYes · 1 · dynamicNEWSYes · 100% structured · mentions 0.1.2Citation fileYes · software entry onlyWebsiteYes
Help pages
70 (16 internal)includes a package overview page
Examples that run
73%29 run in a plain check · 11 only when donttest examples are enabled (R CMD check --as-cran)
Exported functions with examples
100%
Documented parameters
100%
Return-value docs
100%
Help pages citing references
0%

Downloads

2.9K
CRAN downloads in the past year
Rank #11,560 · ~8/day · ~244/mo
Daily download trend is not available in this view yet.
35730 days
91990 days
2.9K1 year
Compare downloads with other packages →
Also on179 r2u6 autocran

Repository

epagogy/ml ↗Organization: epagogy
9Stars
1Forks
0Open issues
1Open PRs
0Releases
36Commits
2Commit identities
License file reads as MIT · 36 commits · Last activity 2026-04-03 · 0% stars, 30d
Responsiveness
How these are sampled
PRs merged (all time)
50%
Median days to close, 50 most recently updated closed issues
not measured
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2026-03-09 · 52026-07-07 · 9
PracticesBeta

7 development-tooling and community-health practices detected across 3 families in the upstream repository

Checks run against github.com/epagogy/ml on 2026-10-11.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux

Governance and community (4)
Code of conductContributing guideSecurity policyGovernance doc
Research and citation (1)
CITATION.cff
How this is detected·Detection ruleset v3 (2026-09-26)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Claude Codefirst seen on or before 2026-03-14
    Named in .gitignore: .claude, CLAUDE.md
    Commits: at least 1 crediting it in the message
Models named in its commits
  • Claude Opus 4.61 commit · Mar 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
17 external dependencies (excludes base and recommended)

Installing ml adds 3 packages (2 with compiled code, 1.5 MB of source tarballs). Heaviest: rlang 766 KB, cli 629 KB, withr 102 KB.

Depends (1)
R >= 4.1.0
Imports (5)
clirlangstatsutilswithr
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

Datasets

People & History

People (1)
Author, Maintainer since 0.1.2 (2026)
Releases (1)
  • R
    R 4.6.0 released · 2026-04-24
  • 0.1.2Latest
    2026-03-19 · current release
  • R
    R 4.5.0 released · 2025-04-11

Package metadata

First published
2026-03-19
Total releases
1 / 1 yrs
License
MIT + file LICENSE OSI
Minimum R
≥ 4.1.0
Download size
156 KB

Cite

Cite this package

Run in R for the authors' entry:

citation("ml")

The package provides a citation file, so citation() returns the authors' own entry.

It points to 10.5281/zenodo.19023838.

The repository also keeps a CITATION.cff.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for ml version 0.1.2 [Data set]. HJJB, LLC. Data release v2026-10-18. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-18, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy