如何提高k均值聚类的结果
How to improve result of k-means clustering
我有以下简单的小 table,我使用 k-means 聚类算法对它们进行聚类。
| |Cluster| ItalianRe|Japanese|Pizza|Sandwich|Fast Food|
|-----------------|-------|----------|--------|-----|--------|---------|
|Central Toronto | 0 |33 |8 |17 |10 |2
|Downtown Toronto | 1 |77 |55 |12 |17 |14
|East Toronto | 2 |7 |9 |2 |4 |3
|East York | 2 |4 |3 |4 |3 |1
|Etobicoke | 0 |18 |6 |20 |7 |9
|North York | 2 |4 |9 |9 |13 |14
|Scarborough | 3 |1 |8 |23 |15 |29
|West Toronto | 2 |7 |5 |7 |7 |5
|York | 2 |8 |4 |7 |2 |0
对我来说,斯卡伯勒和北约克看起来非常相似,"Sandwich" 和 "Fast Food" 的人数很多,"Japanese" 的人数也一样。不过,Scarborough 是单独分组的,而 North Yotk 是由其他四个项目分组的,乍一看其实并不那么熟悉。
我使用了以下代码进行聚类
# run k-means clustering
kmeans = KMeans(init="k-means++", n_clusters=4, ).fit(df)
任何人都可以帮助我理解为什么会发生这种情况,或者是否有办法解决这个问题。
P.S。当我昨天 运行 我的代码时,我假设它将这两个聚集在一个组中。但是现在它聚集成这样了。
从直观上看,沿一个维度的相似性并不一定意味着两点彼此接近。为了使可视化更容易,请考虑两个点的二维示例:一个是 (0,10),另一个是 (0,0)。其他点可能是 (1,1)、(3,2)、(-1,-3) 等...现在,您可能会看前两点并认为它们非常相似(实际上是一样的)在第一个维度,所以他们应该被分组在一起。但是如果你想象这个例子,很明显 (0,0) 比第一个点更接近其他点。
所以这可能会提供一些直觉,说明为什么 3 个维度的相似性并不表示接近。
另外,两者在快餐上的差距还是比较大的。如果我没记错的话,k 均值聚类旨在最小化距离,因此 "both have high numbers" 没有任何意义,但 "the distance in this dimension is 15"(此数据集中的大距离)确实如此。
我有以下简单的小 table,我使用 k-means 聚类算法对它们进行聚类。
| |Cluster| ItalianRe|Japanese|Pizza|Sandwich|Fast Food| |-----------------|-------|----------|--------|-----|--------|---------| |Central Toronto | 0 |33 |8 |17 |10 |2 |Downtown Toronto | 1 |77 |55 |12 |17 |14 |East Toronto | 2 |7 |9 |2 |4 |3 |East York | 2 |4 |3 |4 |3 |1 |Etobicoke | 0 |18 |6 |20 |7 |9 |North York | 2 |4 |9 |9 |13 |14 |Scarborough | 3 |1 |8 |23 |15 |29 |West Toronto | 2 |7 |5 |7 |7 |5 |York | 2 |8 |4 |7 |2 |0
对我来说,斯卡伯勒和北约克看起来非常相似,"Sandwich" 和 "Fast Food" 的人数很多,"Japanese" 的人数也一样。不过,Scarborough 是单独分组的,而 North Yotk 是由其他四个项目分组的,乍一看其实并不那么熟悉。
我使用了以下代码进行聚类
# run k-means clustering
kmeans = KMeans(init="k-means++", n_clusters=4, ).fit(df)
任何人都可以帮助我理解为什么会发生这种情况,或者是否有办法解决这个问题。
P.S。当我昨天 运行 我的代码时,我假设它将这两个聚集在一个组中。但是现在它聚集成这样了。
从直观上看,沿一个维度的相似性并不一定意味着两点彼此接近。为了使可视化更容易,请考虑两个点的二维示例:一个是 (0,10),另一个是 (0,0)。其他点可能是 (1,1)、(3,2)、(-1,-3) 等...现在,您可能会看前两点并认为它们非常相似(实际上是一样的)在第一个维度,所以他们应该被分组在一起。但是如果你想象这个例子,很明显 (0,0) 比第一个点更接近其他点。
所以这可能会提供一些直觉,说明为什么 3 个维度的相似性并不表示接近。
另外,两者在快餐上的差距还是比较大的。如果我没记错的话,k 均值聚类旨在最小化距离,因此 "both have high numbers" 没有任何意义,但 "the distance in this dimension is 15"(此数据集中的大距离)确实如此。