計算樣本之間的相似度

文章目錄

  • 前言
  • 一、距離度量
    • 1.1 歐幾里得距離(Euclidean Distance)
    • 1.2 曼哈頓距離(Manhattan Distance)
    • 1.3 切比雪夫距離(Chebyshev Distance)
    • 1.4 閔可夫斯基距離(Minkowski Distance)
    • 1.5 余弦距離(Cosine Distance)
    • 代碼演示
    • 總結
  • 二、相似度度量
    • 2.1 余弦相似度(Cosine Similarity)
    • 2.2 皮爾遜相關系數(Pearson Correlation Coefficient)
    • 2.3 杰卡德相似系數(Jaccard Similarity Coefficient)
    • 2.4 漢明距離(Hamming Distance)
    • 2.5 相關距離(Correlation Distance)
    • 代碼演示
    • 總結


前言

計算樣本之間的相似度通常可以通過計算樣本之間的距離來實現,盡管這不是唯一的方法。距離度量和相似度度量是兩個相關但不同的概念。距離度量通常用于表示樣本之間的不相似程度,而相似度度量則用于表示樣本之間的相似程度

一、距離度量

1.1 歐幾里得距離(Euclidean Distance)

歐氏距離是兩個點在 n 維空間中直線距離的度量。它是最常見的距離度量方法之一,用于計算兩個向量之間的距離。

1.2 曼哈頓距離(Manhattan Distance)

曼哈頓距離,又稱為城市街區距離,是指兩個點在 n 維空間中各個坐標軸上的距離之和。

1.3 切比雪夫距離(Chebyshev Distance)

切比雪夫距離,又稱為棋盤距離,是指兩個點在 n 維空間中各個坐標軸上的最大距離。

1.4 閔可夫斯基距離(Minkowski Distance)

閔可夫斯基距離是歐氏距離和曼哈頓距離的廣義形式,通過調整參數 𝑝,可以得到不同的距離度量。在這里插入圖片描述

1.5 余弦距離(Cosine Distance)

通過計算兩個樣本點之間夾角的余弦值的補值來衡量相似度。

代碼演示

import numpy as np
from sklearn.metrics.pairwise import euclidean_distances, manhattan_distances
from scipy.spatial.distance import chebyshev, minkowski, cosine# 示例向量
vector1 = np.array([1.2, 2.3, 3.4, 4.5])
vector2 = np.array([4.1, 5.2, 6.3, 7.4])# 歐幾里得距離
euclidean_dist = euclidean_distances([vector1], [vector2])
print(f'Euclidean Distance: {euclidean_dist[0][0]}')# 曼哈頓距離
manhattan_dist = manhattan_distances([vector1], [vector2])
print(f'Manhattan Distance: {manhattan_dist[0][0]}')# 切比雪夫距離
chebyshev_dist = chebyshev(vector1, vector2)
print(f'Chebyshev Distance: {chebyshev_dist}')# 閔可夫斯基距離(p=3)
minkowski_dist = minkowski(vector1, vector2, p=3)
print(f'Minkowski Distance (p=3): {minkowski_dist}')# 余弦相似度
cosine_dist = cosine(vector1, vector2)
print(f'Cosine Distance: {cosine_dist}')

總結

在距離度量的五種方法中,歐幾里得距離(Euclidean Distance)、曼哈頓距離(Manhattan Distance)、余弦距離 是最常用的三種。
歐幾里得距離:適用于低維和中維數據,廣泛用于各種機器學習算法。(低維通常在1-10維之間,中維在10—100之間)
曼哈頓距離:適用于高維數據,尤其是特征獨立時。(高維>100維)
余弦距離:適用于高維稀疏數據,特別是文本數據和推薦系統。

二、相似度度量

2.1 余弦相似度(Cosine Similarity)

衡量兩個向量的方向相似度,而不關注它們的大小。

2.2 皮爾遜相關系數(Pearson Correlation Coefficient)

衡量兩個變量之間的線性相關性。

2.3 杰卡德相似系數(Jaccard Similarity Coefficient)

衡量兩個集合的交集與并集的比值,常用于文本或集合相似度。

2.4 漢明距離(Hamming Distance)

計算兩個樣本在相同位置上不同元素的數量,常用于二進制數據。

2.5 相關距離(Correlation Distance)

計算兩個變量之間的相關性,反映了兩個向量在統計上的相似程度,是皮爾遜相關系數的補數。

