2012-01-09 11 views
0

私は、奇妙な出力を得ました。 私の入力マトリックスにある私のエントリー次元d x nのFは0と1の間にあります。私は、kmeansアルゴリズムを実行するときに、50個のクラスターを作成する以下のmatlabコマンドを使用します。matlabのkmeansのセントロイド計算でエラーが発生しました

[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton') 

ここIDXは、ラベルが返され、Bが作成したクラスタの重心です。すべてのデータ点が[0,1]^dにあるので、計算された重心も[0,1]^dにあると予想します。ここでdは点の次元です。

しかし、いくつかの異なる初期化後にkmeansから得られた重心は、負の値の値を含んでいます。

誰でも私にその理由を教えてもらえますか?

+0

'F = rand(1000,5);'で負の値を再現できませんでした。それを再現するコードを教えてください。 – cyborg

+0

問題を解決しましたか?質問に答えることができますか? – Royi

答えて

1

私は実際のデータ行列 "F"がなければあなたの質問に本当に答えることはできません。しかし、私は注意、もしサイズ(F)== [D、n]は、コード

[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton') 

は、D点の集合としてのn-変数の各々をFを治療するであろう。したがって、すべてのd点は[0,1]^nに属します。

はまた

  1. あなたは本当にオプションの引数を必要ですか?あなたがそれらを削除するとどうなりますか?
  2. 入力行列Fのデータ点数を減らすとどうなりますか?
  3. クラスタの数を50個でなく10個に減らすとどうなりますか?