From 6f8b8abab32494d4dc1d5038131eb4cda4902746 Mon Sep 17 00:00:00 2001 From: Danijel Kecman Date: Sun, 13 Aug 2017 21:52:52 +0200 Subject: [PATCH] linear-r wip --- Develop.fs | 74 ---- Modules/knn.fs | 77 ++++ Modules/linearregression.fs | 49 +++ WorldBankData.fs => Modules/worldbankdata.fs | 0 README.md | 8 +- auto-mpg.data.txt | 392 +++++++++++++++++++ fs-lab.fsproj | 6 +- wrun.fs | 5 + 8 files changed, 532 insertions(+), 79 deletions(-) delete mode 100644 Develop.fs create mode 100644 Modules/knn.fs create mode 100644 Modules/linearregression.fs rename WorldBankData.fs => Modules/worldbankdata.fs (100%) create mode 100644 auto-mpg.data.txt create mode 100644 wrun.fs diff --git a/Develop.fs b/Develop.fs deleted file mode 100644 index 3fe1e11..0000000 --- a/Develop.fs +++ /dev/null @@ -1,74 +0,0 @@ -open System -open System.IO -open Deedle -open FSharp.Data -open XPlot.GoogleCharts -open XPlot.GoogleCharts.Deedle - -type Entry = {Label: string; Values: int list} - -// Calculates Squared Euclidean distance between pixels values of two images -let distance (values1: int list, values2: int list) = - values1 - |> List.zip values2 - |> List.map (fun it -> Math.Pow(float(fst it) - float(snd it), 2.0)) - |> List.sum - -// Loading valies from training/test data. This assumes that the first one is the -// label/class/category of the data -let loadValues (filename: String) = - File.ReadAllLines(filename) - |> Seq.ofArray - // skip header - |> Seq.skip (1) - |> Seq.map (fun line -> - { - Label = line.Substring(0, line.IndexOf(',')); - Values = line.Split(',') - |> Seq.ofArray - // skip label - |> Seq.skip (1) - |> Seq.map (fun n -> Convert.ToInt32(n)) - |> Seq.toList - }) - |> Seq.toList - -let knn (entries: Entry list, newEntry: string * int[], k: int) = - entries |> List.map (fun x -> (x.Label, distance (x.Values, snd (newEntry) - |> Array.toList))) - |> List.sortBy (fun x -> snd x) - |> Seq.ofList - |> Seq.take k - |> Seq.countBy (fun x -> fst x) - |> Seq.toList - - -let loaded = loadValues @"digit-recognizer.csv" - -[] -let maing argv = - printfn "%A" loaded.Length - 0 - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Modules/knn.fs b/Modules/knn.fs new file mode 100644 index 0000000..8507dfe --- /dev/null +++ b/Modules/knn.fs @@ -0,0 +1,77 @@ +module knn + +open System +open System.IO +open Deedle +open FSharp.Data +open XPlot.GoogleCharts +open XPlot.GoogleCharts.Deedle + +type Entry = {Label: string; Values: int list} + +// Calculates Squared Euclidean distance between pixels values of two images +let distance (values1: int list, values2: int list) = + values1 + |> List.zip values2 + |> List.map (fun it -> Math.Pow(float(fst it) - float(snd it), 2.0)) + |> List.sum + +// Loading valies from training/test data. This assumes that the first one is the +// label/class/category of the data +let loadValues (filename: String) = + File.ReadAllLines(filename) + |> Seq.ofArray + // skip header + |> Seq.skip (1) + |> Seq.map (fun line -> + { + Label = line.Substring(0, line.IndexOf(',')); + Values = line.Split(',') + |> Seq.ofArray + // skip label + |> Seq.skip (1) + |> Seq.map (fun n -> Convert.ToInt32(n)) + |> Seq.toList + }) + |> Seq.toList + +let knn (entries: Entry list, newEntry: string * int[], k: int) = + entries |> List.map (fun x -> (x.Label, distance (x.Values, snd (newEntry) |> Array.toList))) + |> List.sortBy (fun x -> snd x) + |> Seq.ofList + |> Seq.take k + |> Seq.countBy (fun x -> fst x) + |> Seq.toList + + +// location of the csv training file +let loaded = loadValues @"digit-recognizer.csv" + +// this entry is '5' from the training set +let newEntry = ("X",[|0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;41;149;156;179;254;254;201;119;46;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;13;147;241;253;253;254;253;253;253;253;245;160;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;31;224;253;253;180;174;175;174;174;174;174;223;247;145;6;0;0;0;0;0;0;0;0;0;0;0;0;7;197;254;253;165;2;0;0;0;0;0;0;12;102;184;16;0;0;0;0;0;0;0;0;0;0;0;0;152;253;254;162;18;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;235;254;158;15;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;74;250;253;15;0;0;0;16;20;19;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;7;199;253;253;0;0;25;130;235;254;247;145;6;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;20;253;253;177;100;219;240;253;253;254;253;253;125;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;5;193;253;253;254;253;253;200;155;155;238;253;229;23;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;61;249;254;241;150;30;0;0;0;215;254;254;58;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;36;39;30;0;0;0;0;0;214;253;234;31;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;41;241;253;183;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;201;253;253;102;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;114;254;253;154;5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;62;254;255;241;30;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;10;118;235;253;249;103;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;55;81;0;102;211;253;253;253;135;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;79;243;234;254;253;253;216;117;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;48;245;253;254;207;126;27;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0|]) +// 5 nearest neigbors +let k = 5 +// getting back the labels for each of the neighbors +let labels = knn (loaded, newEntry, k) +// locating the guess. the one with the maximum votes +let guess = fst (labels |> List.item 0) + + + + + + + + + + + + + + + + + + + + diff --git a/Modules/linearregression.fs b/Modules/linearregression.fs new file mode 100644 index 0000000..19b1127 --- /dev/null +++ b/Modules/linearregression.fs @@ -0,0 +1,49 @@ +module linearregression + +open System +open System.IO +open Deedle +open FSharp.Data +open XPlot.GoogleCharts +open XPlot.GoogleCharts.Deedle +open MathNet.Numerics.LinearAlgebra +open MathNet.Numerics.LinearRegression +open MathNet.Numerics.Fit + +let rows = File.ReadAllLines(@"auto-mpg.csv") + |> Array.map (fun t -> t.Split(',') + |> Array.map (fun t -> float t)) +let mpgData = DenseMatrix.ofRowArrays rows + +let myMat = matrix [[1.0;2.0;3.0] + [4.0;5.0;2.0] + [7.0;0.8;9.0]] + +let qr = myMat.QR() + +let x = [14;16;27;42;39;50;83] +let y = [02;05;07;09;10;13;20] +let y' = [3;4;5;7;23;21;34] + +let calculateCoefficients x y = + let xy = List.zip x y + |> List.map (fun it -> float (fst it) * float (snd it)) + |> List.sum + let x_ = x |> List.map (fun z -> float z) + |> List.average + let y_ = y |> List.map (fun z -> float z) + |> List.average + let sx_2 = x |> List.sumBy (fun t -> float t * float t) + let sy_2 = y |> List.sumBy (fun t -> float t * float t) + let n = float x.Length + let b1 = (xy - n * x_ * y_)/(sx_2 - n * x_ * x_) + let b0 = y_ - b1 * x_ + (b0, b1) + +let coef = calculateCoefficients x y +let b0 = fst coef +let b1 = snd coef + +let regressionPairs = x |> List.map ( fun xElem -> (xElem, b0 + b1* float xElem )) + +let pairs = List.zip x y \ No newline at end of file diff --git a/WorldBankData.fs b/Modules/worldbankdata.fs similarity index 100% rename from WorldBankData.fs rename to Modules/worldbankdata.fs diff --git a/README.md b/README.md index d8e9bcf..60dbd42 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # fslab-ml Some old ML code in F# in Mac Environment -\pi - -# Euclidean distance +**Euclidean distance** d^2(p,q) = (p1-q1)^2+(p2-q2)^2+...+(pi-qi)^2+...+(pn-qn)^2 + +**Entropy** +H(X) = sum(P(xi)*I(xi)) = -sum(P(xi) * logb * p(xi)) + diff --git a/auto-mpg.data.txt b/auto-mpg.data.txt new file mode 100644 index 0000000..f78882a --- /dev/null +++ b/auto-mpg.data.txt @@ -0,0 +1,392 @@ +18.0,8,307.0,130.0,3504.,12.0,70.,1. +15.0,8,350.0,165.0,3693.,11.5,70.,1. +18.0,8,318.0,150.0,3436.,11.0,70.,1. +16.0,8,304.0,150.0,3433.,12.0,70.,1. +17.0,8,302.0,140.0,3449.,10.5,70.,1. +15.0,8,429.0,198.0,4341.,10.0,70.,1. +14.0,8,454.0,220.0,4354.,9.0,70.,1. +14.0,8,440.0,215.0,4312.,8.5,70.,1. +14.0,8,455.0,225.0,4425.,10.0,70.,1. +15.0,8,390.0,190.0,3850.,8.5,70.,1. +15.0,8,383.0,170.0,3563.,10.0,70.,1. +14.0,8,340.0,160.0,3609.,8.0,70.,1. +15.0,8,400.0,150.0,3761.,9.5,70.,1. +14.0,8,455.0,225.0,3086.,10.0,70.,1. +24.0,4,113.0,95.00,2372.,15.0,70.,3. +22.0,6,198.0,95.00,2833.,15.5,70.,1. +18.0,6,199.0,97.00,2774.,15.5,70.,1. +21.0,6,200.0,85.00,2587.,16.0,70.,1. +27.0,4,97.00,88.00,2130.,14.5,70.,3. +26.0,4,97.00,46.00,1835.,20.5,70.,2. +25.0,4,110.0,87.00,2672.,17.5,70.,2. +24.0,4,107.0,90.00,2430.,14.5,70.,2. +25.0,4,104.0,95.00,2375.,17.5,70.,2. +26.0,4,121.0,113.0,2234.,12.5,70.,2. +21.0,6,199.0,90.00,2648.,15.0,70.,1. +10.0,8,360.0,215.0,4615.,14.0,70.,1. +10.0,8,307.0,200.0,4376.,15.0,70.,1. +11.0,8,318.0,210.0,4382.,13.5,70.,1. +9.0,8,304.0,193.0,4732.,18.5,70.,1. +27.0,4,97.00,88.00,2130.,14.5,71.,3. +28.0,4,140.0,90.00,2264.,15.5,71.,1. +25.0,4,113.0,95.00,2228.,14.0,71.,3. +19.0,6,232.0,100.0,2634.,13.0,71.,1. +16.0,6,225.0,105.0,3439.,15.5,71.,1. +17.0,6,250.0,100.0,3329.,15.5,71.,1. +19.0,6,250.0,88.00,3302.,15.5,71.,1. +18.0,6,232.0,100.0,3288.,15.5,71.,1. +14.0,8,350.0,165.0,4209.,12.0,71.,1. +14.0,8,400.0,175.0,4464.,11.5,71.,1. +14.0,8,351.0,153.0,4154.,13.5,71.,1. +14.0,8,318.0,150.0,4096.,13.0,71.,1. +12.0,8,383.0,180.0,4955.,11.5,71.,1. +13.0,8,400.0,170.0,4746.,12.0,71.,1. +13.0,8,400.0,175.0,5140.,12.0,71.,1. +18.0,6,258.0,110.0,2962.,13.5,71.,1. +22.0,4,140.0,72.00,2408.,19.0,71.,1. +19.0,6,250.0,100.0,3282.,15.0,71.,1. +18.0,6,250.0,88.00,3139.,14.5,71.,1. +23.0,4,122.0,86.00,2220.,14.0,71.,1. +28.0,4,116.0,90.00,2123.,14.0,71.,2. +30.0,4,79.00,70.00,2074.,19.5,71.,2. +30.0,4,88.00,76.00,2065.,14.5,71.,2. +31.0,4,71.00,65.00,1773.,19.0,71.,3. +35.0,4,72.00,69.00,1613.,18.0,71.,3. +27.0,4,97.00,60.00,1834.,19.0,71.,2. +26.0,4,91.00,70.00,1955.,20.5,71.,1. +24.0,4,113.0,95.00,2278.,15.5,72.,3. +25.0,4,97.50,80.00,2126.,17.0,72.,1. +23.0,4,97.00,54.00,2254.,23.5,72.,2. +20.0,4,140.0,90.00,2408.,19.5,72.,1. +21.0,4,122.0,86.00,2226.,16.5,72.,1. +13.0,8,350.0,165.0,4274.,12.0,72.,1. +14.0,8,400.0,175.0,4385.,12.0,72.,1. +15.0,8,318.0,150.0,4135.,13.5,72.,1. +14.0,8,351.0,153.0,4129.,13.0,72.,1. +17.0,8,304.0,150.0,3672.,11.5,72.,1. +11.0,8,429.0,208.0,4633.,11.0,72.,1. +13.0,8,350.0,155.0,4502.,13.5,72.,1. +12.0,8,350.0,160.0,4456.,13.5,72.,1. +13.0,8,400.0,190.0,4422.,12.5,72.,1. +19.0,3,70.00,97.00,2330.,13.5,72.,3. +15.0,8,304.0,150.0,3892.,12.5,72.,1. +13.0,8,307.0,130.0,4098.,14.0,72.,1. +13.0,8,302.0,140.0,4294.,16.0,72.,1. +14.0,8,318.0,150.0,4077.,14.0,72.,1. +18.0,4,121.0,112.0,2933.,14.5,72.,2. +22.0,4,121.0,76.00,2511.,18.0,72.,2. +21.0,4,120.0,87.00,2979.,19.5,72.,2. +26.0,4,96.00,69.00,2189.,18.0,72.,2. +22.0,4,122.0,86.00,2395.,16.0,72.,1. +28.0,4,97.00,92.00,2288.,17.0,72.,3. +23.0,4,120.0,97.00,2506.,14.5,72.,3. +28.0,4,98.00,80.00,2164.,15.0,72.,1. +27.0,4,97.00,88.00,2100.,16.5,72.,3. +13.0,8,350.0,175.0,4100.,13.0,73.,1. +14.0,8,304.0,150.0,3672.,11.5,73.,1. +13.0,8,350.0,145.0,3988.,13.0,73.,1. +14.0,8,302.0,137.0,4042.,14.5,73.,1. +15.0,8,318.0,150.0,3777.,12.5,73.,1. +12.0,8,429.0,198.0,4952.,11.5,73.,1. +13.0,8,400.0,150.0,4464.,12.0,73.,1. +13.0,8,351.0,158.0,4363.,13.0,73.,1. +14.0,8,318.0,150.0,4237.,14.5,73.,1. +13.0,8,440.0,215.0,4735.,11.0,73.,1. +12.0,8,455.0,225.0,4951.,11.0,73.,1. +13.0,8,360.0,175.0,3821.,11.0,73.,1. +18.0,6,225.0,105.0,3121.,16.5,73.,1. +16.0,6,250.0,100.0,3278.,18.0,73.,1. +18.0,6,232.0,100.0,2945.,16.0,73.,1. +18.0,6,250.0,88.00,3021.,16.5,73.,1. +23.0,6,198.0,95.00,2904.,16.0,73.,1. +26.0,4,97.00,46.00,1950.,21.0,73.,2. +11.0,8,400.0,150.0,4997.,14.0,73.,1. +12.0,8,400.0,167.0,4906.,12.5,73.,1. +13.0,8,360.0,170.0,4654.,13.0,73.,1. +12.0,8,350.0,180.0,4499.,12.5,73.,1. +18.0,6,232.0,100.0,2789.,15.0,73.,1. +20.0,4,97.00,88.00,2279.,19.0,73.,3. +21.0,4,140.0,72.00,2401.,19.5,73.,1. +22.0,4,108.0,94.00,2379.,16.5,73.,3. +18.0,3,70.00,90.00,2124.,13.5,73.,3. +19.0,4,122.0,85.00,2310.,18.5,73.,1. +21.0,6,155.0,107.0,2472.,14.0,73.,1. +26.0,4,98.00,90.00,2265.,15.5,73.,2. +15.0,8,350.0,145.0,4082.,13.0,73.,1. +16.0,8,400.0,230.0,4278.,9.50,73.,1. +29.0,4,68.00,49.00,1867.,19.5,73.,2. +24.0,4,116.0,75.00,2158.,15.5,73.,2. +20.0,4,114.0,91.00,2582.,14.0,73.,2. +19.0,4,121.0,112.0,2868.,15.5,73.,2. +15.0,8,318.0,150.0,3399.,11.0,73.,1. +24.0,4,121.0,110.0,2660.,14.0,73.,2. +20.0,6,156.0,122.0,2807.,13.5,73.,3. +11.0,8,350.0,180.0,3664.,11.0,73.,1. +20.0,6,198.0,95.00,3102.,16.5,74.,1. +19.0,6,232.0,100.0,2901.,16.0,74.,1. +15.0,6,250.0,100.0,3336.,17.0,74.,1. +31.0,4,79.00,67.00,1950.,19.0,74.,3. +26.0,4,122.0,80.00,2451.,16.5,74.,1. +32.0,4,71.00,65.00,1836.,21.0,74.,3. +25.0,4,140.0,75.00,2542.,17.0,74.,1. +16.0,6,250.0,100.0,3781.,17.0,74.,1. +16.0,6,258.0,110.0,3632.,18.0,74.,1. +18.0,6,225.0,105.0,3613.,16.5,74.,1. +16.0,8,302.0,140.0,4141.,14.0,74.,1. +13.0,8,350.0,150.0,4699.,14.5,74.,1. +14.0,8,318.0,150.0,4457.,13.5,74.,1. +14.0,8,302.0,140.0,4638.,16.0,74.,1. +14.0,8,304.0,150.0,4257.,15.5,74.,1. +29.0,4,98.00,83.00,2219.,16.5,74.,2. +26.0,4,79.00,67.00,1963.,15.5,74.,2. +26.0,4,97.00,78.00,2300.,14.5,74.,2. +31.0,4,76.00,52.00,1649.,16.5,74.,3. +32.0,4,83.00,61.00,2003.,19.0,74.,3. +28.0,4,90.00,75.00,2125.,14.5,74.,1. +24.0,4,90.00,75.00,2108.,15.5,74.,2. +26.0,4,116.0,75.00,2246.,14.0,74.,2. +24.0,4,120.0,97.00,2489.,15.0,74.,3. +26.0,4,108.0,93.00,2391.,15.5,74.,3. +31.0,4,79.00,67.00,2000.,16.0,74.,2. +19.0,6,225.0,95.00,3264.,16.0,75.,1. +18.0,6,250.0,105.0,3459.,16.0,75.,1. +15.0,6,250.0,72.00,3432.,21.0,75.,1. +15.0,6,250.0,72.00,3158.,19.5,75.,1. +16.0,8,400.0,170.0,4668.,11.5,75.,1. +15.0,8,350.0,145.0,4440.,14.0,75.,1. +16.0,8,318.0,150.0,4498.,14.5,75.,1. +14.0,8,351.0,148.0,4657.,13.5,75.,1. +17.0,6,231.0,110.0,3907.,21.0,75.,1. +16.0,6,250.0,105.0,3897.,18.5,75.,1. +15.0,6,258.0,110.0,3730.,19.0,75.,1. +18.0,6,225.0,95.00,3785.,19.0,75.,1. +21.0,6,231.0,110.0,3039.,15.0,75.,1. +20.0,8,262.0,110.0,3221.,13.5,75.,1. +13.0,8,302.0,129.0,3169.,12.0,75.,1. +29.0,4,97.00,75.00,2171.,16.0,75.,3. +23.0,4,140.0,83.00,2639.,17.0,75.,1. +20.0,6,232.0,100.0,2914.,16.0,75.,1. +23.0,4,140.0,78.00,2592.,18.5,75.,1. +24.0,4,134.0,96.00,2702.,13.5,75.,3. +25.0,4,90.00,71.00,2223.,16.5,75.,2. +24.0,4,119.0,97.00,2545.,17.0,75.,3. +18.0,6,171.0,97.00,2984.,14.5,75.,1. +29.0,4,90.00,70.00,1937.,14.0,75.,2. +19.0,6,232.0,90.00,3211.,17.0,75.,1. +23.0,4,115.0,95.00,2694.,15.0,75.,2. +23.0,4,120.0,88.00,2957.,17.0,75.,2. +22.0,4,121.0,98.00,2945.,14.5,75.,2. +25.0,4,121.0,115.0,2671.,13.5,75.,2. +33.0,4,91.00,53.00,1795.,17.5,75.,3. +28.0,4,107.0,86.00,2464.,15.5,76.,2. +25.0,4,116.0,81.00,2220.,16.9,76.,2. +25.0,4,140.0,92.00,2572.,14.9,76.,1. +26.0,4,98.00,79.00,2255.,17.7,76.,1. +27.0,4,101.0,83.00,2202.,15.3,76.,2. +17.5,8,305.0,140.0,4215.,13.0,76.,1. +16.0,8,318.0,150.0,4190.,13.0,76.,1. +15.5,8,304.0,120.0,3962.,13.9,76.,1. +14.5,8,351.0,152.0,4215.,12.8,76.,1. +22.0,6,225.0,100.0,3233.,15.4,76.,1. +22.0,6,250.0,105.0,3353.,14.5,76.,1. +24.0,6,200.0,81.00,3012.,17.6,76.,1. +22.5,6,232.0,90.00,3085.,17.6,76.,1. +29.0,4,85.00,52.00,2035.,22.2,76.,1. +24.5,4,98.00,60.00,2164.,22.1,76.,1. +29.0,4,90.00,70.00,1937.,14.2,76.,2. +33.0,4,91.00,53.00,1795.,17.4,76.,3. +20.0,6,225.0,100.0,3651.,17.7,76.,1. +18.0,6,250.0,78.00,3574.,21.0,76.,1. +18.5,6,250.0,110.0,3645.,16.2,76.,1. +17.5,6,258.0,95.00,3193.,17.8,76.,1. +29.5,4,97.00,71.00,1825.,12.2,76.,2. +32.0,4,85.00,70.00,1990.,17.0,76.,3. +28.0,4,97.00,75.00,2155.,16.4,76.,3. +26.5,4,140.0,72.00,2565.,13.6,76.,1. +20.0,4,130.0,102.0,3150.,15.7,76.,2. +13.0,8,318.0,150.0,3940.,13.2,76.,1. +19.0,4,120.0,88.00,3270.,21.9,76.,2. +19.0,6,156.0,108.0,2930.,15.5,76.,3. +16.5,6,168.0,120.0,3820.,16.7,76.,2. +16.5,8,350.0,180.0,4380.,12.1,76.,1. +13.0,8,350.0,145.0,4055.,12.0,76.,1. +13.0,8,302.0,130.0,3870.,15.0,76.,1. +13.0,8,318.0,150.0,3755.,14.0,76.,1. +31.5,4,98.00,68.00,2045.,18.5,77.,3. +30.0,4,111.0,80.00,2155.,14.8,77.,1. +36.0,4,79.00,58.00,1825.,18.6,77.,2. +25.5,4,122.0,96.00,2300.,15.5,77.,1. +33.5,4,85.00,70.00,1945.,16.8,77.,3. +17.5,8,305.0,145.0,3880.,12.5,77.,1. +17.0,8,260.0,110.0,4060.,19.0,77.,1. +15.5,8,318.0,145.0,4140.,13.7,77.,1. +15.0,8,302.0,130.0,4295.,14.9,77.,1. +17.5,6,250.0,110.0,3520.,16.4,77.,1. +20.5,6,231.0,105.0,3425.,16.9,77.,1. +19.0,6,225.0,100.0,3630.,17.7,77.,1. +18.5,6,250.0,98.00,3525.,19.0,77.,1. +16.0,8,400.0,180.0,4220.,11.1,77.,1. +15.5,8,350.0,170.0,4165.,11.4,77.,1. +15.5,8,400.0,190.0,4325.,12.2,77.,1. +16.0,8,351.0,149.0,4335.,14.5,77.,1. +29.0,4,97.00,78.00,1940.,14.5,77.,2. +24.5,4,151.0,88.00,2740.,16.0,77.,1. +26.0,4,97.00,75.00,2265.,18.2,77.,3. +25.5,4,140.0,89.00,2755.,15.8,77.,1. +30.5,4,98.00,63.00,2051.,17.0,77.,1. +33.5,4,98.00,83.00,2075.,15.9,77.,1. +30.0,4,97.00,67.00,1985.,16.4,77.,3. +30.5,4,97.00,78.00,2190.,14.1,77.,2. +22.0,6,146.0,97.00,2815.,14.5,77.,3. +21.5,4,121.0,110.0,2600.,12.8,77.,2. +21.5,3,80.00,110.0,2720.,13.5,77.,3. +43.1,4,90.00,48.00,1985.,21.5,78.,2. +36.1,4,98.00,66.00,1800.,14.4,78.,1. +32.8,4,78.00,52.00,1985.,19.4,78.,3. +39.4,4,85.00,70.00,2070.,18.6,78.,3. +36.1,4,91.00,60.00,1800.,16.4,78.,3. +19.9,8,260.0,110.0,3365.,15.5,78.,1. +19.4,8,318.0,140.0,3735.,13.2,78.,1. +20.2,8,302.0,139.0,3570.,12.8,78.,1. +19.2,6,231.0,105.0,3535.,19.2,78.,1. +20.5,6,200.0,95.00,3155.,18.2,78.,1. +20.2,6,200.0,85.00,2965.,15.8,78.,1. +25.1,4,140.0,88.00,2720.,15.4,78.,1. +20.5,6,225.0,100.0,3430.,17.2,78.,1. +19.4,6,232.0,90.00,3210.,17.2,78.,1. +20.6,6,231.0,105.0,3380.,15.8,78.,1. +20.8,6,200.0,85.00,3070.,16.7,78.,1. +18.6,6,225.0,110.0,3620.,18.7,78.,1. +18.1,6,258.0,120.0,3410.,15.1,78.,1. +19.2,8,305.0,145.0,3425.,13.2,78.,1. +17.7,6,231.0,165.0,3445.,13.4,78.,1. +18.1,8,302.0,139.0,3205.,11.2,78.,1. +17.5,8,318.0,140.0,4080.,13.7,78.,1. +30.0,4,98.00,68.00,2155.,16.5,78.,1. +27.5,4,134.0,95.00,2560.,14.2,78.,3. +27.2,4,119.0,97.00,2300.,14.7,78.,3. +30.9,4,105.0,75.00,2230.,14.5,78.,1. +21.1,4,134.0,95.00,2515.,14.8,78.,3. +23.2,4,156.0,105.0,2745.,16.7,78.,1. +23.8,4,151.0,85.00,2855.,17.6,78.,1. +23.9,4,119.0,97.00,2405.,14.9,78.,3. +20.3,5,131.0,103.0,2830.,15.9,78.,2. +17.0,6,163.0,125.0,3140.,13.6,78.,2. +21.6,4,121.0,115.0,2795.,15.7,78.,2. +16.2,6,163.0,133.0,3410.,15.8,78.,2. +31.5,4,89.00,71.00,1990.,14.9,78.,2. +29.5,4,98.00,68.00,2135.,16.6,78.,3. +21.5,6,231.0,115.0,3245.,15.4,79.,1. +19.8,6,200.0,85.00,2990.,18.2,79.,1. +22.3,4,140.0,88.00,2890.,17.3,79.,1. +20.2,6,232.0,90.00,3265.,18.2,79.,1. +20.6,6,225.0,110.0,3360.,16.6,79.,1. +17.0,8,305.0,130.0,3840.,15.4,79.,1. +17.6,8,302.0,129.0,3725.,13.4,79.,1. +16.5,8,351.0,138.0,3955.,13.2,79.,1. +18.2,8,318.0,135.0,3830.,15.2,79.,1. +16.9,8,350.0,155.0,4360.,14.9,79.,1. +15.5,8,351.0,142.0,4054.,14.3,79.,1. +19.2,8,267.0,125.0,3605.,15.0,79.,1. +18.5,8,360.0,150.0,3940.,13.0,79.,1. +31.9,4,89.00,71.00,1925.,14.0,79.,2. +34.1,4,86.00,65.00,1975.,15.2,79.,3. +35.7,4,98.00,80.00,1915.,14.4,79.,1. +27.4,4,121.0,80.00,2670.,15.0,79.,1. +25.4,5,183.0,77.00,3530.,20.1,79.,2. +23.0,8,350.0,125.0,3900.,17.4,79.,1. +27.2,4,141.0,71.00,3190.,24.8,79.,2. +23.9,8,260.0,90.00,3420.,22.2,79.,1. +34.2,4,105.0,70.00,2200.,13.2,79.,1. +34.5,4,105.0,70.00,2150.,14.9,79.,1. +31.8,4,85.00,65.00,2020.,19.2,79.,3. +37.3,4,91.00,69.00,2130.,14.7,79.,2. +28.4,4,151.0,90.00,2670.,16.0,79.,1. +28.8,6,173.0,115.0,2595.,11.3,79.,1. +26.8,6,173.0,115.0,2700.,12.9,79.,1. +33.5,4,151.0,90.00,2556.,13.2,79.,1. +41.5,4,98.00,76.00,2144.,14.7,80.,2. +38.1,4,89.00,60.00,1968.,18.8,80.,3. +32.1,4,98.00,70.00,2120.,15.5,80.,1. +37.2,4,86.00,65.00,2019.,16.4,80.,3. +28.0,4,151.0,90.00,2678.,16.5,80.,1. +26.4,4,140.0,88.00,2870.,18.1,80.,1. +24.3,4,151.0,90.00,3003.,20.1,80.,1. +19.1,6,225.0,90.00,3381.,18.7,80.,1. +34.3,4,97.00,78.00,2188.,15.8,80.,2. +29.8,4,134.0,90.00,2711.,15.5,80.,3. +31.3,4,120.0,75.00,2542.,17.5,80.,3. +37.0,4,119.0,92.00,2434.,15.0,80.,3. +32.2,4,108.0,75.00,2265.,15.2,80.,3. +46.6,4,86.00,65.00,2110.,17.9,80.,3. +27.9,4,156.0,105.0,2800.,14.4,80.,1. +40.8,4,85.00,65.00,2110.,19.2,80.,3. +44.3,4,90.00,48.00,2085.,21.7,80.,2. +43.4,4,90.00,48.00,2335.,23.7,80.,2. +36.4,5,121.0,67.00,2950.,19.9,80.,2. +30.0,4,146.0,67.00,3250.,21.8,80.,2. +44.6,4,91.00,67.00,1850.,13.8,80.,3. +33.8,4,97.00,67.00,2145.,18.0,80.,3. +29.8,4,89.00,62.00,1845.,15.3,80.,2. +32.7,6,168.0,132.0,2910.,11.4,80.,3. +23.7,3,70.00,100.0,2420.,12.5,80.,3. +35.0,4,122.0,88.00,2500.,15.1,80.,2. +32.4,4,107.0,72.00,2290.,17.0,80.,3. +27.2,4,135.0,84.00,2490.,15.7,81.,1. +26.6,4,151.0,84.00,2635.,16.4,81.,1. +25.8,4,156.0,92.00,2620.,14.4,81.,1. +23.5,6,173.0,110.0,2725.,12.6,81.,1. +30.0,4,135.0,84.00,2385.,12.9,81.,1. +39.1,4,79.00,58.00,1755.,16.9,81.,3. +39.0,4,86.00,64.00,1875.,16.4,81.,1. +35.1,4,81.00,60.00,1760.,16.1,81.,3. +32.3,4,97.00,67.00,2065.,17.8,81.,3. +37.0,4,85.00,65.00,1975.,19.4,81.,3. +37.7,4,89.00,62.00,2050.,17.3,81.,3. +34.1,4,91.00,68.00,1985.,16.0,81.,3. +34.7,4,105.0,63.00,2215.,14.9,81.,1. +34.4,4,98.00,65.00,2045.,16.2,81.,1. +29.9,4,98.00,65.00,2380.,20.7,81.,1. +33.0,4,105.0,74.00,2190.,14.2,81.,2. +33.7,4,107.0,75.00,2210.,14.4,81.,3. +32.4,4,108.0,75.00,2350.,16.8,81.,3. +32.9,4,119.0,100.0,2615.,14.8,81.,3. +31.6,4,120.0,74.00,2635.,18.3,81.,3. +28.1,4,141.0,80.00,3230.,20.4,81.,2. +30.7,6,145.0,76.00,3160.,19.6,81.,2. +25.4,6,168.0,116.0,2900.,12.6,81.,3. +24.2,6,146.0,120.0,2930.,13.8,81.,3. +22.4,6,231.0,110.0,3415.,15.8,81.,1. +26.6,8,350.0,105.0,3725.,19.0,81.,1. +20.2,6,200.0,88.00,3060.,17.1,81.,1. +17.6,6,225.0,85.00,3465.,16.6,81.,1. +28.0,4,112.0,88.00,2605.,19.6,82.,1. +27.0,4,112.0,88.00,2640.,18.6,82.,1. +34.0,4,112.0,88.00,2395.,18.0,82.,1. +31.0,4,112.0,85.00,2575.,16.2,82.,1. +29.0,4,135.0,84.00,2525.,16.0,82.,1. +27.0,4,151.0,90.00,2735.,18.0,82.,1. +24.0,4,140.0,92.00,2865.,16.4,82.,1. +36.0,4,105.0,74.00,1980.,15.3,82.,2. +37.0,4,91.00,68.00,2025.,18.2,82.,3. +31.0,4,91.00,68.00,1970.,17.6,82.,3. +38.0,4,105.0,63.00,2125.,14.7,82.,1. +36.0,4,98.00,70.00,2125.,17.3,82.,1. +36.0,4,120.0,88.00,2160.,14.5,82.,3. +36.0,4,107.0,75.00,2205.,14.5,82.,3. +34.0,4,108.0,70.00,2245,16.9,82.,3. +38.0,4,91.00,67.00,1965.,15.0,82.,3. +32.0,4,91.00,67.00,1965.,15.7,82.,3. +38.0,4,91.00,67.00,1995.,16.2,82.,3. +25.0,6,181.0,110.0,2945.,16.4,82.,1. +38.0,6,262.0,85.00,3015.,17.0,82.,1. +26.0,4,156.0,92.00,2585.,14.5,82.,1. +22.0,6,232.0,112.0,2835,14.7,82.,1. +32.0,4,144.0,96.00,2665.,13.9,82.,3. +36.0,4,135.0,84.00,2370.,13.0,82.,1. +27.0,4,151.0,90.00,2950.,17.3,82.,1. +27.0,4,140.0,86.00,2790.,15.6,82.,1. +44.0,4,97.00,52.00,2130.,24.6,82.,2. +32.0,4,135.0,84.00,2295.,11.6,82.,1. +28.0,4,120.0,79.00,2625.,18.6,82.,1. +31.0,4,119.0,82.00,2720.,19.4,82.,1. \ No newline at end of file diff --git a/fs-lab.fsproj b/fs-lab.fsproj index aa0bf0a..852866e 100755 --- a/fs-lab.fsproj +++ b/fs-lab.fsproj @@ -77,8 +77,10 @@ - - + + + + 11 diff --git a/wrun.fs b/wrun.fs new file mode 100644 index 0000000..da5dc0d --- /dev/null +++ b/wrun.fs @@ -0,0 +1,5 @@ + +[] +let main argv = + printfn "pairs: %A" linearregression.pairs + 0