Polynomial regression: Difference between revisions
→{{header|Ruby}}: improved precision by using rationals, converting to floats as late as possible.
(→{{header|Ruby}}: improved precision by using rationals, converting to floats as late as possible.) |
|||
Line 1,457:
def regress x, y, degree
x_data = x.map { |xi| (0..degree).map { |pow| (xi**pow).
mx = Matrix[*x_data]
my = Matrix.column_vector(y)
((mx.t * mx).inv * mx.t * my).transpose.to_a[0].map(&:to_f)
end</lang>
'''Testing:'''
<lang ruby>
[1, 6, 17, 34, 57, 86, 121, 162, 209, 262, 321],
2)</lang>
{{out}}
<pre>[1.
=={{header|Sidef}}==
|