def test_LargeSample5Fold(self): stratifiedKFoldCrossValidation = StratifiedKFoldCrossValidation( self.largeSample, 5, 1) for i in range(5): items = set() trainFold = stratifiedKFoldCrossValidation.getTrainFold(i) testFold = stratifiedKFoldCrossValidation.getTestFold(i) items.update(trainFold) items.update(testFold) self.assertEquals(1800, len(testFold)) self.assertEquals(7200, len(trainFold)) self.assertEquals(9000, len(items)) trainCounts = [0, 0, 0] for integer in trainFold: if integer < 1000: trainCounts[0] = trainCounts[0] + 1 elif integer < 4000: trainCounts[1] = trainCounts[1] + 1 else: trainCounts[2] = trainCounts[2] + 1 self.assertEquals(800, trainCounts[0]) self.assertEquals(2400, trainCounts[1]) self.assertEquals(4000, trainCounts[2]) testCounts = [0, 0, 0] for integer in testFold: if integer < 1000: testCounts[0] = testCounts[0] + 1 elif integer < 4000: testCounts[1] = testCounts[1] + 1 else: testCounts[2] = testCounts[2] + 1 self.assertEquals(200, testCounts[0]) self.assertEquals(600, testCounts[1]) self.assertEquals(1000, testCounts[2])
def test_SmallSample2Fold(self): stratifiedKFoldCrossValidation = StratifiedKFoldCrossValidation( self.smallSample, 2, 1) expected3 = [ "7", "9", "10", "8", "6", "22", "16", "28", "30", "20", "11", "27", "12", "26", "17" ] self.assertEquals(expected3, stratifiedKFoldCrossValidation.getTestFold(0))
def execute(self, experiment: Experiment) -> ExperimentPerformance: result = ExperimentPerformance() for j in range(self.M): instanceList = experiment.getDataSet().getInstanceList() partition = Partition(instanceList, 0.25, experiment.getParameter().getSeed(), True) crossValidation = StratifiedKFoldCrossValidation( Partition(partition.get(1)).getLists(), self.K, experiment.getParameter().getSeed()) self.runExperiment(experiment.getClassifier(), experiment.getParameter(), result, crossValidation, partition.get(0)) return result
def execute(self, experiment: Experiment) -> Performance: """ Execute Stratified Single K-fold cross-validation with the given classifier on the given data set using the given parameters. PARAMETERS ---------- experiment : Experiment Experiment to be run. RETURNS ------- Performance A Performance instance. """ crossValidation = StratifiedKFoldCrossValidation( experiment.getDataSet().getClassInstances(), self.__K, experiment.getParameter().getSeed()) trainSet = InstanceList(crossValidation.getTrainFold(0)) testSet = InstanceList(crossValidation.getTestFold(0)) return experiment.getClassifier().singleRun(experiment.getParameter(), trainSet, testSet)
def execute(self, experiment: Experiment) -> ExperimentPerformance: """ Execute Stratified K-fold cross-validation with the given classifier on the given data set using the given parameters. PARAMETERS ---------- experiment : Experiment Experiment to be run. RETURNS ------- ExperimentPerformance An ExperimentPerformance instance. """ result = ExperimentPerformance() crossValidation = StratifiedKFoldCrossValidation(experiment.getDataSet().getClassInstances(), self.K, experiment.getParameter().getSeed()) self.runExperiment(experiment.getClassifier(), experiment.getParameter(), result, crossValidation) return result
def test_SmallSample5Fold(self): stratifiedKFoldCrossValidation = StratifiedKFoldCrossValidation( self.smallSample, 5, 1) expected2 = ["7", "9", "22", "16", "28", "30"] self.assertEquals(expected2, stratifiedKFoldCrossValidation.getTestFold(0))
def test_SmallSample10Fold(self): stratifiedKFoldCrossValidation = StratifiedKFoldCrossValidation( self.smallSample, 10, 1) expected1 = ["7", "22", "16"] self.assertEquals(expected1, stratifiedKFoldCrossValidation.getTestFold(0))