Guest User

Untitled

a guest
Sep 16th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.59 KB | None | 0 0
  1. let rec gradientDescent epsilon learningRate h (x : float array array) (y : _ array) (theta : _ array) prevError =
  2.     let delta j =
  3.         Array.sum [| for i in 0..(x.Length - 1) -> (h theta x.[i] - y.[i]) * (if j <> 0 then x.[i].[j - 1] else 1.) |]
  4.  
  5.     let m = theta.Length
  6.     let newTheta = [| for j in 0..(m - 1) -> theta.[j] - (learningRate / (float m)) * (delta j) |]
  7.     let error = Array.sum <| Array.map2 (fun (x : float) y -> (x - y) ** 2.) newTheta theta
  8.     printfn "%f" error
  9.     if prevError - error < epsilon then newTheta else gradientDescent epsilon learningRate h x y newTheta error
Add Comment
Please, Sign In to add comment