def ensembleClassify(test_data, test_class, kClassifiers, kClassifiers_errors): boosted_predicted_class = [] k_predictions = [] for i in range(0, k): k_predictions.append(nb.predictClass(test_data, kClassifiers[i])) for i in range(0, len(test_data)): vote_probability = {} for ki in range(0, k): if k_predictions[ki][i] not in vote_probability: vote_probability[k_predictions[ki][i]] = 0 if kClassifiers_errors[ki] == 0.0: vote_probability[k_predictions[ki][i]] += 0 else: vote_probability[k_predictions[ki][i]] += math.log((1.0 - kClassifiers_errors[ki]) / kClassifiers_errors[ki]) max_vote = 0 max_class = None for class_label in vote_probability: if vote_probability[class_label] > max_vote: max_vote = vote_probability[class_label] max_class = class_label boosted_predicted_class.append(max_class) if test_class != []: nb.generateMeasures(test_class, boosted_predicted_class) return boosted_predicted_class