Python中的聚类

Posted

技术标签:

【中文标题】Python中的聚类【英文标题】:Clustering in Python 【发布时间】:2021-07-25 13:27:15 【问题描述】:

我有一个包含数千行的数据集。每行是一个人,我需要将其插入 4 个集群。我知道有很多方法可以做到这一点并找到最好的集群,但在这种情况下,我知道每个集群的特征。通常,使用 ML,使用 IA 找到集群。

例如,假设我有 4 列要查看:money_spending、salary、segment、days_to_buy。另外,我有:

集群 1 -> money_spending:350-700 工资:700-1000 细分市场:农场 days_to_buy: 12

第 2 组 -> money_spending:500-950 工资:1000-1300 细分:建筑材料 days_to_buy: 18

第 3 组 -> money_spending:900-1400 工资:1200-2000 细分市场:超市 days_to_buy: 20

第 4 组 -> money_spending:250-600 工资:550-1000 细分市场:农场 days_to_buy: 30

将此应用于我的数据集的最佳方法是什么?我会使用 k-nearest,但我不知道如何使用我的集群信息。

有人可以帮我吗?

另外:如果我有更多列或更多集群,解决方案是否仍然有效?

编辑:我的原始数据集只有列。集群知道,但不在数据集中。工作就是将此集群信息准确地应用于数据集。我不知道该怎么做。

【问题讨论】:

【参考方案1】:

您可以尝试以下方法:

    运行 K 均值,并使用 Elbow 方法或轮廓图找到最佳的 k 数。

    使用集群标签作为一个类。 例如如果 4 是集群的最佳数量,则 class=0,1,2,3(这将是集群标签)

    将类与原始数据集合并,并将其视为监督学习问题

    尝试在训练测试拆分后运行任何分类模型。

    查看分类报告以检查模型性能。

PS

尽量使用归一化的数据,因为许多聚类算法对异常值很敏感。

请查看该类是否在某种程度上均匀分布,例如 1000,800,1150,890 而不是 1500,80,150,..等,因为它会导致分类器的数据不平衡。

【讨论】:

我的原始数据集只有列。集群知道,但不在数据集中。工作就是将此集群信息准确地应用于数据集。

以上是关于Python中的聚类的主要内容,如果未能解决你的问题,请参考以下文章

动态选择聚类中的聚类数[关闭]

k-means 聚类中的项数

Python中的聚类——图像聚类

Python中的聚类文本[关闭]

k-means聚类算法python实现,导入的数据集有啥要求

Python中的聚类