OpenIMAJライブラリのKMColourSegmenterがクラスタリングを実行する時間を測定したいと思います。OpenIMAJライブラリのKMColourSegmenterの初期重心を設定する方法は?
ランダムにではなく、最初の重心を固定しないと、測定値をパフォーマンスにすることはできません。これは、毎回変更され、異なる回数の反復を行い、クラスタリングを実行するために時間が変化するためです。
最初のセントロイドを固定する、つまり手動で設定する方法はありますか?
更新:答えてくれてありがとう@ジョン
、私はあなたが言ったことを実現しようとしています。あなたはそれを確認できますか、特に私はこの配列は初期化する意味がないと思う "クラスタ"配列。私が間違っているなら、私を修正してください。
public class MyFloatKMeansInit extends FloatKMeansInit{
@Override
public void initKMeans(DataSource<float[]> bds, float[][] clusters) throws IOException {
// TODO Auto-generated method stub
for (int i = 0; i < bds.size(); i++) {
for (int j = 0; j < bds.getData(i).length; j++) {
clusters[i][j]=bds.getData(i)[j];
}
}
}
}
public class MyKMColourSegmenter extends KMColourSegmenter{
public MyKMColourSegmenter(FloatArrayBackedDataSource bds, ColourSpace colourSpace, int K) throws IOException {
super(colourSpace, K);
MyFloatKMeansInit myFloatKMeansInit = new MyFloatKMeansInit();
float[][] clusters = new float[K][];//#######I think there is something wrong here
myFloatKMeansInit.initKMeans(bds, clusters);
this.kmeans.setInit(myFloatKMeansInit);
// TODO Auto-generated constructor stub
}
}
私の投稿に行った更新を確認できますか? –
ありがとう@Jonは働いた。アルゴリズムが収束するまでに必要な繰り返しの回数を知る方法はありますか? –
https://github.com/openimaj/openimaj/issues/121 – Jon