代碼演示

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from scipy.spatial.distance import correlation, jaccard, hamming
from scipy.stats import pearsonr# 示例向量
vector1 = np.array([1.2, 2.3, 3.4, 4.5])
vector2 = np.array([4.1, 5.2, 6.3, 7.4])# 1. 余弦相似度(Cosine Similarity)
cosine_sim = cosine_similarity([vector1], [vector2])
print(f'Cosine Similarity: {cosine_sim[0][0]}')# 2. 皮爾遜相關系數(Pearson Correlation Coefficient)
pearson_corr, _ = pearsonr(vector1, vector2)
print(f'Pearson Correlation Coefficient: {pearson_corr}')# 3. 杰卡德相似系數(Jaccard Similarity Coefficient)
# 將向量轉為布爾型(示例中使用大于2的值作為示例)
vector1_bool = vector1 > 2
vector2_bool = vector2 > 2
jaccard_sim = 1 - jaccard(vector1_bool, vector2_bool)
print(f'Jaccard Similarity Coefficient: {jaccard_sim}')# 4. 漢明距離(Hamming Distance)
# 這里的計算漢明距離先計算不相似度,再計算相似度
hamming_dist = hamming(vector1_bool, vector2_bool)
print(f'Hamming Distance: {hamming_dist}')
hamming_sim = 1 - hamming_dist
print(f'Hamming Similarity: {hamming_sim}')# 5. 相關距離(Correlation Distance)
# 這里的計算相關距離先計算不相似度,再計算相似度
correlation_dist = correlation(vector1, vector2)
correlation_sim = 1 - correlation_dist
print(f'Correlation Similarity: {correlation_sim}')

總結

在相似度度量的五種常見方法中,余弦相似度(Cosine Similarity) 和 皮爾遜相關系數(Pearson Correlation Coefficient) 是最常用的兩種。
余弦相似度:適用于高維稀疏數據,如文本數據和推薦系統。
皮爾遜相關系數:適用于數值數據,衡量線性相關性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41549.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker容器技術、k8s的原理和常見命令、用k8s部署應用步驟

容器技術 容器借鑒了集裝箱的概念,集裝箱解決了什么問題呢?無論形狀各異的貨物,都可以裝入集裝箱,集裝箱與集裝箱之間不會互相影響。由于集裝箱是標準化的,就可以把集裝箱整齊擺放起來,裝在一艘大船把他們…

瀏覽器插件利器-allWebPluginV2.0.0.14-stable版發布

allWebPlugin簡介 allWebPlugin中間件是一款為用戶提供安全、可靠、便捷的瀏覽器插件服務的中間件產品,致力于將瀏覽器插件重新應用到所有瀏覽器。它將現有ActiveX插件直接嵌入瀏覽器,實現插件加載、界面顯示、接口調用、事件回調等。支持谷歌、火狐等瀏…

Spring Boot+Blockchain:區塊鏈入門Demo

1. 引言 區塊鏈技術近年來迅速發展,其去中心化、不可篡改和透明性等特點吸引了眾多開發者和企業的關注。為了便于理解和應用區塊鏈技術,本文將介紹如何使用Spring Boot集成區塊鏈,構建一個簡單的區塊鏈Demo。 2. 項目準備 2.1 環境要求 在…

MYSQL安裝及環境配置

1.數據庫下載 1.1 瀏覽器下載相應版本,如果相應版本不在此頁,可點擊Archives ,然后選擇相應版本 https://dev.mysql.com/downloads/mysql/ 1.2 放置指定目錄,并將其解壓 2.配置數據庫環境變量 2.1 使用電腦win鍵 Q ,…

在C++中使用的錯誤處理策略

在C中,錯誤處理是一個重要且復雜的主題,因為它要求開發者在設計和編碼時考慮到程序可能遇到的各種異常情況。C提供了幾種不同的機制來處理錯誤,每種機制都有其適用的場景和優缺點。下面我將概述幾種常見的C錯誤處理策略: 1. 返回…

SQL的時間格式和文本靈活轉換

日期的格式,在日常的數據分析中,常常使用 特別是在按照日、月、年進行匯總分析,使用起來,往往會有差異 如果格式比較復雜,可以考慮進行文本轉化的處理 這里有比較推薦的函數: 1.CONVERT()函數 適用于SQL …

51單片機STC89C52RC——16.1 五項四線步進電機

目的/效果 讓步進電機 正向轉90度,逆向轉90度 一,STC單片機模塊 二,步進電機 2.2 什么是步進電機? 步進電機可以理解為:是一個按照固定步幅運動的“小型機器”。它與普通電機不同點在于,普通電機可以持…

CompletionService

