首先将两个样本映射到特空间中,得到特征向量表示,然后计算两个特征向量之间的相似度。
计算方法:
余弦值越大,两个样本越相似。
代码实现:
public double cosineSimilarity(int[] A, int[] B) {
double up=0;
double downl=0;
double downr=0;
for(int i=0;i<A.length;i++){
int a=A[i];
int b=B[i];
up+=a*b;
downl+=a*a;
downr+=b*b;
}
downl=Math.sqrt(downl);
downr=Math.sqrt(downr);
if(downl==0||downr==0){
return 2;
}else{
return up/(downl*downr);
}
}
}