-1

私はPythonの初心者です。さて、私は理解しようとしているものを文書からsklearn.cluster.KMeansPython、Scikit-learn、K-means:パラメータn_initは実際に何をしますか?

からパラメータn_init

n_init:int型、デフォルト:時間の10

数K-手段アルゴリズムは異なるセントロイドシードで実行されます。最終的な結果は、慣性の観点から連続したn_initの最高出力です。まず

、私はこのhelpful questionを見つけた、と私はそれがmax_iterは何をすべきかだ実現するまで、それはコードを実行します時間の数を意味すると思いました。

n_initの正確な内容は何ですか?私は本当にそれを理解していない。

+1

開始点はランダム化されているので、 'n_init'は、アルゴリズムが使用すべきランダムな点のセット数を指定します。その後、慣性の観点から最良の走りが得られます(実行の終わりにアルゴが少し動いていたか - 小さなステップ - >より良い解に近づく) – pazqo

+0

これはクラスタのセントロイドをランダムに何度も初期化します。重心の初期値によっては、形成されるクラスタが異なる場合があります。 –

答えて

1

K-では、重心の初期配置は収束において非常に重要な役割を果たします。時々、初期重心は、K-の反復反復中に、クラスターが大幅に変化し続けるクラスターを意味し、収束条件が起こる前でさえも、max_iterに達し、クラスターが間違っていることがある。したがって、そのようにして得られたクラスタは正しくない可能性がある。この問題を解決するために、このパラメータが導入されています。 n_iterの値は、アルゴリズムが使用する場合、ランダムに選択された重心のいくつのセットが基本的に決定されます。各異なる点の組について、クラスタがどれだけ距離を移動したか、すなわちクラスタが小さな距離を移動したかどうかについて比較が行われ、それは我々が地面真理/最良解に最も近い可能性が高い。最高のパフォーマンスを提供するポイントとすべてのクラスター・ラベルと共に実行されるポイントが戻されます。

この問題に対処するために特別に設計されたk-means++ algorithmもご覧ください。

this link for more detailsは、最初の重心についても見ることができます。

関連する問題