You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.2 KiB

package main
import (
"fmt"
"math"
)
func euclideanDistance(dataset [][][]int, inputs [][]int) [][][]float64 {
var distances [][][]float64
for _, inputLine := range inputs {
for _, datasetLine := range dataset {
datasetLineFloat := arrayIntToFloat64(datasetLine[0])
inputLineFloat := arrayIntToFloat64(inputLine)
r := calcDistances(inputLineFloat, datasetLineFloat)
//fmt.Println(r)
rArr := []float64{r}
var newDatasetLine [][]float64
newDatasetLine = append(newDatasetLine, datasetLineFloat)
newDatasetLine = append(newDatasetLine, rArr)
distances = append(distances, newDatasetLine)
//passar tot els int de values a float64
}
}
//fmt.Println(train)
return distances
}
func calcDistances(in []float64, ds []float64) float64 {
var r float64
r = 0
for i := 0; i < len(in); i++ {
r = r + (in[i] * ds[i])
}
r = math.Sqrt(r)
return r
}
func getShortestDistance(dist [][][]float64) {
min := dist[0][0]
max := dist[0][0]
for i := 0; i < len(dist); i++ {
if dist[i][1][0] > max[0] {
max = dist[i][0]
}
if dist[i][0][0] < min[0] {
min = dist[i][0]
}
//fmt.Println(dist[i][1])
}
fmt.Println(min)
fmt.Println(max)
}