class LinearRegression::GD
Public Class Methods
new(num_iter: 100, alpha: 0.01)
click to toggle source
# File lib/linear_regressions.rb, line 59 def initialize(num_iter: 100, alpha: 0.01) @num_iter = num_iter @alpha = alpha end
Public Instance Methods
train(entries) { |i,beta,loss| ... }
click to toggle source
# File lib/linear_regressions.rb, line 64 def train(entries, &block) label = entries.map{|e| e[:label] } features = entries.map{|e| e[:features] }.map{|e| e+[1]} @dimension = features[0].size y = Matrix[label].t x = Matrix[*features] @beta = Matrix[@dimension.times.map{|x|1}].t @num_iter.times do |i| y_bar = x * @beta loss = y_bar - y gradient = (x.t * loss)/ entries.size @beta = @beta - (@alpha * gradient) yield i,@beta,loss if block!=nil end end