2016-12-25 9 views
0

PythonとSci-Kitを使ってK-Meansクラスタリングを試みるのは初めてのことです。最終的なクラスタプロットの作成方法や、クラスタリングアルゴリズムを微調整する方法についてはわかりません。Kを細かく調整すると、クラスターが唯一の行になったときにクラスター化することができますか?

私の最終目標は、興味深いまたは有用な行動特性を描写するユーザカテゴリのクラスタリングを見つけることです。 (旧週間で数値)性別、年齢、国(すべて1つのホット符号化データがカテゴリであるため)、およびアカウント年齢

enter image description here

コード:

ATTEMPT 1:

入力を:

# Convert DataFrame to matrix 
mat2 = all_dummy.as_matrix() 
# Using sklearn 
km2 = sklearn.cluster.KMeans(n_clusters=6) 
km2.fit(mat2) 
# Get cluster assignment labels 
labels2 = km2.labels_ 
# Format results as a DataFrame 
results2 = pd.DataFrame([all_dummy.index,labels2]).T 

plot_x2 = results2[0].tolist() 
plot_y2 = results2[1].tolist() 
pyplot.scatter(plot_x2,plot_y2) 
pyplot.show() 

プロット:

件のenter image description here

固有の質問:

  1. このグラフのXとY軸とは何ですか?
  2. このグラフは何と言っていますか?
  3. 入力として6つのクラスタを配置すると、3つのクラスタしか表示されないのはなぜですか? (最初のコメントと更新されたコードとグラフによって回答された)
  4. 私が探している関係が何であるかわからない場合は、このグラフを微調整してより詳しく教えてください。

答えて

1
  1. あなたのコードによると、X軸は(あなたのグラフを見て、私はあなたが、その後約10 000人のユーザーがいると仮定)あなたのサンプルのインデックスに対応し、Y軸は、それぞれのラベルに対応サンプル。

  2. 入力として6つのクラスタがない可能性があります。実際には、データフレームとして結果を書式設定するときは、ラベル変数が使用されますが、計算されたクラスター割り当てが含まれているのは実際にはlabels2です。私はあなたのラベルの由来を知りませんが、これがあなたがそれらの結果を得る理由であると思われます。したがって、質問2に関して、このグラフはおそらくに関連するものを表示しません。

  3. 最初に他の視覚化を使用して、データがどのようにクラスタ化されているかを理解することができます。 Sklearnのドキュメントには、インスピレーションのために使用できる多くの例があります(123)。

希望しました!

4

k-meansの制限事項を読んでください。特に

  1. あなたはすべての識別子列に

  2. K-手段を削除する必要があることに注意しては規模に非常に敏感です。すべての属性は、値の範囲、分布、および重要度に従って慎重に拡大縮小する必要があります。前処理は不可欠です!

  3. k-meansは、連続変数と仮定しています。たとえ1つのコードでエンコードされていても、カテゴリデータには疑問があります。それは時には "大丈夫"でも、 "良い"ことはほとんどありません。

関連する問題