Trickl-Clusterプロジェクトを使用してデータセット とColtをクラスタリングし、データオブジェクトを行列に格納します。予期しない出力を伴うJava K平均の実装
このコード
import cern.colt.matrix.DoubleMatrix2D;
import cern.colt.matrix.impl.DenseDoubleMatrix2D;
import com.trickl.cluster.KMeans;
DoubleMatrix2D dm1 = new DenseDoubleMatrix2D(3, 3);
dm1.setQuick(0, 0, 5.9);
dm1.setQuick(0, 1, 1.6);
dm1.setQuick(0, 2, 18.0);
dm1.setQuick(1, 0, 2.0);
dm1.setQuick(1, 1, 3.5);
dm1.setQuick(1, 2, 20.3);
dm1.setQuick(2, 0, 11.5);
dm1.setQuick(2, 1, 100.5);
dm1.setQuick(2, 2,6.5);
System.out.println (dm1);
KMeans km = new KMeans();
km.cluster(dm1 ,1);
DoubleMatrix2D dm11 = km.getPartition();
System.out.println (dm11);
DoubleMatrix2D dm111 = km.getMeans();
System.out.println (dm111);
を実行した後、私はアルゴリズムのステップに続いて、次の出力
3 x 3 matrix
5.9 1.6 18
2 3.5 20.3
11.5 100.5 6.5
3 x 1 matrix
1
1
1
3 x 1 matrix
6.466667
35.2
14.933333
を持っていた、1は1つのクラスタを期待し、3つの手段を持っているとき、それは奇妙だ ドキュメントはそれほど明確ではありませんその特定の点について。
この
だから論理的にint clusters
を話すプロジェクト
void cluster(cern.colt.matrix.DoubleMatrix2D data, int clusters)
のJavaのドキュメントに記載の方法クラスタの定義で終了しKは、意味の後に予想されるクラスタの数を表します。
プロジェクトのK平均クラスの出力とK平均アルゴリズムの予想結果の関係についてご存じですか?
暗闇の中でちょうど刺すが、クラスタメソッドの入力値として2つ以上を使用しないでください。それ以外の場合は、すべてのデータポイント(つまりセンター)との距離が最小のクラスターを取得するだけではありませんか?複数のクラスタポイント間でデータセットを分割するK平均のポイントではないのですか? –
はい私は目的に応じて入力値として1を経験しました。 クラスタが1つのため、出力として平均が1つだけ必要ですが、3つの手段があることがはっきりと分かります。 –