我是靠谱客的博主 朴素夏天,最近开发中收集的这篇文章主要介绍【JAVA实现】基于欧几里得度量的相似度计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       前文讲了基于皮尔逊相关系数的相似度计算方法,这次介绍一个更加简单的相似度计算算法——欧几里得度量。

       算法描述如下:

       欧几里得度量定义欧几里得空间中,点x =(x1,...,xn)和 y =(y1,...,yn)之间的距离为


       很简单吧,我也不多做描述了,直接贴代码。

package euclideanMetric;
/**
* @author shenchao
*
*
欧几里得度量算法实现
*
*/
public class EuclideanMetric {
/**
* 两个向量可以为任意维度,但必须保持维度相同,表示n维度中的两点
*
* @param vector1
* @param vector2
* @return 两点间距离
*/
public double sim_distance(double[] vector1, double[] vector2) {
double distance = 0;
if (vector1.length == vector2.length) {
for (int i = 0; i < vector1.length; i++) {
double temp = Math.pow((vector1[i] - vector2[i]), 2);
distance += temp;
}
distance = Math.sqrt(distance);
}
return distance;
}
}

        最后,要说明的是,用欧几里得度量去计算相似度非常的简单,当然,这同时带来的后果是,在某种情况下会带来很大的误差。举个例子说:比如上篇博客提到的电影案例,每个人对自己看过的电影打分,这当然存在很大的主观性,因而可能会存在这样一种情况,一些人倾向于给高分,而另一些人倾向于给低分。这当然会造成两者的距离很大偏差。而使用皮尔逊相关度算法,则不会出现这种问题,因为它们变化的大小不变,所以斜率不变。所以选择哪种算法,依情况而定。


最后

以上就是朴素夏天为你收集整理的【JAVA实现】基于欧几里得度量的相似度计算的全部内容,希望文章能够帮你解决【JAVA实现】基于欧几里得度量的相似度计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部