/machine-learning-with-ruby

Useful resources for Machine Learning in Ruby.

Primary LanguageRubyCreative Commons Zero v1.0 UniversalCC0-1.0

[RubyNLP | RubyDataScience | RubyInterop]

Awesome Machine Learning with Ruby Awesome

A Curated List of Ruby Machine Learning Links and Resources

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. 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!

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

  • weka-jruby - 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]

Neural networks

Kernel methods

Bayesian methods

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

Decision trees

Clustering

  • 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.

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]

Applications of machine learning

  • scoruby - Ruby scoring API for PMML (Predictive Model Markup Language).
  • 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

  • Wine Clustering - Wine quality estimations clustered with different algorithms.
  • simple_ga - Basic (working) demo program on Genetic Algorithms in Ruby.

Heroku buildpacks

Books

Community

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.

Related Resources

Contributing

✨ 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! ✨

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:

  • Use one commit per addition (several commits per PR are OK).
  • Add everything to the bottom of the relevant category.
  • If required introduce new categories or improve the existing categorization.
  • Use the following format: - [title](link) - Distinguishing Description. <sup>[additional links]</sup>
  • Name the libraries exactly how they are required from the Ruby program, not after the Readme's title, e.g. treat, not Treat, since you do require "treat".
  • Break down long lines, check your spelling, capitalization, and punctuation.
  • Provide a useful titles and comments for your Pull Request (not Changed readme.md), mention the originator in the commit 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!

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.

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/.