當前位置:首頁 » 編程語言 » python相似度計算

python相似度計算

發布時間: 2023-01-29 08:26:34

python中是否有用於計算兩個字元串相似度的函數

linux環境下,沒有首先安裝python_Levenshtein,用法如下:

重點介紹幾個該包中的幾個計算字串相似度的幾個函數實現。

1. Levenshtein.hamming(str1, str2)

計算漢明距離。要求str1和str2必須長度一致。是描述兩個等長字串之間對應位置上不同字元的個數。如

2. Levenshtein.distance(str1, str2)

計算編輯距離(也成Levenshtein距離)。是描述由一個字串轉化成另一個字串最少的操作次數,在其中的操作包括插入、刪除、替換。如

演算法實現 參考動態規劃整理:http://www.cnblogs.com/kaituorensheng/archive/2013/05/15/3080990.html。

3. Levenshtein.ratio(str1, str2)

計算萊文斯坦比。計算公式 r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的長度總和,ldist是類編輯距離

注意:這里的類編輯距離不是2中所說的編輯距離,2中三種操作中每個操作+1,而在此處,刪除、插入依然+1,但是替換+2

這樣設計的目的:ratio('a', 'c'),sum=2,按2中計算為(2-1)/2 = 0.5,』a','c'沒有重合,顯然不合算,但是替換操作+2,就可以解決這個問題。

4. Levenshtein.jaro(s1, s2)

計算jaro距離,

其中的m為s1, s2的匹配長度,當某位置的認為匹配 當該位置字元相同,或者在不超過

t是調換次數的一半

5. Levenshtein.jaro_winkler(s1, s2)

計算Jaro–Winkler距離

Ⅱ 圖像相似度計算【python】

其中,G和S為兩張圖片的圖像顏色分布直方圖,N為顏色空間樣點數。這里使用分塊的方法計算相似度,用以提高各部分的特徵,防止圖片顏色相似導致計算的相似度高。

—————————————————————————————————————————————————————————————————

—————————————————————————————————————————————————————————————————

—————————————————————————————————————————————————————————————————

轉自另一位大佬,忘記地址了

Ⅲ python怎麼求app名字列相似度

在Python中使用hnswlib演算法。python求app名字列相似度在Python中使用hnswlib演算法,需要導入hnswlib包。Python是一種廣泛使用的高級編程語言,屬於通用型編程語言,由吉多·范羅蘇姆創造,發布於1991年。

Ⅳ python 列表相似度怎麼計算

找它們的共同元素?

Ⅳ 常見的相似度度量演算法




本文目錄:




  定義在兩個向量(兩個點)上:點x和點y的歐式距離為:

  常利用歐幾里得距離描述相似度時,需要取倒數歸一化,sim = 1.0/(1.0+distance),利用numpy實現如下:

