我正在尝试建立一条学习曲线,将WEKA中的培训和测试准确性与培训集大小进行比较。测试准确度部分与训练集大小的关系很容易做到(通过LearningRateProducer),但是我不知道是如何通过实验者模块以自动化方式获得训练准确度结果。这是我要查找的输出示例。此结果来自运行IBk之后的简单CLI模块。
=== Error on training data ===
Correctly Classified Instances 4175 100 %
Incorrectly Classified Instances 0 0 %
Kappa statistic 1
Mean absolute error 0.0005
Root mean squared error 0.0012
Relative absolute error 0.717 %
Root relative squared error 0.6913 %
Total Number of Instances 4175
我可以通过简单的CLI进行此操作,但是我需要进行许多实验来生成学习曲线,因此我希望使用一种不那么手工的方法。实验模块解决方案将是最理想的。
感谢,B
我能够通过安装groovy控制台并使用以下脚本来获得此信息:
data = (new weka.core.converters.ConverterUtils.DataSource("/Path/To/Arff")).getDataSet()
data.setClassIndex(data.numAttributes() - 1)
data.randomize(new Random(1))
classifier = new weka.classifiers.trees.J48()
println "|train|\t%acc_{train}\t%acc_{test}"
stepSize = data.numInstances() / 10
for (int i = stepSize; i < data.numInstances(); i += stepSize ) {
subset = new weka.core.Instances(data, 1, i)
classifier.buildClassifier(subset)
evaluationObject = new weka.classifiers.evaluation.Evaluation(subset)
evaluationObject.evaluateModel(classifier, subset)
testSubset = new weka.core.Instances(data, i + 1, data.numInstances() - (i + 1))
evaluationObjectTest = new weka.classifiers.evaluation.Evaluation(subset)
evaluationObjectTest.evaluateModel(classifier, testSubset)
贷给Eibe Frank:https://weka.8497.n7.nabble.com/How-to-generating-learning-curve-for-training-set-td41654.html
该解决方案可与Experimenter相提并论。您可以通过常规代码直接调用分类器,并根据需要对其进行批处理。