Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中的Kmeans聚类中获取最接近数据点的索引到中心点

我正在使用MATLAB中的K-means进行聚类。如您所知,用法如下:

[IDX,C] = kmeans(X,k) 其中IDX给出了X中每个数据点的簇号,C给出了每个簇的质心。我需要获取最接近该质点的索引(实际数据集X中的行号)。有谁知道我该怎么做?谢谢



回答:

@Dima提到的“暴力方法”如下

%# loop through all clusters for iCluster = 1:max(IDX) %# find the points that are part of the current cluster currentPointIdx = find(IDX==iCluster); %# find the index (among points in the cluster) %# of the point that has the smallest Euclidean distance from the centroid %# bsxfun subtracts coordinates, then you sum the squares of %# the distance vectors, then you take the minimum [~,minIdx] = min(sum(bsxfun(@minus,X(currentPointIdx,:),C(iCluster,:)).^2,2)); %# store the index into X (among all the points) closestIdx(iCluster) = currentPointIdx(minIdx); end 要获取最接近聚类中心k的点的坐标,请使用

X(closestIdx(k),:)

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:15


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.