我有一个包含 4 种数据列的数据集:
numeric categorical tags text
id
1 51585 27 [A, B, C, ...] "Some text bla bla bla"
2 53596 27 [B, D, E] "Other text..."
3 1176345 27 [D, A, F, ...] "..."
4 168 24 NaN "..."
5 88564 22 NaN "..."
numeric- 连续数值。categorical- 离散类别,数字或字符串(类型并不重要,因为我可以将其转换为任何有效的)tags- 包含离散值的数组。每行可以有不同的数组长度。text- 一串文本。
我是数据科学的新手,所以也许这是一个“初学者”问题。
如何在聚类算法中使用所有这些不同的数据类型?
这是我到目前为止所学到的:
- K-means 适用于数值数据。我成功地将它应用于我的数据子集,其中只有数字列。我还使用了一些评估指标(例如轮廓系数)来帮助我选择聚类的数量。所以这原则上是有效的,但由于它没有使用我的大部分数据,结果并不好。
- 然后我阅读了关于聚类分类数据的信息。我发现高尔距离是分类数据之间的距离。到目前为止,我已经将它与 K-means 一起使用(我将 Gower 生成的距离矩阵传递给了 K-means)。从这里应该很容易将 Gower 距离矩阵与我原始数据集中的数字列连接起来,并将它们全部传递给 K-means。
我知道除了 K-means 之外还有其他聚类算法,我也计划检查其他一些算法。但在此之前,我想找到某种方法在一个算法中利用我的所有数据。
- 和
tags列text难倒我。我找不到将它们用于集群的方法。我发现了一些关于从文本文档中聚类单词的文章——这不是我想做的。我想将一text列用作一个(或多个)“特征”来进行聚类。 - 我知道用于转换
text为数字向量的“词袋”方法。我也可以很容易地想象如何使用相同的方法将 转换tags为向量。然而,这似乎有点矫枉过正,因为它会大大增加我的数据的维度。还有其他方法可以解决这个问题吗?
底线 - 我正在寻找一种将所有这些数据类型一起用于聚类的方法。我总结了到目前为止我所知道的,但我对任何解决方案持开放态度,即使它与我上面列出的完全不同。
谢谢!