class Mirlo::Perceptron
Attributes
learning_rate[RW]
Public Class Methods
new(learning_rate = DEFAULT_LEARNING_RATE)
click to toggle source
# File lib/mirlo/classifiers/perceptron.rb, line 5 def initialize(learning_rate = DEFAULT_LEARNING_RATE) @learning_rate = learning_rate end
Public Instance Methods
activations(inputs = train_set.input_matrix)
click to toggle source
# File lib/mirlo/classifiers/perceptron.rb, line 9 def activations(inputs = train_set.input_matrix) (inputs * weights).collect { |v| v > 0 ? 1 : 0 } end
classify(input)
click to toggle source
# File lib/mirlo/classifiers/perceptron.rb, line 13 def classify(input) input = SampleWithBias.new(features: input) unless input.is_a?(Mirlo::Sample) input_vector = Matrix[input.features] result = (input_vector * weights).row(0).to_a result.collect { |v| v > 0 ? 1 : 0 } end
iterate()
click to toggle source
# File lib/mirlo/classifiers/perceptron.rb, line 25 def iterate @weights = weights + learning_rate * weight_updates end
weight_updates()
click to toggle source
# File lib/mirlo/classifiers/perceptron.rb, line 21 def weight_updates train_set.input_matrix.transpose * (train_set.target_matrix - activations) end
weights()
click to toggle source
# File lib/mirlo/classifiers/perceptron.rb, line 29 def weights @weights ||= Matrix.build(train_set.num_features, train_set.num_outputs) { rand(-0.05..0.05) } end