K表示多维数据的聚类

时间:2014-09-03 17:24:36

标签: machine-learning cluster-analysis

如果数据集有440个对象和8个属性(数据集来自UCI机器学习库)。那么我们如何计算这些数据集的质心。 (批发客户数据) https://archive.ics.uci.edu/ml/datasets/Wholesale+customers

如果我计算每行的平均值,那么它是质心吗? 以及如何在matlab中绘制结果簇。

1 个答案:

答案 0 :(得分:29)

好的,首先,在数据集中,1行对应于数据中的单个示例,您有440行,这意味着数据集由440个示例组成。每列包含该特定功能(或您调用的属性)的值,例如:数据集中的第1列包含要素Channel的值,第2列包含要素Region的值等等。

<强> K-Means

现在对于K-Means聚类,您需要指定聚类的数量(K-Means中的 K )。假设您想要K = 3个聚类,那么初始化K-Means的最简单方法是从数据集中随机选择3个示例(即3行,从您拥有的440行中随机抽取)作为质心。 现在这三个例子是你的质心

您可以将您的质心视为3个箱,并且您希望将数据集中的每个示例放入最接近的(通常以欧几里德距离测量;检查函数{{1}在Matlab中)bin。

在第一轮将所有示例放入最近的bin后,您可以通过计算各自bin中所有示例的norm来重新计算质心。您重复将所有示例放入最近的bin中的过程,直到数据集中没有示例移动到另一个bin。

一些Matlab起点

您按mean

加载数据

在您的情况下,X = load('path/to/the/dataset', '-ascii');将是X矩阵。

您可以计算从示例到质心的欧几里德距离 440x8, 其中,distance = norm(example - centroid1);example都具有维度centroid1

重新计算质心将如下工作,假设您已经完成了1次K-Means迭代,并将所有示例放入各自最近的bin中。说1x8现在包含最接近Bin1的所有示例,因此centroid1具有维度Bin1,这意味着440中的127个示例位于此bin中。要计算下一次迭代的质心位置,您可以执行127x8。你会对你的其他垃圾箱做类似的事情。

对于绘图,您必须注意您的数据集包含8个要素,这意味着8个维度,并且不可视化。我建议您创建或查找仅包含2个要素的(虚拟)数据集,因此可以使用Matlab的centroid1 = mean(Bin1);函数进行可视化。