部分示意代码,仅作Demo使用,未作严格的参数检查等。
公式:cos(q,d) = q·d / (|q||d|)
代码示例:
def guiyi(x): fenmu = sqrt(sum(pow(xi, 2) for xi in x)) return [xi/fenmu for xi in x] def cos(a, b): return sum(ai*bi for ai,bi in zip(a, b))
上述代码适用于多维向量需要两两之间求相似度的情景。下面的代码将直接求得两个向量的余弦相似度。
def sim(a, b): return sum(ai * bi for ai, bi in zip(a, b)) / (sqrt(sum(ai ** 2 for ai in a)) * sqrt(sum(bi ** 2 for bi in b)))
公式:|x–y|=√Σ(xi–yi)2
代码示例:
def euc(a, b): return sqrt(sum((ai - bi) ** 2 for ai, bi in zip(a, b)))
附:
求向量内积的代码。
def s(a, b): return sum(ai * bi for ai, bi in zip(a, b))