galdric/knn.go
knn.goRaw
1package main
2
3func euclideanDist(img1, img2 [][]float64) float64 {
4 var dist float64
5
6 for i := 0; i < len(img1); i++ {
7 for j := 0; j < len(img1[i]); j++ {
8 dist += (img1[i][j] - img2[i][j]) * (img1[i][j] - img2[i][j])
9 }
10 }
11
12 return dist
13}
14
15func knn(dataset Dataset, input [][]float64) string {
16 d := euclideanDist(dataset["Leopards"][0], input)
17 label := "lamp"
18 for k, v := range dataset {
19 //fmt.Println(k)
20 for i := 0; i < len(v); i++ {
21 //fmt.Println(i)
22 dNew := euclideanDist(v[i], input)
23 if dNew < d {
24 d = dNew
25 label = k
26 }
27 }
28 }
29 return label
30}