import numpy as np
import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from xgboost import XGBClassifier
from sklearn.cross_validation import cross_val_score

#Print you can execute arbitrary python code
train = pd.read_csv("../input/train.csv", dtype={"Age": np.float64}, )
test = pd.read_csv("../input/test.csv", dtype={"Age": np.float64}, )

#Print to standard output, and see the results in the "log" section below after running your script
print("\n\nTop of the training data:")
print(train.head())

print("\n\nSummary statistics of training data")
print(train.describe())

#Any files you save will be available in the output tab below
train.to_csv('copy_of_the_training_data.csv', index=False)

new_features = ["Pclass", "Sex", "Age", "Embarked", "SibSp", "Parch", "Fare"]

X_train = train[new_features]
X_test = test[new_features]

y_train = train["Survived"]

X_train[new_features].fillna(X_train[new_features].mean(), inplace = True)
X_test[new_features].fillna(X_test[new_features].mean(), inplace = True)

vec = DictVectorizer(sparse = False)
X_train = vec.fit_transform(X_train.to_dict(orient = "record"))

X_test = vec.transform(X_test.to_dict(orient = "record"))

xgbc = XGBClassifier()

print(cross_val_score(xgbc, X_train, y_train, cv = 5).mean())

xgbc.fit(X_train, y_train)

y_predict = xgbc.predict(X_test)

submission = pd.DataFrame({"PassengerId": test["PassengerId"], "Survived": y_predict})
submission.to_csv("submission.csv", index = False)