gpt4 book ai didi

java - 在 java 代码 : Class Attribute Not Set? 中使用 WEKA API 时出错

转载 作者:搜寻专家 更新时间:2023-10-30 21:14:42 24 4
gpt4 key购买 nike

我正在尝试在我的 java 代码中使用 weka API。我在 MySQL 数据库中使用 J48 树分类对我的数据集进行分类,但出现此错误:

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

数据集实际出现在textarea中:

@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 Attribute Not Set!!)

最佳答案

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

loader.setQuery("select * from data_training");
Instances data = loader.getDataSet();

添加以下内容:

data.setClassIndex(data.numAttributes() - 1);

如果Hujan是你的类属性(结果变量)

参见 Api Docs for more Info

关于java - 在 java 代码 : Class Attribute Not Set? 中使用 WEKA API 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112041/

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