Skip to content

Instantly share code, notes, and snippets.

@DallasC
Created December 11, 2019 03:23
Show Gist options
  • Save DallasC/1d3d8b3fb5ee10322f140e642b78131c to your computer and use it in GitHub Desktop.
Save DallasC/1d3d8b3fb5ee10322f140e642b78131c to your computer and use it in GitHub Desktop.
Rust AI Algorithm Ecosystem

Interesting general purpose crates to consider

peroxide

Rust comprehensive scientific computation library contains linear algebra, numerical analysis, statistics and machine learning tools with farmiliar syntax

Bindings

faiss

Rust language bindings for Faiss, the state-of-the-art vector search and clustering library.

liblinear

Rust bindings for the liblinear C/C++ library. Provides a thin (but rustic) wrapper around the original C-interface exposed by the library.

glmnet

Rust API to the fortran glmnet library

Specific crates to consider

Clustering:

  • DBSCAN
    • rusty-machine
      General purpose machine learning library implemented entirely in Rust.
    • tinguely
      Machine learning library implemented entirely in Rust
    • rustml
      Library for doing machine learning in Rust
    • fuzzy_dbscan
      Implementation of the FuzzyDBSCAN algorithm
    • dbscan
      Basic dependency free implementation of DBSCAN
    • cogset
      Unmaintained (Latest commit Oct 14, 2015)
  • Spectral clustering
  • Hierarchical clustering
    • kodama
      Very good looking crate maybe get in contact with author?
  • OPTICS
    • cogset
      Unmaintained (Latest commit Oct 14, 2015)

Unsure where this goes for now

Clusterphobia

Algorithms and data structures for unassisted clustering that employ the Hilbert Curve. This enables scalable, high-dimensional, unassisted, flat, single classification of data.

Preprocessing:

  • PCA
    • rusty-machine
      General purpose machine learning library implemented entirely in Rust.
  • ICA
  • Normalisation
  • CountVectoriser
  • TFIDF
    • rust-tfidf
      Latest commit on Oct 6, 2016
    • tf-idf
      Latest commit on Mar 31, 2017
    • vtext
      NLP in Rust with Python bindings
    • rs-natural
      Natural Language Processing for Rust

Supervised Learning:

  • Linear regression
    • plr
      Performs greedy or optimal error-bounded piecewise linear regression (PLR) Very good looking crate that is maintained
    • linregress
      Ordinary least squared linear regression with some basic statistics Developed by the Computational Systems Medicine group at the Chair of Experimental Bioinformatics
    • linreg
      Calculates linear regresssions of two-dimensional data (simple linear regression). Does not use stdlib, only depends on numeric traits.
    • rusty-machine
      General purpose machine learning library implemented entirely in Rust.
    • tinguely
      Machine learning library implemented entirely in Rust
    • rustml
      Library for doing machine learning in Rust
  • Ridge regression
  • LASSO
  • Support vector machines
    • ffsvm
      Really Fast Support Vector Machine (Requires Nightly)
    • rustlearn
      A machine learning package for Rust Using the libsvm library for support vector machines
    • rusty-machine
      General purpose machine learning library implemented entirely in Rust.
    • tinguely
      Machine learning library implemented entirely in Rust
  • Nearest Neighbours
  • Gaussian processes
    • Friedrich
      A scalable Rust implementation of Gaussian Process regression. Good looking crate with active maintainer
    • rusty-machine
      General purpose machine learning library implemented entirely in Rust.
  • Decision trees
    • forester
      A crate for implementing various flavors of random forests and decision trees
    • stamm
      A library for implementing custom decision trees and random forests Looks unmaintained
    • trees
      General purpose tree data structures
    • rustlearn
      A machine learning package for Rust Using the CART algorithm,
  • Random forest
    • forester
      A crate for implementing various flavors of random forests and decision trees
    • randomforests
      A simple random forest classifier
    • stamm
      A library for implementing custom decision trees and random forests Looks unmaintained
    • trees
      General purpose tree data structures
    • rustlearn
      A machine learning package for Rust Using the CART algorithm for decision trees
  • Naive Bayes
    • naivebayes
      A simple Naive Bayes classifier
    • rust_nb
      A simple but generic Naive Bayes Model in Rust
    • classifier
      A simple naive Bayes classifier crate for probabilistically classifying text documents. Old (last updated Apr 10, 2015)
    • rusty-machine
      General purpose machine learning library implemented entirely in Rust.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment