gpt4 book ai didi

java - MOA 的 StreamKM 聚类不返回任何结果

转载 作者:行者123 更新时间:2023-11-30 08:36:32 24 4
gpt4 key购买 nike

我目前正在尝试将大量数据点聚类到给定数量的簇中,并且我想尝试 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 集群概念有根本性的误解吗?

最佳答案

我认为prepareForUse()方法不是初始化算法的正确方法。

而不是 streamKM.prepareForUse(); ,你应该使用streamKM.resetLearning(); .

简而言之,您的代码应该类似于:

StreamKM streamKM = new StreamKM();
streamKM.numClustersOption.setValue(5); // default setting
streamKM.widthOption.setValue(100000); // default setting
streamKM. resetLearning(); // UPDATED CODE LINE !!!
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());

关于java - MOA 的 StreamKM 聚类不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35342256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com