コード例 #1
0
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