假设X
是原始的,带标签的(即带有训练标签)数据集,Process(X)
返回一组Y
个实例
已经使用属性编码并转换为像Y.arff这样的weka友好文件。
还假设Process()
有一些“泄漏”:
某些实例Leak = X-Y
无法一致地编码,并且需要
获取默认分类FOO
。训练标签也以泄漏装置而闻名。
我的问题是如何才能最好地将Leak中的实例引入到
weka评估流AFTER已经应用了一些分类器
子集Y
,使用默认值折叠Leak
个实例
分类标签,在整套X
进行评估之前?在代码中:
DataSource LeakSrc = new DataSource("leak.arff");
Instances Leak = LeakSrc.getDataSet();
DataSource Ysrc = new DataSource("Y.arff");
Instances Y = Ysrc.getDataSet();
classfr.buildClassifer(Y)
// YunionLeak = ??
eval.crossValidateModel(classfr, YunionLeak);
也许这是将结果折叠在一起的具体示例 来自多个分类器?
答案 0 :(得分:0)
赏金正在关闭,但Mark Hall,在另一个论坛( http://list.waikato.ac.nz/pipermail/wekalist/2015-November/065348.html)值得将当前的答案视为:
您需要为交叉验证实现构建分类器 在你的代码中。您仍然可以使用评估对象来计算统计数据 你的修改后的测试折叠了,因为它计算的统计数据都是 添加剂。 Instances.trainCV()和Instances.testCV()可用于创建 折叠:
然后,您可以调用buildClassifier()来处理每个训练折叠,进行修改 测试折叠到您的心脏内容,然后迭代实例 在使用Evaluation.evaluateModelOnce()的测试折叠中 或Evaluation.evaluateModelOnceAndRecordPrediction()。后来的版本是 如果您需要曲线汇总指标下的区域(如下所示),则非常有用 要求保留预测。)
答案 1 :(得分:-1)
根据您的分类器,它可能非常简单! Weka有一个名为UpdateableClassifier
的接口,使用它的任何类都可以在构建之后更新!以下类实现此接口:
然后可以更新如下内容:
ArffLoader loader = new ArffLoader();
loader.setFile(new File("/data/data.arff"));
Instances structure = loader.getStructure();
structure.setClassIndex(structure.numAttributes() - 1);
NaiveBayesUpdateable nb = new NaiveBayesUpdateable();
nb.buildClassifier(structure);
Instance current;
while ((current = loader.getNextInstance(structure)) != null) {
nb.updateClassifier(current);
}