java jdbc.idbdriver,错误,在Java中使用code WEKA API:类属性未设置​​?

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)

.....

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

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!!)

解决方案

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值