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

2021-09-27 01:31:02 字數 2153 閱讀 9468

/*

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

相似度:

·夾角余弦

·相關係數

·dice

·jaccard

距離·明氏距離

·歐氏距離

·馬氏距離

·jffreys & matusita 距離

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

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

#include #include #include #include using namespace std;

double dotproduct(const vector& v1, const vector& v2)

return ret;}

double module(const vector& v)

return sqrt(ret);}

// 夾角余弦

double cosine(const vector& v1, const vector& v2)

double mean(const vector& v)

return ret / v.size();}

double cov(const vector& v1, const vector& v2)

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

// 相關係數

double coefficient(const vector& v1, const vector& v2)

// dice 係數

double dice(const vector& v1, const vector& v2)

// jaccard 係數

double jaccard(const vector& v1, const vector& v2)

// minkowsky 距離

double minkowsky(const vector& v1, const vector& v2, double m)

return pow(ret, 1.0 / m);}

// euclidean 距離

double euclidean(const vector& v1, const vector& v2)

// manhattan 距離

double manhattan(const vector& v1, const vector& v2)

// jffreys & matusita 距離

double jffreysmatusita(const vector& v1, const vector& v2)

return sqrt(ret);}

// mahalanobis 距離

double mahalanobis(const vector& v1, const vector& v2)

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

double camberra(const vector& v1, const vector& v2)

return ret;}

int main()

; double b = ;

vectorv1(a, a + sizeof (a) / sizeof (*a)), v2(b, b + sizeof (b) / sizeof (*b));

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

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

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

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

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

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

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

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

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

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

return 0;

}

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

本文 1 2特徵向量相似度和距離的計算34 相似度 5 夾角余弦 6 相關係數 7 dice 8 jaccard910 距離11 明氏距離 12 歐氏距離 13 馬氏距離 14 jffreys matusita 距離 15 mahalanobis 距離,未實現,協方差矩陣 16 camberra 距...

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

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