使用Java-ML包进行聚类

我有一个数据集,每个实例都只有一个属性值,我需要对其进行聚类。我认为Java-ML(Java机器学习库)适合这个任务。但我发现其中的”Dataset”类被设计为一个实例集,而每个实例又是一个属性集和一个类标签。我的问题是每个实例只有一个属性,并且没有类标签。

以下是我尝试过的示例代码,但令人意外的是,一旦开始聚类,执行就不会结束。

    int k;    Dataset dataset = new DefaultDataset();    double[] val= {5,6,15,20,40,50,55,73};    for(int i = 0; i < val.length; i++) {        Instance instance= new SparseInstance(1);        instance.put(1, val[i]);        dataset.add(instance);    }    k = 3;    Clusterer km = new KMeans(k);    System.out.println(dataset);    Dataset[] clusters = km.cluster(dataset);    System.out.println(dataset);    for(int i = 0; i < k; i++) {        System.out.println(clusters[i]+"\n\n\n\n");    }

我无法理解这种意外行为背后的原因。是否有其他库比Java-ML更适合我的工作?

提前感谢。


回答:

首先,由于你的数据是一维的,首先不要使用聚类

一维数据可以进行排序,这允许使用比一般情况更快的算法。你可能需要研究经典统计学、自然断点、核密度估计等。实际上,我会从核密度估计开始,并在两个局部最大值之间的最低最小值处分割数据。

关于Java-ML,你所说的表明它实际上是一个分类包。需要类标签是针对以分类为目的的应用的典型要求。在这种情况下,拥有类标签对于学习和验证至关重要。

我主要使用ELKI,它提供了大量的聚类算法选择,并且不期望数据被标记。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注