Java weka.classifiers.Classifier.classifyInstance中的ArrayIndexOutOfBoundsException
我写了这个方法。我想写一个贝叶斯网络,但是我在Java weka.classifiers.Classifier.classifyInstance中的ArrayIndexOutOfBoundsException,java,weka,indexoutofboundsexception,Java,Weka,Indexoutofboundsexception,我写了这个方法。我想写一个贝叶斯网络,但是我在classifyInstance()方法上遇到了一个异常 这是我的密码: public static double bayesNet1(Dataset data, Dataset testingSet) throws Exception { Instances insts = convertTxtToARFF(data); K2 learner = new K2(); MultiNomialBMAEs
classifyInstance()
方法上遇到了一个异常
这是我的密码:
public static double bayesNet1(Dataset data, Dataset testingSet) throws Exception {
Instances insts = convertTxtToARFF(data);
K2 learner = new K2();
MultiNomialBMAEstimator estimator = new MultiNomialBMAEstimator();
estimator.setUseK2Prior(true);
EditableBayesNet bn = new EditableBayesNet(insts);
bn.initStructure();
learner.buildStructure(bn, insts);
estimator.estimateCPTs(bn);
double error = 0;
Instances instsTest = convertTxtToARFF(testingSet);
for(int i=0; i<instsTest.numInstances()-1; i++) {
weka.core.Instance inst = instsTest.instance(i);
double predictedValue = bn.classifyInstance(inst);
if(inst.value(inst.classIndex())!= predictedValue)
error++;
}
return error/instsTest.numInstances();
}
publicstaticdouble-bayesNet1(数据集数据,数据集测试集)引发异常{
实例insts=convertTxtToARFF(数据);
K2学习者=新K2();
多项式b统计量估计器=新的多项式b统计量();
估计器setUseK2Prior(真);
EditableBayesNet bn=新的EditableBayesNet(insts);
bn.initStructure();
学习者建筑结构(英国国民大学、印度科学院);
估计值。估计的CPT(bn);
双误差=0;
实例instsTest=convertTxtToARFF(测试集);
对于(int i=0;i我也有同样的问题。我的错误是我没有为测试数据设置类。就这么简单。我发现在处理标称属性时,许多不同分类器的distributionForInstance()
方法中通常会出现此错误
如果是这种情况,则可能是测试数据具有标称属性,且具有列车数据所缺少的属性值
在这种情况下,这实际上取决于您所做的事情的最佳决策。也许检查数据本身的一致性是第一步,然后您就可以开始了