machine learning with ruby

Curated list: Resources for machine learning in Ruby

2128
180
Ruby
Awesome Machine Learning with Ruby

Awesome Support Me

[RubyNLP |
RubyDataScience |
RubyInterop]

Awesome Machine Learning with Ruby

Curated List of Ruby Machine Learning Links and Resources

Machine Learning is a field of Computational Science -
often nested under AI research - with many practical
applications due to the ability of resulting algorithms to
systematically implement a specific solution without explicit
programmer’s instructions. Obviously many algorithms need a definition
of features to look at or a biggish training set of data to derive the
solution from.

This curated list comprises awesome libraries,
data sources, tutorials and presentations about Machine Learning
utilizing the Ruby programming language.

A lot of useful resources on this list come from the development by
The Ruby Science Foundation, our contributors and
our own day to day work on various ML applications.

✨ Every contribution is welcome! Add links through pull
requests or create an issue to start a discussion.

Follow us on Twitter and please spread
the word using the #RubyML hash tag!

Contents

✨ Tutorials

Please help us to fill out this section! 😃

Machine Learning Libraries

Machine Learning algorithms in pure Ruby or written in other
programming languages with appropriate bindings for Ruby.

Frameworks

  • LangChain.rb -
    Build ML/AI-supercharged applications with Ruby’s LangChain.
  • weka -
    JRuby bindings for Weka, different ML algorithms implemented through Weka.
  • ai4r -
    Artificial Intelligence for Ruby.
  • classifier-reborn -
    General classifier module to allow Bayesian and other types of classifications.
    [dep: GLS]
  • scoruby -
    Ruby scoring API for PMML (Predictive Model Markup Language).
  • rblearn - Feature Extraction and Crossvalidation library.
  • data_modeler -
    Model your data with machine learning. Ample test coverage, examples to start fast, complete documentation. Production ready since 1.0.0.
  • shogun - Polyfunctional and mature
    machine learning toolbox with Ruby bindings.
  • aws-sdk-machinelearning -
    Machine Learning API of the Amazon Web Services.
  • azure_mgmt_machine_learning -
    Machine Learning API of the Microsoft Azure.
  • machine_learning_workbench -
    Growing machine learning framework written in pure Ruby, high performance computing using
    Numo, CUDA bindings through Cumo.
    Currently implementating neural networks, evolutionary strategies, vector quantization, and plenty of
    examples and utilities.
  • Deep NeuroEvolution -
    Experimental setup based on the machine_learning_workbench
    towards searching for deep neural networks (rather than training) using evolutionary algorithms. Applications to the
    OpenAI Gym using PyCall.
  • rumale -
    Machine Learninig toolkit in Ruby with wide range of implemented algorithms
    (SVM, Logistic Regression, Linear Regression, Random Forest etc.) and
    interfaces similar to Scikit-Learn in Python.
  • eps - Bayesian Classification and Linear Regression with exports
    using PMML and an alternative backend using GSL.
  • ruby-openai - OpenAI API wrapper

Neural networks

  • neural-net-ruby -
    Neural network written in Ruby.
  • ruby-fann -
    Ruby bindings to the Fast Artificial Neural Network Library (FANN).
  • cerebrum -
    Experimental implementation for Artificial Neural Networks in Ruby.
  • tlearn-rb -
    Recurrent Neural Network library for Ruby.
  • brains -
    Feed-forward neural networks for JRuby based on
    brains.
  • machine_learning_workbench -
    Framework including pure-Ruby implementation of both feed-forward and recurrent neural networks
    (fully connected). Training available using neuroevolution (Natural Evolution Strategies algorithms).
  • rann -
    Flexible Ruby ANN implementation with backprop (through-time, for recurrent
    nets), gradient checking, adagrad, and parallel batch execution.

Deep learning

Kernel methods

Evolutionary algorithms

  • machine_learning_workbench -
    Framework including pure-Ruby implementations of Natural Evolution Strategy algorithms
    (black-box optimization), specifically Exponential NES (XNES),
    Separable NES (sNES), Block-Diagonal NES (BDNES) and more.
    Applications include neural network search/training (neuroevolution).
  • simple_ga -
    Simplest Genetic Algorithms implementation in Ruby.

Bayesian methods

  • linnaeus -
    Redis-backed Bayesian classifier.
  • naive_bayes -
    Simple Naive Bayes classifier.
  • nbayes -
    Full-featured, Ruby implementation of Naive Bayes.

Decision trees

Clustering

  • kmeans-clusterer -
    k-means clustering in Ruby.
  • k_means -
    Attempting to build a fast, memory efficient K-Means program.
  • knn -
    Simple K Nearest Neighbour Algorithm.

Linear classifiers

  • liblinear-ruby-swig -
    Ruby interface to LIBLINEAR (much more efficient than LIBSVM for text classification).
  • liblinear-ruby -
    Ruby interface to LIBLINEAR using SWIG.

Statistical models

  • rtimbl -
    Memory based learners from the Timbl framework.
  • lda-ruby -
    Ruby implementation of the LDA
    (Latent Dirichlet Allocation) for automatic Topic Modelling and Document Clustering.
  • maxent_string_classifier -
    JRuby maximum entropy classifier for string data, based on the OpenNLP Maxent framework.
  • omnicat -
    Generalized rack framework for text classifications.
  • omnicat-bayes -
    Naive Bayes text classification implementation as an OmniCat classifier strategy.
    [dep: bundled]

Gradient boosting

Vector search

  • flann -
    Ruby bindings for the FLANN (Fast Library for Approximate Nearest Neighbors).
    [flann]
  • annoy-rb -
    Ruby bindings for the Annoy (Approximate Nearest Neighbors Oh Yeah).
  • hnswlib.rb -
    Ruby bindings for the Hnswlib that implements approximate nearest neighbor search with Hierarchical Navigable Small World graphs.
  • ngt-ruby -
    Ruby bindings for the NGT (Neighborhood Graph and Tree for Indexing High-dimensional data).
  • milvus
    Ruby client for Milvus Vector DB.
  • pinecone
    Ruby client for Pinecone Vector DB.
  • qdrant-ruby
    Ruby wrapper for the Qdrant vector search database API.
  • weaviate-ruby
    Ruby wrapper for the Weaviate vector search database API.

Applications of machine learning

  • phashion -
    Ruby wrapper around pHash, the perceptual hash library for detecting duplicate multimedia files.
    [ImageMagick | libjpeg]

Data structures

If you’re going to implement your own ML algorithms you’re probably interested
in storing your feature sets efficiently. Look for appropriate
data structures
in our Data Science with Ruby list.

Data visualization

Please refer to the Data Visualization
section on the Data Science with Ruby list.

Articles, Posts, Talks, and Presentations

Projects and Code Examples

Heroku buildpacks

Books, Blogs, Channels

Community

Related Resources

License

Creative Commons Zero 1.0
Awesome ML with Ruby by Andrei Beliankou and
Contributors.

To the extent possible under law, the person who associated CC0 with
Awesome ML with Ruby has waived all copyright and related or neighboring rights
to Awesome ML with Ruby.

You should have received a copy of the CC0 legalcode along with this
work. If not, see https://creativecommons.org/publicdomain/zero/1.0/.