Python實(shí)現(xiàn)杰卡德距離以及環(huán)比算法講解
前言
NLP-字符串相似性計(jì)算、集合相似性度量
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
杰卡德距離是什么?
杰卡德距離(Jaccard Distance) 是用來衡量兩個(gè)集合差異性的一種指標(biāo),它是杰卡德相似系數(shù)的補(bǔ)集,被定義為1減去Jaccard相似系數(shù)。而杰卡德相似系數(shù)(Jaccard similarity coefficient),也稱杰卡德指數(shù)(Jaccard Index),是用來衡量兩個(gè)集合相似度的一種指標(biāo)。
定義
Jaccard相似指數(shù)用來度量兩個(gè)集合之間的相似性,它被定義為兩個(gè)集合交集的元素個(gè)數(shù)除以并集的元素個(gè)數(shù)。

Jaccard距離用來度量兩個(gè)集合之間的差異性,它是Jaccard的相似系數(shù)的補(bǔ)集,被定義為1減去Jaccard相似系數(shù)。

Python實(shí)現(xiàn)
代碼如下:
# -*- encoding:utf-8 -*-
import jieba
def Jaccard(model, reference): # terms_reference為源句子,terms_model為候選句子
terms_reference = jieba.cut(reference) # 默認(rèn)精準(zhǔn)模式
terms_model = jieba.cut(model)
grams_reference = set(terms_reference) # 去重;如果不需要就改為list
grams_model = set(terms_model)
temp = 0
for i in grams_reference:
if i in grams_model:
temp = temp + 1
fenmu = len(grams_model) + len(grams_reference) - temp # 并集
try:
jaccard_coefficient = float(temp / fenmu) # 交集
except ZeroDivisionError:
print(model, reference)
return 0
else:
return jaccard_coefficient
環(huán)比是什么?
環(huán)比的發(fā)展速度是報(bào)告期水平與前一時(shí)期水平之比,表明現(xiàn)象逐期的發(fā)展速度。如計(jì)算一年內(nèi)各月與前一個(gè)月對比,即2月比1月,3月比2月,4月比3月……12月比11月,說明逐月的發(fā)展程度。如分析抗擊“非典”期間某些經(jīng)濟(jì)現(xiàn)象的發(fā)展趨勢,環(huán)比比同比更說明問題。
學(xué)過統(tǒng)計(jì)或者經(jīng)濟(jì)知識(shí)的人都知道,統(tǒng)計(jì)指標(biāo)按其具體內(nèi)容、實(shí)際作用和表現(xiàn)形式可以分為總量指標(biāo)、相對指標(biāo)和平均指標(biāo)。由于采用基期的不同,發(fā)展速度可分為同比發(fā)展速度、環(huán)比發(fā)展速度和定基發(fā)展速度。簡單地說,就是同比、環(huán)比與定基比,都可以用百分?jǐn)?shù)或倍數(shù)表示。
定基比發(fā)展速度,也簡稱總速度,一般是指報(bào)告期水平與某一固定時(shí)期水平之比,表明這種現(xiàn)象在較長時(shí)期內(nèi)總的發(fā)展速度。同比發(fā)展速度,一般指是指本期發(fā)展水平與上年同期發(fā)展水平對比,而達(dá)到的相對發(fā)展速度。環(huán)比發(fā)展速度,一般是指報(bào)告期水平與前一時(shí)期水平之比,表明現(xiàn)象逐期的發(fā)展速度。
同比和環(huán)比,這兩者所反映的雖然都是變化速度,但由于采用基期的不同,其反映的內(nèi)涵是完全不同的;一般來說,環(huán)比可以與環(huán)比相比較,而不能拿同比與環(huán)比相比較;而對于同一個(gè)地方,考慮時(shí)間縱向上發(fā)展趨勢的反映,則往往要把同比與環(huán)比放在一起進(jìn)行對照。 [1]
Python實(shí)現(xiàn)
代碼如下:
def month_on_month_ratio(data_list): ? ? mid = 0 ? ? length = len(data_list) ? ? res = [] ? ? while mid < length-1: ? ? ? ? a, b = data_list[mid:mid+2] ? ? ? ? res.append((b-a)/a) ? ? ? ? mid += 1 ? ? return res
以上就是今天分享的內(nèi)容,本文僅僅簡單介紹了杰卡德距離以及環(huán)比的Python版實(shí)現(xiàn),希望可以幫到大家,請大家以后多多支持腳本之家!
相關(guān)文章
Python的json.loads() 方法與json.dumps()方法及使用小結(jié)
json.loads() 是一個(gè)非常有用的方法,它允許你在處理 JSON 數(shù)據(jù)時(shí),將其轉(zhuǎn)換為 Python 數(shù)據(jù)類型,以便于在代碼中進(jìn)行操作和處理,這篇文章給大家介紹Python的json.loads() 方法與json.dumps()方法及使用小結(jié),感興趣的朋友一起看看吧2024-03-03
Python OpenCV實(shí)現(xiàn)按照像素點(diǎn)圖片切割
本文將詳細(xì)介紹如何使用Python和OpenCV進(jìn)行基于像素點(diǎn)的圖像分割,包括閾值分割,自適應(yīng)閾值分割等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12
Python RobotFramework的安裝過程及應(yīng)用實(shí)戰(zhàn)教程
這篇文章主要介紹了RobotFramework的安裝過程及應(yīng)用實(shí)戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
python使用rstrip函數(shù)刪除字符串末位字符
rstrip函數(shù)用于刪除字符串末位指定字符,默認(rèn)為空白符,這篇文章主要介紹了python使用rstrip函數(shù)刪除字符串末位字符的方法,需要的朋友可以參考下2023-04-04
詳解Python如何利用裝飾器實(shí)現(xiàn)重試機(jī)制
重試機(jī)制在編程中是比較常見的場景,主要被用于處理那些可能由于臨時(shí)性故障或網(wǎng)絡(luò)波動(dòng)等原因而失敗的操作,下面我們就來看看如何使用裝飾器來實(shí)現(xiàn)重試機(jī)制吧2024-03-03
手把手教你如何用Pycharm2020.1.1配置遠(yuǎn)程連接的詳細(xì)步驟
這篇文章主要介紹了如何用Pycharm2020.1.1配置遠(yuǎn)程連接,分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-08-08
Python實(shí)現(xiàn)隨機(jī)生成算術(shù)題的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)隨機(jī)生成算術(shù)題的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04

