余弦相似性是内积空间的两个矢量之间的相似性的度量,其测量它们之间的角度的余弦。 0° 的余弦为 1,对于任何其他角度,余弦小于 1。
Wiki 链接: Cosine Similarity
这里给出公式:
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
class Solution {
public:
/*
* @param A: An integer array
* @param B: An integer array
* @return: Cosine similarity
*/
double cosineSimilarity(vector<int> &A, vector<int> &B) {
// write your code here
int len1=A.size();
int len2=B.size();
if(len1!=len2) return 0;
double sum=0;
double powA=0;
double powB=0;
for (int i = 0; i < len1; i++) {
/* code */
sum+=A[i]*B[i];
powA+=pow(A[i],2);
powB+=pow(B[i],2);
}
if(powA==0||powB==0) return 2.0000;
// double sqrtA=sqrt(powA);
//double sqrtB=sqrt(powB);
return sum/(sqrt(powA)*sqrt(powB));
}
};```