Class: Newral::Training::LinearRegression
- Inherits:
-
Object
- Object
- Newral::Training::LinearRegression
- Defined in:
- lib/newral/training/linear_regression.rb
Instance Attribute Summary collapse
- #best_error ⇒ Object readonly
- #best_function ⇒ Object readonly
- #input ⇒ Object readonly
Instance Method Summary collapse
-
#initialize(input: [], output: []) ⇒ LinearRegression
constructor
A new instance of LinearRegression.
- #process ⇒ Object
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_error ⇒ Object (readonly)
5 6 7 |
# File 'lib/newral/training/linear_regression.rb', line 5 def best_error @best_error end |
#best_function ⇒ Object (readonly)
5 6 7 |
# File 'lib/newral/training/linear_regression.rb', line 5 def best_function @best_function end |
#input ⇒ Object (readonly)
5 6 7 |
# File 'lib/newral/training/linear_regression.rb', line 5 def input @input end |
Instance Method Details
#process ⇒ Object
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 |