如何对质心kmeans进行排序

时间:2017-10-10 15:27:33

标签: matlab colormap centroid

我必须使用像这样的不受监控的算法kmeans:

[idx,C]=kmeans(kindex,k,'emptyaction', 'singleton'); 

我将有两个idx和C向量。 例如,在我的代码中,k = 4(集群):

idx1----> C=-2 idx2----> C=0,23 idx3----> C=0,8 idx4----> C=0,53

我想像这样对C vector尊重idx进行排序:

idx1----> C=-2 idx2----> C=0,23 idx3----> C=0,53 idx4----> C=0,8

我想min(C)有蓝色,max(C)有colorcolor的红色,但如果idx1不是min(C)(因为C不是排序)我不能这样做。

我如何订购C?我使用了sortrows但这个函数排序C但不尊重idx。

谢谢你的回答。

修改

这是一个使用我当前的C:

值的示例选择

image1

你可以看到idx3(颜色像黄色)和idx4(颜色红色)但是,idx4不是max(C) - > 0,8 .. max(C)是idx3 - > 0,53

我真的需要重新排列质心。

1 个答案:

答案 0 :(得分:0)

可以解决这一问题的一件事是,使用“开始”选项将对 kmeans 的第一次调用的排序质心作为 centroid 种子送回到kmeans中。新的“ C”将被排序,新的“ idx”将与此排序的“ C”相对应。

[idx,C]=kmeans(kindex,k);

[idx,C]=kmeans(kindex,k,'start',sort(C))