445. 余弦相似度
余弦相似性是内积空间的两个矢量之间的相似性的度量,其测量它们之间的角度的余弦。 0° 的余弦为 1,对于任何其他角度,余弦小于 1。
Wiki 链接: Cosine Similarity
这里给出公式:
给你两个相同大小的向量 A B,求出他们的余弦相似度。
返回 2.0000 如果余弦相似不合法 (比如 A = [0] B = [0])。
样例
样例 1:
输入:A = [1,4,0], B = [1,2,3]
输出:0.5834
样例 2:
输入:A = [1], B = [2]
输出:1.0000
public class Solution {
/*
* @param A: An integer array
* @param B: An integer array
* @return: Cosine similarity
*/
public double cosineSimilarity(int[] A, int[] B) {
// write your code here
int lenA = A.length,lenB = B.length;
if(lenA==0||lenB==0) return 2.0000;
double s1=0,s2=0,s3=0;
for(int i=0;i<Math.min(lenA,lenB);i++)
s1+=A[i]*B[i];
for(int i=0;i<lenA;i++)
s2+=Math.pow(A[i],2);
for(int i=0;i<lenB;i++)
s3+=Math.pow(B[i],2);
s2 = Math.sqrt(s2);
s3 = Math.sqrt(s3);
if(s2+s3==0) return 2.0000;
return s1/(s2*s3);
}
}