import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.nonparametric.kde import KDEUnivariate
from statsmodels.nonparametric import smoothers_lowess
from pandas import Series, DataFrame
from patsy import dmatrices
from sklearn import datasets, svm
from sklearn.ensemble import RandomForestClassifier

def process_sex(x):
    x['Sex'] = x['Sex'].map({'male':1,'female':0})
    return x

def process_age(x):
    def fillAges(row):
        return 30
        
    x.Age = x.apply(lambda r : fillAges(r) if np.isnan(r['Age']) else r['Age'], axis=1)

df = pd.read_csv("../input/train.csv", dtype={"Age": np.float64}, )
test = pd.read_csv("../input/test.csv", dtype={"Age": np.float64}, )

process_age(df)
process_age(test)

process_sex(df)
process_sex(test)

forest = RandomForestClassifier()

features = df.columns[4:6]
x = df[features]
x = x.values

z = test[features]
z = z.values
y = pd.factorize(df['Survived'])[0]

forest.fit(x, y)
output = forest.predict(z)
df_output = pd.DataFrame()
df_output['PassengerId'] = test['PassengerId']
df_output['Survived'] = output

df_output[['PassengerId','Survived']].to_csv('./output.csv',index=False)