Class: Liblinear::Model

Inherits:
Object
  • Object
show all
Includes:
Liblinear, Liblinearswig
Defined in:
lib/liblinear/model.rb

Constant Summary

Constants included from Liblinear

VERSION

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Liblinear

#convert_to_feature_node_array, #double_array_c_to_ruby, #free_double_array, #free_int_array, #int_array_c_to_ruby, #new_double_array, #new_int_array

Constructor Details

#initialize(arg_1, arg_2 = nil) ⇒ Model

Returns a new instance of Model.

Parameters:

Raises:



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/liblinear/model.rb', line 11

def initialize(arg_1, arg_2 = nil)
  if arg_2
    unless arg_1.is_a?(Liblinear::Problem) && arg_2.is_a?(Liblinear::Parameter)
      raise ArgumentError, 'arguments must be Liblinear::Problem and Liblinear::Parameter'
    end
    error_msg = check_parameter(arg_1.prob, arg_2.params)
    raise InvalidParameter, error_msg if error_msg
    @model = train(arg_1.prob, arg_2.params)
  else
    raise ArgumentError, 'argument must be String' unless arg_1.is_a?(String)
    @model = load_model(arg_1)
  end
end

Instance Attribute Details

#modelObject

Returns the value of attribute model.



5
6
7
# File 'lib/liblinear/model.rb', line 5

def model
  @model
end

Instance Method Details

#labelsArray<Integer>

Returns:

  • (Array<Integer>)


31
32
33
34
35
36
37
# File 'lib/liblinear/model.rb', line 31

def labels
  c_int_array = new_int(nr_class)
  get_labels(@model, c_int_array)
  labels = int_array_c_to_ruby(c_int_array, nr_class)
  delete_int(c_int_array)
  labels
end

#nr_classInteger

Returns:

  • (Integer)


26
27
28
# File 'lib/liblinear/model.rb', line 26

def nr_class
  get_nr_class(@model)
end

#predict(example) ⇒ Double

Parameters:

  • example (Array, Hash)

Returns:

  • (Double)


41
42
43
44
45
46
# File 'lib/liblinear/model.rb', line 41

def predict(example)
  feature_nodes = convert_to_feature_node_array(example, @model.nr_feature, @model.bias)
  prediction = Liblinearswig.predict(@model, feature_nodes)
  feature_node_array_destroy(feature_nodes)
  prediction
end

#predict_probability(example) ⇒ Hash

Parameters:

  • example (Array, Hash)

Returns:

  • (Hash)


50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/liblinear/model.rb', line 50

def predict_probability(example)
  feature_nodes = convert_to_feature_node_array(example, @model.nr_feature, @model.bias)
  c_double_array = new_double_array(nr_class)
  Liblinearswig.predict_probability(@model, feature_nodes, c_double_array)
  probabilities = double_array_c_to_ruby(c_double_array, nr_class)
  delete_double(c_double_array)
  feature_node_array_destroy(feature_nodes)
  probability_list = {}
  labels.size.times do |i|
    probability_list[labels[i]] = probabilities[i]
  end
  probability_list
end

#save(filename) ⇒ Object

Parameters:

  • filename (String)


65
66
67
# File 'lib/liblinear/model.rb', line 65

def save(filename)
  save_model(filename, @model)
end