我正试图找到一堆相似的物体。我为每个对象到对象的比较计算了一个值,并创建了一个如下形式的矩阵:header = [1, 2, 3, 4, 5]
matrix = [[0, 100, 0, 0, 0]
[100, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]]
我将矩阵传递给sklearn亲和力传播模块:
^{pr2}$
在给定的示例中,我希望1和2聚集在一起,因为1-2/2-1是100,其他所有值都是零。但cls阵列没有反映这一点:cls = [0 0 0 0 1]
这表示1、2、3和4是一个簇,5是一个单独的簇。在
我试图传递右上角的三角矩阵,改变数值大小(即0-1副0-100),等等,但它并没有像预期的那样聚集。在
对我错过了什么有什么想法?在
其他信息2014年10月24日:
我正在对我的对象进行两两比较,从中我生成一个数字,表明每个对象之间的关系如何。这些对象中的许多根本不相关,因此它们的结果是“0”值。在
这将创建一个稀疏的n-by-n矩阵,其中n是10到100个对象的顺序。在
从视觉上看,对我来说“集群”这些对象以进行进一步的分析是很简单的。在以下情况下,1与2相关,2与3相关,但1与3不直接相关。我将继续处理1、2和3,忽略4和5。(在我的实际数据中,我可能在一个矩阵中有多个有效的集群)。在header = [1, 2, 3, 4, 5]
matrix = [[0, 100, 0, 0, 0]
[100, 0, 96, 0, 0]
[0, 96, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]]
我的研究表明亲和力传播在稀疏矩阵中很好地寻找簇,并且我的成对比较可以有效地生成一个“预计算”的亲和力矩阵。在
虽然很容易从视觉上找到这些集群,但我想将其自动化,以便能够将其与之前和之后的代码集成。然而,正如最初的帖子所指出的,我并没有生成有意义的集群。在
问题是:
从我所描述的矩阵开始生成有意义的簇是否需要某种处理?在
我是忽略了一个步骤,还是在算法中插入了一个错误,导致它无法找到我的簇?在
我是否应该对这类数据使用不同的聚类方法(DBSCAN、k-means等)?在