def main():
    parser = argparse.ArgumentParser(
        description='Perform cross-validation on the dataset, cross-validating the behavior of all but one '
                    'subjects using a GNB classifier.'
    )
    parser.add_argument('dataset', help='name of the dataset folder')
    parser.add_argument('class_id', type=int, help='target class id, 0-2')
    parser.add_argument('ground_truth_count', type=int, help='number of ground truth values, 1-3')
    parser.add_argument('rfe', type=int, default=1, help='perform RFE?')

    args = parser.parse_args()
    print args

    attr_count = None if args.rfe == 0 else attribute_counts[args.dataset][args.class_id]
    actual, predicted = cross_validate_dataset(args.dataset, args.class_id, attribute_count=attr_count,
                                               ground_truth_count=args.ground_truth_count, classifier=GaussianNB())

    print_report(actual, args.class_id, args.dataset, predicted)
def main():
    dataset = 'koelstra-approach'
    attribute_index = 0
    attributes = selected_attributes[dataset][attribute_index]

    actual, predicted = cross_validate_dataset(dataset, attribute_index, ground_truth_count=attributes)

    conf_matrix = confusion_matrix(actual, predicted, ['low', 'high'])

    print conf_matrix
    print ""

    scores = f1_score(actual, predicted, ['low', 'high'], 'low', average=None)
    class_counts = [sum(row) for row in conf_matrix]

    average_f1 = np.average(scores, weights=class_counts)
    accuracy = accuracy_score(actual, predicted)
    print "Average F1 score: %.3f" % average_f1
    print "Average accuracy: %.3f" % accuracy

    attr_names = ["valence", "arousal", "control"]
    print "py-%s-rfe,%s,%s,%.3f,%.3f" % (
        dataset, attr_names[attribute_index], time.strftime('%Y-%m-%d'), average_f1, accuracy)