问题标签 [mahalanobis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
617 浏览

python - 如何在 Python 3 中计算特定质心(k 均值聚类)的协方差矩阵?

我正在实施一种用于 k 均值聚类的算法。到目前为止,它使用欧几里得距离。将欧几里得距离换成马氏距离无法正确聚类。

出于某种原因,马氏距离有时是负的。原来协方差矩阵具有负特征值,这显然不适合协方差矩阵。

以下是我正在使用的功能:

我是如何实现算法的:

  1. 设置 k

  2. 随机选择 k 个质心

  3. 计算每个质心的 covar_matrix()

  4. 计算每个质心的每个数据点的 mahalanobis() 并添加到最近的集群

  5. 开始寻找新的质心;对于每个集群中的每个数据点*,计算 mahalanobis() 到集群中每个其他点的总和;总和最小的点成为新的质心
  6. 重复 3-5 直到旧质心和新质心相同

*用这一点计算covar_matrix()

我期望一个正的马氏距离和一个正定的协方差矩阵(我希望后者将修复前者)。

0 投票
1 回答
385 浏览

similarity - 有没有办法在相似函数中组合多个距离度量?

我需要找到一种方法来编写两个向量(数据实例)之间的相似函数,让我们将它们命名x_mx_n. 这些数据实例具有分类特征和数量。因此,我想找到一种方法来结合,比如说汉明距离和欧几里得距离,x_n,x_m以便在我的关联问题中使用它。

k-NN有合并类型,比如投票等,仍然不能通过投票方式解决关联问题。

0 投票
0 回答
1208 浏览

r - 如何使用 Matching 包中的 Mahalanobis 距离进行匹配

我想与 Matching-package 进行匹配。当然,我有治疗变量,这是第一个匹配标准。然后我有第二个变量(C),应该考虑使用马氏距离进行匹配。最后两个变量(D 和 E)应该完全匹配。此外,我有一个矩阵 (R),其中包含一些不能匹配的异常。

我在公式中使用了“重量 = 2”,因为在包装说明中它说这是马氏距离。但是在我是否将这部分包含到代码中的情况下没有区别。

有谁知道如何使用变量 C 的马氏距离和变量 D 和 E 的 excat 匹配进行匹配?

另外,如果我在函数中跳过这部分(“Weight = 2”),有谁知道这个函数使用什么样的匹配?是全匹配、遗传匹配、最近邻匹配吗?或者也许匹配用于变量 C 的距离是多少?

谢谢

0 投票
1 回答
567 浏览

python - 如何计算随机生成的值之间的马氏距离?

我目前正在学习马氏距离,我觉得这很困难。为了更好地理解这个想法,我生成了 2 组随机值(x 和 y)和一个随机点,其中所有 3 的平均值 = 0 和标准偏差 = 1。如何计算它们之间的马氏距离?请在下面找到我的 Python 代码非常感谢您的帮助!

0 投票
1 回答
910 浏览

python - Keras自定义损失函数与马氏距离损失如何

我正在尝试使用马氏距离损失在 Keras 中实现自定义损失函数。但是我总是遇到这个烦人的错误。

Mahalanobis 距离(或其平方值 [3] 的“广义平方点间距离”)也可以定义为具有协方差矩阵 S 的相同分布的两个随机向量 x 和 y 之间的相异性度量。

d(x,y) = 平方 [转置(xy) * 逆(S)* (xy)]

https://en.wikipedia.org/wiki/Mahalanobis_distance

ValueError:形状必须至少为 2 级,但对于具有输入形状的“loss_88/dense_270_loss/MatrixInverse”(操作:“MatrixInverse”)为 0 级:[]。

0 投票
1 回答
1130 浏览

python - 在 knn crossval 网格搜索中定义距离参数 (V)(seuclidean/mahalanobis 距离度量)

我正在尝试使用 python sklearn 的 KNN 算法执行 k 折交叉验证网格搜索,搜索中的参数是邻居数 K 和距离度量。我将 mahalanobis 和 seuclidean 作为距离度量,并且理解它们有一个需要指定的参数,即 V 或 VI(特征的协方差矩阵或它的逆矩阵)。

下面是我的代码:

(*) 行在执行时会抛出此错误:

TypeError: __init__() 得到了一个意外的关键字参数 'V'

我也尝试过 VI 而不是 V 但得到了同样的错误。

我在下面遇到了潜在的解决方案,但这些没有帮助。

https://github.com/scikit-learn/scikit-learn/issues/6915

Scikit-learn:我们如何为网格搜索定义距离度量的参数

任何帮助表示赞赏!

这也是我的第一个问题,所以任何反馈都会在这方面有所帮助。

0 投票
2 回答
885 浏览

python - KNN Mahalanobis 错误 - V 的大小不匹配 - Python

我正在尝试使用 Mahalanobis 作为距离度量来实现 KNN 模型,但是当我执行代码时出现错误:

值错误:“V 的大小不匹配

其中 V 是特征的协方差矩阵。

我的代码的相关部分如下:

我在 github 上查看了 sklearn 的距离度量代码的 repo (从第 628 行开始是 Mahalanobis),并且可以看到错误来自以下原因:

我已经弄清楚了self.size我的情况,但无法弄清楚size是什么。

任何人都可以帮助解决这个错误吗?

谢谢

0 投票
1 回答
242 浏览

python - 如何在 cross_validate() python sklearn 中使用马氏距离?错误 - V 的大小不匹配

如何在 cross_validate() python sklearn 中使用马氏距离?我收到错误,因为错误 - V 的大小不匹配。这是我的代码

0 投票
1 回答
287 浏览

python - 使用python计算一维数组和nD数组之间的距离

我是python的初学者,希望您能帮我解决我的问题。

我有两个文件 library.csv(9 列)和 case.csv(8 列),我用 np.loadtxt 读取它们。我从库中选择列将它们放入数组 base[] 中,除了最后一列,我将 case.csv 放入数组问题 [] 中。我会计算问题数组中每一行与基本 [] 数组的所有行之间的马氏距离,并将最小距离存储在表中。

这是我的代码:

但我得到这个错误:

使用 TensorFlow 后端。

回溯(最后一次调用):
文件“C:\Users\HP\Desktop\MyAlgo\mainAlgo.py”,第 45 行,
距离 [j] = distance.mahalanobis(case_row, base_row, inverse_covariance_matrix)
文件“C:\ Users\HP\AppData\Local\Programs\Python\Python38\lib\site-packages\scipy\spatial\distance.py",第 1083 行,马哈拉诺比斯
m = np.dot(np.dot(delta, VI), delta )
文件“< array_function internals>”,第 5 行,点
ValueError:形状 (8,) 和 (384,384) 未对齐:8 (dim 0) != 384 (dim 0)

0 投票
1 回答
211 浏览

r - 在R中使用马氏距离最近邻匹配进行子分类

我正在使用 MatchIt 包来实现与 Mahalonobis 距离的最近邻匹配。在匹配阶段之后,我如何让它报告哪个对照观察与每个治疗观察相匹配?

以下代码不起作用并抛出警告“没有纯马氏距离的子分类”。

同样,我要寻找的是输出对于每对处理和控制都有一个 ID,就像使用其他匹配方法(例如,“exact”或“cem”)报告的子类一样。