Fork me on GitHub

Machine learning in pure Go.
Planned, wave 3 of the go-scikit roadmap.

go-mlkit is the planned home of machine learning for go-scikit: clustering, classification and model selection, the parts of MATLAB's Statistics and Machine Learning Toolbox and Mathematica's FindClusters, Classify and Predict that no go-scikit organisation covers. It is in wave 3, together with go-statistics time series (PLAN.md item 15). There is no library and no release yet: this page says what is planned, in which wave, and against which references it will be validated.

planned wave 3no release yetCGO=0 pure Go
status
org      go-mlkit
domain   machine learning
status   planned (wave 3)
release  none yet
oracles  scikit-learn, statsmodels
plan     go-scikit/roadmap: PLAN.md, STATUS.md
Planned, wave 3: no library is released. The plan is PLAN.md, the state of each item STATUS.md.
What go-mlkit will cover

machine learning, in pure Go.

go-mlkit is the planned home of machine learning for go-scikit: clustering, classification and model selection, the parts of MATLAB's Statistics and Machine Learning Toolbox and Mathematica's FindClusters, Classify and Predict that no go-scikit organisation covers. It is in wave 3, together with go-statistics time series (PLAN.md item 15). Everything below is planned, not released.

โ—Ž

Clustering

k-means with k-means++ seeding, hierarchical clustering, DBSCAN, Gaussian mixtures fitted by EM.

๐ŸŒณ

Trees and forests

Decision trees, random forests and gradient boosting, from Breiman and Friedman.

โŸ‚

SVM and linear models

SMO and dual coordinate descent in the style of LIBSVM and LIBLINEAR; logistic regression and k-NN.

๐Ÿ“‰

PCA and factor analysis

Dimension reduction and rotations, the pca and factoran of MATLAB.

โœ“

Model selection

Cross-validation splitters, grid search and metrics.

๐Ÿงช

Validated against scikit-learn

With the same seeds and initialisation the partitions must equal scikit-learn's; metrics are compared to cross-validation noise.

๐Ÿ“ฆ

Pure Go, CGO=0

No cgo; the same on every architecture the fleet tests.

โš–๏ธ

BSD-3-Clause

scikit-learn, LIBSVM and LIBLINEAR are BSD-3 and can be ported; GPL tools are oracles only.

How it will be checked

3 kinds of check, each against a reference.

Every go-scikit library is validated against the tool that is the reference of its domain, run as an oracle from Go. These are the criteria planned for go-mlkit.

Clustering and classification

With a shared initialisation and seed, partitions must match scikit-learn exactly (adjusted Rand index equal to 1); otherwise accuracy within cross-validation noise.

Reference corpora

Datasets from the UCI Machine Learning Repository (iris, wine, digits and others), downloaded on demand with their per-dataset licences checked, not vendored.

Oracle harness

scikit-learn is run from Go with JSON on a pipe; the unit suite passes with no oracle installed.

Repositories

What is planned, and what is here.

mlkit

planned (wave 3)

Planned (wave 3). Clustering (k-means, DBSCAN, Gaussian mixtures), classification (SVM, trees, forests, boosting) and model selection (cross-validation), validated against scikit-learn. Repository layout not fixed.

docs

site

The documentation (Hugo + Hextra): the scope, the plan and the references of each planned library. Source โ†’

brand

assets

Logos and icons for the organization, in SVG / PNG / JPG / ICO / ICNS across colour, white and black variants.

machine learning for go-scikit.

go-mlkit is planned, wave 3. The documentation holds its scope, its plan and its references; the roadmap is PLAN.md.

Read the source on GitHub โ†’