当我只获得行中的簇时,如何微调K意味着聚类?

pr3*_*338 0 python cluster-analysis machine-learning scikit-learn

这是我第一次尝试使用Python和Sci-Kit Learn进行K-Means聚类,我不知道如何制作我的最终聚类图或如何微调我的K意味着聚类算法.

我的最终目标是找到一组用户类别,描述一些有趣或有用的行为特征.

ATTEMPT 1:

输入:性别,年龄范围,国家(所有热门编码因为数据是分类的)和帐户年龄(以周为单位的数字)

在此输入图像描述

码:

# Convert DataFrame to matrix
mat2 = all_dummy.as_matrix()
# Using sklearn
km2 = sklearn.cluster.KMeans(n_clusters=6)
km2.fit(mat2)
# Get cluster assignment labels
labels2 = km2.labels_
# Format results as a DataFrame
results2 = pd.DataFrame([all_dummy.index,labels2]).T

plot_x2 = results2[0].tolist()
plot_y2 = results2[1].tolist()
pyplot.scatter(plot_x2,plot_y2)
pyplot.show()
Run Code Online (Sandbox Code Playgroud)

情节:

在此输入图像描述

具体问题:

  1. 该图的X轴和Y轴是什么?
  2. 甚至告诉我这张图是什么?
  3. 当我将6个集群作为输入时,为什么只有3个集群出现?(通过第一条评论和更新的代码和图表回答)
  4. 如果我不知道我要找的是什么关系,我如何微调这个图表来告诉我更多并告诉我一个有用的关系?

Ano*_*sse 5

阅读k-means的局限性.

特别要注意的是

  1. 您必须删除所有标识符列

  2. k-means 对规模非常敏感.所有属性都需要根据其值范围,分布和重要性进行仔细调整.预处理至关重要!

  3. k-means假设连续变量.即使是单热编码,对分类数据的使用也是值得怀疑的.它有时候工作"好",但几乎没有工作"好".