分类器在数据挖掘中的作用不言而喻,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...先记录这么多。有空再写。