【问题标题】:K-means clustering on text data?K-means 对文本数据进行聚类?
【发布时间】:2015-06-22 06:33:01
【问题描述】:

为了更简单的理解,我用更小的例子来解释。 我有 2 套:
我有 10 个唯一的字符串 ID。 id1,id2,id3,id4,id5... id10
我有 3 个唯一的 c-id:cid1、cid2、cid3
2 个集合之间存在映射,但不在同一集合的值内。
映射说:
id1:cid1,cid2
id2:cid3
id3:cid1 ... 很快..

我需要将一组 ids(strings) 与 cids(strings) 进行聚类,反之亦然。

现在我已经创建了一个如下所示的 csv 文件。 (类似于稀疏)

id1 , cid1
id1 , cid2
id3 , cid3
.


我在 Weka 中运行 k-means,但不确定这是否正确。所有这些 id 实际上是没有任何特定顺序的特征/属性。但是我表示的方式,列被视为属性值。如何将其转换为特征?

【问题讨论】:

  • 必须在 weka 中吗? (您愿意尝试其他工具吗?)
  • 我愿意尝试任何其他工具。请告诉我。谢谢
  • 我已经添加了我的答案,如果有帮助请告诉我。

标签: cluster-analysis weka data-mining k-means


【解决方案1】:

对于 kmeans,您必须创建 equal length 向量。一种可能的方法是 - 假设有三个唯一 ID cid1cid2cid3,因此您创建一个长度为 3 的向量,每个向量取一个二进制值(01),表示 @987654328 @ 或 presence 的唯一 ID。

id => [cid1, cid2, cid3]

即上面的例子可以写成:

id1,1,1,0
id2,0,0,1
id3,1,0,1
... 

那么我认为您可以使用 kmeans 进行集群。我不知道这里 Id 的语义,因此无法真正评论它的聚类效果。

【讨论】:

  • 这是否意味着,以密集矩阵的形式表示特征?在上面的例子中,如果有映射,它将是 10X3 矩阵,值为 1,否则为 0,对吗?如果这是正确的,我该如何在 Weka 中做到这一点?
  • 对 Weka 的想法不多。
【解决方案2】:

由于您愿意尝试任何其他可以进行聚类的工具,我建议您查看SPMF

SPMF 是一个用 Java 编写的开源数据挖掘挖掘库, 专注于模式挖掘。

它是根据 GPL v3 许可分发的。

它提供了 89 种数据挖掘算法的实现:

顺序模式挖掘、关联规则挖掘、项集挖掘、 顺序规则挖掘、聚类。各个算法的源代码 可以集成到其他Java软件中。

此外,SPMF 可以作为一个简单的用户使用的独立程序 界面或命令行。

您可以从here下载GUI程序或源代码

文档和数据集描述可以在this page 上找到。


对于 KMeans,该程序仅接受 整数值 (字符串有一种解决方法) 由单个空格分隔,并且它还假设 所有行的长度相同。

1 2 3 4
1 6 8 8
1 2 3 3
2 4 5 5
4 7 8 7
7 6 8 9
4 4 3 3
2 2 5 5
7 5 5 5
5 6 8 9

输出文件格式定义如下。 每一行都是一个簇,并列出了簇中包含的向量。向量是由“,”分隔并在“[”和“]”字符之间的双精度值列表。

cluster 1: [1.0,2.0,3.0,4.0][1.0,2.0,3.0,3.0][2.0,4.0,5.0,5.0][4.0,4.0,3.0,3.0][2.0,2.0,5.0,5.0]
cluster 2: [7.0,6.0,8.0,9.0][1.0,6.0,8.0,8.0][4.0,7.0,8.0,7.0][5.0,6.0,8.0,9.0]
cluster 3: [7.0,5.0,5.0,5.0]

但是,如果您的数据集只有几个不同的字符串,“查找和替换”就可以完成这项工作。

在任何其他情况下,您都可以使用R

【讨论】:

    猜你喜欢
    • 2016-04-04
    • 2021-05-14
    • 2016-08-14
    • 2016-07-28
    • 2011-06-06
    • 2019-04-06
    • 2013-02-07
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多