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.
Files changed (2) hide show
  1. data/lib/libsvmffi/model.rb +39 -3
  2. metadata +3 -4
@@ -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 save(filename = "model.out")
111
- Libsvmffi.svm_save_model FFI::MemoryPointer.from_string(filename), @svm_model
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.1
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-05-01 00:00:00 Z
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.7.2
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