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