2017-08-28 5 views
0

kmeansクラスタリングを3つ以上の機能で実行したいと思います。私は2つの機能を試し、sklearn.cluster KMeansに3つ以上の機能を提供する方法を考えました。kmeansがデータフレームでクラスタリングする(scipy)

私のコードとデータフレームは、実行する機能を選択したいものです。私は入力として複数のデータフレームを持っており、それらをフィーチャーとして提供しなければなりません。一般

# currently two features are selected 
# I'd like to combine more than 3 features and provide them to dataset 
df_features = pd.merge(df_max[['id', 'max']], 
df_var[['id', 'variance']], on='id', how='left') 

cols = list(df_features.loc[:,'max':'variance']) 
X = df_features.as_matrix(columns=cols) 

kmeans = KMeans(n_clusters=3) 
kmeans.fit(X) 

centroid = kmeans.cluster_centers_ 
labels = kmeans.labels_ 

colors = ["g.","r.","c."] 

for i in range(len(X)): 
    print ("coordinate:" , X[i], "label:", labels[i]) 
    plt.plot(X[i][0],X[i][1],colors[labels[i]],markersize=10) 

plt.scatter(centroid[:,0],centroid[:,1], marker = "x", s=150, linewidths = 5, zorder =10) 

plt.show() 

答えて

0
  1. あなたがそうでないと信じる十分な理由がない限り、彼らは何と相関していない、ので、あなたは、idが特徴であるのは嫌です。

  2. 有効な行列Xkmeans.fit(X)に入力する限り、Xの機能の数に関係なく、KMeanアルゴリズムが実行されます。しかし、あなたは膨大な量の機能を持っていれば、完了するまでに時間がかかるかもしれません。

  3. 問題は、次にXを構築する方法です。あなたの例で示したように、単にデータフレームをマージし、必要な列を選択し、.as_matrix()呼び出しでフィーチャマトリックスを抽出するだけです。より多くのデータフレームと列がある場合は、より多くをマージしてより多くを選択すると思います。

  4. データセットに十分な機能があれば、機能の選択と寸法の縮小が便利になるかもしれません。時間があるときにそれらについてもっと読む。

P.S.なぜタイトルの中でscipy?

関連する問題