概述
质心不与图像中的坐标对应,而是与特征空间中的坐标对应。有两种方法可以测试kmeans的表现。对于这两种方法,您首先要将点与其最近的簇关联起来。您可以从kmeans的第一个输出中获得此信息。
(1)通过将6维空间缩小为2维或3维空间,然后以不同颜色绘制不同分类的坐标,可以可视化聚类结果。
假设特征向量收集在一个名为
featureArray
以及你要求的
nClusters
集群,您可以使用
mdscale
要将数据转换为三维空间,例如:
%# kmeans clustering
[idx,centroids6D] = kmeans(featureArray,nClusters);
%# find the dissimilarity between features in the array for mdscale.
%# Add the cluster centroids to the points, so that they get transformed by mdscale as well.
%# I assume that you use Euclidean distance.
dissimilarities = pdist([featureArray;centroids6D]);
%# transform onto 3D space
transformedCoords = mdscale(dissimilarities,3);
%# create colormap with nClusters colors
cmap = hsv(nClusters);
%# loop to plot
figure
hold on,
for c = 1:nClusters
%# plot the coordinates
currentIdx = find(idx==c);
plot3(transformedCoords(currentIdx,1),transformedCoords(currentIdx,2),...
transformedCoords(currentIdx,3),'.','Color',cmap(c,:));
%# plot the cluster centroid with a black-edged square
plot3(transformedCoords(1:end-nClusters+c,1),transformedCoords(1:end-nClusters+c,2),...
transformedCoords(1:end-nClusters+c,3),'s','MarkerFaceColor',cmap(c,:),...
MarkerEdgeColor','k');
end
(2)您也可以创建一个伪彩色图像,显示图像的哪个部分属于哪个簇。
假设你有
nRows
通过
nCols
块,你写
%# kmeans clustering
[idx,centroids6D] = kmeans(featureArray,nClusters);
%# create image
img = reshape(idx,nRows,nCols);
%# create colormap
cmap = hsv(nClusters);
%# show the image and color according to clusters
figure
imshow(img,[])
colormap(cmap)
最后
以上就是威武耳机为你收集整理的matlab质心原理图,matlab:绘制质心的全部内容,希望文章能够帮你解决matlab质心原理图,matlab:绘制质心所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复