-
Ruby interface to LIBLINEAR (using SWIG)
This is the Ruby LIBLINEAR SWIG (Simplified Wrapper and Interface Generator) interface. LIBLINEAR is a high performance machine learning library for large scale text mining(www.csie.ntu.edu.tw/~cjlin/liblinear).
A slightly modified version of LIBLINEAR 1.8 is included which allows turning on/off the default debuging/logging messages. You don’t need your own copy of SWIG to use this library - all needed files are generated using SWIG already.
LIBLINEAR is in use at tweetsentiments.com - A Twitter / Tweet sentiment analysis application
Currently the gem is available on linux and OS X, and you will need g++ installed to compile the native code.
sudo gem sources -a http://gems.github.com (you only have to do this once) sudo gem install tomz-liblinear-ruby-swig
Try the following multiclass problem in irb:
irb(main):001:0> require 'rubygems'
irb(main):002:0> require 'linear'
irb(main):003:0> pa = LParameter.new
irb(main):004:0> pa.solver_type = MCSVM_CS
irb(main):005:0> pa.eps = 0.1
irb(main):006:0> bias = 1
irb(main):007:0> labels = [1, 2, 1, 2, 3]
irb(main):008:0> samples = [
irb(main):009:1* {1=>0,2=>0.1,3=>0.2,4=>0,5=>0},
irb(main):010:1* {1=>0,2=>0.1,3=>0.3,4=>-1.2,5=>0},
irb(main):011:1* {1=>0.4,2=>0,3=>0,4=>0,5=>0},
irb(main):012:1* {1=>0,2=>0.1,3=>0,4=>1.4,5=>0.5},
irb(main):013:1* {1=>-0.1,2=>-0.2,3=>0.1,4=>1.1,5=>0.1}
irb(main):014:1> ]
irb(main):016:0> sp = LProblem.new(labels,samples,bias)
irb(main):017:0> m = LModel.new(sp, pa)
irb(main):018:0> pred = m.predict({1=>1,2=>0.1,3=>0.2,4=>0,5=>0})
=> 1
irb(main):019:0> pred = m.predict({1=>0,2=>0.1,3=>0.2,4=>0,5=>0})
=> 2
irb(main):020:0> pred = m.predict({1=>0,2=>0.1,3=>0.2,4=>0,5=>0})
=> 2
irb(main):025:0> pred = m.predict({1=>0.4,2=>0,3=>0,4=>0,5=>0})
=> 1
irb(main):021:0> pred = m.predict({1=>-0.1,2=>-0.2,3=>0.1,4=>1.1,5=>0.1})
=> 3
irb(main):022:0> m.save("test.model")
For more examples see test*.rb in the liblinear-ruby-swig/liblinear-1.8/ruby directory
Tom Zeng
-
tom.z.zeng at gmail dot com