网络上太多示例展示了Weka怎么样调用数据分类算法,但想想我如何针对一个训练好的分类模型进行重用呢。所以必须要“导出来”。导出模型,一个标准的方式就是用PMML了。
标准的方式,Weka一定会支持。找了一下,不负所望。将上一次的代码整理了一下,加上PMML的支持:
训练模型,导出PMML文件
static void trainModelToPmml(String arffFile, int classIndex, File pmmlFile) throws Exception {
File inputFile = new File(arffFile); //训练文件
ArffLoader loader = new ArffLoader();
loader.setFile(inputFile);
Instances insTrain = loader.getDataSet(); // 读入训练文件
insTrain.setClassIndex(classIndex);
Logistic logic=new Logistic();
logic.buildClassifier(insTrain);//根据训练数据构造分类器
String pmml = logic.toPMML(insTrain);
PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(pmmlFile)));
writer.println(pmml);
writer.close();
}