欧几里得距离公式、曼哈顿距离公式、切比雪夫距离公式、闵可夫斯基距离公式、余弦距离公式
时间: 2023-09-06 15:08:59 浏览: 405
欧几里得距离公式:在二维空间中,点A(x1, y1)和点B(x2, y2)之间的欧几里得距离公式为:
d = sqrt((x2-x1)^2 + (y2-y1)^2)
曼哈顿距离公式:在二维空间中,点A(x1, y1)和点B(x2, y2)之间的曼哈顿距离公式为:
d = |x2-x1| + |y2-y1|
切比雪夫距离公式:在二维空间中,点A(x1, y1)和点B(x2, y2)之间的切比雪夫距离公式为:
d = max(|x2-x1|, |y2-y1|)
闵可夫斯基距离公式:在n维空间中,点A(x1, y1, ..., z1)和点B(x2, y2, ..., z2)之间的闵可夫斯基距离公式为:
d = (|x2-x1|^p + |y2-y1|^p + ... + |z2-z1|^p)^(1/p)
其中p为参数,p=1时为曼哈顿距离,p=2时为欧几里得距离。
余弦距离公式:在n维空间中,向量A(x1, x2, ..., xn)和向量B(y1, y2, ..., yn)之间的余弦距离公式为:
d = cos(theta) = (A·B) / (|A|·|B|)
其中theta为A和B之间的夹角,A·B为向量A和向量B的内积,|A|和|B|分别为向量A和向量B的模长。
相关问题
欧几里得距离, 曼哈顿距离, 切比雪夫距离,闵可夫斯基距离,杰卡德距离,余弦相似度,.马氏距离,汉明距离,明可夫斯基距离
欧几里得距离(Euclidean Distance),也称为直线距离,是最常见的距离计算方法,它适用于二维或高维空间,衡量两点之间的直线长度。它是通过将各个维度差值平方相加然后开根号得到的。
曼哈顿距离(Manhattan Distance),也称城市街区距离,是对角线距离的一种简化模型,适合于网格状环境,如棋盘或城市街道布局。它只考虑了坐标轴方向上的距离。
切比雪夫距离(Chebyshev Distance),又称最大值距离,测量的是两个点在每个维度上差值的最大值,是最简单的距离度量之一,对于异常值敏感。
闵可夫斯基距离(Minkowski Distance)是一组广义的距离度量,包含了几何学中的欧几里得、曼哈顿和切比雪夫距离作为特例,当p=1时为曼哈顿距离,p=2时为欧几里得距离,p趋近于无穷大时变为切比雪夫距离。
杰卡德距离(Jaccard Distance),用于比较有限集合间的相似度,通常用于文本分析和聚类,计算两个集合交集大小除以并集大小的比例。
余弦相似度(Cosine Similarity),是一种角度度量,常用于量化两个非零向量的相似程度,特别在文档相似度和推荐系统中非常有用,因为它是通过求两个向量的夹角余弦值来评估它们的方向一致性。
马氏距离(Mahalanobis Distance),结合了样本的协方差信息,是测量样本点相对于均值的整体偏离情况,常用于多元统计中的异常检测和分类任务。
汉明距离(Hamming Distance),专用于二进制串,计算两个等长字符串对应位置上不同字符的数目。
明可夫斯基距离(Generalized Hamming Distance),是一个更广泛的概念,也是一种变体的汉明距离,但它可以处理不等长的字符串,并应用到离散数据的匹配和编码纠错等领域。
以上各种距离或相似度都有各自的适用场景,选择哪种取决于具体的任务需求。
使用Matlab工具,实现曼哈顿距离、欧几里得距离、闵可夫斯基距离、切比雪夫距离和余弦夹角
在MATLAB中,可以使用内置函数以及自定义函数来计算各种常见的距离度量。以下是关于五种距离度量的简要说明:
1. **曼哈顿距离** (也称为城市街区距离):对于两个点(x1, y1)和(x2, y2),曼哈顿距离等于绝对坐标差的和,即 `abs(x1 - x2) + abs(y1 - y2)`。
2. **欧几里得距离**:这是最常用的直线距离,计算公式为 `sqrt((x2-x1)^2 + (y2-y1)^2)`。MATLAB中有现成的`norm`函数可用于计算这个值,例如 `norm([x1 y1] - [x2 y2], 'euclidean')`。
3. **闵可夫斯基距离**:它是一种泛化的欧氏距离,当p=2时等同于欧氏距离。如果p不等于2,可以用 `norm` 函数,指定第三个参数p,如 `norm([x1 y1] - [x2 y2], p)`。
4. **切比雪夫距离**:它衡量的是两个向量在每个维度上最大偏差,等于各个坐标差的最大值,表达式为 `max(abs(x1 - x2), abs(y1 - y2))`。
5. **余弦夹角**:用于测量两个非零向量之间的角度,计算公式是 `(A'*B)/(|A|*|B|)`,其中A和B是向量,`'*` 表示矩阵乘法,`|.|` 表示向量的模。在MATLAB中,虽然没有直接的函数计算,但可以先计算点积然后除以它们的长度。
如果你需要编写自定义函数,可以参考以下伪代码:
```matlab
function cosine_angle = cosine_similarity(vector_A, vector_B)
dot_product = dot(vector_A, vector_B);
magnitude_A = norm(vector_A);
magnitude_B = norm(vector_B);
cosine_angle = dot_product / (magnitude_A * magnitude_B);
end
```
以上就是如何在MATLAB中实现这几种距离和相似度计算。
阅读全文