使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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