python - 当我只在行中获得聚类时,如何微调 K 均值聚类?

标签 python machine-learning scikit-learn cluster-analysis

这是我第一次尝试使用 Python 和 Sci-Kit Learn 进行 K 均值聚类,我不知道最终的聚类图如何构成,也不知道如何微调我的 K 均值聚类算法。

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

尝试 1:

输入:性别、年龄范围、国家/地区(所有这些都经过热编码,因为数据是分类的)和帐户年龄(以周为单位的数字)

enter image description here

代码:

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

剧情:

enter image description here

具体问题:

  1. 该图的 X 轴和 Y 轴是什么?
  2. 这张图到底告诉了我什么?
  3. 为什么当我输入 6 个簇时只显示 3 个簇? (通过第一条评论和更新的代码和图表回答)
  4. 如果我不知道我要寻找的关系是什么,如何微调此图表以告诉我更多信息并显示有用的关系?

最佳答案

了解 k 均值的局限性。

特别要注意的是

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

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

  3. k-means 假设变量是连续的。即使是单热编码的,对分类数据的使用也是值得怀疑的。它有时工作得“还不错”,但几乎从来没有工作过“好”。

关于python - 当我只在行中获得聚类时,如何微调 K 均值聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325117/

相关文章:

python - 如何在 alpine linux 上安装 python?

python - Altair 中的 slider 标签

python-2.7 - GridSearchCV.fit() 返回 TypeError : Expected sequence or array-like, 得到估计器

python - SKlearn 使用什么算法来最小化 MSE?

python - 如何使用枚举解压元组列表?

python - 如何为 ML 模型正确设置种子值?

python - 用于文本分类的 Tensorflow 模型未按预期进行预测?

machine-learning - 对一维标记数据使用深度学习是否合理?

python-3.x - 使用 LabelEncoder.fit_transform() 输入错误

python - 从两个数据框创建新的数据框。一个 df 包含列索引,另一个 df 包含值