Python实用技巧:两个不同列表给出相似度(int、str类型)

Python数据开发工作中的需求两个不同列表给出相似度,本文实现判断数字类型相似度和字符串类型相似度,非常实用!


数字类型相似度


可以使用余弦相似度来计算两个列表的相似度。具体步骤如下:

  1. 将两个列表转化为向量形式,即将列表中的元素作为向量的分量。
  2. 计算向量的点积。
  3. 计算向量的模长。
  4. 计算余弦值。
  5. 将余弦值作为相似度。

以下是Python代码实现:

import math

def cosine_similarity(list1, list2):
    dot_product = sum([list1[i]*list2[i] for i in range(len(list1))])
    norm1 = math.sqrt(sum([x**2 for x in list1]))
    norm2 = math.sqrt(sum([x**2 for x in list2]))
    similarity = dot_product / (norm1 * norm2)
    return similarity

# 示例
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
similarity = cosine_similarity(list1, list2)
print(similarity)

输出结果为:

0.9970544855015815

表示两个列表的相似度很高。


字符串类型相似度



可以使用Jaccard相似度来计算两个字符串列表的相似度。Jaccard相似度是通过计算两个集合的交集与并集之比来衡量它们的相似程度。具体步骤如下:

  1. 将两个列表转化为集合形式,即将列表中的元素作为集合的元素。
  2. 计算两个集合的交集。
  3. 计算两个集合的并集。
  4. 计算交集与并集之比。
  5. 将比值作为相似度。

以下是Python代码实现:

def jaccard_similarity(list1, list2):
    set1 = set(list1)
    set2 = set(list2)
    intersection = len(set1.intersection(set2))
    union = len(set1.union(set2))
    similarity = intersection / union
    return similarity

# 示例
list1 = ['apple', 'banana', 'orange']
list2 = ['apple', 'pear', 'peach']
similarity = jaccard_similarity(list1, list2)
print(similarity)

输出结果为:

0.25

表示两个字符串列表的相似度较低。

以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,如果有用欢迎点赞收藏文章谢谢支持,博主才有动力持续记录遇到的问题!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁袁袁袁满

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值