【问题标题】:How to improve result of k-means clustering如何提高 k-means 聚类的结果
【发布时间】:2020-09-07 16:35:35
【问题描述】:

我有以下简单的小表,我使用 k-means 聚类算法对它们进行聚类。

| |集群| ItalianRe|日本料理|披萨|三明治|快餐| |-----------------|-------|----------|--------|--- --|--------|---------| |多伦多市中心 | 0 |33 |8 |17 |10 |2 |多伦多市中心 | 1 |77 |55 |12 |17 |14 |东多伦多 | 2 |7 |9 |2 |4 |3 |东约克| 2 |4 |3 |4 |3 |1 |怡陶碧谷 | 0 |18 |6 |20 |7 |9 |北约克| 2 |4 |9 |9 |13 |14 |士嘉堡 | 3 |1 |8 |23 |15 |29 |西多伦多 | 2 |7 |5 |7 |7 |5 |约克 | 2 |8 |4 |7 |2 |0

对我来说,士嘉堡和北约克看起来非常相似,“三明治”和“快餐”中的数字很高,而“日本”中的数字相同。然而,Scarborough 是单独分组的,North Yotk 是由其他四个项目分组的,乍一看实际上并不那么熟悉。

我使用以下代码进行聚类

# run k-means clustering
kmeans = KMeans(init="k-means++", n_clusters=4,  ).fit(df)

谁能帮我理解为什么会发生这种情况,或者是否有办法解决这个问题。

附:当我昨天运行我的代码时,我假设它将这两个聚集在一个组中。但现在它聚集成这样了。

【问题讨论】:

    标签: python python-3.x cluster-analysis k-means


    【解决方案1】:

    直观地说,沿一维的相似性并不一定意味着两个点彼此接近。为了使可视化更容易,考虑两个点的二维示例:一个是 (0,10),另一个是 (0,0)。其他点可能是 (1,1)、(3,2)、(-1,-3) 等...现在,您可能会查看前两点并认为它们都非常相似(相同,事实上)在第一个维度,所以它们应该组合在一起。但是,如果您将这个示例形象化,很明显 (0,0) 与其他点的距离比与第一个点的距离更近。

    因此,这可能会提供一些直觉,说明为什么 3 维的相似性并不表示接近。

    另外,两者在快餐上的差距还是比较大的。如果我没记错的话,k-means 聚类旨在最小化距离,因此“两者都有高数字”并不意味着什么,但“这个维度上的距离是 15”(这个数据集中的距离很大)可以。

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 2016-04-22
      • 2015-04-11
      • 2019-06-14
      • 2013-04-28
      • 2011-08-13
      • 2013-08-08
      • 2013-02-14
      • 2018-01-14
      相关资源
      最近更新 更多