1

いろいろ検索しましたが、WEKA HierarchicalClusterer の使い方を説明しているサンプルコードは見つかりませんでした。次の C# コードを使用すると、「agg.buildClusterer(insts);」で IllegalArgumentException が発生します。

weka.clusterers.HierarchicalClusterer agg = new weka.clusterers.HierarchicalClusterer();
agg.setNumClusters(NumCluster);
/*
Tag[] TAGS_LINK_TYPE = agg.getLinkType().getTags();
agg.setLinkType(new SelectedTag(1, TAGS_LINK_TYPE));
*/
agg.buildClusterer(insts);
for (int i = 0; i < insts.numInstances(); i++)
{
    int clusterNumber = agg.clusterInstance(insts.instance(i));
}

スタックトレースは次のように述べています。

at java.util.PriorityQueue..ctor(Int32 initialCapacity, Comparator comparator)
at weka.clusterers.HierarchicalClusterer.doLinkClustering(Int32 , Vector[] , Node[] )
at weka.clusterers.HierarchicalClusterer.buildClusterer(Instances data)

ただし、Message または InnerException は指定されていません。変数「insts」はインスタンス オブジェクトであり、同量の数値属性を持つインスタンスのみを保持します。

誰かが私のエラーをすぐに見つけることができますか、またはいくつかのサンプルコードを投稿/リンクしてください? また、LinkType(コメントコード)の設定は正しいですか?

ありがとう、ビョルン

4

1 に答える 1

0

HierarchicalClusterer クラスにはTAGS_LINK_TYPE属性があります。以下のようなので

agg.setLinkType(new SelectedTag(1, HierarchicalClusterer.TAGS_LINK_TYPE));

リンクを設定するための目的を達成します。では、その 1 は一体何を意味するのでしょうか。javadocs から、TAGS_LINK_TYPE の内容を確認できます。

 -L Link type (Single, Complete, Average, Mean, Centroid, Ward, Adjusted complete, Neighbor Joining)
  [SINGLE|COMPLETE|AVERAGE|MEAN|CENTROID|WARD|ADJCOMLPETE|NEIGHBOR_JOINING]

一般に、コードは C# の場合は問題ないように見えます。上記の例では距離メトリックを設定していないようですが、これを実行したいと思うでしょうか? 私も、IKVM を使用した C# でできる限り Weka を使用しています。階層クラスタリングに使用できるデータセットが大きすぎないことがわかりました。データセットが WEKA の処理能力を超えていて、データセットのサイズを小さくすればエラーを回避できるのではないでしょうか?

于 2013-08-09T15:55:11.920 に答える