Skip to content

ML Verbs

Generic interfaces for machine learning models.

This is a work-in-progress experimental project of @nowanilfideme

Motivation

Things I've disliked about various ML libraries:

  • Specific data (dataframe) types for inputs and outputs.
  • Operations that mutate in place.
  • Assumptions on the interface, columns, etc. that are too specific.
  • No way to consistently get parameters.
  • Difficult to serialize long-term (pickle doesn't count!)
  • Limited number of available operations.
  • Difficult to use with static checks.

I've also gotten quite envious of Julia, where they have a wonderful generic data interface called Tables.jl that their whole stats and ML community has embraced. Many of the libraries still are quite "hacky", as seems to be the Julia ethos, but all the tools/params being available to the user (because implementation and usage is in the same language) is great. Sadly, I can't use or even test Julia at my day job (nobody knows Julia, so nobody to support).

High-Level Design

This package is meant to define "verbs" that we use in Machine Learning. In this case, a "verb" is an abstract @runtime_checkable Protocol interface.