使用Python计算两个不同列表的相似度
更新时间:2023年07月28日 08:51:33 作者:袁袁袁袁满
这篇文章主要介绍了使用Python计算两个不同列表的相似度,Python数据开发工作中的需求两个不同列表给出相似度,本文实现判断数字类型相似度和字符串类型相似度,非常实用,需要的朋友可以参考下
数字类型相似度
可以使用余弦相似度来计算两个列表的相似度。
具体步骤如下:
- 将两个列表转化为向量形式,即将列表中的元素作为向量的分量。
- 计算向量的点积。
- 计算向量的模长。
- 计算余弦值。
- 将余弦值作为相似度。
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相似度是通过计算两个集合的交集与并集之比来衡量它们的相似程度。具体步骤如下:
- 将两个列表转化为集合形式,即将列表中的元素作为集合的元素。
- 计算两个集合的交集。
- 计算两个集合的并集。
- 计算交集与并集之比。
- 将比值作为相似度。
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
表示两个字符串列表的相似度较低。
到此这篇关于使用Python计算两个不同列表的相似度的文章就介绍到这了,更多相关Python计算列表相似度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
配置python的编程环境之Anaconda + VSCode的教程
这篇文章主要介绍了配置python的编程环境之Anaconda + VSCode的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-03-03详解如何将Python可执行文件(.exe)反编译为Python脚本
将 Python 可执行文件(.exe)反编译为 Python 脚本是一项有趣的技术挑战,可以帮助我们理解程序的工作原理,下面我们就来看看具体实现步骤吧2024-03-03升级keras解决load_weights()中的未定义skip_mismatch关键字问题
这篇文章主要介绍了升级keras解决load_weights()中的未定义skip_mismatch关键字问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06
最新评论