对于这个问题,什么是最好的k?(弯点图)

2024-10-03 15:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在首尔地铁站附近找一个开咖啡店的好地方。你知道吗

包括的功能包括:

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

我决定用肘尖找出最好的k。 在运行kmeans之前,我对所有特性进行了标准化。你知道吗

enter image description here

现在拐点似乎是k=3(或者可能是k=2),但我认为SSE对于拐点来说太高了。你知道吗

同样使用k=3,很难从集群中获得见解,因为只有三个集群。你知道吗

使用k=5是获得见解的最佳时机。你知道吗

即使不是拐点,使用k=5是否合理?你知道吗

或者kmeans一开始不是一个好的选择?你知道吗


Tags: 功能数量站点地方集群特性次数sse
3条回答

我不认为k-means能解决你的问题。你可能需要重新考虑你的方法。尤其要注意你优化了什么功能(SSE对你的任务意味着什么?)-在错误的功能上使用错误的函数意味着你可以得到不同问题的答案。。。你知道吗

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

拐点不是一个确定的规则,但是更像是一个启发式方法(它在大多数情况下都有效,但并不总是有效,所以我认为它更像是一个很好的经验法则,可以从中选择一些集群)。最重要的是,肘点不能总是明确地确定,所以你不应该太担心它。你知道吗

因此,在这种情况下,如果您在如何使用k=5理解数据方面获得更好的结果/收益,那么我强烈建议您使用k=5而不是k=3!你知道吗

现在,对于你的另一个问题,可能有一些方法更适合你的数据,但这并不意味着k-means不是一个好的开始方式。如果您想尝试其他方法,那么scikit-learndocumentation提供了在进行聚类时使用哪种算法或方法的良好见解。你知道吗

一种选择簇数的方法 是“肘部法”。正如解释的那样 机器学习专家Andrew Ng 计算每个k的失真值 簇的数目,可以绘制该值 相对于集群的数量。合适的k 可在变形处确定值 价值开始以较低的速度下降, 如下图中Ng的示例所示, k=3时(Ng,无日期a)。当失真值以稳定速率减小时,会出现问题,从而产生平滑的失真 曲线,如图中右边的Ng所示。没有明显的“关节”来识别 “肘部”。你知道吗

enter image description here

当我在写我的论文时,我的数据落在了后面(见下文-我应该为K选什么?)??-在进行轮廓分析时,结果是4)

enter image description here

这意味着我需要找到另一种方法。另一种方法是通过轮廓分析。正如在Scikit-Learn documentation中所解释的,轮廓分析被探索以获得对轮廓分离的理解 集群。你知道吗

簇的轮廓系数从-1到+1。分数接近+1表示 样品与邻近的星团一样远,因此代表样品与其他星团不同 集群。得分为零意味着样本在边界上或接近决策 簇的边界。轮廓分数为-1表示样本被分配到错误的位置 聚类(通过KMeans聚类的轮廓分析选择聚类数-scikitlearn 0.19.1文档,2017)。 当观察到星团和轮廓的分布时 相对于其他簇的系数值,如“肘部法”,可以直观地识别 适当的k值。其目的是选择一个k值,其中 每个聚类相对来说是相同的,而大多数样本保持在平均水平以上 轮廓得分。你知道吗

我建议尝试一下(即使有一个明确的“肘”)来a)验证你选择了一个合适的k值,b)练习和了解其他方法是很好的。你知道吗

相关问题 更多 >