Java 堆栈跟踪:weka.core.WekaException:weka.classifiers.functions.SMO:没有足够的带有类标签的训练实例(必需:1,提供:0)!

Java 堆栈跟踪:weka.core.WekaException:weka.classifiers.functions.SMO:没有足够的带有类标签的训练实例(必需:1,提供:0)!,java,weka,Java,Weka,当我尝试打印实例数时,它会显示0(零)。但是当我使用Weka API手动选择ARFF文件时,我的培训数据中有565个实例。我想找出错误所在。多谢各位 private static void build_model() { // TODO Auto-generated method stub try{ // load data ArffLoader loader = new ArffLoade

当我尝试打印实例数时,它会显示0(零)。但是当我使用Weka API手动选择ARFF文件时,我的培训数据中有565个实例。我想找出错误所在。多谢各位

private static void build_model() {
            // TODO Auto-generated method stub
            try{

            // load data    
            ArffLoader loader = new ArffLoader();
            loader.setFile(new File("D:\\MAIN PROJECT\\data.arff"));
            Instances structure = loader.getStructure();
            structure.setClassIndex(structure.numAttributes() - 1);
            System.out.println("Attributes : "+structure.numAttributes());
            System.out.println("Instances : "+structure.numInstances());

            // train SMO
            System.out.println("Before creating smo object");
            SMO smo = new SMO();
            System.out.println("SMO object created");
            smo.buildClassifier(structure);
            System.out.println("Classifier build");
            Instance current;
            while ((current = loader.getNextInstance(structure)) != null){
                smo.buildClassifier((Instances) current);
            }
            System.out.println(smo);
            System.out.println("\nModel build successfully");
            }
            catch(Exception e){
                System.out.println("\nstack trace : " + e);
            }

        }
输出:

属性:1154 实例:0 在创建smo对象之前 SMO对象已创建


堆栈跟踪:weka.core.WekaException:weka.classifiers.functions.SMO:没有足够的带有类标签的训练实例(必需:1,提供:0)

尝试使用
getDataSet()
而不是
getStructure()

这非常有效

private static void build_model() {
        // TODO Auto-generated method stub
        try{

        // load data    
        ArffLoader loader = new ArffLoader();
        loader.setFile(new File("D:\\MAIN PROJECT\\data.arff"));
        Instances structure = loader.getDataSet();
        structure.setClassIndex(structure.numAttributes() - 1);
        System.out.println("Attributes : "+structure.numAttributes());
        System.out.println("Instances : "+structure.numInstances());

        // train SMO
        System.out.println("Before creating smo object");
        SMO smo = new SMO();
        System.out.println("SMO object created");
        smo.buildClassifier(structure);
        System.out.println("Classifier build");
        System.out.println(smo);
        System.out.println("\nModel build successfully");
        }
        catch(Exception e){
            System.out.println("\nstack trace : " + e);
        }

    }

您是如何完成自动过程的?谢谢,现在它显示了我的培训数据中正确的实例数,但现在我遇到了一个新的异常。请帮助我…..堆栈跟踪:java.io.IOException:无法在增量模式和批处理模式下混合获取实例请问您看到此异常多少次?我的意思是,当你运行代码时,你会看到它一两次?在删除循环后,它工作得很好,正如我在下面发布的工作代码。。非常感谢。你知道如何测试这个模型吗?通过给出一个实例??