13

単純な問題のように感じますが、答えが見つからないようです。私はWekaにかなり慣れていませんが、これについて少し調べて(少なくとも、Googleの結果の最初の数ページを読んで)、乾いてしまったように感じます。

私はWekaを使用して、SimpleK-Meansを使用してクラスタリングを実行しています。結果リストでは、出力の視覚化(「クラスター割り当ての視覚化」)に問題はなく、K-Meansアルゴリズムの理解と、Wekaの出力の両方から、各インスタンスが最終的に別のクラスター(必要に応じて、特定の重心を中心に)。

テキスト出力からクラスター構成の一部を見ることができます。ただし、Wekaは、インスタンス番号からクラスター番号への明示的な「マッピング」を提供しません。私は次のようなものが欲しいです:

instance 1 --> cluster 0
instance 2 --> cluster 0
instance 3 --> cluster 2
instance 4 --> cluster 1
... etc.

各アイテムから各重心までの距離を自分で計算せずに、これらの結果を取得するにはどうすればよいですか?

4

2 に答える 2

14

私は同じ問題を抱えていて、それを理解しました。誰かが知る必要がある場合、私はここにメソッドを投稿しています:

実際には非常に単純で、WekaのJavaAPIを使用する必要があります。

SimpleKMeans kmeans = new SimpleKMeans();

kmeans.setSeed(10);

// This is the important parameter to set
kmeans.setPreserveInstancesOrder(true);
kmeans.setNumClusters(numberOfClusters);
kmeans.buildClusterer(instances);

// This array returns the cluster number (starting with 0) for each instance
// The array has as many elements as the number of instances
int[] assignments = kmeans.getAssignments();

int i=0;
for(int clusterNum : assignments) {
    System.out.printf("Instance %d -> Cluster %d", i, clusterNum);
    i++;
}
于 2012-02-28T22:41:49.557 に答える
9

ああ、探していたものが見つかったと思います。クラスタビジュアライザーの下で、[保存]をクリックします。これにより、データセット全体が、指定した入力ファイルとほぼ同じARFFファイルとして保存されますが、2つの新しい属性があります。最初の属性はインスタンスのインデックスで、最後の属性はクラスターの割り当てです。今、私はそれからがらくたを解析する必要があります!

于 2011-07-13T21:44:49.727 に答える