0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于距離計算的總結

電子工程師 ? 來源:fqj ? 2019-05-14 09:52 ? 次閱讀

距離計算在自然語言處理中得到廣泛使用,不同距離計算方式應用與不同的環(huán)境,其中也產生了很多不同的效果。

1 余弦距離

余弦夾角也可以叫余弦相似度。集合中夾角可以用來衡量兩個向量方向的差異,機器學習中借用這一概念來衡量樣本向量之間的差異。

余弦取值范圍為[-1,1]。求得兩個向量的夾角,并得出夾角對應的余弦值,詞余弦值就可以用來表示這兩個向量的相似性。夾角越小,趨近于0度,余弦值越接近于1,它們的方向就更加吻合,即更加相似。當兩個向量的方向完全相反時,夾角的余弦取最小值-1。當余弦值為0時,兩向量正交,夾角為90度。因此可以看出,余弦相似度于向量的幅值無關,于向量的方向相關。

公式描述:

關于距離計算的總結

Python代碼實現:

import numpy as np# np.dot(vec1,vec2) 量向量(數組):兩個數組的點積,即元素對應相乘后求和# np.linalg.norm(vec1):即求vec1向量的二范數(向量的模)vec1 = [1,2,3,4]vec2 = [5,6,7,8]dist1 = np.dot(vec1, vec2)/(np.linalg.norm(vec1)*np.linalg.norm(vec2))print("余弦距離測試結果為:\t"+str(dist1))

2 歐氏距離

歐幾里得距離即歐幾里得空間中兩點間的直線距離。

關于距離計算的總結

Python實現:

import numpy as npvec1 = np.mat([1,2,3,4]) # 生成numpy矩陣vec2 = np.mat([5,6,7,8])# 根據公式求解1dist1 = np.sqrt(np.sum(np.square(vec1 - vec2)))print("歐式距離測試結果是:\t"+ str(dist1))dist2 = np.sqrt((vec1-vec2)*(vec1-vec2).T)# 根據公式求解2print("歐式距離測試結果是:\t"+ str(dist2))

3 曼哈頓距離

曼哈頓距離也成為城市街區(qū)距離。用來表示兩個點在標準坐標系上的絕對軸距之和,即從一個路口到另外一個路口,駕駛距離不是兩點之間的直線距離。

關于距離計算的總結

Python實現

import numpy as npvec1 = np.mat([1,2,3,4])vec2 = np.mat([6,7,8,9])dist = np.sum(np.abs(vec1 - vec2))print("曼哈頓距離測試結果是:\t"+str(dist))

4 明可夫斯基距離

明氏距離又叫明可夫斯基距離,是歐氏空間中的一種測度,被看作歐氏距離和曼哈頓距離的一種推廣。

關于距離計算的總結

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

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

當p=3時,就是切比雪夫距離

python實現

可參照之前代碼

5 切比雪夫距離

關于距離計算的總結

python實現

import numpy as npvec1 = np.mat([1,2,3,4])vec2 = np.mat([5,6,7,8])dist = np.max(np.abs(vec1 - vec2))print("切比雪夫距離測試結果是:\t" + str(dist))

6 杰卡德距離

杰卡德(Jaccard)相似系數:兩個集合A和B的交集在元素在A、B的并集中所占的比例,稱為兩個集合的杰卡德相似系數,用符號J(A,B)表示。杰卡德距離:在占比中所取的是兩個集合中不同元素。

關于距離計算的總結

Python實現:

import numpy as npv1 = np.random.random(10) > 0.5
# 生成10個true false數據(即0,1)v2 = np.random.random(10) > 0.5vec1 = np.asanyarray(v1, np.int32)
# 轉換位0、1矩陣vec2 = np.asanyarray(v2, np.int32)# 距離計算up = np.double(np.bitwise_and((vec1 != vec2),np.bitwise_or(vec1 !=0,vec2!=0)).sum())
# 涉及到數學邏輯運算down = np.double(np.bitwise_or(vec1 !=0 ,vec2!=0).sum())
# 取并集, (vec1 !=0 ,vec2!=0)先轉對應元素為true ,false的矩陣dist = (up/down)print("杰卡德距離測試結果是:\t"+str(dist))

7 漢明距離

信息論中,兩個登場字符串之間的漢明距離對應位置上的不同字符的個數。也就是說,將一個字符串變換成另一個字符串所需要替換的字符個數。

例如:“toned”與“roses”之間的漢明距離就是3

python實現:

