我必须使用像这样的不受监控的算法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:
值的示例选择你可以看到idx3(颜色像黄色)和idx4(颜色红色)但是,idx4不是max(C) - > 0,8 .. max(C)是idx3 - > 0,53
我真的需要重新排列质心。
答案 0 :(得分:0)
可以解决这一问题的一件事是,使用“开始”选项将对 kmeans 的第一次调用的排序质心作为 centroid 种子送回到kmeans中。新的“ C”将被排序,新的“ idx”将与此排序的“ C”相对应。
[idx,C]=kmeans(kindex,k);
[idx,C]=kmeans(kindex,k,'start',sort(C))