libsvmffi 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|