如何提高kmeans聚类结果

2024-10-01 07:30:28 发布

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

我有下面这个简单的小表,我使用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

对我来说,斯卡伯勒和北约克看起来非常相似,在“三明治”和“快餐”中的数字很高,在“日语”中的数字相同。然而,斯卡伯勒被单独分组,而北约克被其他四项分组,这四项在第一眼就不那么熟悉了

我使用以下代码进行集群

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

有谁能帮助我理解为什么会发生这种情况,或者是否有任何方法可以解决这个问题

另外,当我昨天运行我的代码时,我假设它将这两个代码聚集在一个组中。但现在它像这样聚集在一起


Tags: 代码算法数字聚类meansfastclustereast
1条回答
网友
1楼 · 发布于 2024-10-01 07:30:28

直觉上,沿一维的相似性并不一定意味着两个点彼此接近。为了使可视化变得更容易,考虑两个点的二维例子:一个是(0,10),另一个是(0,0)。其他点可能是(1,1),(3,2),(-1,-3),等等。。。现在,您可能会看到前两点,并认为它们在第一维度上非常相似(事实上是相同的),因此它们应该组合在一起。但是如果你想象这个例子,很明显,(0,0)比第一个点更接近其他点

因此,这可能提供了一些直觉,解释为什么三维中的相似性并不表示紧密

此外,两者在快餐方面的差异仍然很大。如果我没记错的话,k-means聚类寻求最小化距离,因此“两者都有高数值”并不意味着什么,但“这个维度中的距离是15”(这个数据集中的一个大距离)意味着什么

相关问题 更多 >