【问题标题】:Understanding some terms in K-means clustering理解 K-means 聚类中的一些术语
【发布时间】:2017-01-11 18:58:10
【问题描述】:

我需要为给定的数据集编写一个实现kmeans 聚类的程序(我大致了解kmeans 算法的工作原理)。由于我希望我的程序具有通用性,因此我想了解以下术语:

对于一个有 100 行 10 列的给定数据集(假设每一列都是一个特征),我如何识别以下参数:

  1. 维度:我怎么知道这个数据集的维度?
  2. 数据点:是指每个单元格[row][col] 是一个数据点还是整行都是一个数据点(点向量)?

【问题讨论】:

  • 每个维度对应一个特征,一个数据点就是一行,即那个NC维空间中的一个点。

标签: machine-learning cluster-analysis data-mining computational-geometry k-means


【解决方案1】:

您必须从计算几何的角度来看您的数据集,其中数据集的每个元素都是 D 维空间中的一个点。

我猜你的数据集看起来像这样:

row0.col0 row0.col1 ... row0.col9
...
row99.col0 row99.col1 ... row99.col9

的角度来看,我将此数据集解释为 100 个点,10 个维度。


维度

这是列数,所以是 10。从数学角度来看,每一列都是一个坐标! ;)

数据点

每一都是一个数据点!每一个cell都是这个点的坐标!


例如,查看我的minimal example here,你会看到我创建了 10000000 个点(在你的情况下是行),在 64 维(在你的情况下是列)。

【讨论】:

  • 哦,太好了。非常感谢。因此,如果我想为 5 个集群选择初始随机质心,我会随机选择 5 行,以便每个质心用于一个集群。对吗?
  • @Frank 每个质心都是与数据集的点在同一维度空间中的一个点。所以是的,您可以从数据集中随机选择 5 个点,并将它们用作 5 个初始随机质心(因此您将从数据集中选择 5 行)。您可以使用 [0, 99] 中的随机生成器轻松完成此操作,因为您有 100 分。例如,我会select randomly like this in C
  • 非常感谢您的 cmets。真的很有帮助。我有另一个问题。事实上,我仍然不(真的)明白为什么我们称整个行(点)。谈到点时,我想到的是数据平面中的 (x,y) 点。
  • @Frank 完全正确!你认为(x, y) 是一个!那是2D(平面)。 ;) 所以在 2D 中,对于 7 个点的微小数据集,您将有 7 行和 2 列。说得通? :)
  • 确实有道理!我现在才明白。非常感谢您的帮助
【解决方案2】:

视情况而定。

但大多数语言和文件格式(例如 CSV)每条记录使用一个,每个维度使用一个。这种电子表格视图很常见。

例如在 Java 中,大多数人会将double[100][10] 矩阵读取为 100 条记录,每条记录 10 维。

有些语言是不同的。 Matlab 和 Julia 是列优先的 IIRC,所以 (100,10) 的形状是 100 维,10 行。

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 2019-11-25
    • 2015-04-11
    • 2021-11-18
    • 2012-11-08
    • 2011-08-13
    • 2013-08-08
    • 2013-02-14
    • 2018-01-14
    相关资源
    最近更新 更多