如何在 r 中对充满字符串变量的数据集进行 K-means 聚类

Posted

技术标签:

【中文标题】如何在 r 中对充满字符串变量的数据集进行 K-means 聚类【英文标题】:How to do K-means clustering on a dataset full of string variables in r 【发布时间】:2018-11-09 22:02:39 【问题描述】:

现在我有一个充满字符串变量的数据集,但我想在上面做一个集群项目。在我将as.factor() 应用于所有变量后,nbclust() 仍然无法工作,我该怎么办?

【问题讨论】:

【参考方案1】:

K-means 通常使用欧几里得距离(参见例如https://stats.stackexchange.com/questions/81481/why-does-k-means-clustering-algorithm-use-only-euclidean-distance-metric),因此您不能直接“在单词上进行聚类”。

如果您想根据单词对观察结果进行聚类,则必须生成数字(例如k-means for text clustering)例如,如果您尝试对客户资料进行聚类以进行细分,您可以计算代表他们个人资料中兴趣的单词,然后每个兴趣有一列,并计算该单词或 n-gram 在配置文件中出现的次数,然后在该数字矩阵上进行聚类。或者在聚类文档中,生成一个术语-文档矩阵(或文档-术语矩阵,或类似k-means clustering on term-term co-ocurrence matrix 的术语-术语出现)并使用这些数字进行聚类。

【讨论】:

【参考方案2】:

不要对此类数据使用 k-means。

您无法仅通过“反复试验”获得有意义的统计分析。因为有很多方法可以获得看起来不错但完全没有根据的结果。

在使用任何这些方法之前,您需要了解它的作用。在 k-means 的情况下,它最小化了最小二乘,这显然只对 连续 变量有意义。他们还需要表现出线性。如果您有多个变量,它们也需要具有相同的量级。

这不是黑盒方法。如果你用得不好,你只会把垃圾扔出去。

【讨论】:

以上是关于如何在 r 中对充满字符串变量的数据集进行 K-means 聚类的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在R语言中对相同的变量进行分组来将行合并为单列

如何使用 row.names 属性在 R 中对数据框的行进行排序?

如何在SAS中对不同公共变量的观测值进行求和

如何在 Weka 中对训练和测试数据集进行分类

如何在 TensorFlow 中对数据集进行切片?

如何将字符串附加到R中的变量名子集?