国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計算兩個向量的余弦相似度

這篇具有很好參考價值的文章主要介紹了計算兩個向量的余弦相似度。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

摘要

余弦相似度是判斷兩個向量相似度常用的算法,我在做行人重識別的時候,用到了余弦相似度的算法,記錄一下。

基本概念

余弦相似度算法:一個向量空間中兩個向量夾角間的余弦值作為衡量兩個個體之間差異的大小,余弦值接近1,夾角趨于0,表明兩個向量越相似,余弦值接近于0,夾角趨于90度,表明兩個向量越不相似。
總之,相似度越小,距離越大。相似度越大,距離越小。

數學原理

所以余弦的計算公式如下:
cos ? θ = a 2 + b 2 ? c 2 2 a b \cos \theta=\frac{a^{2}+b^{2}-c^{2}}{2 a b} cosθ=2aba2+b2?c2?
a,b,c 是三個邊的長度。

計算兩個向量的余弦相似度

在直角坐標系中,向量表示的三角形的余弦函數是怎么樣的呢?下圖中向量a用坐標(x1,y1)表示,向量b用坐標(x2,y2)表示。

向量 a \mathrm{a} a 和向量 b \mathrm b 在直角坐標中的長度為 c = x 1 2 + y 1 2 { c}=\sqrt{x_{1}^{2}+y_{1}^{2}} c=x12?+y12? ?, b = x 2 2 + y 2 2 b=\sqrt{x_{2}^{2}+y_{2}^{2}} b=x22?+y22? ? , 向量 a \mathrm{a} a 和向量 b \mathrm b 之間的距離我們用向量 c \mathrm{c} c 表示,就是上圖中的黃色直線,那么向 量 c 在直角坐標系中的長度為 c = ( x 2 ? x 1 ) 2 + ( y 2 ? y 1 ) 2 \mathrm{c}=\sqrt{\left(x_{2}-x_{1}\right)^{2}+\left(y_{2}-y_{1}\right)^{2}} c=(x2??x1?)2+(y2??y1?)2 ? , 將 a , b , c 帶入三角函數的公式中得到如下的公式:
cos ? ( θ ) = a 2 + b 2 ? c 2 2 a b = x 1 2 + y 1 2 + x 2 2 + y 2 2 ? ( x 2 ? x 1 ) 2 ? ( y 2 ? y 1 ) 2 2 x 1 2 + y 1 2 ? x 2 2 + y 2 2 = x 1 ? x 2 + y 1 ? y 2 x 1 2 + y 1 2 ? x 2 2 + y 2 2 \begin{array}{l} \cos (\theta)=\frac{a^{2}+b^{2}-c^{2}}{2 a b}=\frac{x_{1}^{2}+y_{1}^{2}+x_{2}^{2}+y_{2}^{2}-\left(x_{2}-x_{1}\right)^{2}-\left(y_{2}-y_{1}\right)^{2}}{2 \sqrt{x_{1}^{2}+y_{1}^{2}} * \sqrt{x_{2}^{2}+y_{2}^{2}}} \\ =\frac{x_{1} * x_{2}+y_{1} * y_{2}}{\sqrt{x_{1}^{2}+y_{1}^{2}} * \sqrt{x_{2}^{2}+y_{2}^{2}}} \end{array} cos(θ)=2aba2+b2?c2?=2x12?+y12? ??x22?+y22? ?x12?+y12?+x22?+y22??(x2??x1?)2?(y2??y1?)2?=x12?+y12? ??x22?+y22? ?x1??x2?+y1??y2???

計算兩個向量的余弦相似度
在多維向量中,余弦的這種計算方法也成立。假定 A 和 B 是兩個 n 維向量, A 是 $[A 1 , A 2 , \ldots, A n]$ , B 是 $[B 1 , B 2 ,.., B n]$ , 則 A 與的夾角 \theta 的余弦等于:

cos ? θ = ∑ i = 1 n ( A i × B i ) ∑ i = 1 n ( A i ) 2 × ∑ i = 1 n ( B i ) 2 = A ? B ∣ A ∣ × ∣ B ∣ \begin{aligned} \cos \theta & =\frac{\sum_{i=1}^{n}\left(A_{i} \times B_{i}\right)}{\sqrt{\sum_{i=1}^{n}\left(A_{i}\right)^{2}} \times \sqrt{\sum_{i=1}^{n}\left(B_{i}\right)^{2}}} \\ & =\frac{A \cdot B}{|A| \times|B|} \end{aligned} cosθ?=i=1n?(Ai?)2 ?×i=1n?(Bi?)2 ?i=1n?(Ai?×Bi?)?=A×BA?B??

實現代碼

import numpy as np

def cos_sim(a, b):
    a_norm = np.linalg.norm(a)
    b_norm = np.linalg.norm(b)
    cos = np.dot(a,b)/(a_norm * b_norm)
    return cos
loadData_1 = np.squeeze(np.load('0022_c6s1_002976_011.npy'))
loadData_2 = np.squeeze(np.load('0022_c6s1_002976_012.npy'))
print(cos_sim(loadData_1,loadData_2))

運行結果:0.99

歐式距離與余弦距離的差異

1.歐式距離的數值受到維度的影響,余弦相似度在高維的情況下也依然保持低維完全相同時相似度為1等性質。

2.歐式距離體現的是距離上的絕對差異,余弦距離體現的是方向上的相對差異。文章來源地址http://www.zghlxwxcb.cn/news/detail-438984.html

