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

2021-07-07 10:20:43 字數 3487 閱讀 7489

本文**: 1

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

相似度:

5·夾角余弦

6·相關係數

7·dice

8·jaccard910

距離11

·明氏距離

12·歐氏距離

13·馬氏距離

14·jffreys & matusita 距離

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

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

17*/

1819 #include 

20 #include 

21 #include 

22 #include 

23using

namespace std;

2425

double dotproduct(

const vector<

double>& v1, 

const vector<

double>& v2)

26 33

return ret;

34 }

3536

double module(

const vector<

double>& v)

37 43

return sqrt(ret);

44 }

4546

//夾角余弦

47double cosine(

const vector<

double>& v1, 

const vector<

double>& v2)

48 52

53double mean(

const vector<

double>& v)

54 61

return ret / v.size();

62 }

6364

double cov(

const vector<

double>& v1, 

const vector<

double>& v2)

65 74

75return ret / (v1.size() - 1);

76 }

7778

//相關係數

79double coefficient(

const vector<

double>& v1, 

const vector<

double>& v2)

80 84

85//

dice 係數

86double dice(

const vector<

double>& v1, 

const vector<

double>& v2)

87 91

92//

jaccard 係數

93double jaccard(

const vector<

double>& v1, 

const vector<

double>& v2)

94 98

99//

minkowsky 距離

100double minkowsky(

const vector<

double>& v1, 

const vector<

double>& v2, 

double m)

101 

108return pow(ret, 1.0 / m);

109 }

110111

//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

int main()

157 ;

159double b = ;

160     vector<

double> v1(a, a + 

sizeof (a) / 

sizeof (*a)), v2(b, b + 

sizeof (b) / 

sizeof (*b));

161162     cout << cosine(v1, v2) << endl;

163     cout << coefficient(v1, v2) << endl;

164     cout << dice(v1, v2) << endl;

165     cout << jaccard(v1, v2) << endl;

166167     cout << minkowsky(v1, v2, 5.0) << endl;

168     cout << euclidean(v1, v2) << endl;

169     cout << manhattan(v1, v2) << endl;

170     cout << jffreysmatusita(v1, v2) << endl;

171     cout << mahalanobis(v1, v2) << endl;

172     cout << camberra(v1, v2) << endl;

173174

return 0;

175 }

向量之間的相似度和距離計算

特徵向量相似度和距離的計算 相似度 夾角余弦 相關係數 dice jaccard 距離 明氏距離 歐氏距離 馬氏距離 jffreys matusita 距離 mahalanobis 距離,未實現,協方差矩陣 camberra 距離 lance 距離,williams 距離 include inclu...

計算向量相似度 余弦相似度

1.余弦相似度可用來計算兩個向量的相似程度 對於如何計算兩個向量的相似程度問題,可以把這它們想象成空間中的兩條線段,都是從原點 0,0,出發,指向不同的方向。兩條線段之間形成乙個夾角,如果夾角為0度,意味著方向相同 線段重合 如果夾角為90度,意味著形成直角,方向完全不相似 如果夾角為180度,意味...

距離和相似度計算總結

閔可夫斯基距離minkowsli p x1,x2,x n an dq y1,y 2,yn rn 是衡量數值點之間距離的一種非常常見的方法,假設數值點 p 和 q座標如上 那麼,閔可夫斯基距離定義為 dist x,y i 1n xi yi p 1p 當p 2時,表示的是歐幾里得距離 euclidean...