質問

i 'コマンドラインでelki kを意味するのが好きです。

Runing TimeがRプログラミングと比較して短すぎるようです。私はkを実行しようとしたRでクラスタリングを実行しようとしました、そしてそれから約100秒かかりました。 さらに、k= 5、k= 10などの変化はない。

file.tsvには60,000行と25列があります。

START=$(date +%s)
k=5
java -jar elki.jar KDDCLIApplication \
     -dbc.in "file.tsv" \
         -dbc.parser NumberVectorLabelParser \
         -parser.colsep "\t" \
     -algorithm clustering.kmeans.KMeansLloyd \
         -kmeans.k $k \
         -kmeans.initialization KMeansPlusPlusInitialMeans \
         -kmeans.maxiter 9999 \
     -resulthandler ResultWriter -out.gzip false \
         -out output/k-$k \

END=$(date +%s)
DIFF=$(( $END - $START ))
echo "It took $DIFF seconds"
.

出力は"It took 5 seconds"

です。
START=$(date +%s)
k=10
java -jar elki.jar ...
     ...

END=$(date +%s)
DIFF=$(( $END - $START ))
echo "It took $DIFF seconds"
.

この場合、k=10"It took 5 seconds"です。

クラスタサイズに変化がないのはなぜですか?コードに問題がありますか?

役に立ちましたか?

解決

5秒はおそらくあなたに信頼できる測定を得るために速すぎる。

さらに、より大きな一般的な繰り返しの繰り返しで収束することがあります。

kを使用して、実際のアルゴリズムを実行するのに必要な時間を確認できます。方法では、解析の書き込みは、非無視の衝撃を与えます。-timeは出力を無効にします。これはベンチマークにも妥当です。

-resulthandler DiscardResultHandlerを設定する必要はありません。デフォルトでは、ELKIはコンバージェンスまでkを実行します。

私は、k平均++の初期化において実装の弱さがあると信じています。たぶん初期化、解析、書き込み、あなたの総ランタイムに大きな貢献します。

-kmeans.maxiter 9999を使用して、Parserが意図したようにファイルを理解していることを確認してください(次元を確認してください)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top