Python中計(jì)算相似度的方法詳解
計(jì)算相似度是許多機(jī)器學(xué)習(xí)和數(shù)據(jù)分析任務(wù)中的重要步驟,尤其是在推薦系統(tǒng)、文本分析和圖像處理等領(lǐng)域。相似度的計(jì)算有多種方法,每種方法適用于不同類型的數(shù)據(jù)。本文將探討如何在 Python 中計(jì)算相似度,提供示例代碼,并使用流程圖和旅行圖來(lái)表述我們的思路。
1. 相似度計(jì)算的基本概念
相似度是用來(lái)量化對(duì)象之間的相似程度的指標(biāo)。相似度通常取值在 0 到 1 之間,值越接近 1 表示越相似。常見(jiàn)的相似度計(jì)算方法包括:
- 余弦相似度(Cosine Similarity)
- 歐氏距離(Euclidean Distance)
- 曼哈頓距離(Manhattan Distance)
- 杰卡德相似度(Jaccard Similarity)
2. 余弦相似度
余弦相似度是一種衡量?jī)蓚€(gè)非零向量夾角的相似度,計(jì)算公式為:
[ \text{cosine_similarity} = \frac{A \cdot B}{|A| |B|} ]
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# 示例
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])
similarity = cosine_similarity(vector_a, vector_b)
print(f'余弦相似度: {similarity}')
3. 歐氏距離
歐氏距離是計(jì)算兩點(diǎn)之間的“直線”距離,計(jì)算公式為:
[ \text{Euclidean Distance} = \sqrt{\sum (a_i - b_i)^2} ]
示例代碼
from scipy.spatial import distance
def euclidean_distance(a, b):
return distance.euclidean(a, b)
# 示例
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])
dist = euclidean_distance(vector_a, vector_b)
print(f'歐氏距離: {dist}')
4. 曼哈頓距離
曼哈頓距離計(jì)算兩點(diǎn)在坐標(biāo)軸上各分量的絕對(duì)差值的總和,計(jì)算公式為:
[ \text{Manhattan Distance} = \sum |a_i - b_i| ]
示例代碼
def manhattan_distance(a, b):
return np.sum(np.abs(a - b))# 示例
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])
dist = manhattan_distance(vector_a, vector_b)
print(f'曼哈頓距離: {dist}')
5. 杰卡德相似度
杰卡德相似度用于測(cè)量有限樣本集合之間的相似性,計(jì)算公式為:
[ \text{Jaccard Similarity} = \frac{|A \cap B|}{|A \cup B|} ]
示例代碼
def jaccard_similarity(set_a, set_b):
intersection = len(set_a.intersection(set_b))
union = len(set_a.union(set_b))
return intersection / union
# 示例
set_a = {1, 2, 3}
set_b = {3, 4, 5}
similarity = jaccard_similarity(set_a, set_b)
print(f'杰卡德相似度: {similarity}')
6. 流程分析
計(jì)算相似度的基本流程如下:

7. 旅行圖
在數(shù)據(jù)分析的旅程中,我們可以將每個(gè)步驟視為旅途中的一個(gè)環(huán)節(jié),以下是我們的數(shù)據(jù)計(jì)算之旅:

到此這篇關(guān)于Python中計(jì)算相似度的方法詳解的文章就介紹到這了,更多相關(guān)Python計(jì)算相似度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)自動(dòng)化錄制屏幕并生成視頻
這篇文章主要為大家詳細(xì)介紹了如何在有另一個(gè)Python進(jìn)程運(yùn)行時(shí),使用Python自動(dòng)錄制屏幕生成視頻,并用以檢查其執(zhí)行情況,感興趣的小伙伴可以了解下2026-03-03
Django 返回json數(shù)據(jù)的實(shí)現(xiàn)示例
這篇文章主要介紹了Django 返回json數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
django的聚合函數(shù)和aggregate、annotate方法使用詳解
這篇文章主要介紹了django的聚合函數(shù)和aggregate、annotate方法使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python通過(guò)Schema實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證方式
這篇文章主要介紹了Python通過(guò)Schema實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
python得到一個(gè)excel的全部sheet標(biāo)簽值方法
今天小編就為大家分享一篇python得到一個(gè)excel的全部sheet標(biāo)簽值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12

