{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Define Data","metadata":{}},{"cell_type":"code","source":"import numpy as np \nimport pandas as pd\nimport random,os\nimport warnings\nwarnings.filterwarnings('ignore')\n\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.preprocessing import StandardScaler, OneHotEncoder\n\nfrom sklearn import ensemble\n\nTRAIN_PATH = \"../input/titanic/train.csv\"\nTEST_PATH = \"../input/titanic/test.csv\"\nSAMPLE_SUBMISSION_PATH = \"../input/titanic/gender_submission.csv\"\nSUBMISSION_PATH = \"submission.csv\"\n\nID = \"PassengerId\"\nTARGET = \"Survived\"\n\nSEED = 2022\ndef seed_everything(seed=SEED):\n    random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    np.random.seed(seed)\n    \nseed_everything()","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Build Model","metadata":{}},{"cell_type":"code","source":"train = pd.read_csv(TRAIN_PATH)\ntest = pd.read_csv(TEST_PATH)\n\nDROP_COLS = ['PassengerId', 'Name','Ticket','Cabin']\ntrain = train.drop(DROP_COLS,axis=1)\ntest = test.drop(DROP_COLS,axis=1)\n\nstr_list = [] \nnum_list = []\nfor colname, colvalue in test.iteritems():\n    if type(colvalue[1]) == str:\n        str_list.append(colname)\n    else:\n        num_list.append(colname)\n        \nX = train.drop([TARGET],axis=1)\ny = train[TARGET]\n        \nnumeric_transformer = Pipeline(steps=[\n    ('imputer', SimpleImputer(strategy='median')),\n    ('scaler', StandardScaler())])\n\ncategorical_transformer = Pipeline(steps=[\n    ('imputer', SimpleImputer(strategy='constant', fill_value='missing')),\n    ('onehot', OneHotEncoder(handle_unknown='ignore'))])\n\npreprocessor = ColumnTransformer(\n    transformers=[\n        ('num', numeric_transformer, num_list),\n        ('cat', categorical_transformer, str_list)])\n\nmodel = ensemble.RandomForestClassifier(\n    n_estimators = 1000, \n    criterion = 'gini', \n    max_features = 'sqrt', \n    max_depth = 3, \n    min_samples_split = 4, \n    min_samples_leaf = 2, \n    n_jobs = -1, \n    random_state = SEED, \n    verbose = 1)\n\nclf = Pipeline(steps=[('preprocessor', preprocessor),(\"model\", model)])\nclf.fit(X, y)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Predict Data","metadata":{}},{"cell_type":"code","source":"X_test = test\npred_test = clf.predict(X_test)\n\nsubmission = pd.read_csv(SAMPLE_SUBMISSION_PATH)\nsubmission[TARGET] = pred_test.astype(int)\nsubmission.to_csv(SUBMISSION_PATH, index=False)\nsubmission.head()","metadata":{},"execution_count":null,"outputs":[]}]}