Scala中的Hellinger距离

时间:2018-12-12 09:09:53

标签: scala math machine-learning

鉴于2 Array[Double]包含离散的概率分布,如何在Scala中实现Hellinger Distance

def hellingerSimilarity(a1: Array[Double], a2: Array[Double]): Double = {


}

我正在尝试使用scala.math.sqrt函数,但它仅适用于单个Double而不适用于Array。我已经习惯了Python的pairwise metrics,Scala / Spark中有类似的库吗?

1 个答案:

答案 0 :(得分:2)

下面只是scala代码中的数学公式:

def hellingerSimilarity(a1: Array[Double], a2: Array[Double]): Double = {
  val tupleSum = a1.zip(a2).map(x => pow(sqrt(x._1) - sqrt(x._2),2)).reduce(_+_)
  (1/sqrt(2)) * sqrt(tupleSum)
}