如何在同一数据集中聚类分类和数值数据?

数据挖掘 聚类 数据 预言
2022-03-09 17:27:19

我有一个数据集,其中包含数字数据和分类数据。这可以使用监督学习算法来完成,但我很想看看如何使用一些无监督学习算法对这些数据进行聚类(目前使用的是 K-Means 聚类算法)。

在此处输入图像描述

例如,Gender、None、Low、Medium、High、Breakfast、Lunch 和 Dinner 列以二进制形式表示。eg: Gender 代表 1 代表男性, 0 代表女性。而上述列的其余部分表示 0 表示不可用,1 表示可用。Meal 和Exercise 列也是分类的,但不是二元的。例如,在Meal中,如果是早餐那么1,午餐=2,晚餐=3。那么我们如何使用这种混合数据集进行聚类呢?请忽略事件列,因为它是目标列。

此外,在添加到任何类型的无监督学习算法之前,我们是否需要对其余的数值数据进行归一化?我们如何处理这些不同类型的分类数据?非常感谢您的指导。

谢谢。

2个回答

如果你在进行无监督学习时进行热编码,因为这个特征将有更多的维度,它在最终模型中的权重会比它被读为分类的要大得多。

您可以实现Kmodes这个论坛中最著名的问题之一中,您可以查看问题的答案。

关于是否需要在集群之前扩展数据,您可以从 stats exchange 查看这个问题。

您可以对所有分类特征使用one-hot-encoding然后标准化数字特征(因为 one-hot 是 0 和 1,然后可能将您的数字数据标准化为 [0,1] 将成为直观的起点)。然后应用降维技术,因为您可能会产生一个可能具有相当数量维度的稀疏矩阵。然后进行聚类(尝试至少两种不同的一种。我会说 k-means 和 DBSCAN)。

一个很好的直观替代 one-hot-encoding 是用它们的分数替换值。例如,在性别列中,您有 60 名男性和 40 名女性,然后用 0.6 替换男性,用 0.4 替换女性。唯一的缺点是当列中的类别数量相等时!你需要小心那些。