分类器在数据挖掘中的作用不言而喻,weka中的分类器有很多种类型,但是weka在输出结果中,只输出了一个分类的预测的类型,没有输出分类的得分,有一些不给力。如果想知道得分和其预测的类的话,就得调用weka的API。

weka的API还是很方便的,如果我们已经输出了一个模型的话,那么用两句话就能在代码中获取这个模型:

ObjectInputStream ob = new ObjectInputStream(new FileInputStream(model));
Classifier classifier = (Classifier) ob.readObject();

这样就获取了分类器的对象。

接下来就需要获取需要预测的数据,预测数据也是必须是用.arff格式,并且要在.arff中把需要预测的字段指定出来,用?代替即可。

读取预测数据的文件代码:

ArffLoader loader = new ArffLoader();
loader.setFile(new File(lablefile));
Instances structure = loader.getStructure();
structure.setClassIndex(structure.numAttributes()-1);
Instance current = null;

如果数据内容很大,我们不能把所有的数据都放到内存中,需要一条一条的对他们分类并且输出结果,需要用到如下代码:

while ((current = loader.getNextInstance(structure)) != null) {
outputString += classifier.distributionForInstance(current)[1];
}

这样就能获取一条数据的类标签,获取这条数据的值的话,去查查文档吧...或者把所有的信息都数出来一下就成了。

ok...先记录这么多。有空再写。

05-11 20:03