我正在尝试了解矩阵中的模式。我认为聚类适合于这样的任务,但不确定哪种聚类技术(k-mean,hierachy,dbscan等)是有效的。以下是一些例子。
此矩阵产生3个簇:对角线 包含1s,对角线上方的(右上角)三角形 包含0,以及包含随机的(左下)三角形 0,1的。
1,0,0,0,0,0,0,0,0,0
1,1,0,0,0,0,0,0,0,0
0,1,1,0,0,0,0,0,0,0
0,1,0,1,0,0,0,0,0,0
0,0,1,0,1,0,0,0,0,0
1,0,0,0,1,1,0,0,0,0
1,1,1,1,1,0,1,0,0,0
0,0,1,1,0,0,1,1,0,0
1,1,1,0,1,0,1,1,1,0
1,1,0,1,1,1,1,0,1,1
当使用k = 3-means时,我得到以下结果(0,1,2表示标签或簇)。显然,不是我要找的东西
0 0 0 0 2 2 2 2 2 2
0 0 0 0 2 2 2 2 2 2
0 0 0 0 2 2 2 2 2 2
0 0 0 0 2 2 2 2 2 2
0 0 0 0 2 2 2 2 2 2
0 0 1 1 1 1 1 2 2 2
0 1 1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
这个产生4个簇:左上1,右上3x3矩阵为1,左下矩阵为1,其余为。
1,0,0,0,1,1,1
0,0,0,0,1,1,1
0,0,0,0,1,1,1
0,0,0,0,0,0,0
1,1,1,0,0,0,0
1,1,1,0,0,0,0
1,1,1,0,0,0,0
k = 4-mean给出以下结果,这也不是我想要的结果
1 1 1 0 0 0 0
1 1 1 0 0 0 0
1 1 1 0 0 0 0
2 2 1 3 3 3 3
2 2 2 3 3 3 3
2 2 2 3 3 3 3
2 2 2 3 3 3 3
答案 0 :(得分:0)
群集分析不是您正在寻找的工具。
您的要求可能比图像处理更具有图像处理性质。
群集不会在矩阵上“直观地”操作。一个单元格与集群中的另一个单元格非常相似,并且一个单元格主要使用矩阵,因为有快速实现可用,并且您最终会得到一个简短的概念和相当高的性能。 聚类使用的矩阵类型通常是距离矩阵。
此外,大多数聚类算法都假定属性为连续。
如果您只是将您的单元格映射到(x,y,value)
我并不感到惊讶它不起作用。三个列的数值范围不匹配,值为0的“点”与值为1的点不同。这不是适合此类算法的数据模型。
问题是,我使用过的100种聚类算法都没有达到你想要的效果。
相反,图像分析技术将更有可能帮助您。
答案 1 :(得分:0)
我必须同意Anony-Mousse。没有我知道的聚类技术可以处理你的所有情况。
特别是,我建议您查看Image Segmentation上的维基百科页面。它提到了Anony-Mousse不赞成的那种方法的概括。例如,如果您使用(x,y,value)表示使得该值的权重明显大于该位置,则可能它可以在您的第二种情况下发现您想要的四个段。也就是说,我无法使用scipy kmeans函数来完成这项工作。