python實現歐式距離

  從名字就可以猜出這種距離的計算方法了。想像你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎?顯然不是,除非你能穿越大樓。實際駕駛距離就是這個「曼哈頓距離」。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。

  (1)二維平面兩點a(x1,y1)與b(x2,y2)間的曼哈頓距離

  (2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的曼哈頓距離

   python實現曼哈頓距離:


  國際象棋玩過么?國王走一步能夠移動到相鄰的8個方格中的任意一個。那麼國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走試試。你會發現最少步數總是max( | x2-x1 | , | y2-y1 | ) 步 。有一種類似的一種距離度量方法叫切比雪夫距離。

  (1)二維平面兩點a(x1,y1)與b(x2,y2)間的切比雪夫距離

  (2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的切比雪夫距離

   python實現切比雪夫距離:


  閔氏距離不是一種距離,而是一組距離的定義。

  兩個n維變數a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的閔可夫斯基距離定義為:

  其中p是一個變參數。

  當p=1時,就是曼哈頓距離

  當p=2時,就是歐氏距離

  當p→∞時,就是切比雪夫距離

  根據變參數的不同,閔氏距離可以表示一類的距離。

  閔氏距離,包括曼哈頓距離、歐氏距離和切比雪夫距離都存在明顯的缺點。

  舉個例子:二維樣本(身高,體重),其中身高范圍是150 190,體重范圍是50 60,有三個樣本:a(180,50),b(190,50),c(180,60)。那麼a與b之間的閔氏距離(無論是曼哈頓距離、歐氏距離或切比雪夫距離)等於a與c之間的閔氏距離,但是身高的10cm真的等價於體重的10kg么?因此用閔氏距離來衡量這些樣本間的相似度很有問題。

  簡單說來,閔氏距離的缺點主要有兩個:

  (1)將各個分量的量綱(scale),也就是「單位」當作相同的看待了。

  (2)沒有考慮各個分量的分布(期望,方差等)可能是不同的。


  標准歐氏距離的定義

  標准化歐氏距離是針對簡單歐氏距離的缺點而作的一種改進方案。標准歐氏距離的思路:既然數據各維分量的分布不一樣,好吧!那我先將各個分量都「標准化」到均值、方差相等吧。均值和方差標准化到多少呢?這里先復習點統計學知識吧,假設樣本集X的均值(mean)為m,標准差(standard deviation)為s,那麼X的「標准化變數」表示為:

  而且標准化變數的數學期望為0,方差為1。因此樣本集的標准化過程(standardization)用公式描述就是:

  標准化後的值 = ( 標准化前的值 - 分量的均值 ) /分量的標准差

  經過簡單的推導就可以得到兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的標准化歐氏距離的公式:

  如果將方差的倒數看成是一個權重,這個公式可以看成是一種加權歐氏距離(Weighted Euclidean distance)。


  有M個樣本向量X1~Xm,協方差矩陣記為S,均值記為向量μ,則其中樣本向量X到u的馬氏距離表示為:

  而其中向量Xi與Xj之間的馬氏距離定義為:

  若協方差矩陣是單位矩陣(各個樣本向量之間獨立同分布),則公式就成了:

  也就是歐氏距離了。

  若協方差矩陣是對角矩陣,公式變成了標准化歐氏距離。

  馬氏距離的優缺點:量綱無關,排除變數之間的相關性的干擾。


  幾何中夾角餘弦可用來衡量兩個向量方向的差異,機器學習中借用這一概念來衡量樣本向量之間的差異。

  在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角餘弦公式:

  兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夾角餘弦

  類似的,對於兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用類似於夾角餘弦的概念來衡量它們間的相似程度。

  即:

  夾角餘弦取值范圍為[-1,1]。夾角餘弦越大表示兩個向量的夾角越小,夾角餘弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角餘弦取最大值1,當兩個向量的方向完全相反夾角餘弦取最小值-1。

python實現餘弦相似度:


  兩個等長字元串s1與s2之間的漢明距離定義為將其中一個變為另外一個所需要作的最小替換次數。例如字元串「1111」與「1001」之間的漢明距離為2。

  應用:信息編碼(為了增強容錯性,應使得編碼間的最小漢明距離盡可能大)。

python實現漢明距離:


  兩個集合A和B的交集元素在A,B的並集中所佔的比例,稱為兩個集合的傑卡德相似系數,用符號J(A,B)表示。

  傑卡德相似系數是衡量兩個集合的相似度一種指標。

  與傑卡德相似系數相反的概念是傑卡德距離(Jaccard distance)。傑卡德距離可用如下公式表示:

  傑卡德距離用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區分度。

  可將傑卡德相似系數用在衡量樣本的相似度上。

  樣本A與樣本B是兩個n維向量,而且所有維度的取值都是0或1。例如:A(0111)和B(1011)。我們將樣本看成是一個集合,1表示集合包含該元素,0表示集合不包含該元素。

  p :樣本A與B都是1的維度的個數

  q :樣本A是1,樣本B是0的維度的個數

  r :樣本A是0,樣本B是1的維度的個數

  s :樣本A與B都是0的維度的個數

  這里p+q+r可理解為A與B的並集的元素個數,而p是A與B的交集的元素個數。

  而樣本A與B的傑卡德距離表示為:


  皮爾遜相關系數即為相關系數 ( Correlation coefficient )與相關距離(Correlation distance)

  相關系數的定義

  相關系數是衡量隨機變數X與Y相關程度的一種方法,相關系數的取值范圍是[-1,1]。相關系數的絕對值越大,則表明X與Y相關度越高。當X與Y線性相關時,相關系數取值為1(正線性相關)或-1(負線性相關)。








1. 機器學習中的相似性度量

2. 推薦演算法入門(1)相似度計算方法大全

3. Python Numpy計算各類距離

4. 皮爾遜積矩相關系數

Ⅵ 如何用Python計算上幾百張圖片之間的相似度

把圖片表示成向量,二維拉成一維
每個維度非零即一,然後比較兩個向量的漢明距離就能反向代表相似度

Ⅶ python計算多個數組的相關性

線性相關:主要採用皮爾遜相關系數來度量連續變數之間的線性相關強度;

線性相關系數|r| 相關程度

0<=|r|<0.3 低度相關

0.3<=|r|<0.8 中度相關

0.8<=|r|<1 高度相關

1 函數
相關分析函數:

DataFrame.corr()
Series.corr(other)

說明:
如果由數據框調用corr方法,那麼將會計算每個列兩兩之間的相似度

如果由序列調用corr方法,那麼只是計算該序列與傳入序列之間的相關度

返回值:

dataFrame調用:返回DataFrame
Series調用: 返回一個數值型,大小為相關度

2 案例
import pandas

data=pandas.read_csv('C:\\Users\\Desktop\\test.csv')

print(data.corr())
#由數據框調用corr方法,將會計算每個列兩兩之間的相似度,返回的是一個矩形

print(data['人口'].corr(data['文盲率']))
#由某一列調用corr方法,只是計算該序列與傳入序列(本例中的'文盲率')之間的相關度

print(data['超市購物率','網上購物率','文盲率','人口']).corr()

Ⅷ python中怎麼實現相似度的計算,比如:中國石油銷售有限公司--中國石油金屬有限公司,計算他們的相似度

#/usr/bin/envpython3
s1='中國石油銷售有限公司'.strip()
s2='中國石油金屬有限公司'.strip()
similar=sum([i==jfori,jinzip(s1,s2)])/len(s1)
print('相似度{:.2f}%'.format(similar*100))

[willie@bogon pys]$ python3 similar.py

相似度80.00%

熱點內容
pyinstaller如何自定義配置打包 發布:2024-04-16 22:51:54 瀏覽:199
怎麼設置建行登陸密碼 發布:2024-04-16 22:49:58 瀏覽:58
大型激光編程 發布:2024-04-16 22:41:04 瀏覽:535
手機解壓不了游戲 發布:2024-04-16 22:25:04 瀏覽:149
職場簡單編程 發布:2024-04-16 21:58:30 瀏覽:498
零食劇情腳本 發布:2024-04-16 20:59:56 瀏覽:82
我的世界粘土伺服器戰牆 發布:2024-04-16 20:55:31 瀏覽:683
sql字元串的長度 發布:2024-04-16 20:50:18 瀏覽:186
glc配置一般為什麼那麼貴 發布:2024-04-16 20:49:35 瀏覽:270
如何開啟共享電腦伺服器 發布:2024-04-16 20:21:06 瀏覽:660