プログラムで ELKI の階層的クラスタリングの SLINK 実装を使用しようとしています。
クラスター化する必要がある (自分のタイプの) オブジェクトのセットがあります。そのために、クラスタリングの前にそれらを特徴ベクトルに変換します。
これは、現在実行して結果を生成する方法です(コードはScalaにあります):
val clusterer = new SLINK(CosineDistanceFunction.STATIC, 3)
val connection = new ArrayAdapterDatabaseConnection(featureVectors)
val database = new StaticArrayDatabase(connection, null)
database.initialize()
val result = clusterer.run(database).asInstanceOf[Clustering[_ <: Model]]
これで、結果はClustering
type の要素を含む になりますModel
。それらを出力することはできますが、特にパラメータ化できないと思われるSLINK
タイプのモデルを返すため、この結果を理解する方法がわかりません。DendrogramModel
featureVectors
具体的には、結果を元の要素 (以前に変数を作成した元の要素) にリンクするにはどうすればよいですか?
結果から取得するアルゴリズムの初期化と実行を通じて、ある種のカスタム モデルを作成するか、何らかの方法で元の要素へのリンクを維持する必要があると思います。ただし、これをどこから始めればよいかわかりません。
ELKI を独自のプログラムに埋め込むことはお勧めできません。ただし、他の方法で ELKI を呼び出す場合も同じようです。プログラムの実行時に、クラスター化して結果をオブジェクトにマップする必要があります。