gpt4 book ai didi

java - 奇怪的weka实例结果

转载 作者:行者123 更新时间:2023-12-04 06:48:53 24 4
gpt4 key购买 nike

使用 J48 树时出现奇怪的结果。我需要对一个包含 48 个特征的 vector 进行分类,效果很好,但是当我尝试“优化”时,却遇到了奇怪的结果。

我有一个方法分类:

    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;
}
}

它工作得很好,我希望我做对了。但是我想删除在每次方法调用时完成的实例创建,所以我将 Instance 移动到 BeClassified = new Instance(48);行到类主体中 - 所以它只创建一次。这也很有效,尽管事实上我得到的结果与另一个略有不同。可以说,从 400 个分类中,有一个是不同的(不是说,不正确)。但我看不出有什么原因...我希望这里有一些人使用 weka,以便我了解发生了什么/错误。 (是的,2+featureVec.length 是 48)。

感谢致敬。

最佳答案

J48 不太可能有任何问题。分类器的创建和分类本身都是确定性的。我建议发布你的代码的更大部分,因为这个看起来很棒(没有错误)。

至于你的 400 循环测试:这个肯定每次都应该产生相同的结果,没有异常(exception)。两个想法:

  • 放置断言检查实例的值是否与模型一相同。这将排除 Instance 中的任何错误。
  • 分类是否以多线程方式运行?是否有任何共享数据对象?
  • 关于java - 奇怪的weka实例结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408873/

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