diff --git a/euclideanDistance.go b/euclideanDistance.go index 594149b..754d6ff 100644 --- a/euclideanDistance.go +++ b/euclideanDistance.go @@ -1,28 +1,25 @@ package main import ( - "fmt" "math" ) -func euclideanDistance(dataset [][][]int, inputs [][]int) [][][]float64 { +func euclideanDistance(dataset [][][]int, inputLine []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 - } + for _, datasetLine := range dataset { + datasetLineFloat := arrayIntToFloat64(datasetLine[0]) + resultDatasetLineFloat := arrayIntToFloat64(datasetLine[1]) + inputLineFloat := arrayIntToFloat64(inputLine) + r := calcDistances(inputLineFloat, datasetLineFloat) + distance := []float64{r} + var newDatasetLine [][]float64 + newDatasetLine = append(newDatasetLine, datasetLineFloat) + newDatasetLine = append(newDatasetLine, resultDatasetLineFloat) + newDatasetLine = append(newDatasetLine, distance) + distances = append(distances, newDatasetLine) + //distances contains: [[datasetLine], [datasetLineResult], [distanceWithInput]] } - //fmt.Println(train) return distances } @@ -36,18 +33,24 @@ func calcDistances(in []float64, ds []float64) float64 { return r } -func getShortestDistance(dist [][][]float64) { - min := dist[0][0] - max := dist[0][0] +func getShortestDistance(dist [][][]float64) [][]float64 { + min := dist[0][2] + max := dist[0][2] + var datasetNearResult [][]float64 for i := 0; i < len(dist); i++ { - if dist[i][1][0] > max[0] { + //fmt.Println(dist[i][1]) + if dist[i][2][0] > max[0] { max = dist[i][0] } - if dist[i][0][0] < min[0] { + /*fmt.Println(min[0]) + fmt.Println(dist[i][1][0])*/ + if dist[i][2][0] < min[0] { min = dist[i][0] + datasetNearResult = dist[i] } //fmt.Println(dist[i][1]) } - fmt.Println(min) - fmt.Println(max) + /*fmt.Println(min) + fmt.Println(max)*/ + return datasetNearResult } diff --git a/main.go b/main.go index e48aa6b..31942da 100644 --- a/main.go +++ b/main.go @@ -1,11 +1,19 @@ package main +import "fmt" + func main() { dataset := readDataset("datasets/poker/poker-hand-training-true.data", "\n", ",") //fmt.Println(dataset) inputs := readInputs("datasets/prova.data", "\n", ",") //fmt.Println(inputs) - distances := euclideanDistance(dataset, inputs) - getShortestDistance(distances) + var datasetDistances [][][]float64 + for _, input := range inputs { + datasetDistances = euclideanDistance(dataset, input) + r := getShortestDistance(datasetDistances) + fmt.Println(input) + fmt.Println(r) + fmt.Println(r[1]) + } }