首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >K均值聚类算法

K均值聚类算法
EN

Stack Overflow用户
提问于 2013-03-25 06:11:11
回答 3查看 4.8K关注 0票数 2

我想对一组10个数据点执行k均值聚类分析,每个数据点都有一个由4个数值组成的数组。我使用皮尔逊相关系数作为距离度量。我完成了k均值聚类算法的前两步,它们是:

1)选择k个簇的一组初始中心。我随机选择了两个初始中心

2)将每个对象分配到中心最近的集群。我使用皮尔逊相关系数作为距离度量--见下文

现在我需要帮助理解算法中的第三步:

3)计算集群的新中心:

其中X,在这种情况下是一个4维向量,n是集群中数据点的数量。

假设下面的数据,我该如何计算C(S)呢?

代码语言:javascript
运行
复制
# Cluster 1
A   10  15  20  25  # randomly chosen centre
B   21  33  21  23
C   43  14  23  23
D   37  45  43  49
E   40  43  32  32

# Cluster 2
F  100  102 143 212 #random chosen centre
G  303  213 212 302
H  102  329 203 212
I  32   201 430 48
J  60   99  87  34

K均值算法的最后一步是重复步骤2和3,直到没有对象改变聚类,这是足够简单的。

我需要帮助完成步骤3.计算集群的新中心。如果有人能通过并解释如何计算其中一个集群的新中心,那将对我有很大的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-25 06:27:15

步骤3对应于计算每个集群的平均值。对于集群1,你将得到新的集群中心(B+C+D+E) / 4,它是(35.25 33.75 29.75 21.75),即对集群中所有点的每个分量分别求和,然后除以集群中的点数。

集群中心(集群1的A)通常不是新集群中心计算的一部分。

票数 0
EN

Stack Overflow用户

发布于 2013-03-25 16:41:19

不要在k-means中加入其他距离函数。

K-means的目的是最小化“平方和”,而不是距离!通过最小化平方和,它将巧合地最小化平方欧氏距离,从而使欧几里德距离最小化,但这可能不适用于其他距离,因此当与任意距离函数一起使用时,K-means可能会停止收敛。

再说一次:k-means不会最小化任意距离。它最小化了恰好与平方欧几里德距离一致的“平方和”。

如果您想要一种为任意距离函数定义良好的算法,请考虑使用k-medoids (Wikipedia),一种k-means变体。PAM保证以任意距离函数收敛。

票数 6
EN

Stack Overflow用户

发布于 2013-03-25 08:03:01

对于具有n维点的每个簇,计算n维质心以获得质心。在您的示例中,有4维点,因此质心是沿4个维度的每个维度的平均值。对于簇1,质心是:(30.20,30.00,27.80,30.40)。例如,第一个维度的平均值计算为(10+21+43+37+40)/5 = 30.20。

有关详细信息,请参阅Wikipedia article on K-Means clustering

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15604647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档