矩阵的相似性度量的常用方法

常用矩阵相似性度量方法及其在IT中的应用,
本文介绍了矩阵相似性度量的几种常见方法,包括欧氏距离、切比雪夫距离、曼哈顿距离、闵可夫斯基距离、马氏距离以及对称点距离和相关系数。着重讲解了这些方法在IT领域的应用,如神经网络中的LayerNormalization。最后提到了余弦相似度在连续性变量聚类中的重要性。

矩阵的相似性度量的常用方法

1,欧氏距离

欧式距离是最易于理解的一种距离计算方法,源自欧式空间中两点间的距离公式。

(1)二维平面上的点a(x1,y1)a(x_1,y_1)a(x1,y1)和点b(x2,y2)b(x_2,y_2)b(x2,y2)的欧式距离为

d=(x1−x2)2+(y1−y2)2d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}d=(x1x2)2+(y1y2)2

(2)三维平面上的点a(x1,y1,z1)a(x_1,y_1,z_1)a(x1,y1,z1)和点b(x2,y2,z−2)b(x_2,y_2,z-2)b(x2,y2,z2)的欧式距离为

d=(x1−x2)2+(y1−y2)2+(z1−z2)2d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2}d=(x1x2)2+(y1y2)2

切比雪夫距离在 $n$ 维空间中的计算公式为: $$ d(x, y) = \max\left\{ |x_i - y_i| \right\}, \quad i \in [1, n] $$ 这意味着,计算两个点之间的切比雪夫距离,需要找到各个维度上坐标差的绝对值中的最大值。 在 C++ 中,可以通过以下方式实现切比雪夫距离的计算。假设我们使用一个数组或向量来表示点的坐标,可以编写如下函数: ```cpp #include <vector> #include <cmath> #include <algorithm> // 计算两个点之间的切比雪夫距离 int chebyshevDistance(const std::vector<int>& point1, const std::vector<int>& point2) { int maxDiff = 0; for (size_t i = 0; i < point1.size(); ++i) { int diff = std::abs(point1[i] - point2[i]); if (diff > maxDiff) { maxDiff = diff; } } return maxDiff; } ``` 对于浮点数类型的坐标,可以将参数类型改为 `std::vector<double>` 并保持逻辑不变: ```cpp #include <vector> #include <cmath> #include <algorithm> double chebyshevDistance(const std::vector<double>& point1, const std::vector<double>& point2) { double maxDiff = 0.0; for (size_t i = 0; i < point1.size(); ++i) { double diff = std::abs(point1[i] - point2[i]); if (diff > maxDiff) { maxDiff = diff; } } return maxDiff; } ``` 如果需要支持泛型编程,可以使用模板来实现一个通用版本: ```cpp #include <vector> #include <cmath> #include <algorithm> template <typename T> T chebyshevDistance(const std::vector<T>& point1, const std::vector<T>& point2) { T maxDiff = 0; for (size_t i = 0; i < point1.size(); ++i) { T diff = std::abs(point1[i] - point2[i]); if (diff > maxDiff) { maxDiff = diff; } } return maxDiff; } ``` 在实际应用中,切比雪夫距离常用于棋盘类问题、路径规划、图像处理等领域,特别是在需要考虑最大轴向差异的场景中具有重要意义[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值