{"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":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.pipeline import make_pipeline\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import roc_auc_score, roc_curve\nfrom sklearn.preprocessing import OrdinalEncoder, OneHotEncoder, StandardScaler\nfrom sklearn.impute import SimpleImputer\n\nimport plotly.express as px\nfrom tqdm import tqdm\n\nimport warnings\nwarnings.filterwarnings('ignore')\n\npd.set_option('display.max_columns', 100)\npd.set_option('display.float_format', '{:.2f}'.format)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-11T10:19:16.156058Z","iopub.execute_input":"2022-08-11T10:19:16.157239Z","iopub.status.idle":"2022-08-11T10:19:16.165352Z","shell.execute_reply.started":"2022-08-11T10:19:16.157190Z","shell.execute_reply":"2022-08-11T10:19:16.164041Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.read_csv('../input/tabular-playground-series-aug-2022/train.csv', index_col='id')\ntest_df = pd.read_csv('../input/tabular-playground-series-aug-2022/test.csv', index_col='id')\nsub_df = pd.read_csv('../input/tabular-playground-series-aug-2022/sample_submission.csv', index_col='id')\nprint('train data shape: ', train_df.shape)\ndisplay(train_df)\nprint('test data shape: ', test_df.shape)\ndisplay(test_df)\nprint('submission data shape: ', sub_df.shape)\ndisplay(sub_df)","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:16.298523Z","iopub.execute_input":"2022-08-11T10:19:16.298944Z","iopub.status.idle":"2022-08-11T10:19:16.610499Z","shell.execute_reply.started":"2022-08-11T10:19:16.298910Z","shell.execute_reply":"2022-08-11T10:19:16.608822Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"float_cols = [col for col in train_df.columns if train_df[col].dtype==float]\nprint('total failure rate is: ', train_df['failure'].sum()/train_df.shape[0]*100)\nfor column in float_cols:\n    temp_df = train_df.loc[train_df[column].isna(), 'failure']\n    print(f'column {column} failure rate is: ', temp_df.sum()/temp_df.shape[0]*100)","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:16.613422Z","iopub.execute_input":"2022-08-11T10:19:16.614428Z","iopub.status.idle":"2022-08-11T10:19:16.639183Z","shell.execute_reply.started":"2022-08-11T10:19:16.614362Z","shell.execute_reply":"2022-08-11T10:19:16.637822Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"total_df = pd.concat([train_df.drop('failure', axis=1), test_df], axis=0)\ntotal_float = total_df.select_dtypes(include=float)\ntotal_cat = total_df.select_dtypes(exclude=float)\n\nscaler = StandardScaler()\ntotal_float = pd.DataFrame(scaler.fit_transform(total_float), columns=total_float.columns, index=total_float.index)\n\noh_encoder = OneHotEncoder(sparse=False)\noh_cols = pd.DataFrame(oh_encoder.fit_transform(total_cat), index=total_cat.index)\ntotal_df_oh = pd.concat([total_float, oh_cols], axis=1)\ntotal_df_oh","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:16.641583Z","iopub.execute_input":"2022-08-11T10:19:16.642798Z","iopub.status.idle":"2022-08-11T10:19:17.080643Z","shell.execute_reply.started":"2022-08-11T10:19:16.642744Z","shell.execute_reply":"2022-08-11T10:19:17.079347Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"total_df_oh['miss_loading'] = total_df_oh['loading'].isna()\ntotal_df_oh['miss_measurement_3'] = total_df_oh['measurement_3'].isna()\ntotal_df_oh['miss_measurement_4'] = total_df_oh['measurement_4'].isna()\ntotal_df_oh['miss_measurement_5'] = total_df_oh['measurement_5'].isna()\ntotal_df_oh['miss_measurement_9'] = total_df_oh['measurement_9'].isna()\ntotal_df_oh","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:17.082759Z","iopub.execute_input":"2022-08-11T10:19:17.083158Z","iopub.status.idle":"2022-08-11T10:19:17.211995Z","shell.execute_reply.started":"2022-08-11T10:19:17.083123Z","shell.execute_reply":"2022-08-11T10:19:17.210740Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"imputer = SimpleImputer(strategy='mean')\n\ntotal_df_oh = pd.DataFrame(imputer.fit_transform(total_df_oh), columns=total_df_oh.columns, index=total_df_oh.index)\n\ntotal_df_oh","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:17.213562Z","iopub.execute_input":"2022-08-11T10:19:17.213929Z","iopub.status.idle":"2022-08-11T10:19:20.378376Z","shell.execute_reply.started":"2022-08-11T10:19:17.213895Z","shell.execute_reply":"2022-08-11T10:19:20.376660Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = total_df_oh.iloc[: train_df.shape[0], :]\ntest_data = total_df_oh.iloc[train_df.shape[0] :, :]\n\nX = train_data.copy()\ntarget = train_df['failure']\n\nX_train, X_valid, y_train, y_valid = train_test_split(X, target)","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:20.381028Z","iopub.execute_input":"2022-08-11T10:19:20.381488Z","iopub.status.idle":"2022-08-11T10:19:20.447761Z","shell.execute_reply.started":"2022-08-11T10:19:20.381443Z","shell.execute_reply":"2022-08-11T10:19:20.446553Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lr_model = LogisticRegression()\nlr_model.fit(X_train, y_train)\nlr_pred_prob = lr_model.predict_proba(X_valid)\nlr_fpr, lr_tpr, lr_thresh = roc_curve(y_valid, lr_pred_prob[:, 1], pos_label=1)\nlr_auc_score = roc_auc_score(y_valid, lr_pred_prob[:, 1])\nlr_auc_score","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:20.449576Z","iopub.execute_input":"2022-08-11T10:19:20.449996Z","iopub.status.idle":"2022-08-11T10:19:21.319724Z","shell.execute_reply.started":"2022-08-11T10:19:20.449960Z","shell.execute_reply":"2022-08-11T10:19:21.318107Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.style.use('seaborn')\n\nplt.plot(lr_fpr, lr_tpr, linestyle='--',color='orange', label='Logistic Regression')\n\nplt.plot([(0, 0), (1, 1)])\nplt.title('ROC curve')\nplt.xlabel('False Positive Rate')\nplt.ylabel('True Positive rate')","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:21.322299Z","iopub.execute_input":"2022-08-11T10:19:21.323312Z","iopub.status.idle":"2022-08-11T10:19:21.577655Z","shell.execute_reply.started":"2022-08-11T10:19:21.323233Z","shell.execute_reply":"2022-08-11T10:19:21.576459Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_preds = lr_model.predict_proba(test_data)[:, 1]\nsub_df['failure'] = test_preds\nsub_df.to_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-08-11T10:19:21.582019Z","iopub.execute_input":"2022-08-11T10:19:21.582868Z","iopub.status.idle":"2022-08-11T10:19:21.731167Z","shell.execute_reply.started":"2022-08-11T10:19:21.582806Z","shell.execute_reply":"2022-08-11T10:19:21.729740Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}