各種距離的實現

2021-07-09 06:23:20 字數 4773 閱讀 1898

1/*2

特徵向量相似度和距離的計算34

相似度:

5·夾角余弦

6·相關係數

7·dice

8·jaccard910

距離11

·明氏距離

12·歐氏距離

13·馬氏距離

14·jffreys & matusita 距離

15·mahalanobis 距離,未實現,協方差矩陣

16·camberra 距離(lance 距離,williams 距離)

17*/

1819

#include 

<

iostream

>

20#include 

<

vector

>

21#include 

<

cassert

>

22#include 

<

cmath

>

23using

namespace

std;

2425

double

dotproduct(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)26

33return

ret;34}

3536

double

module(

const

vector

<

double

>&

v)37

43return

sqrt(ret);44}

4546

//夾角余弦

47double

cosine(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)48

5253

double

mean(

const

vector

<

double

>&

v)54

61return

ret 

/v.size();62}

6364

double

cov(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)65

7475

return

ret 

/(v1.size() -1

);76}77

78//

相關係數

79double

coefficient(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)80

8485

//dice 係數

86double

dice(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)87

9192

//jaccard 係數

93double

jaccard(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)94

9899

//minkowsky 距離

100double

minkowsky(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2, 

double

m)101

108return

pow(ret, 

1.0/

m);109

}110

111//

euclidean 距離

112double

euclidean(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)113

117118

//manhattan 距離

119double

manhattan(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)120

124125

//jffreys & matusita 距離

126double

jffreysmatusita(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)127

134return

sqrt(ret);

135}

136137

//mahalanobis 距離

138double

mahalanobis(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)139

143144

//camberra 距離(lance 距離,williams 距離)

145double

camberra(

const

vector

<

double

>&

v1, 

const

vector

<

double

>&

v2)146

153return

ret;

154}

155156

intmain()

157;

159doubleb =

;160

vector

<

double

>

v1(a, a 

+sizeof

(a) 

/sizeof(*

a)), v2(b, b 

+sizeof

(b) 

/sizeof(*

b));

161162

cout 

<<

cosine(v1, v2) 

<<

endl;

163cout 

<<

coefficient(v1, v2) 

<<

endl;

164cout 

<<

dice(v1, v2) 

<<

endl;

165cout 

<<

jaccard(v1, v2) 

<<

endl;

166167

cout 

<<

minkowsky(v1, v2, 

5.0) 

<<

endl;

168cout 

<<

euclidean(v1, v2) 

<<

endl;

169cout 

<<

manhattan(v1, v2) 

<<

endl;

170cout 

<<

jffreysmatusita(v1, v2) 

<<

endl;

171cout 

<<

mahalanobis(v1, v2) 

<<

endl;

172cout 

<<

camberra(v1, v2) 

<<

endl;

173174

return0;

175}

**於:

latex中的各種距離設定

1。頁面設定 a4 會給你乙個較小的頁面,為了使用更多的控制,可用geometry巨集包和命令 layout 2。改變長度 在latex裡改變長度的命令是 addtolength 和 setlength。latex可認的是 cm,mm,in 和pt.變數可設為負數。乙個例子是 addtolength...

獲取各種盒子的各種寬高和距離

document ready function 獲取瀏覽器顯示區域 可視區域 的高度 window height 獲取瀏覽器顯示區域 可視區域 的寬度 window width 獲取頁面的文件高度 document height 獲取頁面的文件寬度 document width 瀏覽器當前視窗文件b...

python求各種距離公式

今天乙個偶然的機會體會到了python資料運算的強大。求乙個陣列各樣本之間的距離僅簡單的幾句 就行。看來真的技術改變世界啊。廢話不多說,記下來怕以後忘記。from scipy.spatial.distance import pdist,squareform下面結合api文件標註一下具體用法 1.x ...