RosettaCodeData/Task/Polynomial-regression/Ruby/polynomial-regression-1.rb

11 lines
232 B
Ruby
Raw Permalink Normal View History

2013-04-10 23:57:08 -07:00
require 'matrix'
def regress x, y, degree
2018-06-22 20:57:24 +00:00
x_data = x.map { |xi| (0..degree).map { |pow| (xi**pow).to_r } }
2013-04-10 23:57:08 -07:00
mx = Matrix[*x_data]
my = Matrix.column_vector(y)
2018-06-22 20:57:24 +00:00
((mx.t * mx).inv * mx.t * my).transpose.to_a[0].map(&:to_f)
2013-04-10 23:57:08 -07:00
end