K-均值聚类算法的实现

时间:2019-11-14 18:47:35

标签: python algorithm machine-learning data-science

我正在研究机器学习,并且想要实施K表示聚类以更好地理解它。我有猫的数据集,每组有4个测量值。我想根据这些属性将它们分为2个和3个不同的硬簇,以查看是否可以根据这些测量结果确定它们的品种。

我对通用算法很熟悉,但是我一直在努力争取

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

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

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

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

1 个答案:

答案 0 :(得分:3)

您要在问题中指的是2D平面中两点的欧式距离。您想在每个属性向量本身都是数据点的平面中执行聚类,而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个向量的欧式距离:

enter image description here

其中qi是向量i°中的第q个元素

希望它有所帮助!