plastictrophy-libsvm-ruby-swig 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +3 -0
- data/COPYING +24 -0
- data/History.txt +7 -0
- data/Manifest.txt +12 -0
- data/README.rdoc +60 -0
- data/Rakefile +39 -0
- data/ext/Makefile +30 -0
- data/ext/extconf.rb +10 -0
- data/ext/libsvm_wrap.cxx +4405 -0
- data/ext/svm.cpp +3069 -0
- data/ext/svm.h +76 -0
- data/lib/svm.rb +356 -0
- metadata +77 -0
data/AUTHORS
ADDED
data/COPYING
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
== LICENSE:
|
2
|
+
|
3
|
+
(The MIT License)
|
4
|
+
|
5
|
+
Copyright (c) 2009 Tom Zeng
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
'Software'), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
21
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
22
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
23
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
24
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/History.txt
ADDED
data/Manifest.txt
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
= libsvm-ruby-swig
|
2
|
+
|
3
|
+
* Ruby interface to LIBSVM (using SWIG)
|
4
|
+
* http://www.tomzconsulting.com
|
5
|
+
* http://tweetsentiments.com
|
6
|
+
|
7
|
+
== DESCRIPTION:
|
8
|
+
|
9
|
+
This is the Ruby port of the LIBSVM Python SWIG (Simplified Wrapper and
|
10
|
+
Interface Generator) interface.
|
11
|
+
|
12
|
+
A slightly modified version of LIBSVM 2.89 is included, it allows turrning on/off
|
13
|
+
the debug log. You don't need your own copy of SWIG to use this library - all
|
14
|
+
needed files are generated using SWIG already.
|
15
|
+
|
16
|
+
Look for the README file in the ruby subdirectory for instructions.
|
17
|
+
The binaries included were built under Ubuntu Linux 2.6.24-23-generic,
|
18
|
+
you should run make under the libsvm-2.89 and libsvm-2.89/ruby
|
19
|
+
directories to regenerate the executables for your environment.
|
20
|
+
|
21
|
+
LIBSVM is in use at http://tweetsentiments.com - A Twitter / Tweet sentiment
|
22
|
+
analysis application
|
23
|
+
|
24
|
+
== INSTALL:
|
25
|
+
Currently the gem is available on linux only(tested on Ubuntu 8 and Fedora 9/10,
|
26
|
+
and on OS X by danielsdeleo), and you will need g++ installed to compile the
|
27
|
+
native code.
|
28
|
+
|
29
|
+
sudo gem sources -a http://gems.github.com (you only have to do this once)
|
30
|
+
sudo gem install tomz-libsvm-ruby-swig
|
31
|
+
|
32
|
+
== SYNOPSIS:
|
33
|
+
|
34
|
+
Quick Interactive Tutorial using irb (adopted from the python code from Toby
|
35
|
+
Segaran's "Programming Collective Intelligence" book):
|
36
|
+
|
37
|
+
irb(main):001:0> require 'svm'
|
38
|
+
=> true
|
39
|
+
irb(main):002:0> prob = Problem.new([1,-1],[[1,0,1],[-1,0,-1]])
|
40
|
+
irb(main):003:0> param = Parameter.new(:kernel_type => LINEAR, :C => 10)
|
41
|
+
irb(main):004:0> m = Model.new(prob,param)
|
42
|
+
irb(main):005:0> m.predict([1,1,1])
|
43
|
+
=> 1.0
|
44
|
+
irb(main):006:0> m.predict([0,0,1])
|
45
|
+
=> 1.0
|
46
|
+
irb(main):007:0> m.predict([0,0,-1])
|
47
|
+
=> -1.0
|
48
|
+
irb(main):008:0> m.save("test.model")
|
49
|
+
irb(main):009:0> m2 = Model.new("test.model")
|
50
|
+
irb(main):010:0> m2.predict([0,0,-1])
|
51
|
+
=> -1.0
|
52
|
+
|
53
|
+
== AUTHOR:
|
54
|
+
|
55
|
+
Tom Zeng
|
56
|
+
- http://twitter.com/tomzeng
|
57
|
+
- http://www.tomzconsulting.com
|
58
|
+
- http://www.linkedin.com/in/tomzeng
|
59
|
+
- tom.z.zeng _at_ gmail _dot_ com
|
60
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'hoe', '>= 2.1.0'
|
3
|
+
require 'hoe'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
Hoe.plugin :newgem
|
7
|
+
|
8
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
9
|
+
$hoe = Hoe.spec 'libsvm-ruby-swig' do
|
10
|
+
self.developer 'Tom Zeng', 'tom.z.zeng@gmail.com'
|
11
|
+
# self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
12
|
+
self.rubyforge_name = nil # TODO this is default value
|
13
|
+
# self.extra_deps = [['activesupport','>= 2.0.2']]
|
14
|
+
self.version = '0.3.3'
|
15
|
+
self.url = 'http://www.tomzconsulting.com'
|
16
|
+
self.description = 'Ruby wrapper of LIBSVM using SWIG'
|
17
|
+
self.spec_extras[:extensions] = "ext/extconf.rb"
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
task :default => ["sync_files","make_gem"]
|
22
|
+
|
23
|
+
task :make_gem do
|
24
|
+
Dir.chdir "ext" do
|
25
|
+
ruby "extconf.rb"
|
26
|
+
sh "make"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
task :sync_files do
|
31
|
+
cp "libsvm-2.89/svm.h","ext/"
|
32
|
+
cp "libsvm-2.89/svm.cpp","ext/"
|
33
|
+
cp "libsvm-2.89/ruby/libsvm_wrap.cxx","ext/"
|
34
|
+
cp "libsvm-2.89/ruby/svm.rb","lib/"
|
35
|
+
end
|
36
|
+
|
37
|
+
task :test do
|
38
|
+
puts "done"
|
39
|
+
end
|
data/ext/Makefile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
CXX? = g++
|
2
|
+
SWIG ?= swig
|
3
|
+
|
4
|
+
#Windows: see ../README ../Makefile.win
|
5
|
+
RUBY_INCLUDEDIR ?= /usr/lib/ruby/1.8/universal-darwin9.0/
|
6
|
+
|
7
|
+
CFLAGS = -O3 -I$(RUBY_INCLUDEDIR) -I.. -arch i386
|
8
|
+
#LDFLAGS = -shared
|
9
|
+
# Mac OS
|
10
|
+
LDFLAGS = -framework Ruby -bundle
|
11
|
+
|
12
|
+
all: libsvm.bundle
|
13
|
+
|
14
|
+
libsvm.bundle: libsvm_wrap.o svm.o
|
15
|
+
$(CXX) $(LDFLAGS) -o libsvm.bundle libsvm_wrap.o svm.o
|
16
|
+
|
17
|
+
libsvm_wrap.o: svm.h
|
18
|
+
$(CXX) $(CFLAGS) -fPIC -c libsvm_wrap.cxx
|
19
|
+
|
20
|
+
svm.o: svm.cpp svm.h
|
21
|
+
$(CXX) $(CFLAGS) -fPIC -c svm.cpp
|
22
|
+
|
23
|
+
clean:
|
24
|
+
rm -f *~ *.o *.bundle svm.o
|
25
|
+
|
26
|
+
moreclean: clean
|
27
|
+
rm -f libsvm_wrap.c??
|
28
|
+
|
29
|
+
install:
|
30
|
+
cp libsvm.bundle ../lib/
|
data/ext/extconf.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# require 'mkmf'
|
2
|
+
#
|
3
|
+
# CONFIG["CC"] = "g++"
|
4
|
+
# $CFLAGS = "#{ENV['CFLAGS']} -Wall -O3 -arch i386 -arch ppc"
|
5
|
+
# if CONFIG["MAJOR"].to_i >= 1 && CONFIG["MINOR"].to_i >= 8
|
6
|
+
# $CFLAGS << " -DHAVE_DEFINE_ALLOC_FUNCTION"
|
7
|
+
# end
|
8
|
+
# create_makefile('libsvm')
|
9
|
+
#
|
10
|
+
# `make`
|