Skip to content

Instantly share code, notes, and snippets.

@hanbei
Created August 27, 2013 18:46
Show Gist options
  • Save hanbei/6357444 to your computer and use it in GitHub Desktop.
Save hanbei/6357444 to your computer and use it in GitHub Desktop.
Simplest Knn implementation in Scala
class KnnSimple {
var trainData: List[Array[Double]] = null
def train(trainData: List[Array[Double]]) {
this.trainData = trainData
}
def nearestNeighbour(k: Int, point: Array[Double]) : List[Array[Double]] = {
nearestNeighbour(k, point, (x, y) => Math.sqrt(x.zip(y).map(pair => (pair._1 - pair._2) * (pair._1 - pair._2)).sum))
}
def nearestNeighbour(k: Int, point: Array[Double], distance: (Array[Double], Array[Double]) => Double): List[Array[Double]] = {
val sorted = trainData.sortBy(distance(point, _))
sorted.slice(0, k)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment