栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习中的数学——距离定义(五):标准化的欧几里得距离(Standardized Euclidean Distance)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习中的数学——距离定义(五):标准化的欧几里得距离(Standardized Euclidean Distance)

我们在《距离定义(一):欧几里得距离(Euclidean Distance)》中介绍了欧几里得距离,而标准化的欧几里得距离是针对简单欧几里得距离的缺点而作的一种改进方案。

标准化的欧几里得距离的思路:将各个分量都“标准化”到均值、方差相等的区间,即:
X ∗ = X − m s X^*=frac{X-m}{s} X∗=sX−m​

其中 X ∗ X^* X∗为标准化后的值, X X X为原值, m m m为分量的均值, s s s为分量的标准差。所以 n n n维空间中标准化的欧几里得距离为:
d ( x , y ) = ∑ i = 1 n ( x i − y i s i ) 2 d(x, y)=sqrt{sum_{i=1}^n(frac{x_i-y_i}{s_i})^2} d(x,y)=i=1∑n​(si​xi​−yi​​)2 ​

如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean Distance)。

下面我们来看一下标准化的欧几里得距离的Python实现:

def StandardizedEuclideanDistance(x, y):
    import numpy as np
    x = np.array(x)
    y = np.array(y)
    
    X = np.vstack([x,y])
    sigma = np.var(X, axis=0, ddof=1)
    return np.sqrt(((x - y) ** 2 /sigma).sum())

上述代码中需要避免某个分量取值一致,即该分量sigma=0。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号