import sys
import numpy as np
from sklearn import cross_validation
import pandas as pd
import csv
from sklearn.grid_search import GridSearchCV
from sklearn.decomposition import RandomizedPCA
from sklearn.decomposition import SparsePCA
from sklearn.svm import SVC

def targetFeatureSplit( data ):
    target = []
    features = []
    for item in data:
        target.append( item[0] )
        features.append( item[1:] )

    return target, features

train = pd.read_csv('../input/train.csv')
test = pd.read_csv('../input/test.csv').as_matrix()

labels, features = targetFeatureSplit(train.as_matrix())

n_components = 20
pca = SparsePCA(n_components=n_components).fit(features)

X_train_pca = pca.transform(features)
X_test_pca = pca.transform(test)

clf = SVC(C=1000.0, cache_size=200, class_weight='auto', coef0=0.0, degree=3,
  gamma=0.01, kernel='rbf', probability=False,
  random_state=None, shrinking=True, tol=0.001, verbose=False)

clf = clf.fit(X_train_pca, labels)
pred = clf.predict(X_test_pca)

n=0
for prediction in pred:
    n+=1
    print (n, prediction)
"""
with open('benchmark.csv','wb') as outfile:
  outfile.write('ImageId,Label\\n')
  for e, prediction in enumerate(pred):
    outfile.write('%s,%s\\n'%(e+1,prediction))
"""