本文**: 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...