在java代码中使用WEKA API时出错:未设置类属性?

在java代码中使用WEKA API时出错:未设置类属性?,java,api,classification,weka,Java,Api,Classification,Weka,我试图在java代码中使用WEKAAPI。我使用J48树分类对MySQL数据库中的数据集进行分类,但我有以下错误: Trying to add database driver (JDBC): RmiJdbc.RJDriver - Error, not in CLASSPATH? Trying to add database driver (JDBC): jdbc.idbDriver - Error, not in CLASSPATH? Trying to add database driver

我试图在java代码中使用WEKAAPI。我使用J48树分类对MySQL数据库中的数据集进行分类,但我有以下错误:

Trying to add database driver (JDBC): RmiJdbc.RJDriver - Error, not in CLASSPATH?
Trying to add database driver (JDBC): jdbc.idbDriver - Error, not in CLASSPATH?
Trying to add database driver (JDBC): com.mckoi.JDBCDriver - Error, not in CLASSPATH?
Trying to add database driver (JDBC): org.hsqldb.jdbcDriver - Error, not in CLASSPATH?
weka.core.UnassignedClassException: weka.classifiers.trees.j48.C45PruneableClassifierTree: Class attribute not set!
        at weka.core.Capabilities.test(Capabilities.java:1086)
        at weka.core.Capabilities.test(Capabilities.java:1018)
        at weka.core.Capabilities.testWithFail(Capabilities.java:1297)
.....
这是我的代码:

try{
       DatabaseLoader loader = new DatabaseLoader();
      loader.setSource("jdbc:mysql://localhost:3306/cuaca","root","491754");
       loader.setQuery("select * from data_training");
      Instances data = loader.getDataSet();

        jTextArea1.append(data.toString());

        String[] options = new String[1];
        options[0] = "U"; // unpruned tree
        J48 tree = new J48(); // new instance of tree
       tree.setOptions(options); // set the option
       tree.buildClassifier(data); // build classifier
       //Evaluation eval=new Evaluation(data);
       //eval.crossValidateModel(tree, data, 10, new Random(1));
       //jTextArea1.append(eval.toSummaryString("\n HASILNYA \n", false));

 }catch(IOException ioe){ioe.printStackTrace();}
        catch(Exception e){e.printStackTrace();}
数据集实际显示在文本区域中:

@relation data_training

@attribute Tmean numeric
@attribute Tmax numeric
@attribute Td numeric
@attribute RH numeric
@attribute SLP numeric
@attribute STP numeric
@attribute Wind_ave numeric
@attribute Wind_max numeric
@attribute Hujan {Y,T}

@data
25.9,31.6,23.1,93.4,1008.5,998.2,2.6,12.9,Y
27.6,31.4,22.3,87,1009.6,999.3,0.8,3.1,T
27.4,32.6,21.9,86.1,1009.4,999.2,4.5,14.3,T
27.6,32.2,22.4,87.3,1009.1,998.9,2.4,8.2,T
我想知道为什么会出现错误(Class属性未设置!!)

在将数据集传递到分类器之前,您应该为数据集设置类索引。分类器必须知道哪一个是结果变量。
在这几行之后

loader.setQuery("select * from data_training");
Instances data = loader.getDataSet();
添加以下内容:

data.setClassIndex(data.numAttributes() - 1);
如果Hujan是类属性(结果变量)

请参见试一试

data.setClassIndex(1);
  • 你的班级指数

  • 我也使用元分类。但我有类似的错误:类索引(未设置)@iinception您能告诉我
    classIndex
    的用途吗?如果需要另一个属性作为类属性,是否有方法将该属性移动/交换到最终位置(而不是仅使用其索引)?