2

我有一个关于 R 中 k-means 聚类的问题。实际上我正在根据这篇文章做所有事情。一切都基于 tm 包中的示例,因此不需要导入数据。acq 包含 50 个文档和粗略的 20 个文档。

library(tm)
data("acq")
data("crude")
ws <- c(acq, crude)
wsTDM <- Data(TermDocumentMatrix(ws)) #First problem here
wsKMeans <- kmeans(wsTDM, 2)
wsReutersCluster <- c(rep("acq", 50), rep("crude", 20))
cl_agreement(wsKMeans, as.cl_partition(wsReutersCluster), "diag")

Error in lapply(X, FUN, ...) : 
(list) object cannot be coerced to type 'integer'

我实际上想创建交叉协议矩阵。但是这篇文章是在 2008 年写的,从那以后发生了很多变化。Data 功能仅在 RSurvey 包中可用,但我有点怀疑它是否相同。我认为主要问题是 TermDocumentMatrix 是 S4 类,现在是 S3。我知道这样做可能只有文字。但我想这样做,因为在 TDM 中,可以删除停用词、punct 等以获得更好的结果。因此,如果有人有任何很棒的解决方案。

4

1 回答 1

3

TDM 存储为稀疏矩阵,如 中所述?TermDocumentMatrix。这也可以从仅检查对象(如str(wsTDM). 那个旧Data()函数只是一种将内容作为常规矩阵访问的方法。它不再需要了。只需执行此操作kmeans(wsTDM, 2),您就会看到输出与预期一致,为 70 个特征(文档)上的 2775 个观测值(术语)确定了集群。祝你好运!

于 2011-11-10T05:05:05.523 回答