问题标签 [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 投票
1 回答
1043 浏览

matlab - Matlab中的马氏距离

我想计算输入特征向量 Y (1x14) 到矩阵 X (18x14) 中所有特征向量的马氏距离。X 的每 6 个向量代表一个类(所以我有 3 个类)。然后根据马氏距离,我将选择最接近输入的向量并将其分类为三个类别之一。

我的问题是当我使用以下代码时,我只得到一个值。如何获得输入 Y 和 X 中每个向量之间的马氏距离。所以最后我有 18 个值,然后我选择最小的一个。任何帮助将不胜感激。谢谢你。

注意:我知道马氏距离是对点 P 和分布 D 之间距离的度量,但我不知道如何将其应用于我的情况。

我还尝试将矩阵 X 分成 3;所以每一个代表一个类的特征向量。这是代码,但它不能正常工作,我得到了 3 个距离,有些有负值!

最后一件事,当我使用mahalMatlab 提供的函数时,我得到了这个错误:警告:矩阵接近奇异或严重缩放。结果可能不准确。

0 投票
1 回答
429 浏览

r - 使用 QQ 绘图结果删除现有异常值后出现新异常值

我正在研究 Michael Faraway 的Linear Models with R(第 11 章,第 164 页)中的 PCA 部分。

PCA 分析对异常值很敏感,马氏距离有助于我们识别它们。

作者通过绘制马氏距离与卡方分布的分位数来检查异常值。

我确定要点:

异常值似乎在第 242:252 行。我删除这些异常值并重新创建 QQ 图:

唉,现在看来,一组新的点(第 234:241 行)现在是异常值。每次我删除额外的异常值时,这种情况都会发生。

期待了解我做错了什么。

0 投票
0 回答
186 浏览

r - 将“z”轴添加到现有图形并使其成为 3d

我有一个数据框如下:

我在项目类型 0 和项目类型 1 之间绘制马氏距离,如下所示。

所以输出如下: 马氏距离

Q1:如何将数据框 z 的周期轴添加到上图以使图形成为 3d 形状。

Q2 将蓝色点的线添加到马氏空间的质心?并分别用不同的颜色添加从周期1到5的蓝色点的线。

我已经使用 plot_ly 并将其设为 3d,但我仍然无法在其周围绘制椭圆。

我得到的图表如下: 3d 导航 对于省略号,我编写了以下代码,但它没有显示任何内容。

0 投票
0 回答
197 浏览

matlab - 找出最近邻居的马氏距离

假设我在矩阵中有一些原始数据,在矩阵中有a测量数据b。现在我想从矩阵中找出离矩阵a元素最近的点b.

输出应该是ans = [1; 2; 3; 4;].

但是当我尝试这样做时,它不会给出输出而是错误,因为 a 和 b 需要具有相同数量的列。如何解决这个问题呢?

0 投票
0 回答
1008 浏览

r - 使用稳健的马氏距离后去除多元异常值

我有一个包含 3 个变量的 167 个观察值的数据集。我正在尝试使用稳健的马氏距离来评估和消除多元异常值。为此,我一直在使用包中的Moutlier功能chemometrics

我对 R 很陌生,所以我有一些问题:

这是我的代码:

1)以前有人用过这个代码吗,我做对了吗?

2)在做这个功能之前我需要对数据进行标准化,还是没有关系?

3)使用该which函数后,结果为:

这是否意味着这些数字对应于观察 #13、#28、#29 等?
那么对于所有 3 个变量,这些将是我要删除的异常值吗?

非常感谢任何可以提供帮助的人...

0 投票
1 回答
294 浏览

r - R中轮廓之间的马氏距离

100 名受试者的样本对两项性格测试做出了回应。这些测试的措辞略有不同,但大体相同,即它们都测量相同的 4 种态度。因此,我有 2 个这样的矩阵,每个科目有 4 个分数:

我想评估两个测试中配置文件的相似性,即每个人的两组 4 个分数的相似性。我觉得马氏距离是我需要的度量,我检查了一些包(HDMD、StatMatch)但找不到合适的函数。

0 投票
0 回答
47 浏览

numpy - 如何改善 numpy 的广播

我正在尝试使用 numpy 在 python 中实现具有 Mahalanobis 距离的 k-NN。但是,当我使用广播时,下面的代码运行非常缓慢。请教我如何提高 numpy 速度或更好地实现这一点。

0 投票
0 回答
142 浏览

algorithm - 人脸识别在线度量学习

我正在使用OpenFace来计算在无约束条件下拍摄的图像中发现的人脸的表示(128D),这些条件显示照明、时间等方面的显着变化。

根据他们的网站和演示,具有适当阈值的标准欧几里德距离足以能够将这些表示用于“相同-不同”方案。也就是说,给定两个具有表示 v1 和 v2 的面孔,如果 eucDist(v1,v2) < S,我可以确定它们是否属于同一个人。

在实践中,结果还不错,但绝对远非完美。我想在我的应用程序中做的是使用用户输入来改进预测。

理想情况下,我想执行以下程序:

  • 假设我已经提取了 N 个面,对于每个我都有一个表示,它是 R^128 中的一个向量。假设这些面孔属于 n 个个体(当 n 明显小于 N 时)。

  • 我随机选择 k 个面孔(当 k 是一个小数字时,比如 10)并将它们显示给用户,让她为这些面孔标记属于同一个人的面孔。

  • 我现在想使用用户输入来“调整”欧几里得距离,使其表现更好:使她标记为“不同”的面孔之间的距离更大,而她标记为“相同”的面孔之间的距离更小。显然,我想以一种推广到 N 面的整个数据集的方式来做到这一点。

  • “耐心”用户可以继续标记照片以改善结果。

我知道这与“度量学习”领域有关,并且我已经阅读了诸如 Mahalanobis 距离之类的内容,但我不确定如何在这种“在线”场景中使用它。我想知道是否有人对这样的任务有任何经验并且可以阐明一些观点或给我任何指示。我应该提一下,我并不是真的在寻找太“繁重的数学”;理想情况下,我想知道是否存在可以根据用户输入提高性能的算法(最好使用一些我可以使用的现有实现)。对于初学者来说,我会对任何形式的改进感到满意,因此它不一定是可用的最佳方法。

谢谢!

0 投票
1 回答
1729 浏览

python - 处理图像的最有效方法(马氏距离)

我已经根据这个描述写了一个脚本。

作为 2D numpy 数组的图像很少,如果图像很大,计算每个值需要很长时间。有没有比我的解决方案更好的方法呢?

考虑三个图像,均值向量和反协方差矩阵:

我用双循环解决了这个问题:

我认为可能有更好的方法可以更快地做到这一点。也许没有循环?

0 投票
1 回答
371 浏览

matlab - 矩阵 (mxn) 的马氏距离 m<

我有一个 12x202 矩阵(12 个实例,有 202 个特征)。我想计算每 12 个实例之间的马氏距离,但似乎列数不能大于实例数(行)。(我在计算 12x11 矩阵的距离时没有问题,但超过 11 个特征会在 MATLAB 中使用linkage(X,'ward','mahalanobis');ormahal(X,X);或导致错误pdist2(X,X,'mahalanobis');


Cygwin 链接共享库


更新:

删除了关于 .so 文件的旧问题。它们不适用于 Windows。

我使用头文件解决了以下问题。我猜每次使用 C++ 链接时使用 .h 文件是一种标准约定吗?

mydll.h:

myprog.cc:

mydll.cc:


或者,我在本指南中尝试使用 Cygwin 的 .dll 库:https ://cygwin.com/cygwin-ug-net/dll.html

他们的 .c 文件的编译工作,但我试图让它为我的 .cc 文件工作。有任何想法吗?

mydll.cc:

myprog.cc:

我输入:

但是当我输入:

我得到: