溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

常見的相似或相異程度計算方法

發(fā)布時間:2020-06-08 12:15:29 來源:網(wǎng)絡(luò) 閱讀:345 作者:jjjssswww 欄目:網(wǎng)絡(luò)安全

如何衡量數(shù)據(jù)點之間的相似或相異程度是聚類算法的基礎(chǔ)問題,會直接影響聚類分析的效果,最直觀的方法是使用距離函數(shù)或者相似性函數(shù)。

常見的相似或相異程度計算方法。

1.計算公式

1.Minkowski distance

很多距離計算方法都可以歸結(jié)為基于向量p范數(shù)的距離,即Minkowski distance。

dij=(sumsh=1|xihxjh|p)1/pdij=(sumh=1s|xihxjh|p)1/p

2.Euclidean distance

參數(shù)p = 2,Minkowski distance退化為Euclidean distance,使用Euclidean distance的聚類算法大多只能發(fā)現(xiàn)低維空間中呈超球分布的數(shù)據(jù),并且對數(shù)據(jù)集中的噪聲比較敏感。

dij=(sumsh=1|xihxjh|2)1/2dij=(sumh=1s|xihxjh|2)1/2

3.City-block distance

參數(shù)p = 1,Minkowski distance演變?yōu)镃ity-block distance,City-block distance可以有效提高模糊聚類算法對噪聲或者孤立點的魯棒性。

dij=sumsh=1|xihxjh|dij=sumh=1s|xihxjh|

4.Sup distance

參數(shù)p = 無窮,Minkowski distance演變?yōu)镾up distance。

dij=maxh|xihxjh|dij=maxh|xihxjh|

5.Cosine similarity

sij=xTixj||xi||||xj||sij=xiTxj||xi||||xj||

6.Mahalanobis distance

Mahalanobis distance為原特征空間中的數(shù)據(jù)在線性投影空間歐式距離,使用Mahalanobis distance能夠使得聚類算法成功發(fā)現(xiàn)數(shù)據(jù)集里成超橢球型分布的類簇,但是Mahalanobis distance會帶來較大的計算量。

dij=(xixj)TS1(xixj)dij=(xixj)TS1(xixj)

7.Alternative distance

Alternative distance對數(shù)據(jù)集里的噪聲不敏感。

dij=1exp(β||xixj||2)dij=1exp(β||xixj||2)

8.Feature weighted distance

dij=(sumsh=1wah|xihxjh|)1/2dij=(sumh=1swha|xihxjh|)1/2

2.代碼

代碼,

import numpy as np
a = np.array([1,2,3,4])
b = np.array([4,3,2,1])print aprint b#Euclidean distancedistEu = np.sqrt(np.sum((a-b)**2))print "Euclidean distance = ",distEu#City-block distancedistCb = np.sum(np.abs(a-b))print "City-block distance = ",distCb#Sup distancedistSup = max(np.abs(a-b))print "Sup distance = ",distSup#Cosine similaritycosineSimi = np.dot(a,b) / (np.sqrt(np.sum(a**2)) * np.sqrt(np.sum(b**2)))print "Cosine similarity = ",cosineSimi#Alternative distancebeta = 0.5distAlter = 1 - np.exp(-beta * np.sqrt(np.sum((a - b)**2)))print "Alternative distance = ",distAlter#Feature weighted distanceweigh = np.array([0.5,0.3,0.1,0.1])
distFea = np.sqrt(np.dot(weigh,np.abs(a-b)))print "Feature weighted distance = ",distFea

輸出,

[1 2 3 4]
[4 3 2 1]Euclidean distance =  4.472135955City-block distance =  8Sup distance =  3Cosine similarity =  0.666666666667Alternative distance =  0.89312207434Feature weighted distance =  1.48323969742


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI