package main
|
|
|
|
func euclideanDist(img1, img2 [][]float64) float64 {
|
|
var dist float64
|
|
for i := 0; i < len(img1); i++ {
|
|
for j := 0; j < len(img1[i]); j++ {
|
|
dist += (img1[i][j] - img2[i][j]) * (img1[i][j] - img2[i][j])
|
|
}
|
|
}
|
|
|
|
return dist
|
|
}
|
|
|
|
func knn(dataset Dataset, input [][]float64) string {
|
|
d := euclideanDist(dataset["leopard"][0], input)
|
|
label := "lamp"
|
|
for k, v := range dataset {
|
|
for i := 0; i < len(v); i++ {
|
|
dNew := euclideanDist(v[i], input)
|
|
if dNew < d {
|
|
d = dNew
|
|
label = k
|
|
}
|
|
}
|
|
}
|
|
return label
|
|
}
|