import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import cross_val_score
from sklearn.decomposition import PCA

train = pd.read_csv("../input/train.csv")
test = pd.read_csv("../input/test.csv")

test_data = test.values
print(test.columns)

x_tr = train.values[:, 1:].astype(float)/255
y_tr = train.values[:, 0]

#ecognizer = PCA(n_components=704)
#recognizer = PCA()
#x_red = recognizer.fit_transform(x_tr)

#print(recognizer.explained_variance_ratio_) 

n_trees = 500
recognizer = RandomForestClassifier(n_trees)

#cross validation score
score = cross_val_score(recognizer, x_tr, y_tr)
score = np.mean(score)
print(score)

#in-sample score
recognizer.fit(x_tr, y_tr)
print(recognizer.score(x_tr, y_tr))

prediction = recognizer.predict(test_data)

#outdict = {'ImageId': test['ImageId'], 'Label': prediction.astype(int)}
#output = pd.DataFrame(data=outdict)

#output.to_csv('digit_recognizer.csv', index=False)

out_file = open("predictions.csv", "w")
out_file.write("ImageId,Label\n")
for i in range(len(prediction)):
    out_file.write(str(i+1) + "," + str(int(prediction[i])) + "\n")
out_file.close()