到了這里,關于計算兩個向量的余弦相似度的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Pytorch計算余弦相似度距離——torch.nn.CosineSimilarity函數中的dim參數使用方法

    Pytorch計算余弦相似度距離——torch.nn.CosineSimilarity函數中的dim參數使用方法

    前言 一、官方函數用法 二、實驗驗證 1.計算高維數組中各個像素位置的余弦距離 2.驗證高維數組中任意一個像素位置的余弦距離 總結 現在要使用Pytorch中自帶的 torch.nn. CosineSimilarity函數計算兩個高維特征圖(B,C,H,W)中各個像素位置的特征相似度,即特征圖中的每個像素位置上

    2024年02月13日
    瀏覽(28)
  • 計算兩幅圖像的相似度(PSNR、SSIM、MSE、余弦相似度、MD5、直方圖、互信息、Hash)& 代碼實現 與舉例

    計算兩幅圖像的相似度(PSNR、SSIM、MSE、余弦相似度、MD5、直方圖、互信息、Hash)& 代碼實現 與舉例

    MSE 計算模型的預測 ? 與真實標簽 Y 的接近程度。公式表示為: ? 對于兩個m×n的單通道圖像I和K,它們的均方誤差可定義為: 優(yōu)點:MSE的函數曲線光滑、連續(xù),處處可導,便于使用梯度下降算法,是一種常用的損失函數。而且,隨著誤差的減小,梯度也在減小,這有利于收斂

    2024年02月02日
    瀏覽(23)
  • 計算兩個顏色相似度

    計算兩個顏色相似度

    1.計算兩個顏色相似度的公式如下: ? 顏色QColor1(R1, G1, B1)轉成h1,s1,v1 ? 顏色QColor2(R2, G2, B2)轉成h2,s2,v2 ? detah=h1-h2 ? detas=s1-s2 ? detav=v1-v2 ? len = qsrt(detah * detah + detas * detas + detav * detav) ? if (len 1) len = 1.0 ? similarity = (1.0 - len) / 1.0 注:以上公式的h,s,v已經歸一化 2.顏色相似度原理。

    2024年02月16日
    瀏覽(23)
  • Java 計算兩個字符的相似度

    在Java中,要計算兩個字符的相似度,可以借助一些字符串相似度算法。以下是幾種常見的字符串相似度算法: Levenshtein距離:也稱為編輯距離,用于計算兩個字符串之間的最小編輯操作次數(插入、刪除、替換)來轉換一個字符串為另一個字符串。編輯距離越小,表示兩個字

    2024年02月05日
    瀏覽(22)
  • Elasticsearch:FMA 風格的向量相似度計算

    Elasticsearch:FMA 風格的向量相似度計算

    作者:Chris Hegarty 在 Lucene 9.7.0 中,我們添加了利用 SIMD 指令執(zhí)行向量相似性計算的數據并行化的支持。 現在,我們通過使用融合乘加 (Fused Mulitply-Add - FMA) 進一步推動這一點。 乘法和加法是一種常見的運算,它計算兩個數字的乘積并將該乘積與第三個數字相加。 這些類型的

    2024年02月01日
    瀏覽(12)
  • java文本相似度【余弦相似度】

    為了實現文本相似度對比,我們可以使用余弦相似度算法。首先,我們需要將文本轉換為向量,然后計算兩個向量之間的余弦相似度。以下是一個簡單的Java實現: 這個代碼示例首先定義了一個 TextSimilarity 類,其中包含一個 main 方法用于測試文本相似度計算。 calculateCosineSi

    2024年02月10日
    瀏覽(29)
  • 使用Pandas計算兩個系統(tǒng)客戶名稱的相似度

    使用Pandas計算兩個系統(tǒng)客戶名稱的相似度

    引言: 在日常業(yè)務處理中,我們經常會面臨將不同系統(tǒng)中的數據進行匹配和比對的情況。特別是在涉及到客戶管理的領域,我們需要確保兩個系統(tǒng)中的客戶記錄是準確、一致和無重復的。 本文將介紹如何使用Python的Pandas庫來處理這個問題。我們將以一個示例情景為例,假設

    2024年02月16日
    瀏覽(21)
  • OpenCV+OpenCvSharp實現圖片特征向量提取與相似度計算

    OpenCV+OpenCvSharp實現圖片特征向量提取與相似度計算

    圖片特征向量是一種用于描述圖片內容的數學表示,它可以反映圖片的顏色、紋理、形狀等信息。圖片特征向量可以用于做很多事情,比如圖片檢索、分類、識別等。 本文將介紹圖片特征向量的提取以及相似度的計算,并使用C#來實現它們。 文章開始前,我們先來簡單了解一

    2024年02月08日
    瀏覽(19)
  • PostgreSQL【應用 03】Docker部署的PostgreSQL擴展SQL之C語言函數(編寫、編譯、載入)計算向量余弦距離實例分享

    通過使用 PostgreSQL 的 C 函數接口,我們可以編寫用 C 語言實現的函數,并將其集成到數據庫中。這些函數可以在 SQL 查詢中像其他內置函數一樣被調用,從而擴展 PostgreSQL 的功能。 C 函數在某些情況下可以提供比 SQL 函數更高的執(zhí)行效率,因為它們可以直接訪問底層系統(tǒng)資源并

    2024年02月15日
    瀏覽(24)
  • LLM - LLaMA-2 獲取文本向量并計算 Cos 相似度

    LLM - LLaMA-2 獲取文本向量并計算 Cos 相似度

    目錄 一.引言 二.獲取文本向量 1.hidden_states 與 last_hidden_states ◆?hidden_states ◆?last_hidden_states? 2.LLaMA-2 獲取 hidden_states ◆ model config? ◆ get Embedding 三.獲取向量 Cos 相似度 1.向量選擇 2.Cos 相似度 3.BERT-whitening 特征白化 4.評估指標對比 四.總結 前面提到了兩種基于統(tǒng)計的機器翻

    2024年02月10日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包