arnaucube
arnaucube/galdricPublic Self-hosted repository
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}