Class: Liblinear::Model

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

Constant Summary

Constants included from Liblinear

L1R_L2LOSS_SVC, L1R_LR, L2R_L1LOSS_SVC_DUAL, L2R_L1LOSS_SVR_DUAL, L2R_L2LOSS_SVC, L2R_L2LOSS_SVC_DUAL, L2R_L2LOSS_SVR, L2R_L2LOSS_SVR_DUAL, L2R_LR, L2R_LR_DUAL, MCSVM_CS, VERSION

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Liblinear

#array_to_hash, #convert_to_feature_node_array, #double_array_c_to_ruby, #free_double_array, #free_int_array, #int_array_c_to_ruby, #max_index, #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

#bias(label_index = 0) ⇒ Double

Parameters:

  • label_index (Integer) (defaults to: 0)

Returns:

  • (Double)


87
88
89
# File 'lib/liblinear/model.rb', line 87

def bias(label_index = 0)
  get_decfun_bias(@model, label_index)
end

#class_sizeInteger

Returns:

  • (Integer)


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

def class_size
  get_nr_class(@model)
end

#coefficient(feature_index = nil, label_index = 0) ⇒ Double, Array <Double>

Parameters:

  • feature_index (Integer) (defaults to: nil)
  • label_index (Integer) (defaults to: 0)

Returns:

  • (Double, Array <Double>)


79
80
81
82
83
# File 'lib/liblinear/model.rb', line 79

def coefficient(feature_index = nil, label_index = 0)
  return get_decfun_coef(@model, feature_index, label_index) if feature_index
  coefficients = []
  feature_size.times.map {|feature_index| get_decfun_coef(@model, feature_index + 1, label_index)}
end

#feature_sizeInteger

Returns:

  • (Integer)


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

def feature_size
  get_nr_feature(@model)
end

#labelsArray <Integer>

Returns:

  • (Array <Integer>)


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

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

#nr_classInteger

Returns:

  • (Integer)


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

def nr_class
  warn "'nr_class' is deprecated. Please use 'class_size' instead."
  class_size
end

#predict(example) ⇒ Double

Parameters:

  • example (Array, Hash)

Returns:

  • (Double)


52
53
54
55
56
57
# File 'lib/liblinear/model.rb', line 52

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)


61
62
63
# File 'lib/liblinear/model.rb', line 61

def predict_probability(example)
  predict_prob_val(example, :predict_probability)
end

#predict_values(example) ⇒ Hash

Parameters:

  • example (Array, Hash)

Returns:

  • (Hash)


67
68
69
# File 'lib/liblinear/model.rb', line 67

def predict_values(example)
  predict_prob_val(example, :predict_values)
end

#regression_model?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/liblinear/model.rb', line 92

def regression_model?
  check_regression_model(@model) == 1 ? true : false
end

#save(filename) ⇒ Object

Parameters:

  • filename (String)


72
73
74
# File 'lib/liblinear/model.rb', line 72

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