Class: Liblinear

Inherits:
Object
  • Object
show all
Defined in:
lib/liblinear.rb,
lib/liblinear/array.rb,
lib/liblinear/error.rb,
lib/liblinear/model.rb,
lib/liblinear/example.rb,
lib/liblinear/problem.rb,
lib/liblinear/version.rb,
lib/liblinear/parameter.rb,
lib/liblinear/array/double.rb,
lib/liblinear/feature_node.rb,
lib/liblinear/array/integer.rb,
lib/liblinear/feature_node_matrix.rb

Defined Under Namespace

Classes: Array, Example, FeatureNode, FeatureNodeMatrix, InvalidParameter, Model, Parameter, Problem

Constant Summary collapse

L2R_LR =
Liblinearswig::L2R_LR
L2R_L2LOSS_SVC_DUAL =
Liblinearswig::L2R_L2LOSS_SVC_DUAL
L2R_L2LOSS_SVC =
Liblinearswig::L2R_L2LOSS_SVC
L2R_L1LOSS_SVC_DUAL =
Liblinearswig::L2R_L1LOSS_SVC_DUAL
MCSVM_CS =
Liblinearswig::MCSVM_CS
L1R_L2LOSS_SVC =
Liblinearswig::L1R_L2LOSS_SVC
L1R_LR =
Liblinearswig::L1R_LR
L2R_LR_DUAL =
Liblinearswig::L2R_LR_DUAL
L2R_L2LOSS_SVR =
Liblinearswig::L2R_L2LOSS_SVR
L2R_L2LOSS_SVR_DUAL =
Liblinearswig::L2R_L2LOSS_SVR_DUAL
L2R_L1LOSS_SVR_DUAL =
Liblinearswig::L2R_L1LOSS_SVR_DUAL
LIBLINEAR_VERSION =
sprintf("%.2f", Liblinearswig::LIBLINEAR_VERSION / 100.0)
VERSION =
'1.0.3'

Class Method Summary collapse

Class Method Details

.check_parameter(problem, parameter) ⇒ String

Parameters:

Returns:

  • (String)


35
36
37
# File 'lib/liblinear.rb', line 35

def check_parameter(problem, parameter)
  Liblinearswig.check_parameter(problem.swig, parameter.swig)
end

.cross_validation(fold, parameter, labels, examples, bias = -1)) ⇒ Array <Float>

Parameters:

  • fold (Integer)
  • parameter (Hash)
  • labels (Array <Integer>)

Returns:

Raises:



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/liblinear.rb', line 45

def cross_validation(fold, parameter, labels, examples, bias = -1)
  parameter = Liblinear::Parameter.new(parameter)
  problem = Liblinear::Problem.new(labels, examples, bias)
  error_message = self.check_parameter(problem, parameter)
  raise Liblinear::InvalidParameter, error_message if error_message
  prediction_swig = Liblinearswig.new_double(labels.size)
  Liblinearswig.cross_validation(problem.swig, parameter.swig, fold, prediction_swig)
  prediction = Liblinear::Array::Double.decode(prediction_swig, labels.size)
  Liblinear::Array::Double.delete(prediction_swig)
  prediction
end

.decision_function_bias(model, label_index) ⇒ Float

Parameters:

Returns:

  • (Float)


117
118
119
# File 'lib/liblinear.rb', line 117

def decision_function_bias(model, label_index)
  Liblinearswig.get_decfun_bias(model.swig, label_index)
end

.decision_function_coefficient(model, feature_id, label_index) ⇒ Float

Parameters:

Returns:

  • (Float)


110
111
112
# File 'lib/liblinear.rb', line 110

def decision_function_coefficient(model, feature_id, label_index)
  Liblinearswig.get_decfun_coef(model.swig, feature_id, label_index)
end

.labels(model) ⇒ Array <Integer>

Parameters:

Returns:



123
124
125
126
127
128
129
# File 'lib/liblinear.rb', line 123

def labels(model)
  labels_swig = Liblinearswig.new_int(model.class_size)
  Liblinearswig.get_labels(model.swig, labels_swig)
  labels = Liblinear::Array::Integer.decode(labels_swig, model.class_size)
  Liblinear::Array::Integer.delete(labels_swig)
  labels
end

.predict(model, example) ⇒ Integer

Parameters:

Returns:

  • (Integer)


73
74
75
76
77
78
# File 'lib/liblinear.rb', line 73

def predict(model, example)
  feature_node = Liblinear::FeatureNode.new(example, model.feature_size, model.bias)
  prediction = Liblinearswig.predict(model.swig, feature_node.swig)
  feature_node.delete
  prediction
end

.predict_probabilities(model, example) ⇒ Array <Float>

Parameters:

Returns:



83
84
85
86
87
88
89
90
91
# File 'lib/liblinear.rb', line 83

def predict_probabilities(model, example)
  feature_node = Liblinear::FeatureNode.new(example, model.feature_size, model.bias)
  probability_swig = Liblinearswig.new_double(model.class_size)
  Liblinearswig.predict_probability(model.swig, feature_node.swig, probability_swig)
  probability = Liblinear::Array::Double.decode(probability_swig, model.class_size)
  Liblinear::Array::Double.delete(probability_swig)
  feature_node.delete
  probability
end

.predict_values(model, example) ⇒ Array <Float>

Parameters:

Returns:



96
97
98
99
100
101
102
103
104
# File 'lib/liblinear.rb', line 96

def predict_values(model, example)
  feature_node = Liblinear::FeatureNode.new(example, model.feature_size, model.bias)
  values_swig = Liblinearswig.new_double(model.class_size)
  Liblinearswig.predict_values(model.swig, feature_node.swig, values_swig)
  values = Liblinear::Array::Double.decode(values_swig, model.class_size)
  Liblinear::Array::Double.delete(values_swig)
  feature_node.delete
  values
end

.quiet_modeObject



131
132
133
# File 'lib/liblinear.rb', line 131

def quiet_mode
  Liblinearswig.disable_stdout
end

.train(parameter, labels, examples, bias = -1)) ⇒ Liblinear::Model

Parameters:

Returns:

Raises:



62
63
64
65
66
67
68
# File 'lib/liblinear.rb', line 62

def train(parameter, labels, examples, bias = -1)
  parameter = Liblinear::Parameter.new(parameter)
  problem = Liblinear::Problem.new(labels, examples, bias)
  error_message = self.check_parameter(problem, parameter)
  raise Liblinear::InvalidParameter, error_message if error_message
  Liblinear::Model.train(problem, parameter)
end

.verbose_modeObject



135
136
137
# File 'lib/liblinear.rb', line 135

def verbose_mode
  Liblinearswig.enable_stdout
end