【问题标题】:Suggestion on Input for k-means clustering (More suggestion are welcomed)关于 k-means 聚类输入的建议(欢迎更多建议)
【发布时间】:2012-06-05 19:56:32
【问题描述】:

我想对 k-means 聚类的输入提出一些建议。 我对这个 k-means 聚类(或者为了上帝而聚类)比较陌生,并找到了这个源代码: k-means by Shyam Sivaraman 我可能想使用这个 JAVA,因为我的主管希望我只是更改和应用算法,而不是自己从头开始创建它。 所以,根据代码:

Vector dataPoints = new Vector();
dataPoints.add(new DataPoint(22,21,"data1"));
dataPoints.add(new DataPoint(19,20,"data2"));
dataPoints.add(new DataPoint(18,22,"data3"));
...

到目前为止,我所知道的是它接受两个可变数据点(x 和 y)和数据名称,基于以下代码:

public DataPoint(double x, double y, String name) {
    this.mX = x;
    this.mY = y;
    this.mObjName = name;

现在我想要在进行文档聚类时更改输入以接受文档向量。关于如何更改代码的任何建议?换句话说,如果可能的话(代码最后一个选项)。或者如果你们发现任何关于同一主题的链接,不妨在这里分享。

期待任何建议的家伙。

【问题讨论】:

    标签: java k-means


    【解决方案1】:

    在最简单的方法中,您必须计算 document-term matrix

    您的代码在二维空间中对向量 (x,y) 进行聚类。您只需将其扩展为 N 维空间(根据文档项矩阵中向量的维度)。

    另外我建议看TF*IDF weighting,它可以改善聚类结果。

    【讨论】:

    • 我可以问一下最好的维空间数是多少? (顺便说一句,我的问题可能听起来很傻,但我想学习)感谢您提出 TF*IDF 加权的建议,但这已分配给我的其他同学来做,我只需要让 kmeans 算法尽可能基本(也许我以后会用它来做副业)
    • 实际上文档术语矩阵是一个稀疏矩阵。所以我建议你实现计算文档向量之间欧式距离的通用方法
    • 哦,好的,我明白了。我决定使用泛型方法,因为它易于实现,特别是对于我的新手。谢谢老哥
    【解决方案2】:

    我建议使用 n 维向量作为输入,以便您的实现更通用。

    如果你想要一些高效的实现K-Means的Java源代码,你可以查看我的data mining software

    它提供了多种算法,包括 K-Means 以及用于启动算法的图形界面。

    最好的,

    菲利普

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-31
      • 2018-06-21
      • 2016-05-23
      • 2016-02-17
      • 2019-05-04
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多