首页 > 解决方案 > K-Means 输出未按预期显示

问题描述

我正在尝试对我的数据进行聚类。我的目标是对这些数据进行聚类,以识别客户类型是否B2B符合B2C规则:

  1. 如果又高number_of_invoice又高,avg_top那就是B2B
  2. 如果高number_of_invoice和低,avg_top那么它是B2B
  3. 如果低number_of_invoice和高,avg_top那么它是B2C
  4. 如果低number_of_invoice和高,avg_top那么它是B2C

我已经删除了异常值,分布看起来像这样

分配.

我以为它会像这样分开

经验

这是集群输出 在此处输入图像描述

我测得Silhoutte Score的分数是 0.677 有没有办法像我预期的那样实现集群的分离?

标签: pythonmachine-learningcluster-analysis

解决方案


由于您将这两个术语混合在一起,因此不清楚您是要分类 (B2B/B2C) 还是在数据中执行聚类。

如果您想使用 K-Means 进行聚类,那么您的问题的简单答案是否定的,您无法按照您期望的方式实现聚类,因为它是一个随机过程,因此该算法在开始时随机初始化聚类中心并且然后迭代更新中心以最小化错误率。如果由于上述原因再次运行 K-Means,即使运行一次(很可能)得到的结果也不会相同。

注意:如果您愿意对 B2B 和 B2C 客户进行分类,那么您可以尝试一些分类方法,例如决策树,但是由于这两个类在您的数据中似乎完全纠缠在一起并且相互重叠,我认为您应该尝试使用神经网络来捕捉数据的复杂性。


推荐阅读