有 Java 编程相关的问题?

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

Java中的Weka“类索引为负”错误

我正在尝试java中的weka库。我连接sql server并提取数据。以及分批测试和培训。我为考试和训练设置了班级指标。这是我的代码部分

        Instances data = new Instances(datafile);
        data.setClassIndex(data.numAttributes() - 1);

        int trainSize = (int) Math.round(data.numInstances() * 0.8);
        int testSize = data.numInstances() - trainSize;
        Instances train = new Instances(data, 0, trainSize);
        Instances test = new Instances(data, trainSize, testSize);

        train.setClassIndex(train.numAttributes() - 1);
        test.setClassIndex(test.numAttributes() - 1);

        Classifier[] models = 
        { 
           new J48(), 
           new PART(), 
           new DecisionTable(),
           new DecisionStump(),
           new NaiveBayes(),
           new IBk()
        };

    // Run for each model
       for (int j = 0; j < models.length; j++) 
       {
            FastVector predictions = new FastVector();

            Evaluation validation = classify(models[j], train, test);
            predictions.appendElements(validation.predictions());

        }
}

我在这条线上出错了

Evaluation validation = classify(models[j], train, test);,

我在网上搜索这个错误,用户说这样写代码

train.setClassIndex(train.numAttributes() - 1);
test.setClassIndex(test.numAttributes() - 1);

但我又犯了同样的错误。完全是这样的错误

Exception in thread "main" weka.core.UnassignedClassException: Class index is negative (not set)!
    at weka.core.Instances.numClasses(Instances.java:915)
    at weka.classifiers.evaluation.Evaluation.<init>(Evaluation.java:461)
    at weka.classifiers.evaluation.Evaluation.<init>(Evaluation.java:441)
    at weka.classifiers.Evaluation.<init>(Evaluation.java:211)
    at weka1.Weka1.classify(Weka1.java:84)
    at weka1.Weka1.main(Weka1.java:193)

共 (0) 个答案