这个 kmeans 聚类的最佳 k 是多少?(肘点图)

Mat*_*oon 4 python cluster-analysis machine-learning k-means python-3.x

我正在尝试使用 kmeans 寻找在首尔地铁站附近开设咖啡店的最佳地点。

包括的功能有:

  1. 每月在特定车站下车的总人数
  2. 特定车站附近的租金
  3. 特定车站附近现有咖啡店的数量

我决定使用肘点来找到最好的 k。在运行 kmeans 之前,我确实对所有功能进行了标准化。

在此处输入图片说明

现在肘点似乎是 k=3(或者 k=2),但我认为 SSE 对于肘点来说太高了。

同样使用 k=3,很难从集群中获得洞察力,因为只有三个集群。

使用 k=5 是获得洞察力的最佳选择。

即使不是肘点,使用 k=5 是否合理?

还是首先 ​​kmeans 不是一个好的选择?

The*_*nce 6

肘点不是一个明确的规则,而更像是一种启发式方法(它在大多数情况下都有效,但并非总是如此,所以我认为它更像是一个很好的经验法则,用于选择多个集群作为起点)。最重要的是,肘点不能总是被明确地识别出来,所以你不应该太担心它。

因此,在这种情况下,如果您使用 获得更好的结果/收益k=5,那么我强烈建议您使用k=5而不是k=3!

现在,对于您的另一个问题,可能有更适合您的数据的方法,但这并不意味着 k-means 不是一个好的开始方式。如果您想尝试其他事情,scikit-learn文档提供了有关在进行聚类时使用哪种算法或方法的很好的见解。


Ano*_*sse 5

我认为这些功能上的 k-means 不能解决您的问题。您可能需要重新考虑您的方法。特别要注意您优化的功能(SSE 对您的任务意味着什么?) - 在错误的功能上使用错误的功能可能意味着您会得到不同问题的答案......

他的肘部方法非常不可靠,我希望人们最终会停下来甚至提起它。如果你使用 itz,你应该问的第一个问题是:曲线看起来像没有 k 的随机数据的典型曲线吗?如果是这样,请完全停止并重做您的方法,因为看起来您的数据很糟糕 - 或者至少,k-means 不起作用。您正好处于这种情况:该图表明 k-means 不适用于您的数据。