关于k-means聚类输入的建议(欢迎提出更多建议)

时间:2012-05-31 14:30:40

标签: java k-means

我想对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;

现在我想要的是在我正在进行文档聚类时将输入更改为接受文档向量。有关如何更改代码的任何建议?用文字说,如果可能的话(代码最后一个选项)。或者,如果你们在同一主题上找到任何链接,也可以在这里分享。

期待任何建议人员。

2 个答案:

答案 0 :(得分:0)

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

您的代码在2D空间中对矢量(x,y)进行聚类。你只需要为N维空间扩展它(根据文档 - 术语矩阵中的向量维度)。

此外,我建议您查看TF*IDF weighting,它可以改善群集效果。

答案 1 :(得分:0)

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

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

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

最佳,

菲利普