libsvmffi 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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