Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/febeling/rb-libsvm

Ruby language bindings for LIBSVM
https://github.com/febeling/rb-libsvm

libsvm machine-learning ml ruby ruby-bindings ruby-language-bindings rubyml svm svm-classifier svm-learning svm-training

Last synced: about 2 months ago
JSON representation

Ruby language bindings for LIBSVM

Awesome Lists containing this project

README

        

[![Gem Version](https://badge.fury.io/rb/rb-libsvm.svg)](http://badge.fury.io/rb/rb-libsvm)

# rb-libsvm -- Ruby language bindings for LIBSVM

This package provides Ruby bindings to the [LIBSVM][] library. SVM
is a machine learning and classification algorithm, and LIBSVM is a
popular free implementation of it, written by Chih-Chung Chang and
Chih-Jen Lin, of National Taiwan University, Taipei. See the book ["Programming
Collective Intelligence,"](http://books.google.com/books?id=fEsZ3Ey-Hq4C) among others, for a usage example.

There is a JRuby implementation of this gem named
[jrb-libsvm](https://github.com/sch1zo/jrb-libsvm) by
[Andreas Eger](https://github.com/sch1zo).

Note: There exist some other Ruby bindings for LIBSVM. One is named
[Ruby SVM][ruby-svm], written by Rudi Cilibrasi. The other, more
actively developed one is [libsvm-ruby-swig][svmrubyswig] by Tom Zeng,
which is built using SWIG.

LIBSVM includes a number of command line tools for preprocessing
training data and finding parameters. These tools are not included in
this gem. You should install the original package if you need them.

It is helpful to consult the [README of the LIBSVM][README] package for
reference when configuring the training parameters.

Currently this package includes libsvm version 3.24.

## Dependencies

None. LIBSVM is bundled with the project. Just install and go!

## Installation

For building this gem from source on OS X (which is the default
packaging) you will need to have Xcode installed, and from within Xcode
you need to install the command line tools. Those contain the compiler
which is necessary for the native code, and similar tools.

To install the gem run this command

gem install rb-libsvm

## Usage

This is a short example of how to use the gem.

```ruby
require 'libsvm'

# This library is namespaced.
problem = Libsvm::Problem.new
parameter = Libsvm::SvmParameter.new

parameter.cache_size = 1 # in megabytes

parameter.eps = 0.001
parameter.c = 10

examples = [ [1,0,1], [-1,0,-1] ].map {|ary| Libsvm::Node.features(ary) }
labels = [1, -1]

problem.set_examples(labels, examples)

model = Libsvm::Model.train(problem, parameter)

pred = model.predict(Libsvm::Node.features(1, 1, 1))
puts "Example [1, 1, 1] - Predicted #{pred}"
```

If you want to rely on Bundler for loading dependencies in a project,
(i.e. use `Bundler.require` or use an environment that relies on it,
like Rails), then you will need to specify rb-libsvm in the Gemfile
like this:

```ruby
gem 'rb-libsvm', require: 'libsvm'
```

This is because the loadable name (`libsvm`) is different from the
gem's name (`rb-libsvm`).

## Release

The process to make a release of the gem package to rubygems.org has a
number of steps.

* manually change the version in `lib/libsvm/version.rb`
* clean, build, and run tests successfully
* update code and documentation
* push
* sign into https://rubygems.org/
* save API token from https://rubygems.org/profile/edit and store in `.gem/credentials` by running `gem signin`
* perform actual release: `bundle exec rake release`

## Author

Written by [C. Florian Ebeling](https://github.com/febeling).

## Contributors

* [Rimas Silkaitis](https://github.com/neovintage)
* [Aleksander Pohl](https://github.com/apohllo)
* [Andreas Eger](https://github.com/sch1zo)

## License

This software can be freely used under the terms of the MIT license,
see file MIT-LICENSE.

This package includes the source of LIBSVM, which is free to use under
the license in the file LIBSVM-LICENSE.

### Posts about using SVMs with Ruby

https://www.practicalai.io/implementing-classification-using-a-svm-in-ruby/

http://neovintage.blogspot.com/2011/11/text-classification-using-support.html

http://www.igvita.com/2008/01/07/support-vector-machines-svm-in-ruby/

[libsvm]: http://www.csie.ntu.edu.tw/~cjlin/libsvm/

[svmrubyswig]: http://github.com/tomz/libsvm-ruby-swig/tree/master

[ruby-svm]: http://sourceforge.net/projects/rubysvm/

[README]: https://github.com/cjlin1/libsvm/blob/master/README