2017-08-28 87 views
0

我想运行具有超过3个功能的kmeans聚类。我尝试了两个功能,并想知道如何为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算法为您服务。但是,如果您拥有大量功能,则可能需要更长时间才能完成。如何构建X。如您在示例中所示,您可以简单地合并数据帧,选择想要的列,然后使用.as_matrix()调用来提取功能矩阵。如果你有更多的数据框和列,我想你只是合并更多,并选择更多。

  3. 只要数据集中的特征足够多,特征选择和尺寸缩小就可以派上用场。有空的时候多了解一下他们。

P.S.为什么scipy的标题?