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
 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}