基于文本数据的 Kmean 聚类

数据挖掘 r 数据集 聚类 k-均值 工作室
2022-03-10 00:17:50

我有一个关于犯罪的大型原始数据集,我想使用 k-means 对数据进行聚类,但是,当我输入此代码时出现错误:

Rawdata.3means <- kmeans(Rawdata, centers = 3).

错误:

Error in kmeans(Rawdata, centers = 3) : 
  more cluster centers than distinct data points.
In addition: Warning message:
In storage.mode(x) <- "double" : NAs introduced by coercion

如何解决此错误?

1个回答

Kmeans 利用数据点的平均值进行聚类。如果您的数据集由纯文本或其他类型的因素(即不是数字)组成,那么它对您不起作用。在您可以应用 Kmean 或大多数 ML 算法之前,您需要执行另一个预处理数据的步骤。

  1. 分类数据集:即您的数据采用多个类别的形式,例如具有 Apple、橙子、香蕉等值的水果列。然后您可以使用“一种热编码”方法将您的类别列转换为多个列,每个列指示是否该样本属于相关类别(即对于具有 3 种水果类型的列,您将获得 3 个新的二进制(1 或 0)列 - 苹果?是橙色?是香蕉?在此处阅读有关如何在 R 中执行此操作的更多信息:一R中的热编码

更新:就像评论中的一些建议一样,K 意味着不会是聚类分类数据的最佳方法,在某些情况下,使用更合适的方法可以获得更好的结果。这里是另一个(更高级)聚类分类方法的链接R-ROCK 算法中的数据(kaggle 笔记本)。此外,您可以阅读“Kmode”,它类似于类别的 kmeans 并在 R 中实现

  1. 如果您的数据集是纯文本(如 tweets 或 stackexchange 帖子):一种常用方法是使用 td-idf(但还有更多),您可以在此处阅读更多内容: 使用 R 进行文本聚类:数据科学家简介 和此处不错的 kaggle R 笔记本: R:清理数据,并使用 TF-IDF