如何使用Weka API通过10折交叉验证来创建分类模型?我问这个问题是因为每次交叉验证运行时都会创建一个新的分类模型。我应该在测试数据中使用哪个分类模型?
回答:
10折交叉验证用于估计如果使用所有训练数据构建分类器,其准确性的估计值。当认为没有足够的数据来建立独立的测试集时,就会使用这种方法。这意味着当你去预测未来数据时,应该使用所有训练数据构建一个新的模型。10折交叉验证的结果是对你的新分类器性能的预测。
以下代码展示了通过Weka API使用交叉验证的示例,然后从整个训练数据集中构建一个新的模型。
//训练实例存储在"originalTrain"中
Classifier c1 = new NaiveBayes();
Evaluation eval = new Evaluation(originalTrain);
eval.crossValidateModel(c1, originalTrain, 10, new Random(1));
System.out.println("估计准确率: "+Double.toString(eval.pctCorrect()));
//训练一个新的分类器
Classifier c2 = new NaiveBayes();
c2.buildClassifier(originalTrain) //使用此模型进行预测