用数据帧(scipy)进行kmeans聚类

时间:2017-08-28 16:01:51

标签: python scipy scikit-learn k-means

我想运行具有3个以上功能的kmeans集群。我尝试了两个功能,并想知道如何为sklearn.cluster KMeans提供3个以上的功能。

这是我的代码和数据框,我想选择要运行的功能。我有多个数据帧作为输入,我必须将它们作为功能提供。

# 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()

1 个答案:

答案 0 :(得分:0)

  1. 一般来说,你不希望id成为一个特征,因为除非你有充分的理由相信,否则它们与任何事物都不相关。

  2. 只要您在X处输入有效矩阵kmeans.fit(X),它就会为您运行KMean算法,无论X中的功能数量是多少。但是,如果你有大量的功能,可能需要更长的时间才能完成。

  3. 问题是如何构建X。正如您在示例中所示,您可以简单地合并数据框,选择所需的列,并通过.as_matrix()调用提取特征矩阵。如果你有更多的数据框和列,我想你只需合并更多并选择更多。

  4. 如果数据集中有足够多的功能,则功能选择和降维可能会派上用场。如果你有时间,请阅读更多关于他们的信息。

  5. P.S。为什么scipy在标题?