def test_generate_thresholdcurve_data(self): """ Tests the generate_thresholdcurve_data method. """ loader = converters.Loader(classname="weka.core.converters.ArffLoader") data = loader.load_file(self.datafile("diabetes.arff")) data.class_is_last() remove = filters.Filter( classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "1-3"]) cls = classifiers.Classifier( classname="weka.classifiers.bayes.NaiveBayes") fc = classifiers.FilteredClassifier() fc.filter = remove fc.classifier = cls evl = classifiers.Evaluation(data) evl.crossvalidate_model(cls, data, 10, Random(1)) data = plot.generate_thresholdcurve_data(evl, 0) self.assertEqual(13, data.num_attributes, msg="number of attributes differs") self.assertEqual(769, data.num_instances, msg="number of rows differs") attname = "True Positives" self.assertIsNotNone(data.attribute_by_name(attname), msg="Failed to locate attribute: " + attname) attname = "False Positive Rate" self.assertIsNotNone(data.attribute_by_name(attname), msg="Failed to locate attribute: " + attname) attname = "Lift" self.assertIsNotNone(data.attribute_by_name(attname), msg="Failed to locate attribute: " + attname)
def test_plot_prc(self): """ Tests the plot_prc method. """ loader = converters.Loader(classname="weka.core.converters.ArffLoader") data = loader.load_file(self.datafile("diabetes.arff")) data.class_is_last() remove = filters.Filter(classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "1-3"]) cls = classifiers.Classifier(classname="weka.classifiers.bayes.NaiveBayes") fc = classifiers.FilteredClassifier() fc.filter = remove fc.classifier = cls evl = classifiers.Evaluation(data) evl.crossvalidate_model(cls, data, 10, Random(1)) plot.plot_prc(evl, class_index=[0, 1], wait=False)
def test_instantiate_classifier(self): """ Tests the instantiation of several classifier classes. """ cname = "weka.classifiers.trees.J48" options = None cls = classifiers.Classifier(classname=cname, options=options) self.assertIsNotNone(cls, msg="Failed to instantiate: " + cname + "/" + str(options)) self.assertEqual(cname, cls.classname, msg="Classnames differ!") cname = "weka.classifiers.trees.J48" options = ["-C", "0.3"] cls = classifiers.Classifier(classname=cname, options=options) self.assertIsNotNone(cls, msg="Failed to instantiate: " + cname + "/" + str(options)) self.assertEqual(cname, cls.classname, msg="Classnames differ!") cname = "weka.classifiers.meta.FilteredClassifier" options = ["-W", "weka.classifiers.trees.J48", "--", "-C", "0.3"] cls = classifiers.SingleClassifierEnhancer(classname=cname, options=options) self.assertIsNotNone(cls, msg="Failed to instantiate: " + cname + "/" + str(options)) self.assertEqual(cname, cls.classname, msg="Classnames differ!") fname = "weka.filters.unsupervised.attribute.Remove" flter = filters.Filter(classname=fname, options=["-R", "last"]) cls.filter = flter self.assertEqual(fname, cls.filter.classname, msg="Classnames differ!") cls = classifiers.FilteredClassifier() self.assertIsNotNone(cls, msg="Failed to instantiate FilteredClassifier!") self.assertEqual("weka.classifiers.meta.FilteredClassifier", cls.classname, msg="Classnames differ!") cname = "weka.classifiers.functions.SMO" cls = classifiers.KernelClassifier(classname=cname) self.assertIsNotNone(cls, msg="Failed to instantiate KernelClassifier: " + cname) self.assertEqual(cname, cls.classname, msg="Classnames differ!") kname = "weka.classifiers.functions.supportVector.RBFKernel" kernel = classifiers.Kernel(classname=kname) self.assertIsNotNone(kernel, msg="Failed to instantiate Kernel: " + kname) cls.kernel = kernel self.assertEqual(kname, cls.kernel.classname, msg="Kernel classnames differ!") cname = "weka.classifiers.meta.Vote" cls = classifiers.MultipleClassifiersCombiner(classname=cname) self.assertIsNotNone(cls, msg="Failed to instantiate MultipleClassifiersCombiner: " + cname) self.assertEqual(cname, cls.classname, msg="Classnames differ!")
def test_get_prc(self): """ Tests the get_prc method. """ loader = converters.Loader(classname="weka.core.converters.ArffLoader") data = loader.load_file(self.datafile("diabetes.arff")) data.class_is_last() remove = filters.Filter(classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "1-3"]) cls = classifiers.Classifier(classname="weka.classifiers.bayes.NaiveBayes") fc = classifiers.FilteredClassifier() fc.filter = remove fc.classifier = cls evl = classifiers.Evaluation(data) evl.crossvalidate_model(cls, data, 10, Random(1)) data = plot.generate_thresholdcurve_data(evl, 0) area = plot.get_prc(data) self.assertAlmostEqual(0.892, area, places=3, msg="PRC differs")