假设我有以下两个向量:
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。因此存在对整数元素的偏见。
如何计算欧几里德距离标准化的东西呢?
答案 0 :(得分:3)
根据Wolfram Alpha和the following answer from cross validated,归一化的Eucledean距离定义如下:
您可以使用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))
答案 1 :(得分:1)
我宁愿在计算距离之前将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
但是,我不确定是否有一个整数元素会导致某种偏见,但我们已经得到了一些关于堆栈溢出的偏离主题:)
答案 2 :(得分:0)
来自Euclidean Distance - raw, normalized and double‐scaled coefficients
SYSTAT , Primer 5 和 SPSS 提供了数据的归一化选项,以允许研究者计算距离 基本上是“无标度”的系数。 Systat 10.2 归一化的欧几里得距离通过除法产生其“归一化” 属性或人员之间的每个平方差,按总数 差异平方(或样本量)。
坦率地说,我看不到这种标准化的意义-最后 系数仍然对比例敏感。也就是说,这是不可能的 知道该值表明与 仅系数值