import numpy as npv1=np.random.random(10)>0.5v2=np.random.random(10)>0.5vec1=np.asarray(v1,np.int32)vec2=np.asarray(v2,np.int32)dist=np.mean(vec1!=vec2)
# 取均值print("漢明距離測試結果是:\t"+str(dist))

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關注

    關注

    55

    文章

    4767

    瀏覽量

    84375

原文標題:距離計算總結

文章出處:【微信號:NLP_lover,微信公眾號:自然語言處理愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于C++模板總結

    大家好,今天給大家分享一篇關于 C++ 模板總結概述。
    發(fā)表于 09-19 11:55 ?486次閱讀

    關于TCP/IP協(xié)議的知識總結

    今天浩道跟大家分享關于TCP/IP協(xié)議的硬核干貨總結,我常常跟小伙伴說,一個簡短硬核的知識總結,可以讓大家快速掌握這些知識體系,喜歡的小伙伴可以收藏起來,隨時查看復習!
    的頭像 發(fā)表于 10-31 11:48 ?1193次閱讀
    <b class='flag-5'>關于</b>TCP/IP協(xié)議的知識<b class='flag-5'>總結</b>

    zz:關于PSoC的不錯的總結

    關于PSoC的不錯的總結
    發(fā)表于 11-19 11:30

    關于怎樣提高無線通信距離

    關于怎樣提高無線通信距離,請各位大神都發(fā)表一下看法最近新研發(fā)一款產品,通信距離1Km,還不能滿足設計要求,所以關于怎樣大幅度提高無線通信距離
    發(fā)表于 03-01 08:59

    關于電機選型的總結

    序:原先最初是沒打算寫電機選型總結的,而是準備寫一些關于數字信號處理相關的東西,但是我的一個朋友提醒了我。他說,現在網上關于數字信號處理的東西寫的太多了,特別是基礎的知識都寫爛了,你再寫也沒人看
    發(fā)表于 08-31 07:00

    關于計算機組成原理的知識點總結的太棒了

    關于計算機組成原理的知識點總結的太棒了
    發(fā)表于 10-27 07:27

    關于通信原理介紹總結

    關于通信原理介紹總結 學了通信原理這門課,一開始覺得很難,而且聽學長們也總是告誡我們,通信原理是很難的課程,平時一定要好好學,不然自己復習的日
    發(fā)表于 02-24 10:47 ?41次下載

    計算轉型技巧歸納總結

    計算專家和早期使用者為企業(yè)向云計算轉型總結歸納了五大技巧。
    發(fā)表于 04-02 10:23 ?664次閱讀

    無線傳輸距離計算

    無線傳輸距離計算詳解
    發(fā)表于 11-11 17:57 ?186次下載

    DXP關于板層說明及總結

    DXP關于板層說明及總結DXP-設置板層(D+K )在PCB編輯 Design->layer Stack Manager(層管理)
    發(fā)表于 01-11 14:56 ?0次下載

    關于Linux下多線程編程技術學習總結

    Linux下多線程編程技術 作為一個IT人員,不斷的學習和總結是我們這個職業(yè)習慣,所以我會將每個階段的學習都會通過一點的總結來記錄和檢測自己的學習效果,今天為大家總結關于Linux下
    發(fā)表于 04-22 03:12 ?2178次閱讀
    <b class='flag-5'>關于</b>Linux下多線程編程技術學習<b class='flag-5'>總結</b>

    LED投光燈的投射距離應該如何計算

    常用于景觀照明的LED投光燈一般會根據投射距離的不同,選擇適宜的瓦數。并且型號不同的投光燈投射距離也有所不同。那么LED投光燈投射距離應該怎么計算呢?  一般來說,照射
    的頭像 發(fā)表于 12-24 09:50 ?6034次閱讀

    基于曼哈頓距離的隱私安全計算協(xié)議綜述

    安全多方計算是信息時代保護隱私和信息安全的一項關鍵技術。安全多方科學計算是安全多方計算十分重要的組成部分,目前已經有許多安全多方科學計算問題的解決方案,但還有更多的問題值得人們去研究。
    發(fā)表于 04-30 11:21 ?3次下載
    基于曼哈頓<b class='flag-5'>距離</b>的隱私安全<b class='flag-5'>計算</b>協(xié)議綜述

    關于MATLAB求導實踐的總結

    MATLAB是一個功能強大的數值計算軟件,提供了多種方法來進行求導操作。在實踐中使用MATLAB進行求導可以幫助我們解決各種科學、工程和數學問題。下面是一份關于MATLAB求導實踐的總結與介紹。
    的頭像 發(fā)表于 07-17 12:33 ?1703次閱讀

    爬電距離和電氣間隙計算

    爬電距離和電氣間隙計算
    發(fā)表于 10-21 10:51 ?3次下載