0

いくつかの分析を行い、距離値の完全な 2D マトリックスを出力し、scipy python プロセス (anaconda、fwiw) を起動して階層的クラスタリングを行う C# プログラムがあります。問題は次のとおりです。各軸に沿って順序付けできるように、何らかの順序付けを課す必要があります。私のコードは多かれ少なかれ次のようになります。

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のリンケージ()関数が2次元行列を好まないことを知っています(私が読んだいくつかのバグ)が、2次元行列が読み込まれると、ここに示すようにsquareform(distMatrix)で圧縮行列に変換します: scipy.cluster.hierarchy.linkage() の距離行列? .

とにかく、何かアイデアはありますか?scipy にバグがあるとは本当に信じられませんが、オプションが不足しています...

ありがとう!-デニー-

4

0 に答える 0