Class: Newral::Training::LinearRegression

Inherits:
Object
  • Object
show all
Defined in:
lib/newral/training/linear_regression.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input: [], output: []) ⇒ LinearRegression

Returns a new instance of LinearRegression.



6
7
8
9
# File 'lib/newral/training/linear_regression.rb', line 6

def initialize( input: [], output: [] )
  @input = input
  @output = output
end

Instance Attribute Details

#best_errorObject (readonly)



5
6
7
# File 'lib/newral/training/linear_regression.rb', line 5

def best_error
  @best_error
end

#best_functionObject (readonly)



5
6
7
# File 'lib/newral/training/linear_regression.rb', line 5

def best_function
  @best_function
end

#inputObject (readonly)



5
6
7
# File 'lib/newral/training/linear_regression.rb', line 5

def input
  @input
end

Instance Method Details

#processObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/newral/training/linear_regression.rb', line 12

def process(  )
  input_mean=Newral::Tools.mean @input
  output_mean =Newral::Tools.mean @output
  dividend =0
  divisor = 0
  @input.each_with_index do |input,idx|
   dividend = dividend+(input-input_mean)*( @output[idx]-output_mean)
   divisor = divisor+(input-input_mean)**2 
  end 
  multiplier = dividend/divisor
  error = output_mean-multiplier*input_mean
  @best_function = Newral::Functions::Polynomial.new(factors: [multiplier,error])
  @best_error =@best_function.calculate_error( input: @input, output: @output )
  @best_function
end