必備知識: 三種創建線程的方式 java線程池 CompletionService是Java并發庫中的一個接口,用于簡化處理一組異步任務的執行和結果收集。它結合了Executor和BlockingQueue的功能,幫助管理任務的提交和完成。CompletionService的主要實現類是Exe…

前端必修技能:高手進階核心知識分享 - CSS 陰影屬性詳解

CSS 涉及設計到陰影的相關內容包括三個方面:box-shadow屬性(盒子陰影)、 text-shadow屬性(文本陰影)、drop-shadow濾鏡。 本篇文章旨在詳細介紹和分析三種陰影的具體參數設置和典型用例。 box-shadow屬性(…

預防臨床預測模型中可能的“算法歧視”

預防臨床預測模型中可能的“算法歧視” 概要:如果訓練數據中存在性別方面的不均衡,會讓訓練出的模型存在性別方面的“算法歧視”,進而導致某種性別下存在更多的誤診誤治,最終造成醫療資源分配的不公平的倫理問題,導致模…

04.C1W3.Vector Space Models

往期文章請點這里 目錄 Vector Space ModelsWord by Word and Word by DocWord by Document DesignWord by Document DesignVector Space Euclidean DistanceEuclidean distance for n-dimensional vectors Euclidean distance in PythonCosine Similarity: IntuitionCosine S…

STM32-SPI和W25Q64

本內容基于江協科技STM32視頻學習之后整理而得。 文章目錄 1. SPI(串行外設接口)通信1.1 SPI通信簡介1.2 硬件電路1.3 移位示意圖1.4 SPI時序基本單元1.5 SPI時序1.5.1 發送指令1.5.2 指定地址寫1.5.3 指定地址讀 2. W25Q642.1 W25Q64簡介2.2 硬件電路2…

嵌入式C語言面試相關知識——內存管理(不定期更新)

嵌入式C語言面試相關知識——內存管理(不定期更新) 一、博客聲明二、自問題目1、嵌入式系統的內存布局是怎么樣的?2、動態內存分配在嵌入式系統中的使用有什么注意事項?3、什么是內存碎片,如何減少內存碎片&#xff1f…

win11自動刪除文件的問題,安全中心提示

win11自動刪除文件的問題,解決方法: 1.點擊任務欄上的開始圖標,在顯示的應用中,點擊打開設置。 或者點擊電腦右下角的開始也可以 2.點擊設置。也可以按Wini打開設置窗口。 3.左側點擊隱私和安全性,右側點擊Windows安全…

我國網絡安全領域有哪些法律法規?主要內容是什么?

1. 背景介紹 網絡信息安全方面的法規在全球范圍內都有相應的立法,我們主要的立法有《網絡安全法》、《密碼法》、《數據安全法》以及《個人信息保護法》。當前也有一些相關的條例和管理辦法,接下來就為大家一一介紹。 2. 法規介紹 在中國,…

多線程(進階)

前言👀~ 上一章我們介紹了線程池的一些基本概念,今天接著分享多線程的相關知識,這些屬于是面試比較常見的,大部分都是文本內容 常見的鎖策略 樂觀鎖 悲觀鎖 輕量鎖 重量級鎖 自旋鎖 掛起等待鎖 可重入鎖和不可重入鎖 互斥…

Leetcode 3207. Maximum Points After Enemy Battles

Leetcode 3207. Maximum Points After Enemy Battles 1. 解題思路2. 代碼實現 題目鏈接:3207. Maximum Points After Enemy Battles 1. 解題思路 這一題的話其實關鍵在于說是想明白最優策略,事實上這道題的最優策略就是撿著最弱的enemy薅,…

接口測試分析、設計以及實現

接口相關理論 ui功能測試和接口測試哪個先執行?–為什么 結論:接口測試先執行 原因:ui功能測試需要等待前端頁面開發完成、后臺接口開發完后且前端與后端聯調完成。ui功能測試與接口測試的區別? ui功能:功能調用&am…

學習筆記——交通安全分析14

目錄 前言 當天學習筆記整理 5城市主干道交通安全分析 結束語 前言 #隨著上一輪SPSS學習完成之后,本人又開始了新教材《交通安全分析》的學習 #整理過程不易,喜歡UP就點個免費的關注趴 #本期內容接上一期13筆記 當天學習筆記整理 5城市主干道交…

Avalonia中的Property

文章目錄 前言附加屬性樣式屬性直接屬性總結前言 在WPF中, 是可以定義依賴屬性和附加屬性的 依賴屬性: 當您需要單獨創建控件時, 并且希望控件的某個部分能夠支持數據綁定時, 你則可以使用到依賴屬性。 通過DependencyProperty.Register注冊依賴屬性 附加屬性: 這種情況很多,…