距离度量(Distance Metrics)

Euclidean Distance(欧式距离):

欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

n维欧氏空间是一个点集,
x=  (x[1],x[2],…,x[n]) ,其中 x[i](i = 1,2,…,n) 是实数,称为 X 的第i个坐标。
两个点 A = (a[1],a[2],…,a[n]) 和 B = (b[1],b[2],…,b[n]) 之间的 距离 ρ(AB) 定义为下面的公式:
ρ( AB) =√ [ ∑( a[i] - b[i] )^2 ] (i = 1,2,…,n)
| x| = √( x[1]^2 + x[2]^2 + … + x[n]^2 )
可用于图像匹配,骨架识别等。

Manhattan Distance(曼哈顿距离):

曼哈顿距离是两点之间的最短距离(在只能向上、下、左、右四个方向进行移动的前提下)。

Mahalanobis Distance(马氏距离):

用来度量一个样本点P与数据分布为D的集合的距离。

假设样本点为: 3_in_1_out

数据集分布的均值为: 3_in_1_out

协方差矩阵为S。

则这个样本点P与数据集合的马氏距离为:3_in_1_out

马氏距离也可以衡量两个来自同一分布的样本x和y的相似性: 3_in_1_out



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在sklearn中使用KMeans算法时,默认的距离度量是欧氏距离(Euclidean distance)。但是,你可以自定义距离度量来适应特定的需求。下面是一个使用自定义距离函数的示例: 首先,你需要定义一个函数来计算样本之间的距离。这个函数应该接受两个样本作为参数,并返回一个标量值作为它们之间的距离度量。下面是一个简单的例子,假设我们想使用曼哈顿距离(Manhattan distance)作为自定义距离度量: ```python from sklearn.metrics.pairwise import pairwise_distances def manhattan_distance(x, y): return np.sum(np.abs(x - y)) # 使用自定义距离度量 kmeans = KMeans(n_clusters=3, init='random', n_init=10, algorithm='full', metric=manhattan_distance) # 训练模型 kmeans.fit(data) ``` 在上面的代码中,我们首先导入`pairwise_distances`函数,它可以用于计算样本之间的距离。然后,我们定义了一个`manhattan_distance`函数来计算曼哈顿距离。最后,我们创建了一个KMeans对象,并将`metric`参数设置为`manhattan_distance`,这样KMeans算法将使用我们自定义的距离度量来进行聚类。 需要注意的是,如果你想使用其他自定义的距离度量,可以根据需要编写相应的距离函数。另外,还可以使用`pairwise_distances`函数来计算不同样本之间的距离矩阵,并将其传递给KMeans算法的`metric`参数。这样可以更灵活地使用不同的距离度量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值