0

我有一个 C# 程序,它进行一些分析,打印出一个完整的距离值二维矩阵,然后启动一个 scipy python 进程(anaconda,fwiw)来进行层次聚类。这就是问题所在:我需要对它们进行某种排序,以便它们沿每个轴都有一个排序。我的代码看起来或多或少是这样的:

var set = set.OrderBy(x => x.GetHashCode());

foreach(Point p1 in set)
{
  foreach(Point p2 in set)
  {
    double distance = Distance(p1,p2);
    //save out the distance so that it can be written to a 2d matrix
  }
}

//write out the 2d matrix...

//call python...

这是诀窍:当我更改排序方案时 - 可能按大小排序,甚至是随机数生成器 - python 会为相同的截止值计算不同数量的簇。我知道距离值是相同的 - 我将它们全部按大小排序打印到单个字符串并计算该字符串的 md5 散列,并且散列始终相同。我知道 scipy 中的 links() 函数不喜欢 2d 矩阵(我读过一些错误),但是一旦读入 2d 矩阵,我将其转换为带有 squareform(distMatrix) 的压缩矩阵,如下所示:使用scipy.cluster.hierarchy.linkage()中的距离矩阵?.

无论如何,有什么想法吗?我真的很难相信 scipy 有这个错误,但我已经没有选择了......

谢谢!-丹尼-

4

0 回答 0