{"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":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\nimport pickle\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.model_selection import KFold\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn.metrics import classification_report, confusion_matrix, roc_auc_score, roc_curve\nfrom sklearn.inspection import PartialDependenceDisplay\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-04T13:36:46.071588Z","iopub.execute_input":"2022-08-04T13:36:46.072093Z","iopub.status.idle":"2022-08-04T13:36:47.018864Z","shell.execute_reply.started":"2022-08-04T13:36:46.072049Z","shell.execute_reply":"2022-08-04T13:36:47.017477Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"execution":{"iopub.status.busy":"2022-08-04T13:39:23.430034Z","iopub.execute_input":"2022-08-04T13:39:23.430447Z","iopub.status.idle":"2022-08-04T13:39:23.460459Z","shell.execute_reply.started":"2022-08-04T13:39:23.430411Z","shell.execute_reply":"2022-08-04T13:39:23.459364Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# vars to keep: survived, pclass, sex, age, sibsp, parch, fare, cabin, embarked\n# vars to exclude: passengerid, name, ticket\n# vars to OHE - sex, deck, embarked\ntrain = pd.read_csv('../input/titanic/train.csv')\ntest = pd.read_csv('../input/titanic/test.csv')\ngs = pd.read_csv('../input/titanic/gender_submission.csv')\n\ndef create_features(df):\n    df['Age'].fillna(df['Age'].median(), inplace = True)\n    \n    # grab cabin from deck\n    df['Cabin'].fillna('F', inplace = True)\n    df['NumRooms'] = df['Cabin'].str.split(' ').map(len)\n    df['Deck'] = df['Cabin'].str[0]\n    print(df[df['Deck'] == 'T'])\n    \n    df.loc[df['Deck']=='T', 'Deck'] = 'A'\n    df['Fare'].fillna(df['Fare'].median(), inplace = True)\n    \n    dummy_vars = ['Sex', 'Deck', 'Embarked']\n    df = pd.get_dummies(df, columns = dummy_vars)\n    df = df.set_index('PassengerId')\n    df = df.drop(['Name', 'Cabin', 'Ticket'],axis = 1)\n\n    return df\n\ntrain = create_features(train)\ntest = create_features(test)\n\n\n\nX, y = train.drop('Survived', axis = 1), train.Survived\nX_test = test\nprint(test.isna().sum())","metadata":{"execution":{"iopub.status.busy":"2022-08-04T14:12:45.465513Z","iopub.execute_input":"2022-08-04T14:12:45.465912Z","iopub.status.idle":"2022-08-04T14:12:45.524570Z","shell.execute_reply.started":"2022-08-04T14:12:45.465864Z","shell.execute_reply":"2022-08-04T14:12:45.523585Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"kf = KFold(n_splits=5,random_state=42,shuffle=True)\nfor train_index,val_index in kf.split(X):\n    X_train,X_val = X.iloc[train_index],X.iloc[val_index],\n    y_train,y_val = y.iloc[train_index],y.iloc[val_index],\n    \nlr_list = [\n    #0.05, 0.075, \n           0.1\n     #, 0.25, 0.5, 0.75, 1\n        ]\nfor learning_rate in lr_list:\n    gb = GradientBoostingClassifier(learning_rate=learning_rate, verbose = 1, n_estimators = 100)\n    gb.fit(X_train,y_train)\n    print(\"Learning rate: \", learning_rate)\n    print(\"Accuracy score (training): {0:.3f}\".format(gb.score(X_train, y_train)))\n    print(\"Accuracy score (validation): {0:.3f}\".format(gb.score(X_val, y_val)))\n    predictions = gb.predict(X_val)\n    predictions_test = gb.predict(X_test)\n    predictions_df = pd.concat([pd.DataFrame(X_test.index.astype('Int64')), pd.DataFrame(predictions_test)], axis = 1)\n    predictions_df.columns = ['PassengerId', 'Survived']\n    \n    predictions_df.to_csv('submission.csv', index = False)\nprint(predictions_df)\nprint(gs)","metadata":{"execution":{"iopub.status.busy":"2022-08-04T14:45:52.772149Z","iopub.execute_input":"2022-08-04T14:45:52.772976Z","iopub.status.idle":"2022-08-04T14:45:53.150049Z","shell.execute_reply.started":"2022-08-04T14:45:52.772934Z","shell.execute_reply":"2022-08-04T14:45:53.148826Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}