Scala中如何用欧式距离求相似度
时间: 2024-04-11 07:33:31 浏览: 18
在Scala中,可以使用以下代码来计算欧式距离并求相似度:
```scala
import scala.math.sqrt
// 计算欧式距离
def euclideanDistance(a: Array[Double], b: Array[Double]): Double = {
require(a.length == b.length, "Array lengths must be the same")
sqrt(a.zip(b).map { case (x, y) => math.pow(y - x, 2) }.sum)
}
// 计算欧式相似度(将距离映射到0到1之间)
def euclideanSimilarity(a: Array[Double], b: Array[Double]): Double = {
val distance = euclideanDistance(a, b)
1 / (1 + distance)
}
// 示例使用
val vectorA = Array(1.0, 2.0, 3.0)
val vectorB = Array(4.0, 5.0, 6.0)
val distance = euclideanDistance(vectorA, vectorB)
val similarity = euclideanSimilarity(vectorA, vectorB)
println(s"Euclidean Distance: $distance")
println(s"Euclidean Similarity: $similarity")
```
这段代码定义了两个函数:`euclideanDistance`用于计算欧式距离,`euclideanSimilarity`用于将距离转换为相似度(将距离映射到0到1之间)。你可以根据自己的需要调用这些函数,并传递相应的数组参数来计算欧式距离和相似度。