错误,在Java中使用code WEKA API:类属性未设置? [英] ERROR While using WEKA API in java code: Class Attribute Not Set?
问题描述
我试图用WEKA API在我的Java code。我用J48决策树分类进行分类我的MySQL数据库的数据集,但我有此错误:
I'm trying to use weka API in my java code. I use J48 tree classification to Classify my dataset in MySQL database, but I have this error:
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)
.....
这是我的code:
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的:
The dataset actually appears in the 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
我想知道,为什么会出现错误(类属性没有设置!!)
I would to know why the error appear(Class Attribute Not Set!!)
推荐答案
您应该设置类指数传递入分级之前,为您的数据集。您的分类必须知道哪些是你的结果变量。结果
结果这些行后...结果 loader.setQuery(SELECT * FROM data_training);
结果实例数据= loader.getDataSet();
搜索结果添加以下内容:结果 data.setClassIndex(data.numAttributes() - 1);
搜索结果如果Hujan是你的类属性(结果变量)
You should set class index of for your dataset before passing it into classifier. Your classifier must know which is your outcome variable.
After these lines...
loader.setQuery("select * from data_training");
Instances data = loader.getDataSet();
Add the following:
data.setClassIndex(data.numAttributes() - 1);
If Hujan is your class attribute (outcome variable)
请参阅API文档的更多信息: http://weka.sourceforge.net /doc/weka/core/Instances.html
See api Doc for more Info : http://weka.sourceforge.net/doc/weka/core/Instances.html
这篇关于错误,在Java中使用code WEKA API:类属性未设置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!