Search Shortcut cmd + k | ctrl + k
mlpack

Connecting duckdb to the mlpack C++ machine learning library

Maintainer(s): eddelbuettel

Installing and Loading

INSTALL mlpack FROM community;
LOAD mlpack;

Example

-- Perform adaBoost (using weak learner 'Perceptron' by default)
-- Read 'features' into 'X', 'labels' into 'Y', use optional parameters
-- from 'Z', and prepare model storage in 'M'
CREATE TABLE X AS SELECT * FROM read_csv("https://eddelbuettel.github.io/duckdb-mlpack/data/iris.csv");
CREATE TABLE Y AS SELECT * FROM read_csv("https://eddelbuettel.github.io/duckdb-mlpack/data/iris_labels.csv");
CREATE TABLE Z (name VARCHAR, value VARCHAR);
INSERT INTO Z VALUES ('iterations', '50'), ('tolerance', '1e-7');
CREATE TABLE M (key VARCHAR, json VARCHAR);

-- Train model for 'Y' on 'X' using parameters 'Z', store in 'M'
CREATE TEMP TABLE A AS SELECT * FROM mlpack_adaboost("X", "Y", "Z", "M");

-- Count by predicted group
SELECT COUNT(*) as n, predicted FROM A GROUP BY predicted;

-- Model 'M' can be used to predict
CREATE TABLE N (x1 DOUBLE, x2 DOUBLE, x3 DOUBLE, x4 DOUBLE);
-- inserting approximate column mean values
INSERT INTO N VALUES (5.843, 3.054, 3.759, 1.199);
-- inserting approximate column mean values, min values, max values
INSERT INTO N VALUES (5.843, 3.054, 3.759, 1.199), (4.3, 2.0, 1.0, 0.1), (7.9, 4.4, 6.9, 2.5);
-- and this predict one element each
SELECT * FROM mlpack_adaboost_pred("N", "M");

About mlpack

Supervised Learning

The mlpack extension allows to fit (or train) and predict (or classify) from the models implemented, currently adaBoost, random forests as well as (regularized) linear and logistic regression. The format is the same for these four methods: four tables, say, "X", "Y", "Z" and "M" provide input for, respectively, features "X", labels "Y", optional parameters varying by model in "Z" as well as an output table "M" for the JSON-serialized model. For all four methods, following a model fit (or training), a prediction (or classification) can be made using "M" and new predictor values "N" as shown in the example. All these "fit" (or "train") methods take four parameter tables, all "predict" methods take two.

Unsupervised Learning

A kmeans clustering method is also available. It uses three tables for data, parameters and results.

General Information

A pair of paramaters "mlpack_verbose" (to show additional data) and "mlpack_silent" (to suppress display of minimal summaries) can also be set.

The implementation still stresses the 'minimal' part of 'a (initial) MVP demo' (where MVP stands for 'minimally viable product'). It wraps five supervised and unsupervised machine learning methods, and provides Linux and macOS builds. More methods, options or parameters can be added quite easily. As interfaces may change while we may work out how to automate interface generation from mlpack itself, it should be considered experimental.

For more, please see the repo.

Added Functions

function_name function_type description comment examples
mlpack_adaboost_train table use adaboost to train and store model parameters 'iterations', 'tolerance', 'perceptronIter' and 'silent' NULL
mlpack_adaboost_pred table predict classification using stored adaboost stored model NULL NULL
mlpack_linear_regression_fit table fit and store linear regression model parameters 'lambda', 'intercept' and 'silent' NULL
mlpack_linear_regression_pred table predict using stored linear regression model NULL NULL
mlpack_logistic_regression_fit table fit and store logistic regression model parameters 'lambda', 'intercept' and 'silent' NULL
mlpack_logistic_regression_pred table predict classification using stored logistic regression model NULL NULL
mlpack_random_forest_train table use random forest to train and store model parameters 'nclasses', 'ntrees', 'seed', 'threads' and 'silent' NULL
mlpack_random_forest_pred table predict classification using stored random forest model NULL NULL
mlpack_kmeans table NULL NULL NULL
mlpack_mlpack_version scalar NULL NULL NULL
mlpack_armadillo_version scalar NULL NULL NULL

Added Settings

name description input_type scope aliases
mlpack_silent Toggle whether to operate in silent mode, default is false BOOLEAN GLOBAL []
mlpack_verbose Toggle whether to operate in verbose mode, default is false BOOLEAN GLOBAL []