我有一个矩阵 A = (a1,a2,a3,...,an)'
,其中 a1, a2,..., an
是行向量。我想对矩阵 A
应用 k-means
算法,以便将行向量 ai
(i=1,2,3...,n)
聚类到 k
个或更多的簇中。假设 b1, b2, b3,...,bk
是 k
个簇的中心,从 k
个样本中随机选择作为 k
个簇的初始中心。所有样本 (a1,a2,a3,...,an
) 根据它们到中心 bi (i=1,2,3,...,k)
的余弦距离被分类到 k
个类别,即 k
个簇中。重新计算 k
个簇的中心,重新分类所有样本,直到中心不再变化,然后获得最终的中心 b1,b2,b3,...,bk
。对于每个簇,只保留最接近簇中心的向量。如何实现这一点?
回答:
kmeans
函数(在统计和机器学习工具箱中)正好执行这个操作。只需使用:
C = kmeans(A, k, 'Distance', 'cosine')
即可获得所需的输出。
祝好,