我目前正在尝试将大量数据点聚集到给定数量的集群中,并且我想尝试 MOA 基于流的 k-means StreamKM
。我正在尝试使用随机数据执行的一个非常简单的示例如下所示:
StreamKM streamKM = new StreamKM();
streamKM.numClustersOption.setValue(5); // default setting
streamKM.widthOption.setValue(100000); // default setting
streamKM.prepareForUse();
for (int i = 0; i < 150000; i++) {
streamKM.trainOnInstanceImpl(randomInstance(2));
}
Clustering result = streamKM.getClusteringResult();
System.out.println("size = " + result.size());
System.out.println("dimension = " + result.dimension());
随机实例创建如下:
static DenseInstance randomInstance(int size) {
DenseInstance instance = new DenseInstance(size);
for (int idx = 0; idx < size; idx++) {
instance.setValue(idx, Math.random());
}
return instance;
}
但是,在运行给定代码时,似乎没有创建任何集群:
System.out.println("size = " + result.size()); // size = 0
System.out.println("dimension = " + result.dimension()); // NPE
还有什么我需要注意的,还是我对 MOA 聚类概念有根本的误解?