有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java奇怪的weka实例结果

使用J48树时会出现奇怪的结果。我需要对包含48个特征的向量进行分类,这非常有效,但当我尝试“优化”时,我遇到了奇怪的结果

我有一个方法:

    public boolean classify(double feature1, double feature2, double[] featureVec ) {
        Instance toBeClassified = new Instance(2+featureVec.length);
        toBeClassified.setValue(0, feature1);
        toBeClassified.setValue(1, feature2);
        for (int i = 2; i < f.length + 2; ++i) {
            toBeClassified.setValue(i, featureVec [i - 2]);
        }
        toBeClassified.setDataset(dataset);

        try {
            double _class = tree.classifyInstance(toBeClassified);
            return _class > 0;
        } catch (Exception e1) {
            if(Logging.active) { 
                logger.error(e1.getMessage(), e1.getCause());}
            }
        return false;
    }
}

它运行得很好,我希望我做的事情是正确的。但我想删除在每次方法调用时创建的实例,所以我将实例移动到belclassified=new instance(48);线到类主体中,因此只创建一次。这也很有效,尽管事实上,我得到的结果与其他人略有不同。比方说,从400个分类中,有一个是不同的(不是说不正确)。但我看不出有什么原因。。。我希望这里有一些人在使用weka,这样我就能明白到底是怎么回事了。(是的,2+特征向量。长度为48)

谢谢和问候


共 (1) 个答案

  1. # 1 楼答案

    J48不太可能有什么问题。分类器的创建和分类本身都是确定性的。我建议你发布大部分代码,因为这段代码看起来很棒(不笨重)

    至于你的400循环测试:这个测试每次肯定会产生相同的结果,没有例外。两个想法:

    • Put assert检查实例的值是否与模型的值相同。这将排除实例中的任何错误

    • 分类是否以多线程方式运行?是否存在任何共享数据对象