首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.NullPointerException在尝试MOA流聚类算法denstream.WithDBSCAN时(如何正确使用?)

java.lang.NullPointerException在尝试MOA流聚类算法denstream.WithDBSCAN时(如何正确使用?)
EN

Stack Overflow用户
提问于 2019-11-15 02:21:26
回答 1查看 157关注 0票数 1

我刚开始使用moa,我很难解释如何使用聚类算法。文档缺乏用于常见用法的示例代码,实现没有得到很好的注释.也没有找到任何教程。

下面是我的代码:

代码语言:javascript
复制
import com.yahoo.labs.samoa.instances.DenseInstance;
import moa.cluster.Clustering;
import moa.clusterers.denstream.WithDBSCAN;

public class TestingDenstream {
    static DenseInstance randomInstance(int size) {
        DenseInstance instance = new DenseInstance(size);
        for (int idx = 0; idx < size; idx++) {
            instance.setValue(idx, Math.random());
        }
        return instance;
    }
    public static void main(String[] args) {
        WithDBSCAN withDBSCAN = new WithDBSCAN();
        withDBSCAN.resetLearningImpl();
        for (int i = 0; i < 10; i++) {
            DenseInstance d = randomInstance(2);
            withDBSCAN.trainOnInstanceImpl(d);
        }
        Clustering clusteringResult = withDBSCAN.getClusteringResult();
        Clustering microClusteringResult = withDBSCAN.getMicroClusteringResult();

        System.out.println(clusteringResult);

    }
}

这是我所犯的错误:

对于如何使用该算法的任何见解都将受到赞赏。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-18 07:54:38

我已经更新了密码。正如我在github中提到的那样,它正在工作,您必须将头分配给实例。见github讨论

以下是更新的代码:

代码语言:javascript
复制
    static DenseInstance randomInstance(int size) {
        // generates the name of the features which is called as InstanceHeader
        ArrayList<Attribute> attributes = new ArrayList<Attribute>();
        for (int i = 0; i < size; i++) {
            attributes.add(new Attribute("feature_" + i));
        }
        // create instance header with generated feature name
        InstancesHeader streamHeader = new InstancesHeader(
                new Instances("Mustafa Çelik Instance",attributes, size));

        // generates random data
        double[] data = new double[2];
        Random random = new Random();
        for (int i = 0; i < 2; i++) {
            data[i] = random.nextDouble();
        }

        // creates an instance and assigns the data
        DenseInstance inst = new DenseInstance(1.0, data);

        // assigns the instanceHeader(feature name)
        inst.setDataset(streamHeader);

        return inst;
    }

    public static void main(String[] args) {
        WithDBSCAN withDBSCAN = new WithDBSCAN();
        withDBSCAN.resetLearningImpl();
        withDBSCAN.initialDBScan();
        for (int i = 0; i < 1500; i++) {
            DenseInstance d = randomInstance(5);

            withDBSCAN.trainOnInstanceImpl(d);
        }
        Clustering clusteringResult = withDBSCAN.getClusteringResult();
        Clustering microClusteringResult = withDBSCAN.getMicroClusteringResult();

        System.out.println(clusteringResult);
    }

下面是调试过程的屏幕截图,您可以看到生成了集群结果:

图像链接被破坏,您可以在github github入口链接上找到它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58869442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档