libsvmffi 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/libsvmffi/model.rb +39 -3
- metadata +3 -4
data/lib/libsvmffi/model.rb
CHANGED
@@ -11,6 +11,8 @@ module Libsvmffi
|
|
11
11
|
|
12
12
|
attr_accessor :nodes, :x
|
13
13
|
|
14
|
+
TMP_MODEL_FILE = "/tmp/libsvm_model.out"
|
15
|
+
|
14
16
|
def initialize(options = {})
|
15
17
|
|
16
18
|
@parameters = Parameters.new
|
@@ -63,7 +65,7 @@ module Libsvmffi
|
|
63
65
|
@problem[:l] = @examples.length
|
64
66
|
@problem[:y] = FFI::MemoryPointer.new(:double, @problem[:l])
|
65
67
|
@x = FFI::MemoryPointer.new(:pointer, @problem[:l])
|
66
|
-
@problem[:x] = x.address #FFI::MemoryPointer.new(:pointer, @problem[:l])
|
68
|
+
@problem[:x] = @x.address #FFI::MemoryPointer.new(:pointer, @problem[:l])
|
67
69
|
@x_space = FFI::MemoryPointer.new(Node, @elements)
|
68
70
|
|
69
71
|
y = @examples.map {|e| e.keys.first}
|
@@ -104,11 +106,45 @@ module Libsvmffi
|
|
104
106
|
end
|
105
107
|
|
106
108
|
|
109
|
+
def marshal_dump
|
110
|
+
|
111
|
+
d = Marshal.dump @labels
|
112
|
+
d += "::::"
|
113
|
+
d += Marshal.dump @features
|
114
|
+
if !@svm_model.nil?
|
115
|
+
# TODO surely there is a better way to do this.
|
116
|
+
save_raw
|
117
|
+
raw_str = File.open(TMP_MODEL_FILE, "r").read
|
118
|
+
d += "::::"
|
119
|
+
d += raw_str
|
120
|
+
end
|
121
|
+
|
122
|
+
return d
|
123
|
+
end
|
124
|
+
|
125
|
+
def marshal_load(str)
|
126
|
+
@labels, @features, raw_model = str.split("::::")
|
127
|
+
|
128
|
+
@labels = Marshal.load @labels
|
129
|
+
@features = Marshal.load @features
|
130
|
+
|
131
|
+
File.open(TMP_MODEL_FILE, "w") {|f| f.write raw_model}
|
132
|
+
restore_raw
|
133
|
+
end
|
134
|
+
|
107
135
|
#
|
108
136
|
# Save to file
|
109
137
|
#
|
110
|
-
def
|
111
|
-
Libsvmffi.svm_save_model FFI::MemoryPointer.from_string(
|
138
|
+
def save_raw
|
139
|
+
Libsvmffi.svm_save_model FFI::MemoryPointer.from_string(TMP_MODEL_FILE), @svm_model
|
140
|
+
end
|
141
|
+
|
142
|
+
#
|
143
|
+
# Restore a model from a file.
|
144
|
+
# NOTE: currently does not restore pre-train data
|
145
|
+
#
|
146
|
+
def restore_raw
|
147
|
+
@svm_model = Libsvmffi.svm_load_model FFI::MemoryPointer.from_string(TMP_MODEL_FILE)
|
112
148
|
end
|
113
149
|
|
114
150
|
#
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: libsvmffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Robert Berry
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-07-10 00:00:00 Z
|
14
14
|
dependencies: []
|
15
15
|
|
16
16
|
description: SVM operations.
|
@@ -52,10 +52,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements: []
|
53
53
|
|
54
54
|
rubyforge_project:
|
55
|
-
rubygems_version: 1.
|
55
|
+
rubygems_version: 1.8.5
|
56
56
|
signing_key:
|
57
57
|
specification_version: 3
|
58
58
|
summary: Libsvm ffi bindings
|
59
59
|
test_files: []
|
60
60
|
|
61
|
-
has_rdoc: false
|