print("config_file -- yaml filepath containing all parameters")
        exit(1)
    config_file = sys.argv[1]
    my_params = yaml.load(open(config_file))
    feature_types = my_params.get('feature_types').split(',')
    dims = my_params.get('feature_dims').split(',')
    feature_dims = [int(x) for x in dims]
    feature_files = [
        '../../features/' + x
        for x in my_params.get('feature_files').split(',')
    ]

    use_balanced_data = str2bool(my_params.get('balanced'))
    factor = int(my_params.get('factor'))
    train_list = my_params.get('train')
    val_list = my_params.get('val')
    test_list = my_params.get('test')

    features = Features(feature_types, feature_dims, feature_files)
    features.load_train(train_list)
    features.load_val(val_list)
    features.load_test(test_list)
    features.get_balanced_data(factor)

    SVC_model = Model_Train(features, SVC())
    for g in ParameterGrid(grid):
        SVC_model.train(g)
        print(SVC_model.validate(), g)
    SVC_model.train_cv(grid, use_balanced_data)
    SVC_model.test()
    SVC_model.persist_test_result('EF')