Module: Liblinear

Included in:
Model, Parameter, Problem
Defined in:
lib/liblinear.rb,
lib/liblinear/error.rb,
lib/liblinear/model.rb,
lib/liblinear/problem.rb,
lib/liblinear/version.rb,
lib/liblinear/parameter.rb

Defined Under Namespace

Classes: InvalidParameter, Model, Parameter, Problem

Constant Summary collapse

VERSION =
'0.0.1'

Instance Method Summary collapse

Instance Method Details

#convert_to_feature_node_array(example, max_value_index, bias = -1)) ⇒ Liblinearswig::Feature_node

Parameters:

  • (defaults to: -1))

Returns:



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/liblinear.rb', line 58

def convert_to_feature_node_array(example, max_value_index, bias = -1)
  example_indexes = []
  if example.is_a?(Hash)
    example.each_key do |key|
      example_indexes << key
    end
  elsif example.is_a?(Array)
    example.each_index do |index|
      example_indexes << index
    end
  else
    raise TypeError, 'data must be a Hash or an Array'
  end
  example_indexes.sort!

  if bias >= 0
    feature_nodes = Liblinearswig.feature_node_array(example_indexes.size + 2)
    Liblinearswig.feature_node_array_set(feature_nodes, example_indexes.size, max_value_index + 1, bias)
    Liblinearswig.feature_node_array_set(feature_nodes, example_indexes.size + 1, -1, 0)
  else
    feature_nodes = Liblinearswig.feature_node_array(example_indexes.size + 1)
    Liblinearswig.feature_node_array_set(feature_nodes, example_indexes.size, -1, 0)
  end

  f_index = 0
  example_indexes.each do |e_index|
    Liblinearswig.feature_node_array_set(feature_nodes, f_index, e_index, example[e_index])
    f_index += 1
  end
  feature_nodes
end

#double_array_c_to_ruby(c_array, size) ⇒ Object

Parameters:



50
51
52
# File 'lib/liblinear.rb', line 50

def double_array_c_to_ruby(c_array, size)
  size.times.map {|index| double_getitem(c_array, index)}
end

#free_double_array(c_array) ⇒ Object

Parameters:



38
39
40
# File 'lib/liblinear.rb', line 38

def free_double_array(c_array)
  delete_double(c_array) unless c_array.nil?
end

#free_int_array(c_array) ⇒ Object

Parameters:



23
24
25
# File 'lib/liblinear.rb', line 23

def free_int_array(c_array)
  delete_int(c_array) unless c_array.nil?
end

#int_array_c_to_ruby(c_array, size) ⇒ Object

Parameters:



44
45
46
# File 'lib/liblinear.rb', line 44

def int_array_c_to_ruby(c_array, size)
  size.times.map {|index| int_getitem(c_array, index)}
end

#new_double_array(ruby_array) ⇒ SWIG::TYPE_p_double

Parameters:

Returns:



29
30
31
32
33
34
35
# File 'lib/liblinear.rb', line 29

def new_double_array(ruby_array)
  c_double_array = Liblinearswig.new_double(ruby_array.size)
  ruby_array.size.times do |index|
    Liblinearswig.double_setitem(c_double_array, index, ruby_array[index])
  end
  c_double_array
end

#new_int_array(ruby_array) ⇒ SWIG::TYPE_p_int

include Liblinearswig

Parameters:

Returns:



14
15
16
17
18
19
20
# File 'lib/liblinear.rb', line 14

def new_int_array(ruby_array)
  c_int_array = Liblinearswig.new_int(ruby_array.size)
  ruby_array.size.times do |index|
    Liblinearswig.int_setitem(c_int_array, index, ruby_array[index])
  end
  c_int_array
end