levenshtein 距離 python實現
參考了部落格
對於編輯距離,我做了很詳細的解釋,具體如下:
import numpy as np
"""
此為編輯距離,就是str1轉化為str2的編輯距離
採用的就是動態規劃思想
舉例說明,我們以 str1="leensh",str2="levensh"為例,首先得到的結果為:
l e v e n s h
[[0. 1. 2. 3. 4. 5. 6. 7.]
l [1. 0. 1. 2. 3. 4. 5. 6.]
e [2. 1. 0. 1. 2. 3. 4. 5.]
e [3. 2. 1. 1. 1. 2. 3. 4.]
n [4. 3. 2. 2. 2. 1. 2. 3.]
s [5. 4. 3. 3. 3. 2. 1. 2.]
h [6. 5. 4. 4. 4. 3. 2. 1.]]
首先第一個字元完全一致,所以矩陣[1,1]為0,不需要更改,如果[1,2],[1,3],...[1,7]都做改變,距離一次累加,相當於,不管以後的字元,只管
str1只有一個字元l的情況下,變成str2的方法,需要把後邊全部變化成str2對應的字串,所以【1,2】,..,[1,7]依次累計,同理
當第二行,[2,1],認為str2,只有l的時候,由於第一個字元相同,所以str2變成str1只需當前1個過程,【2,2】為0,由於前兩個字元相同,同理[2,3],...
[2,7],當在第3行時,【3,3】為1,但是[3,4]為什麼也為1,這個是關鍵,變成[3,4],有三個可能,[2,4],[3,3],[2,3],由於最小積累在,[3,3],[2,3]對應的
待匹配字串分別為lev ,lev,,但是[3,3]進入到[3,4],需要新增e,這樣總代價變成了[3,3]+1=2,而[2,3]當前字串為lev,我們提供的【2,3】變成第3行
添加了一個e所以,與待匹配e相同,沒有變化,所以總代價還是1,而[3,3]已經把給的e變成了v,所以到第4步,需要重新新增e,所以代價為2,依次剩餘字串相同
所以總代價為1,他只需添加了一個
"""
def distance_str(str1,str2):
dp=np.zeros((len(str1)+1,len(str2)+1))
m=len(str1)
n=len(str2)
for k in range(1,m+1):
dp[k][0]=k
for k in range(1,n+1):
dp[0][k]=k
for k in range(1,m+1):
for j in range(1,n+1):
dp[k][j]=min(dp[k-1][j],dp[k][j-1])+1 #這裡表示上邊和下邊的數值最小數值
if str1[k-1]==str2[j-1]:
dp[k][j]=min(dp[k][j],dp[k-1][j-1])
else:
dp[k][j]=min(dp[k][j],dp[k-1][j-1]+1)
print(dp)
if __name__ == '__main__':
str1="leensh"
str2="levensh"
相關推薦
levenshtein 距離 python實現
參考了部落格對於編輯距離,我做了很詳細的解釋,具體如下:import numpy as np"""此為編輯距離,就是str1轉化為str2的編輯距離採用的就是動態規劃思想舉例說明,我們以 str1="leensh",str2="levensh"為例,首先得到的結果為:
距離度量以及python實現(二)
block eight spatial related sim tar 平移 spa spl 接上一篇:http://www.cnblogs.com/denny402/p/7027954.html 7. 夾角余弦(Cosine) 也可以叫余弦相似度。
python實現兩個經緯度點之間的距離和方位角
asi .net polar 經緯 div poi pytho ola 函數 from:http://blog.csdn.net/zhuqiuhui/article/details/53180395 1. 求兩個經緯點的方位角,P0(latA, lonA), P1(lat
距離度量與python實現
1. 歐氏距離(Euclidean Distance) 歐氏距離是最易於理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式。 (1)二維平面上兩點a(x1,y1)與b(x2,y2)間的歐氏距離: (2)三維空間兩點a(x1,y1,z1)與b(x2,y2,z2)間的歐氏距離: (3)兩
KNN也能進行人臉識別(Python實現加權歐氏距離KNN演算法)
程式碼地址: https://github.com/youaresherlock/IntelligentInformationProcessing 前沿: 本實踐是純屬小白練手入門小專案,希望未來可以手動自己用神經網路來識別人臉。共勉,加油!
加權歐氏距離KNN演算法實現人臉識別(Python實現)
前沿: 本實踐是純屬小白練手入門小專案,希望未來可以手動自己用神經網路來識別人臉。共勉,加油! 題目內容: 針對標準人臉樣本庫,選擇訓練和測試樣本,對基本的knn分類演算法設計智慧演算法進行改進,能夠對測試樣本識別出身份。 題目要求: 1) 選擇合適的編碼
距離產生美?k近鄰演算法python實現
1. 什麼是k近鄰演算法? k最近鄰(k-Nearest Neighbor,kNN)分類演算法是一個比較成熟也是最簡單的機器學習(Machine Learning)演算法之一。該方法的思路是:如果一個樣本在特徵空間中與k個例項最為相似(即特徵空間中最鄰
【機器學習】5種距離度量方法詳解+Python實現([]+lambda+np.frompyfunc+向量法等多種方法實現)
介紹的五種距離度量方法是:歐氏距離(Euclidean Distance),曼哈頓距離(Manhattan Distance),夾角餘弦(Angle Cosine),切比雪夫距離(Chebyshev Distance),漢明距離(Hamming Distance)。1.歐式距
資料探勘之曼哈頓距離、歐幾裡距離、明氏距離、皮爾遜相關係數、餘弦相似度Python實現程式碼
# -*- coding:utf8 -*- from math import sqrt users = {"Angelica": {"Blues Traveler": 3.5, "Broken Bells": 2.0, "Norah Jones": 4.5, "Phoeni
概率分佈之間的距離度量以及python實現
原文連結:https://www.cnblogs.com/wt869054461/p/7156397.html 1. 歐氏距離(Euclidean Distance) 歐氏距離是最易於理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式。 (1)二維平面
常用距離演算法和相關係數及其Python實現
在機器學習的過程中,經常會遇到需要考察具有某些特徵的兩個樣本之間相似程度的情況。計相似程度的計算可以使用距離演算法或是相關係數,直觀來說,距離和相關係數的變化呈負相關,距離越小,相關係數越大,越相似,反之亦然。 接下來記錄幾種簡單實用的距離演算法和相關係數,以
python實現機器學習中的各種距離計算及文字相似度演算法
在自然語言處理以及機器學習的分類或者聚類中會涉及到很多距離的使用,各種距離的概念以及適用範圍請自行百度或者參考各種距離 import numpy as np import math # 依賴包numpy、python-Levenshtein、scipy
距離度量以及python實現(一)
1. 歐氏距離(Euclidean Distance) 歐氏距離是最易於理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式。 (1)二維平面上兩點a(x1,y1)與b(x2,y2)間的歐氏距離: (2)三維空間兩點a(x1,y1,z1)與b(x2,y2,z2)間的歐氏距離:
概率分佈之間的距離度量以及python實現(三)
概率分佈之間的距離,顧名思義,度量兩組樣本分佈之間的距離 。 1、卡方檢驗 統計學上的χ2統計量,由於它最初是由英國統計學家Karl Pearson在1900年首次提出的,因此也稱之為Pearson χ2,其計算公式為 (i=1,2,3,…,k) 其中,Ai為i水平的觀察頻數,Ei為i水平
概率分佈之間的距離度量以及python實現(四)
1、f 散度(f-divergence) KL-divergence 的壞處在於它是無界的。事實上KL-divergence 屬於更廣泛的 f-divergence 中的一種。 如果P和Q被定義成空間中的兩個概率分佈,則f散度被定義為: 一些通用的散度,如KL-divergence, Helling
編輯距離計算python實現
編輯距離是用來比較兩個字串之間相似度的度量方法,表示的是兩個字串間相互轉換所需要的最少步驟。 編輯距離遞推公式: 演算法計算步驟: 1.對於字串A 'jarrry'和字串B'jerr',先初始化矩陣dp為 [len(A) + 1][len(B) + 1],dp矩陣
各類距離和python實現
先看一下這個,我這裡主要是把實現這些距離的公式用python表達出來,其實網上其他人也都寫過,但我還是寫一遍閔可夫斯基距離歐式距離哈曼頓距離切比雪夫距離夾角餘弦漢明距離傑卡德相似係數1、歐式距離:
反距離權重插值(IDW)的python實現
定義: 反距離加權法又稱N-P法,是非規則分佈點變成規則分佈點常用的網格化方法之一。該方法的基本思想是離所估算的網格點距離越近的離散點對該網格點的影響越大,越遠的離散點影響越小,甚至可以認為沒有影響。在估算某一網格點的值時,假設離網格點最近的N個點對其有影響,
各類距離的意義與Python實現
轉載來自:http://book.2cto.com/201511/58274.html,本文所屬圖書 > 機器學習演算法原理與程式設計實踐。 本節所列的距離公式列表和程式碼如下: 閔可夫斯基距離(Minkowski Distance) 歐氏距離(Euclide
Levenshtein distance最小編輯距離演算法實現
Levenshtein distance,中文名為最小編輯距離,其目的是找出兩個字串之間需要改動多少個字元後變成一致。該演算法使用了動態規劃的演算法策略,該問題具備最優子結構,最小編輯距離包含子最小編輯距離,有下列的公式。 其中d[i-1,j]+1代表字串s2插入一個字母