kmeans聚类与数据框(scipy)
问题描述:
我想运行具有超过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()
答
一般来说,你不会想
id
成为一个功能,因为,除非你有充分的理由相信,否则,它们不与任何关联。只要你在一个有效的矩阵
X
在kmeans.fit(X)
饲料,它会不管的功能数量在X
运行KMean算法为您服务。但是,如果您拥有大量功能,则可能需要更长时间才能完成。如何构建X
。如您在示例中所示,您可以简单地合并数据帧,选择想要的列,然后使用.as_matrix()
调用来提取功能矩阵。如果你有更多的数据框和列,我想你只是合并更多,并选择更多。只要数据集中的特征足够多,特征选择和尺寸缩小就可以派上用场。有空的时候多了解一下他们。
P.S.为什么scipy的标题?