# 1. cheating with default filter fltr = Filter(classname="weka.filters.supervised.attribute.Discretize", options=[]) fltr.inputformat(data) filtered = fltr.filter(data) cls = Classifier(classname="weka.classifiers.trees.J48") evl = Evaluation(filtered) evl.crossvalidate_model(cls, filtered, 10, Random(1)) cls.build_classifier(filtered) print("cheating (default): accuracy=%0.1f nodes=%s" % (evl.percent_correct, get_nodes(str(cls)))) # 2. using FilteredClassifier with default filter cls = FilteredClassifier() cls.classifier = Classifier(classname="weka.classifiers.trees.J48") cls.filter = Filter(classname="weka.filters.supervised.attribute.Discretize", options=[]) evl = Evaluation(data) evl.crossvalidate_model(cls, data, 10, Random(1)) cls.build_classifier(data) print("FilteredClassifier (default): accuracy=%0.1f nodes=%s" % (evl.percent_correct, get_nodes(str(cls)))) # 3. using FilteredClassifier (make binary) cls = FilteredClassifier() cls.classifier = Classifier(classname="weka.classifiers.trees.J48") cls.filter = Filter(classname="weka.filters.supervised.attribute.Discretize", options=["-D"]) evl = Evaluation(data) evl.crossvalidate_model(cls, data, 10, Random(1)) cls.build_classifier(data) print("FilteredClassifier (make binary): accuracy=%0.1f nodes=%s" %
data.class_is_last() # 1. cheating with default filter fltr = Filter(classname="weka.filters.supervised.attribute.Discretize", options=[]) fltr.inputformat(data) filtered = fltr.filter(data) cls = Classifier(classname="weka.classifiers.trees.J48") evl = Evaluation(filtered) evl.crossvalidate_model(cls, filtered, 10, Random(1)) cls.build_classifier(filtered) print("cheating (default): accuracy=%0.1f nodes=%s" % (evl.percent_correct, get_nodes(str(cls)))) # 2. using FilteredClassifier with default filter cls = FilteredClassifier() cls.classifier = Classifier(classname="weka.classifiers.trees.J48") cls.filter = Filter(classname="weka.filters.supervised.attribute.Discretize", options=[]) evl = Evaluation(data) evl.crossvalidate_model(cls, data, 10, Random(1)) cls.build_classifier(data) print("FilteredClassifier (default): accuracy=%0.1f nodes=%s" % (evl.percent_correct, get_nodes(str(cls)))) # 3. using FilteredClassifier (make binary) cls = FilteredClassifier() cls.classifier = Classifier(classname="weka.classifiers.trees.J48") cls.filter = Filter(classname="weka.filters.supervised.attribute.Discretize", options=["-D"]) evl = Evaluation(data) evl.crossvalidate_model(cls, data, 10, Random(1)) cls.build_classifier(data) print("FilteredClassifier (make binary): accuracy=%0.1f nodes=%s" % (evl.percent_correct, get_nodes(str(cls)))) # 1. cheating with make binary