Jump to content

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).to_fto_r } }
 
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>betas =p regress ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[1, 6, 17, 34, 57, 86, 121, 162, 209, 262, 321],
2)</lang>
 
p betas</lang>
{{out}}
<pre>[1.000000000000180, 2.000000000000110, 3.000000000000010]</pre>
 
=={{header|Sidef}}==
1,149

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.