[RubyNLP | RubyDataScience | RubyInterop]
Useful resources for machine learning in Ruby
This curated list comprises awesome libraries, data sources, tutorials and presentations about Machine Learning utilizing the Ruby programming language.
Everything in this list comes from our day to day work on various ML applications. Read why this list is awesome.
✨ 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!
- Machine Learning Libraries
- Data Structures
- Data Visualization
- Articles, Posts, Talks, and Presentations
- Projects and Code Examples
- Heroku buildpacks
- Books
- Community
- Needs your Help!
- Related Resources
- Contributing
- Wait but why?
- License
Machine Learning Algorithms in pure Ruby or written in other programming languages with appropriate bindings for Ruby.
- rb-libsvm - Support Vector Machines with Ruby and the LIBSVM library. [dep: bundled]
- weka-jruby - JRuby bindings for Weka, different ML algorithms implemented through Weka.
- decisiontree - Decision Tree ID3 Algorithm in pure Ruby. [dep: GraphViz | post].
- rtimbl - Memory based learners from the Timbl framework.
- classifier-reborn - General classifier module to allow Bayesian and other types of classifications. [dep: GLS]
- lda-ruby - Ruby implementation of the LDA (Latent Dirichlet Allocation) for automatic Topic Modelling and Document Clustering.
- liblinear-ruby-swig - Ruby interface to LIBLINEAR (much more efficient than LIBSVM for text classification).
- linnaeus - Redis-backed Bayesian classifier.
- maxent_string_classifier - JRuby maximum entropy classifier for string data, based on the OpenNLP Maxent framework.
- naive_bayes - Simple Naive Bayes classifier.
- nbayes - Full-featured, Ruby implementation of Naive Bayes.
- omnicat - Generalized rack framework for text classifications.
- omnicat-bayes - Naive Bayes text classification implementation as an OmniCat classifier strategy.
- ruby-fann - Ruby bindings to the Fast Artificial Neural Network Library (FANN). [dep: bundled]
- scoruby - Ruby scoring API for PMML (Predictive Model Markup Language).
- tlearn-rb - Recurrent Neural Network library for Ruby.
- 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.
- neural-net-ruby - A neural network, written in Ruby.
- liblinear-ruby - Ruby interface to LIBLINEAR using SWIG.
- PCA - Principal component analysis (PCA) in Ruby.
- phashion - Ruby wrapper around pHash, the perceptual hash library for detecting duplicate multimedia files. [ImageMagick | libjpeg]
- Cerebrum - Artificial Neural Networks in Ruby.
- flann - Fast Library for Approximate Nearest Neighbors. [flann]
- ai4r - Artificial Intelligence for Ruby.
- narray - Ruby/NArray: N-dimensional Numerical Array for Ruby.
- NMatrix - Dense and sparse linear algebra library for Ruby via SciRuby.
- kdtree - Blazingly fast, native, 2d kdtree.
Please refer to the Data Visualization section on the Data Science with Ruby list.
-
2017
- Scientific Computing on JRuby by Prasun Anand [slides | video | slides | slides]
-
2016
- 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]
-
2015
- Machine Learning made simple with Ruby by Lorenzo Masini [post]
- Machine Learning made simple with Ruby by Lorenzo Masini [tutorial]
- Using Ruby Machine Learning to Find Paris Hilton Quotes by Rick Carlino [tutorial]
-
2014
- Test Driven Neural Networks by Matthew Kirk [video]
- Five machine learning techniques that you can use in your Ruby apps today by Benjamin Curtis [video | slides]
-
2013
- Sentiment Analysis using Support Vector Machines in Ruby by Matthew Kirk [video]
- Recommender Systems with Ruby by Marcel Caraciolo [slides]
-
2012
- Machine Learning with Ruby, Part One by Vasily Vasinov [tutorial]
- Recurrent Neural Networks in Ruby by Joseph Wilk [post]
- Recommendation Engines using Machine Learning, and JRuby by Matthew Kirk [video]
-
2011
- Clustering in Ruby by Colin Drake [post]
-
2010
- bayes_motel – Bayesian classification for Ruby by Mike Perham [post]
-
2009
-
2008
- Support Vector Machines (SVM) in Ruby by Ilya Grigorik [post]
-
2007
- Decision Tree Learning in Ruby by Ilya Grigorik [post]
- Going the Distance - Implementations of various distance algorithms with example calculations.
- Named entity recognition with Stanford NER and Ruby - NER Examples in Ruby and Java with some explanations.
- Words Counted - examples of customizable word statistics powered by words_counted.
- https://github.com/hexgnu/rmw-svm
- https://github.com/hexgnu/wine_clustering
- Kirk, Matthew. Thoughtful Machine Learning: A Test-Driven Approach. O'Reilly, 2014. [Amazon | code]
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
-
OpenCV
brew tap homebrew/science && brew install opencv
-
Graphviz
brew install graphviz
-
Gnuplot
brew install gnuplot --with-x11
- X11/XQuartz
-
ImageMagick && libjpeg
brew install imagemagick && brew install libjpeg
-
R
brew tap homebrew/science && brew install r
-
Octave
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.
- - xxx.
✨ We are very glad to see you in this section! ✨
Before you go ahead you should know that your contributions will be published under
the terms of the CC0
license.
Have you just found a spelling error? Need to fix indentation? Send us a pull request! ✨
If you have discovered something cool, but don't know exactly if it suits the awesome definition submit a pull request to the inbox. We'll consider your addition and format it for you! 😃
💥 If you know something pretty cool, it suits the awesome definition, works for you and seems to be useful for the community please add it to the main list. In this case please ensure your pull request adheres to the following guidelines:
- Add everything to the bottom of the relevant category.
- Use the following format:
- [title](link) - Description. <sup>[additional links]</sup>
- Provide a description on why this stuff is useful (distinctive features like coverage, speed, stability are welcome).
- Name the libraries exactly how they are required from the Ruby program, not
after the Readme's title, e.g.
treat
, notTreat
, since you dorequire "treat"
. - Break down long lines.
- Check your spelling, capitalization, and punctuation and trailing whitespace.
- Introduce new categories or improve the existing categorization if required.
- Provide a useful title and comments for your Pull Request (not
Changed readme.md
). - Mention the originator in the PR message if possible, e.g.
Added the neuroevo lib by @giuse.
- Add the topic
rubyml
to your repository or open an issue and kindly ask the originator of the project to do so (if applicable for your submission).
Sometimes we will ask you to edit your Pull Request before it is included. This is normally due to spelling errors or because your PR didn't match these guidelines.
Here is a write up on how to change a Pull Request and the different ways you can do that.
👍 Thank you for your suggestions!
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.
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/.