Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- open System.IO
- type Digit = { Number:int; Pixels:int[] }
- let toDigits path =
- let lines = File.ReadAllLines(path)
- let strings = lines |> Array.map (fun s -> s.Split(','))
- let data = strings.[1..]
- let values = data |> Array.map (Array.map int)
- values |> Array.map (fun xs -> { Number = xs.[0]; Pixels = xs.[1..] })
- let samples = let path = @"c:\digits\digitssample.csv" in toDigits path
- let distance xs ys =
- Array.map2 (fun x y -> (x - y) * (x - y)) xs ys |> Array.sum
- let classify (unknown:int[]) =
- samples |> Array.minBy (fun sample -> distance unknown sample.Pixels)
- |> fun digit -> digit.Number
- let checks = let path = @"c:\digits\digitscheck.csv" in toDigits path
- let matches =
- checks |> Array.filter (fun check ->
- let x = classify check.Pixels
- printfn "%d %d" x check.Number
- x = check.Number
- )
- let result = float matches.Length / float checks.Length
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement