假设我有以下两个向量:
x = [(10-1).*rand(7,1) + 1; randi(10,1,1)];
y = [(10-1).*rand(7,1) + 1; randi(10,1,1)];
前七个元素是1,10范围内的连续值。最后一个元素是1,10范围内的整数。
现在我想计算x和y之间的欧几里得距离,我认为整数元素是一个问题,因为所有其他元素都可以非常接近,但是整数元素的间距总是为1。因此存在对整数元素的偏向。
我如何计算它上的归一化欧几里得距离?
发布于 2016-07-03 00:07:24
根据Wolfram Alpha和the following answer from cross validated,归一化欧几里得距离定义为:
您可以使用MATLAB进行计算,方法是:
0.5*(std(x-y)^2) / (std(x)^2+std(y)^2)
或者,您可以使用:
0.5*((norm((x-mean(x))-(y-mean(y)))^2)/(norm(x-mean(x))^2+norm(y-mean(y))^2))
发布于 2016-07-03 09:05:55
我宁愿在计算距离之前对x和y进行归一化,然后香草欧几里得就足够了。
在您的示例中
x_norm = (x -1) / 9; % normalised x
y_norm = (y -1) / 9; % normalised y
dist = norm(x_norm - y_norm); % Euclidean distance between normalised x, y
然而,我不确定是否有一个整数元素有助于某种偏见,但我们已经得到了堆栈溢出的一种离题:)
发布于 2019-01-13 23:35:53
来自Euclidean Distance - raw, normalized and double‐scaled coefficients
SYSTAT、Primer 5和SPSS为数据提供了归一化选项,以便允许研究人员计算本质上是“无尺度”的距离系数。Systat 10.2的归一化欧几里德距离通过将属性或人员之间的每个平方差异除以平方差异的总数(或样本大小)来产生其“归一化”。
坦率地说,我看不出这种标准化有什么意义-因为最终的系数仍然是尺度敏感的。也就是说,不可能仅知道该值指示与系数值
的高或低相异度
https://stackoverflow.com/questions/38161071
复制相似问题