<jupyter_start><jupyter_text>Building Predictive Models<jupyter_code>import pandas as pd
import os
import numpy as np<jupyter_output><empty_output><jupyter_text>Import Data<jupyter_code># set the path of the processed data
processed_data_path = os.path.join(os.path.pardir,'data','processed')
train_file_path = os.path.join(processed_data_path, 'train.csv')
test_file_path = os.path.join(processed_data_path, 'test.csv')
train_df = pd.read_csv(train_file_path, index_col='PassengerId')
test_df = pd.read_csv(test_file_path, index_col='PassengerId')
# train_df.info()
# test_df.info()<jupyter_output><empty_output><jupyter_text>Data Preperation<jupyter_code>X = train_df.loc[:,'Age':].as_matrix().astype('float')
y = train_df['Survived'].ravel()
print(X.shape, y.shape)
# train test split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
print(X_train.shape, y_train.shape)
print(X_test.shape, y_test.shape)
# average survival in train and test
print('mean survival in train : {0:.3f}'.format(np.mean(y_train)))
print('mean survival in test : {0:.3f}'.format(np.mean(y_test)))<jupyter_output>mean survival in train : 0.383
mean survival in test : 0.385<jupyter_text>Baseline Model<jupyter_code># import function
from sklearn.dummy import DummyClassifier
# create model
model_dummy = DummyClassifier(strategy='most_frequent', random_state=0)
# train model
model_dummy.fit(X_train, y_train)
print('score for baseline model : {0:.2f}'.format(model_dummy.score(X_test, y_test)))
# peformance metrics
from sklearn.metrics import accuracy_score, confusion_matrix, precision_score, recall_score
# accuracy score
print('accuracy for baseline model : {0:.2f}'.format(accuracy_score(y_test, model_dummy.predict(X_test))))
# confusion matrix
print('confusion matrix for baseline model: \n {0}'.format(confusion_matrix(y_test, model_dummy.predict(X_test))))
# precision and recall scores
print('precision for baseline model : {0:.2f}'.format(precision_score(y_test, model_dummy.predict(X_test))))
print('recall for baseline model : {0:.2f}'.format(recall_score(y_test, model_dummy.predict(X_test))))<jupyter_output>precision for baseline model : 0.00
recall for baseline model : 0.00<jupyter_text>First Kaggle  Submission<jupyter_code># converting to the matrix
test_X = test_df.as_matrix().astype('float')
# get predictions
predictions = model_dummy.predict(test_X)
df_submission = pd.DataFrame({'PassengerId': test_df.index, 'Survived' : predictions} )
df_submission.head()
submission_data_path = os.path.join(os.path.pardir,'data','external')
submission_file_path = os.path.join(submission_data_path, '01_dummy.csv')
df_submission.to_csv(submission_file_path, index=False)
def get_submission_file(model, filename):
    # converting to the matrix
    test_X = test_df.as_matrix().astype('float')
    # make predictions
    predictions = model.predict(test_X)
    # submission dataframe
    df_submission = pd.DataFrame({'PassengerId': test_df.index, 'Survived' : predictions})
    # submission file
    submission_data_path = os.path.join(os.path.pardir,'data','external')
    submission_file_path = os.path.join(submission_data_path, filename)
    # write to the file
    df_submission.to_csv(submission_file_path, index=False)
# get submission file
get_submission_file(model_dummy, '01_dummy.csv')<jupyter_output>D:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.
  This is separate from the ipykernel package so we can avoid doing imports until<jupyter_text>Logistic Regression Model<jupyter_code># import function
from sklearn.linear_model import LogisticRegression
# create model
model_lr_1 = LogisticRegression(random_state=0)
# train model
model_lr_1.fit(X_train,y_train)
# evaluate model
print('score for logistic regression - version 1 : {0:.2f}'.format(model_lr_1.score(X_test, y_test)))
# performance metrics
# accuracy
print('accuracy for logistic regression - version 1 : {0:.2f}'.format(accuracy_score(y_test, model_lr_1.predict(X_test))))
# confusion matrix
print('confusion matrix for logistic regression - version 1: \n {0}'.format(confusion_matrix(y_test, model_lr_1.predict(X_test))))
# precision 
print('precision for logistic regression - version 1 : {0:.2f}'.format(precision_score(y_test, model_lr_1.predict(X_test))))
# precision 
print('recall for logistic regression - version 1 : {0:.2f}'.format(recall_score(y_test, model_lr_1.predict(X_test))))
# model coefficients
model_lr_1.coef_<jupyter_output><empty_output><jupyter_text>Second Kaggle Submission<jupyter_code># get submission file
get_submission_file(model_lr_1, '02_lr.csv')<jupyter_output>D:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.
  This is separate from the ipykernel package so we can avoid doing imports until<jupyter_text>Part 2   Hyperparameter Optimization<jupyter_code># base model 
model_lr = LogisticRegression(random_state=0)
from sklearn.model_selection import GridSearchCV
parameters = {'C':[1.0, 10.0, 50.0, 100.0, 1000.0], 'penalty' : ['l1','l2']}
clf = GridSearchCV(model_lr, param_grid=parameters, cv=3)
clf.fit(X_train, y_train)
clf.best_params_
print('best score : {0:.2f}'.format(clf.best_score_))
# evaluate model
print('score for logistic regression - version 2 : {0:.2f}'.format(clf.score(X_test, y_test)))<jupyter_output>score for logistic regression - version 2 : 0.83
{'fraction_non_alphanumeric': 0.12014324082363474, 'fraction_numerical': 0.01718889883616831, 'mean_word_length': 7.287833827893175, 'pattern_counts': {'":': 0, '<': 28, '<?xml version=': 0, '>': 28, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '363578', 'license': 'MIT', 'n_tokens_mistral': 1992, 'n_tokens_neox': 1908, 'n_words': 398, 'path': 'notebooks/Building-Predictive-Model.ipynb', 'repo_name': 'KaranPandit47/Titanic_Kaggle', 'size': '5585'}