【问题标题】:K means clustering for multidimensional dataK 表示多维数据的聚类
【发布时间】:2014-10-28 07:19:09
【问题描述】:

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

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

【问题讨论】:

  • 您是否尝试使用任何可用的统计软件包来计算 K-means 聚类?你试过 R 统计吗?
  • 我不知道。我读过它只是另一种执行 k 手段的工具。我需要的是理解算法。不过还是谢谢你,至少我知道了一些新的东西。

标签: machine-learning cluster-analysis


【解决方案1】:

好的,首先,在数据集中,1行对应数据中的一个单个样例,你有440行,也就是说数据集由440个样例组成。每列都包含该特定功能(或您所称的属性)的值,例如数据集中的第 1 列包含特征 Channel 的值,第 2 列包含特征 Region 的值,依此类推。

K-Means

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

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

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

一些Matlab的起点

你通过X = load('path/to/the/dataset', '-ascii');加载数据

在您的情况下,X 将是一个 440x8 矩阵。

您可以通过以下方式计算从示例到质心的欧几里得距离 distance = norm(example - centroid1);, 其中examplecentroid1 都具有维度1x8

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

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

【讨论】:

  • 感谢您的精彩解释。我找不到比这更好的解释了。非常感谢您的耐心。否则我开始相信 stackoverflow 不适合像我这样天真的人。
猜你喜欢
  • 2017-01-26
  • 2021-12-10
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多