[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.
    
    
      :sparkles: 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
    
    
    
    
    :sparkles: Tutorials
    
      Please help us to fill out this section! :smiley: -
      Ruby neural networks
      -
      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.
    
    Frameworks
    
      - 
        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.
      
 
    
    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
    
      - 
        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.
      
 
      - 
        annoy-rb - bindings
        for the
        Annoy (Approximate
        Nearest Neighbors Oh Yeah).
      
 
    
    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
    
    
      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
    
    
      - 
        2019
        
          - 
            TensorStream: Bringing Machine Learning to Ruby by
            Joseph Emmanuel Dayo
            [post]
          
 
          - 
            Easy machine learning with Ruby using SVMKit by
            [@kojix](https://twitter.com/kojix2dayo)
            [post]
          
 
        
       
      - 
        2018
        
      
 
      - 
        2017
        
      
 
      - 
        2016
        
      
 
      - 
        2015
        
      
 
      - 
        2014
        
      
 
      - 
        2013
        
      
 
      - 
        2012
        
      
 
      - 
        2011
        
      
 
      - 
        2010
        
      
 
      2009
 
      - 
        2008
        
      
 
      - 
        2007
        
      
 
    
    Projects and Code Examples
    
    Heroku buildpacks
    
    Books, Blogs, Channels
    
    
    
    
    
    License
    
      
      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/.