import os.path
from sklearn.neighbors import KNeighborsClassifier

sys.path.insert(0, '.')
from optimize_model import optimize_model

submission_file = 'submission_knn_f3.csv'

features_files = [['data/Dog_1/features_02.txt']]
"""
features_files = [['data/Dog_1/features_02.txt',
                  'data/Dog_2/features_01.txt',
                  'data/Dog_3/features_01.txt',
                  'data/Dog_4/features_01.txt',
                  'data/Dog_5/features_01.txt',
                  'data/Patient_1/features_01.txt',
                  'data/Patient_2/features_01.txt']]
"""

for f in features_files:
    if type(f) == str:
        sys.exit('Each element of features_files must be a list of files.')
    print f
    optimize_model(f, submission_file, min_features=1, max_features=2,
                   classifier=KNeighborsClassifier,
                   parameters={'n_neighbors': [5, 10, 15],
                               'weights': ['uniform', 'distance']},
                   outlier_sigma=2, normalize_probs=None, n_cv=100)

raw_input('Press Enter to end.')
#!/usr/bin/env python

import sys
import os.path

sys.path.insert(0, '.')
from optimize_model import optimize_model

submission_file = 'submission_log_reg_f1to4_reopt_rocslope10.csv'

features_files = [['data/Dog_1/features_02.txt'],
                  ['data/Dog_2/features_01.txt'],
                  ['data/Dog_3/features_01.txt'],
                  ['data/Dog_4/features_01.txt'],
                  ['data/Dog_5/features_01.txt'],
                  ['data/Patient_1/features_01.txt'],
                  ['data/Patient_2/features_01.txt']]

for f in features_files:
    if type(f) == str:
        sys.exit('Each element of features_files must be a list of files.')
    print f
    optimize_model(f, submission_file, max_features=4,
                   outlier_sigma=2, normalize_probs='ROCSlope', n_cv=100)

raw_input('Press Enter to end.')
import os.path
from sklearn.svm import SVC

sys.path.insert(0, '.')
from optimize_model import optimize_model

submission_file = 'submission_svm_f1to2.csv'

features_files = [['data/Dog_1/features_02.txt'],
                  ['data/Dog_2/features_01.txt'],
                  ['data/Dog_3/features_01.txt'],
                  ['data/Dog_4/features_01.txt'],
                  ['data/Dog_5/features_01.txt'],
                  ['data/Patient_1/features_01.txt'],
                  ['data/Patient_2/features_01.txt']]

for f in features_files:
    if type(f) == str:
        sys.exit('Each element of features_files must be a list of files.')
    print f
    optimize_model(f, submission_file, min_features=1, max_features=2,
                   feature_columns=range(2, 27),
                   classifier=SVC,
                   parameters={'C': [0.1, 1, 10],
                               'gamma': [0.25, 0.5, 1],
                               'kernel': ['rbf'], 'probability': [True],
                               'class_weight': ['auto']},
                   outlier_sigma=2, normalize_probs='IsoReg', n_cv=20)

raw_input('Press Enter to end.')
import sys
import os.path
from sklearn.ensemble import RandomForestClassifier

sys.path.insert(0, '.')
from optimize_model import optimize_model

submission_file = 'submission_rf_f4to7imp_all.csv'

features_files = [['data/Dog_1/features_02.txt',
                  'data/Dog_2/features_01.txt',
                  'data/Dog_3/features_01.txt',
                  'data/Dog_4/features_01.txt',
                  'data/Dog_5/features_01.txt',
                  'data/Patient_1/features_01.txt',
                  'data/Patient_2/features_01.txt']]

for f in features_files:
    if type(f) == str:
        sys.exit('Each element of features_files must be a list of files.')
    print f
    optimize_model(f, submission_file, min_features=4, max_features=7,
                   feature_columns=[11, 5, 4, 10, 2, 9, 6],
                   classifier=RandomForestClassifier,
                   parameters={'n_estimators': [10, 50],
                               'criterion': ['entropy'],
                               'min_samples_leaf': [3, 6, 10]},
                   outlier_sigma=2, normalize_probs=None, n_cv=100)

raw_input('Press Enter to end.')