我想运行具有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()
答案 0 :(得分:0)
一般来说,你不希望id
成为一个特征,因为除非你有充分的理由相信,否则它们与任何事物都不相关。
只要您在X
处输入有效矩阵kmeans.fit(X)
,它就会为您运行KMean算法,无论X
中的功能数量是多少。但是,如果你有大量的功能,可能需要更长的时间才能完成。
问题是如何构建X
。正如您在示例中所示,您可以简单地合并数据框,选择所需的列,并通过.as_matrix()
调用提取特征矩阵。如果你有更多的数据框和列,我想你只需合并更多并选择更多。
如果数据集中有足够多的功能,则功能选择和降维可能会派上用场。如果你有时间,请阅读更多关于他们的信息。
P.S。为什么scipy在标题?