2017-11-09 5 views
-1

DOB、Gender、State、pincode、transaction_id、promocodeなどの属性を持つ特定のデータセットに基づいて顧客をグループ化しようとしています。K平均アルゴリズムのシード値を入れる方法は?

シルエットスコアには大きな違いがあります。前のものからのクラスタリング、すなわち結果は一貫していない。 これはおそらく、データセットに対するランダムなシードのためです。アルゴリズムに属性を渡す行は次のとおりです。

km1 = KMeans(n_clusters=6, n_init=25, max_iter = 600) 

クラスタを割り当てるか、毎回の後、私はプログラムを実行するように最適化する方法はあります、スコアが一貫して良いですか?

私はscikit-learnでPython 3を使用しています。

+1

ここではどのような言語とフレームワークを使用していますか? Scikitを学ぶPythonですか?明確にしてください(特定のタグ付けも仕事をすることができます)... – desertnaut

答えて

1

scikit-learnのように見えます(私は推測しています)。この場合

は、ちょうど使用:上記のリンクで説明したようにMYSEEDは整数、RandomStateオブジェクトまたはNone(デフォルト)とすることができる

km1 = KMeans(n_clusters=6, n_init=25, max_iter = 600, random_state=MYSEED) 

を。

これが意味:

km1 = KMeans(n_clusters=6, n_init=25, max_iter = 600, random_state=0) 

が決定論的結果を誘導されます。

備考:これはk-ランダム性を意味します。あなたのデータに分割/ CVを行った場合は、これらの操作を確定的にする必要があります!

1

random_state=を固定値に修正できます。しかし、あなたが結果が好きになるまでこの値を微調整しないでください。

k-meansが開始条件に敏感である場合(つまり、「品質」が大きく異なる場合)、これは通常、アルゴリズムがこのデータに対して非常にうまく機能しないことを示します。 の場合、が良好なk-meansクラスタリングがあることが示されています。ほとんどの場合、少なくともが閉じるになります。だからn_init=25の場合は、の場合、良い解決策が見つかるはずです。には1つあります。しかし、k-means が良い解決策を見つけることができない多くのデータセットがあります!

関連する問題