本篇文章給大家分享的是有關(guān)如何在Python中使用Numpy計算各類距離,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、網(wǎng)站設(shè)計、撫順縣網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、撫順縣網(wǎng)絡(luò)營銷、撫順縣企業(yè)策劃、撫順縣品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供撫順縣建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com1.閔氏距離的定義:
兩個n維變量A(x11,x12,…,x1n)與 B(x21,x22,…,x2n)間的閔可夫斯基距離定義為:
其中p是一個變參數(shù)。
當(dāng)p=1時,就是曼哈頓距離
當(dāng)p=2時,就是歐氏距離
當(dāng)p→∞時,就是切比雪夫距離
根據(jù)變參數(shù)的不同,閔氏距離可以表示一類的距離。
np.linalg.norm #是適合使用這個公式
2.歐氏距離(Euclidean Distance)
歐氏距離(L2范數(shù))是最易于理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式(如圖1.9)。
python實現(xiàn)歐式距離公式的:
vector1 = np.array([1,2,3]) vector2 = np.array([4,5,6]) op1=np.sqrt(np.sum(np.square(vector1-vector2))) op2=np.linalg.norm(vector1-vector2) print(op1) print(op2) #輸出: #5.19615242271 #5.19615242271
3.曼哈頓距離(Manhattan Distance)
從名字就可以猜出這種距離的計算方法了。想象你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎?顯然不是,除非你能穿越大樓。實際駕駛距離就是這個“曼哈頓距離”(L1范數(shù))。而這也是曼哈頓距離名稱的來源,曼哈頓距離也稱為城市街區(qū)距離(City Block distance)(如圖1.10)。
python實現(xiàn)曼哈頓距離:
vector1 = np.array([1,2,3]) vector2 = np.array([4,5,6]) op3=np.sum(np.abs(vector1-vector2)) op4=np.linalg.norm(vector1-vector2,ord=1) #輸出 #9 #9.0
4.切比雪夫距離(Chebyshev Distance)
國際象棋玩過么?國王走一步能夠移動到相鄰的8個方格中的任意一個(如圖1.11)。那么國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走試試。你會發(fā)現(xiàn)最少步數(shù)總是max(| x2-x1| , |y2-y1| ) 步。有一種類似的一種距離度量方法叫切比雪夫距離(L∞范數(shù))。
Python實現(xiàn)切比雪夫距離:
vector1 = np.array([1,2,3]) vector2 = np.array([4,7,5]) op5=np.abs(vector1-vector2).max() op6=np.linalg.norm(vector1-vector2,ord=np.inf) print(op5) print(op6) #輸出: #5 #5.0
5. 夾角余弦(Cosine)
幾何中夾角余弦可用來衡量兩個向量方向的差異,機器學(xué)習(xí)中借用這一概念來衡量樣本向量之間的差異(如圖1.12)。
(1)在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角余弦公式:
(2) 兩個n維樣本點A (x11,x12,…,x1n)與 B(x21,x22,…,x2n)的夾角余弦
類似的,對于兩個n維樣本點A(x11,x12,…,x1n)與 B(x21,x22,…,x2n),可以使用類似于夾角余弦的概念來衡量它們間的相似程度。
夾角余弦取值范圍為[-1,1]。夾角余弦越大表示兩個向量的夾角越小,夾角余弦越小表示兩向量的夾角越大。當(dāng)兩個向量的方向重合時夾角余弦取大值1,當(dāng)兩個向量的方向完全相反夾角余弦取最小值-1。
python實現(xiàn)夾角余弦
vector1 = np.array([1,2,3]) vector2 = np.array([4,7,5]) op7=np.dot(vector1,vector2)/(np.linalg.norm(vector1)*(np.linalg.norm(vector2))) print(op7) #輸出 #0.929669680201
6. 漢明距離(Hamming distance)
(1)漢明距離的定義
兩個等長字符串s1與s2之間的漢明距離定義為將其中一個變?yōu)榱硗庖粋€所需要作的最小替換次數(shù)。例如字符串“1111”與“1001”之間的漢明距離為2。
應(yīng)用:信息編碼(為了增強容錯性,應(yīng)使得編碼間的最小漢明距離盡可能大)。
(2) python實現(xiàn)漢明距離:
v1=np.array([1,1,0,1,0,1,0,0,1]) v2=np.array([0,1,1,0,0,0,1,1,1]) smstr=np.nonzero(v1-v2) print(smstr) # 不為0 的元素的下標 sm= np.shape(smstr[0])[0] print( sm ) #輸出 #(array([0, 2, 3, 5, 6, 7]),) #6
7. 杰卡德相似系數(shù)(Jaccard similarity coefficient)
(1) 杰卡德相似系數(shù)
兩個集合A和B的交集元素在A,B的并集中所占的比例,稱為兩個集合的杰卡德相似系數(shù),用符號J(A,B)表示。
(2) 杰卡德距離
與杰卡德相似系數(shù)相反的概念是杰卡德距離(Jaccard distance)。杰卡德距離可用如下公式表示:
杰卡德距離用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區(qū)分度。
(3) 杰卡德相似系數(shù)與杰卡德距離的應(yīng)用
可將杰卡德相似系數(shù)用在衡量樣本的相似度上。
樣本A與樣本B是兩個n維向量,而且所有維度的取值都是0或1。例如:A(0111)和B(1011)。我們將樣本看成是一個集合,1表示集合包含該元素,0表示集合不包含該元素。
P:樣本A與B都是1的維度的個數(shù)
q:樣本A是1,樣本B是0的維度的個數(shù)
r:樣本A是0,樣本B是1的維度的個數(shù)
s:樣本A與B都是0的維度的個數(shù)
那么樣本A與B的杰卡德相似系數(shù)可以表示為:
這里p+q+r可理解為A與B的并集的元素個數(shù),而p是A與B的交集的元素個數(shù)。
而樣本A與B的杰卡德距離表示為:
Python實現(xiàn)杰卡德距離:
import scipy.spatial.distance as dist v1=np.array([1,1,0,1,0,1,0,0,1]) v2=np.array([0,1,1,0,0,0,1,1,1]) matv=np.array([v1,v2]) print(matv) ds=dist.pdist(matv,'jaccard') print(ds) #輸出 #[[1 1 0 1 0 1 0 0 1] [0 1 1 0 0 0 1 1 1]] # [ 0.75]
8. 經(jīng)典貝葉斯公式
原: P(AB)=P(A | B)·P(B)=P(B | A)·P(A)
本例,我們不去研究黃色的蘋果與黃色的梨有什么差別。而承認其統(tǒng)計規(guī)律:蘋果是紅色的概率是0.8,蘋果是黃色的概率就是1-0.8=0.2,而梨是黃色的概率是0.9,將其作為先驗概率。有了這個先驗概率,就可以利用抽樣,即任取一個水果,前提是抽樣對總體的概率分布沒有影響,通過它的某個特征來劃分其所屬的類別。黃色是蘋果和梨共有的特征,因此,既有可能是蘋果也有可能是梨,概率計算的意義在于得到這個水果更有可能的那一種。
條件: 10個蘋果10個梨子
用數(shù)學(xué)的語言來表達,就是已知:
# P(蘋果)=10/(10+10),P(梨)=10/(10+10),P(黃色|蘋果)=20%,P(黃色|梨)=90%,P(黃色)= 20% * 0.5 + 90% * 0.5 = 55%
求P(梨|黃色):
# = P(黃色|梨)P(梨)/P(黃色) # = 81.8%python是什么意思
Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向?qū)ο蟮哪_本語言,其最初的設(shè)計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發(fā)獨立的項目和大型項目。
以上就是如何在Python中使用Numpy計算各類距離,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。