【问题标题】:K-Means Clustering Algorithm implementationK-Means 聚类算法实现
【发布时间】:2020-03-10 19:52:41
【问题描述】:

我正在研究机器学习,并希望实现 K 意味着聚类以更好地理解它。我有一个猫的数据集,每只猫都有 4 个测量值。我想根据这些属性将它们分成 2 个和 3 个不同的硬簇,看看是否可以根据这些测量确定它们的品种。

我熟悉通用算法,但我很难理解

  1. 我应该在中间随机分配哪些数字来初始化我的质心? 1到10?真的很重要吗?
  2. 如何找到(x,y) 元组和猫(有4 个属性)之间的欧几里得距离?

通常在欧几里得距离中,您将xy 等值相互比较,但如果我有 4 个属性,我如何测量它与二维平面上的 (x,y) 对的距离?即使在阅读了这个概念之后,这对我来说也没有多大意义。

我相信在 2d 平面上我确实只能查看 4 个属性中的两个属性 - 或者这不正确吗?如果不将数据维度压缩到 2,我看不出如何做到这一点。

Ps:我知道有实现 K-means 聚类的库,这不是重点。

【问题讨论】:

    标签: python algorithm machine-learning data-science


    【解决方案1】:

    您在问题中指的是二维平面中两点的欧几里得距离。您希望在每个属性向量本身都是一个数据点的平面中执行聚类,这对于 2D 平面是不可能的。因此,您要处理一个 n 维平面,其中每个数据点都是一个 n 维向量。这些维度中的每一个都代表一个特征。在您的情况下,n4,因为每个数据点有 4 个特征(属性)。

    您可以通过选择具有从所有特征向量的最小值到最大值的值的任何向量来随机化质心。

    假设您有 3 只不同的猫,它们具有以下属性:[1, 5, 9, 10], [2, 3, 4, 3], [5, 6, 1, 5]。这些只是特征向量。您将按如下方式运行集群:

    1. 首先计算minmax 向量。 min = [1, 3, 1, 3]max = [5, 6, 9,10]。因此,您在以下范围内分配质心:[1...5, 3...6, 1...9, 3...10]

    2. 质心初始化后(随机或基于启发式估计),您将运行算法并在每次迭代时重新计算质心。

    3. 您将欧式距离计算为 2 个向量的欧式距离:

    其中qi 是向量q° 中的ith 元素

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2011-09-04
      • 2013-07-24
      • 2011-10-15
      • 1970-01-01
      • 2011-07-24
      • 2015-04-11
      • 2012-01-01
      • 2021-03-16
      相关资源
      最近更新 更多