鉴于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中有类似的库吗?
答案 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)
}