import pandas as pd
from sklearn.metrics import make_scorer, accuracy_score

df = pd.read_csv('titanic.csv')

include = ['Age', 'Sex', 'Embarked', 'Survived']
dependent_variable = include[-1]
print dependent_variable

from sklearn.ensemble import RandomForestClassifier as rf

df_ = df[include]

categoricals = []  # going to one-hot encode categorical variables

for col, col_type in df_.dtypes.iteritems():
    if col_type == 'object':
        print col
        categoricals.append(col)
    else:
        pass
        df_[col].fillna(0, inplace=True)  # fill NA's with 0 for ints/floats, too generic
print categoricals

# get_dummies effectively creates one-hot encoded variables
df_ohe = pd.get_dummies(df_, columns=categoricals, dummy_na=False)
print df_ohe

# print pd.
# get_dummies(data=df, columns=dependent_variable)

x = df_ohe[df_ohe.columns.difference([dependent_variable])]

y = df_ohe[dependent_variable]
#
# print (x)
#
clf = rf()
clf.fit(x, y)
#
model_columns = list(x.columns)
#
# #
json_ = [{"Age": 85, "Sex": "male", "Embarked": "S"}]
query = pd.get_dummies(pd.DataFrame(json_))
query = query.reindex(columns=model_columns, fill_value=0)

result = clf.predict(query)
print result

from sklearn.metrics import accuracy_score
print accuracy_score(training_data, result)	