goKNN/euclideanDistance.go
euclideanDistance.goRaw
1package main
2
3import (
4 "fmt"
5 "math"
6)
7
8func euclideanDistance(dataset [][][]int, inputs [][]int) [][][]float64 {
9 var distances [][][]float64
10
11 for _, inputLine := range inputs {
12 for _, datasetLine := range dataset {
13 datasetLineFloat := arrayIntToFloat64(datasetLine[0])
14 inputLineFloat := arrayIntToFloat64(inputLine)
15 r := calcDistances(inputLineFloat, datasetLineFloat)
16 //fmt.Println(r)
17 rArr := []float64{r}
18 var newDatasetLine [][]float64
19 newDatasetLine = append(newDatasetLine, datasetLineFloat)
20 newDatasetLine = append(newDatasetLine, rArr)
21 distances = append(distances, newDatasetLine)
22 //passar tot els int de values a float64
23 }
24 }
25 //fmt.Println(train)
26 return distances
27}
28
29func calcDistances(in []float64, ds []float64) float64 {
30 var r float64
31 r = 0
32 for i := 0; i < len(in); i++ {
33 r = r + (in[i] * ds[i])
34 }
35 r = math.Sqrt(r)
36 return r
37}
38
39func getShortestDistance(dist [][][]float64) {
40 min := dist[0][0]
41 max := dist[0][0]
42 for i := 0; i < len(dist); i++ {
43 if dist[i][1][0] > max[0] {
44 max = dist[i][0]
45 }
46 if dist[i][0][0] < min[0] {
47 min = dist[i][0]
48 }
49 //fmt.Println(dist[i][1])
50 }
51 fmt.Println(min)
52 fmt.Println(max)
53}