牛客题解 | 计算向量之间的余弦相似度

题目

题目链接

余弦相似度是一种衡量两个向量之间相似度的方法,其计算公式为:

c o s i n e   s i m i l a r i t y = A ⋅ B ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ B ∣ ∣ cosine\ similarity = \frac{A \cdot B}{||A|| \cdot ||B||} cosine similarity=∣∣A∣∣∣∣B∣∣AB
其中, A A A B B B 是两个向量, ∣ ∣ A ∣ ∣ ||A|| ∣∣A∣∣ ∣ ∣ B ∣ ∣ ||B|| ∣∣B∣∣ 是向量 A A A B B B 的模。本式子其实大家十分熟悉,在高中数学中就已经接触过。是用来计算两个向量之间的夹角的余弦值。

标准代码如下

def cosine_similarity(v1, v2):
    if v1.shape != v2.shape:
        raise ValueError("Arrays must have the same shape")

    if v1.size == 0:
        raise ValueError("Arrays cannot be empty")

    v1_flat = v1.flatten()
    v2_flat = v2.flatten()

    dot_product = np.dot(v1_flat, v2_flat)
    magnitude1 = np.sqrt(np.sum(v1_flat**2))
    magnitude2 = np.sqrt(np.sum(v2_flat**2))

    if magnitude1 == 0 or magnitude2 == 0:
        raise ValueError("Vectors cannot have zero magnitude")

    return round(dot_product / (magnitude1 * magnitude2), 3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值