class SVMIdentifierTestCase(unittest.TestCase):
    def setUp(self):
        sampler = T2DSampler()
        self.testTable = sampler.getTestTable()
        self.scIdentifier = SupervisedIdentifier(7, inverseCrossValidation=True, useColumnIndex=False)

    def testSupervisedIdentifier(self):
        """
            0 -- svm.SVC()
                recall: 0.466666666667
                false positives: 0.533333333333

            1 -- svm.LinearSVC(),
                recall: 0.2
                false positives: 0.8

            2 -- KNeighborsClassifier(),
                recall: 0.533333333333
                false positives: 0.6

            3 -- SGDClassifier(),
                recall: 0.733333333333
                false positives: 0.266666666667

            4 -- tree.DecisionTreeClassifier(),
                recall: 0.733333333333
                false positives: 0.266666666667

                max_depth=5
                recall: 0.8
                false positives: 0.2

            5 -- GradientBoostingClassifier()
                recall: 0.533333333333
                false positives: 0.466666666667

            6 -- NearestCentroid()
                recall: 0.416666666667
                false positives: 0.958333333333

            7 -- SGDClassifier(loss="perceptron", eta0=1, learning_rate="constant", penalty=None)
                recall: 0.333333333333
                false positives: 0.666666666667
        """
        testTables = self.scIdentifier.getTestingTables()
        annotatedTables = self.scIdentifier.getAnnotatedTables()
        recall = 0
        falsePositives = 0
        for table in testTables:
            subjectColumns = self.scIdentifier.identifySubjectColumn(table)
            if table.subjectColumn in subjectColumns:
                recall += 1
            elif len(subjectColumns) > 0:
                falsePositives += len(subjectColumns)
        tableGuessedCorrectly = recall
        recall = float(recall) / len(testTables)
        precision_1 = float(falsePositives) / len(testTables)
        fmeasure = recall*precision_1
        print "table guessed: %s" % len(testTables)
        print "table guessed correctly: %s" % tableGuessedCorrectly
        print "table used for learning: %s" % len(annotatedTables)
 def setUp(self):
     sampler = T2DSampler()
     self.testTable = sampler.getTestTable()
     self.scIdentifier = SupervisedIdentifier(7, inverseCrossValidation=True, useColumnIndex=False)