K-means聚类算法第1关:计算欧几里得距离

 任务描述

本关实现一个函数来计算欧几里得距离。

相关知识

K-means 算法的核心思想是,将数据集中的样本聚类为多个簇集,簇内样本距离较近,簇间样本距离较远。由此可见,其最基本的运算是判断样本(如书籍、电影、用户、汽车等)之间的距离(或者相似度)。

通常数据集中的样本都可描述为一个 n 维向量X(x1​,x2​,⋯,xn​)。每一个维度代表样本的一个属性。比如,对于用户 x 而言,其属性可能是收入、年龄、工作时间等,对于电影而言,其属性可能是出品年份、导演、风格等。本关卡学习欧几里得度量。

欧几里得度量(Euclidean metric)(也称欧氏距离)是一个常用的距离定义,计算 n 维空间中,两个样本点之间的几何距离。

两个在 n 维空间的点X(x1​,x2​,⋯,xn​)和Y(y1​,y2​,⋯,yn​)的欧几里得距离为:

EuclideanDist=\sqrt{\sum_{i=1}^{n}(x_{i}-y_{i})^2}

编程要求

本关卡要求你实现函数 euclid_distance,在右侧编辑器 Begin-End 区间补充代码,需要填充的代码块如下:

  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. def euclid_distance(x1, x2):
  4. """计算两个点之间点欧式距离
  5. 参数:
  6. x1-numpy数组
  7. x2-numpy数组
  8. 返回值:
  9. ret-浮点型数据
  10. """
  11. # 请在此添加实现代码 #
  12. ret = 0
  13. #********** Begin *********#
  14. #********** End ***********#
  15. return ret

测试说明

平台将对你的函数输入两个 Numpy 数组,计算欧式距离,比对函数 euclid_distance 的输出结果与正确结果的差异,只有完全正确才能进入下一关。


开始你的任务吧,祝你成功!

# -*- coding: utf-8 -*-
import numpy as np
def euclid_distance(x1, x2):
    """计算欧几里得距离
    参数:
        x1 - numpy数组
        x2 - numpy数组
    返回值:
        distance - 浮点数,欧几里得距离
    """
    distance = 0
    #   请在此添加实现代码     #
    #********** Begin *********#
    distance = np.sqrt(np.sum(np.square(x1-x2)))
    #********** End ***********#
    return distance

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于流形距离的k-means聚类算法,是一种通过考虑数据点之间的流形距离而进行聚类的方法。在普通的k-means算法中,距离通常是通过欧几里得距离来衡量的。但是,在高维空间中,欧几里得距离存在着维数灾难的问题,这就导致了k-means算法在高维空间中的表现会变得非常差。 为了解决这个问题,基于流形距离的k-means聚类算法将距离度量改成了流形距离。流形距离是指基于流形结构的距离度量方法,它采用了流形之间的自然连接性质,可以有效地避免维数灾难的问题。在这种方法中,数据点之间的相似性可以通过计算它们在流形上的距离来度量。流形可以被看作是高维空间中的一个低维子空间,因此基于流形距离的k-means算法可以更好地适应高维空间中的数据分布。 基于流形距离的k-means聚类算法的主要步骤与传统的k-means算法基本相同,只是将欧几里得距离换成了流形距离。具体地,该算法首先随机初始化k个聚类中心,然后迭代执行以下步骤:计算每个数据点到不同聚类中心的流形距离,将每个数据点分配到距离其最近的聚类中心所对应的簇中,然后更新每个簇的聚类中心。直到聚类中心的位置不再发生变化为止,算法停止迭代并输出聚类结果。 总之,基于流形距离的k-means聚类算法是一种适应高维空间的数据分布的算法,它通过考虑数据点之间的流形距离来进行聚类,有效避免了维数灾难问题的影响。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

畜牧当道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值