使用Python計算兩個不同列表的相似度
更新時間:2023年07月28日 08:51:33 作者:袁袁袁袁滿
這篇文章主要介紹了使用Python計算兩個不同列表的相似度,Python數(shù)據(jù)開發(fā)工作中的需求兩個不同列表給出相似度,本文實現(xiàn)判斷數(shù)字類型相似度和字符串類型相似度,非常實用,需要的朋友可以參考下
數(shù)字類型相似度
可以使用余弦相似度來計算兩個列表的相似度。
具體步驟如下:
- 將兩個列表轉化為向量形式,即將列表中的元素作為向量的分量。
- 計算向量的點積。
- 計算向量的模長。
- 計算余弦值。
- 將余弦值作為相似度。
Python代碼實現(xiàn):
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代碼實現(xiàn):
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計算列表相似度內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
獲取CSDN文章內容并轉換為markdown文本的python
這篇文章主要介紹了自己寫的小工具,可以直接獲取csdn文章并轉換為markdown格式,需要的朋友可以參考下2020-09-09使用wxPython和ECharts實現(xiàn)生成和保存HTML圖表
wxPython是一個基于wxWidgets的Python?GUI庫,ECharts是一個用于數(shù)據(jù)可視化的JavaScript庫,本文主要為大家介紹了如何使用wxPython和ECharts庫來生成和保存HTML圖表,感興趣的可以學習一下2023-08-08關于numpy中np.nonzero()函數(shù)用法的詳解
下面小編就為大家?guī)硪黄P于numpy中np.nonzero()函數(shù)用法的詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02