Cosine similarity is a measure of similarity between two vectors of an inner product space that measures the cosine of the angle between them. The cosine of 0° is 1, and it is less than 1 for any other angle.
See wiki: Cosine Similarity
Here is the formula:
Given two vectors A and B with the same size, calculate the cosine similarity.
Return 2.0000
if cosine similarity is invalid (for example A = [0] and B = [0]).
样例
给出 A = [1, 2, 3]
, B = [2, 3 ,4]
.
返回 0.9926.
给出 A = [0]
, B = [0]
.
返回 2.0000
import java.text.*;
class Solution {
/**
* @param A: An integer array.
* @param B: An integer array.
* @return: Cosine similarity.
*/
public static double cosineSimilarity(int[] A, int[] B){
if(A.length!=B.length){
return 2.0000;
}
if(A==null||B==null){
return 2.0000;
}
long fenzi=0;
for(int i=0;i<A.length;i++){
fenzi+=A[i]*B[i];
}
long left=0;
long right=0;
for(int i=0;i<A.length;i++){
left+=A[i]*A[i];
right+=B[i]*B[i];
}
if(left*right==0){
return 2.0000;
}
double result=fenzi/Math.sqrt(left*right);
DecimalFormat df=new DecimalFormat("#.####");
return Double.parseDouble(df.format(result));
}
}