问题描述:Cosine Similarity
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]).
public static double cosineSimilarity(int[] A, int[] B) {
// write your code here
double result=0.0;
//运算因子
double a=0.0;
double b=0.0;
double c=0.0;
if(A==null||B==null){
return 0.0;
}
if(A.length!=B.length){
return 0.0;
}
if(A.length==0||(A.length==1&&A[0]==0&&B[0]==0)){
return 2.0;
}
for(int i=0;i<A.length;i++){
a+=A[i]*B[i];
b+=Math.pow(A[i], 2);//等同于b+=A[i]*A[i];
c+=Math.pow(B[i], 2);//等同于c+=B[i]*B[i];
}
if(b==0||c==0){
return 2.0;
}
result=a/(Math.sqrt(b)*Math.sqrt(c));
return result;
}