A 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.
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. Read why this list is awesome.
Follow us on Twitter and please spread
the word using the
#RubyML hash tag!
- Machine Learning Libraries
- Applications of machine learning
- Data structures
- Data visualization
- Articles, Posts, Talks, and Presentations
- Projects and Code Examples
- Heroku buildpacks
- Books, Blogs, Channels
- Needs your Help!
- Related Resources
- Wait but why?
Please help us to fill out this section!
- How to implement linear regression in Ruby [code]
- How to implement classification using logistic regression in Ruby
- How to implement simple binary classification using a Neural Network in Ruby [code]
- How to implement classification using a SVM in Ruby [code]
- Unsupervised learning using k-means clustering in Ruby [code]
- Teaching an AI to play a simple game using Q-Learning in Ruby [code]
- Teaching a Neural Network to play a game using Q-Learning in Ruby [code]
- Using the Python scikit-learn machine learning library in Ruby using PyCall [code]
- How to evolve neural networks in Ruby using the Machine Learning Workbench
Machine Learning Libraries
Machine Learning algorithms in pure Ruby or written in other programming languages with appropriate bindings for Ruby.
- 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 and enormous documentation.
- 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.
- 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.
- 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.
- linnaeus - Redis-backed Bayesian classifier.
- naive_bayes - Simple Naive Bayes classifier.
- nbayes - Full-featured, Ruby implementation of Naive Bayes.
- flann - Fast Library for Approximate Nearest Neighbors. [flann]
- 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.
- liblinear-ruby-swig - Ruby interface to LIBLINEAR (much more efficient than LIBSVM for text classification).
- liblinear-ruby - Ruby interface to LIBLINEAR using SWIG.
- 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]
Applications of machine learning
- phashion - Ruby wrapper around pHash, the perceptual hash library for detecting duplicate multimedia files. [ImageMagick | libjpeg]
Articles, Posts, Talks, and Presentations
- Practical Machine Learning with Ruby by Jordan Hudgens [tutorial]
- Deep Learning: An Introduction for Ruby Developers by Geoffrey Litt [slides]
- How I made a pure-Ruby word2vec program more than 3x faster by Kei Sawada [slides]
- Dōmo arigatō, Mr. Roboto: Machine Learning with Ruby by Eric Weinstein [slides | video]
- Building a Recommendation Engine with Machine Learning Techniques by Brian Sam-Bodden [video]
✨SciRuby Machine Learning: Current Status and Future by Kenta Murata [slides | video: jp]
- Ruby Roundtable: Intro to Tensorflow by RubyThursday [video]
Projects and Code Examples
- Wine Clustering - Wine quality estimations clustered with different algorithms.
- simple_ga - Basic (working) demo of Genetic Algorithms in Ruby.
Books, Blogs, Channels
- Kirk, Matthew. Thoughtful Machine Learning: A Test-Driven Approach. O'Reilly, 2014. [Amazon | code]
- Practical Artificial Intelligence - Blog about Artificial Intelligence and Machine Learning with tutorials and code samples in Ruby.
Needs your Help!
All projects in this section are really important for the community but need more attention. Please if you have spare time and dedication spend some hours on the code here.
GSL (GNU Scientific Library)
brew install gsl
brew tap homebrew/science && brew install opencv
brew install graphviz
brew install gnuplot --with-x11
ImageMagick && libjpeg
brew install imagemagick && brew install libjpeg
brew tap homebrew/science && brew install r
brew tap homebrew/science && brew install octave --without-docs
- scikit-learn algorithm cheatsheet
- Awesome Ruby - Among other awesome items a short list of NLP related projects.
- Ruby NLP - State-of-Art collection of Ruby libraries for NLP.
- Speech and Natural Language Processing - General List of NLP related resources (mostly not for Ruby programmers).
- Scientific Ruby - Linear Algebra, Visualization and Scientific Computing for Ruby.
- iRuby - IRuby kernel for Jupyter (formelly IPython).
- Kiba - Lightweight ETL (Extract, Transform, Load) pipeline.
- Awesome OCR - Multitude of OCR (Optical Character Recognition) resources.
- Awesome TensorFlow - Machine Learning with TensorFlow libraries.
- rb-gsl - Ruby interface to the GNU Scientific Library.
- The Definitive Guide to Ruby's C API - Modern Reference and Tutorial on Embedding and Extending Ruby using C programming language.
Wait but why?
There are a lot of software lists with ML related tools. There are a couple of lists with Ruby related projects. There are no lists of only working and tested software with documented scope. We'll try to make one!
What is awesome? Awesome are documented, maintained and focused tools.
Can something turn not awesome at a point? Yes! Abandoned projects with broken dependencies aren't awesome any more! They leave this list.
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
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/.