def makeForests( self, size: int, class_label: str, split_ratio: float, attribute_choice_fn) -> Tuple[List[RandomForest], List[float]]: forests = [] tests = [] for (train_pack, test_pack) in self.packs: forest = RandomForest(size, train_pack, class_label, split_ratio, attribute_choice_fn) forests.append(forest) tests.append(forest.test(test_pack)) return (forests, tests)
def test10Fold(): global allWords splits = tenFoldCrossValidation() count = 0 total = 0 print("Naive Bayes") for split in splits: nb = naiveBayes() trainFeatures = [] trainClasses = [] testFeatures = [] testClasses = [] for example in split.train: trainFeatures.append(example.features) trainClasses.append(example.klass) for example in split.test: testFeatures.append(example.features) testClasses.append(example.klass) nb.train(trainFeatures, trainClasses) nb.test(testFeatures, testClasses) accuracy = nb.getCorrectCount() / len(testClasses) total = total + accuracy print("[INFO]\tFold ", str(count), " Accuracy:", str(accuracy)) count = count + 1 print("[INFO]\tAccuracy:", str(total / 10)) count = 0 total = 0 print("Random Forest") for split in splits: nb = RandomForest(100) trainFeatures = [] trainClasses = [] testFeatures = [] testClasses = [] for example in split.train: trainFeatures.append(example.features) trainClasses.append(example.klass) for example in split.test: testFeatures.append(example.features) testClasses.append(example.klass) nb.train(trainFeatures, trainClasses) nb.test(testFeatures, testClasses) accuracy = nb.getCorrectCount() / len(testClasses) total = total + accuracy print("[INFO]\tFold ", str(count), " Accuracy:", str(accuracy)) count = count + 1 print("[INFO]\tAccuracy:", str(total / 10)) count = 0 total = 0 print("Neural 5") for split in splits: nb = neuralNetwork((5, ), 1000) trainFeatures = [] trainClasses = [] testFeatures = [] testClasses = [] for example in split.train: trainFeatures.append(example.features) trainClasses.append(example.klass) for example in split.test: testFeatures.append(example.features) testClasses.append(example.klass) nb.train(trainFeatures, trainClasses) nb.test(testFeatures, testClasses) accuracy = nb.getCorrectCount() / len(testClasses) total = total + accuracy print("[INFO]\tFold ", str(count), " Accuracy:", str(accuracy)) count = count + 1 print("[INFO]\tAccuracy:", str(total / 10)) count = 0 total = 0 print("Neural 3") for split in splits: nb = neuralNetwork((3, ), 1000) trainFeatures = [] trainClasses = [] testFeatures = [] testClasses = [] for example in split.train: trainFeatures.append(example.features) trainClasses.append(example.klass) for example in split.test: testFeatures.append(example.features) testClasses.append(example.klass) nb.train(trainFeatures, trainClasses) nb.test(testFeatures, testClasses) accuracy = nb.getCorrectCount() / len(testClasses) total = total + accuracy print("[INFO]\tFold ", str(count), " Accuracy:", str(accuracy)) count = count + 1 print("[INFO]\tAccuracy:", str(total / 10)) count = 0 total = 0 print("SVM") for split in splits: nb = svm() trainFeatures = [] trainClasses = [] testFeatures = [] testClasses = [] for example in split.train: trainFeatures.append(example.features) trainClasses.append(example.klass) for example in split.test: testFeatures.append(example.features) testClasses.append(example.klass) nb.train(trainFeatures, trainClasses) nb.test(testFeatures, testClasses) accuracy = nb.getCorrectCount() / len(testClasses) total = total + accuracy print("[INFO]\tFold ", str(count), " Accuracy:", str(accuracy)) count = count + 1 print("[INFO]\tAccuracy:", str(total / 10))