{"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":"# TPS Aug 22 - AutoKeras","metadata":{}},{"cell_type":"markdown","source":"![](data:image/jpeg;base64,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)","metadata":{}},{"cell_type":"markdown","source":"## Reference\n\nData preparation from [pourchot notebook](https://www.kaggle.com/code/pourchot/simple-keras-baseline)","metadata":{}},{"cell_type":"code","source":"!pip install -qq git+https://github.com/keras-team/keras-tuner.git\n!pip install -qq autokeras","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-03T17:52:56.398297Z","iopub.execute_input":"2022-08-03T17:52:56.398804Z","iopub.status.idle":"2022-08-03T17:54:41.346713Z","shell.execute_reply.started":"2022-08-03T17:52:56.398698Z","shell.execute_reply":"2022-08-03T17:54:41.345453Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import math\nimport random\nimport pandas as pd\nimport numpy as np\n\nfrom sklearn.model_selection import StratifiedGroupKFold\nfrom sklearn.metrics import roc_auc_score\nfrom sklearn.calibration import CalibrationDisplay\nfrom sklearn.preprocessing import StandardScaler,LabelEncoder\nfrom sklearn.impute import KNNImputer\n\nfrom tensorflow.keras.callbacks import LearningRateScheduler\n\nimport tensorflow as tf\nimport autokeras as ak","metadata":{"_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-03T17:54:41.349247Z","iopub.execute_input":"2022-08-03T17:54:41.349669Z","iopub.status.idle":"2022-08-03T17:54:46.718256Z","shell.execute_reply.started":"2022-08-03T17:54:41.349628Z","shell.execute_reply":"2022-08-03T17:54:46.716774Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Data Preparation","metadata":{}},{"cell_type":"code","source":"train = pd.read_csv('../input/tabular-playground-series-aug-2022/train.csv')\ntest = pd.read_csv('../input/tabular-playground-series-aug-2022/test.csv')\ntarget = train['failure']\ntrain.drop('failure',axis=1, inplace = True)\ntrain.shape,test.shape","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:54:46.719757Z","iopub.execute_input":"2022-08-03T17:54:46.720701Z","iopub.status.idle":"2022-08-03T17:54:47.045227Z","shell.execute_reply.started":"2022-08-03T17:54:46.720654Z","shell.execute_reply":"2022-08-03T17:54:47.043915Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"all_data = pd.concat([train,test],axis = 0).reset_index(drop=True)\nall_data.head(3)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:54:47.048232Z","iopub.execute_input":"2022-08-03T17:54:47.049081Z","iopub.status.idle":"2022-08-03T17:54:48.836490Z","shell.execute_reply.started":"2022-08-03T17:54:47.049012Z","shell.execute_reply":"2022-08-03T17:54:48.835061Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Missing Values","metadata":{}},{"cell_type":"code","source":"na_col = [col for col in train.columns if train[col].isnull().sum() !=0]\nimputer = KNNImputer(n_neighbors = 3)\nall_data[na_col] = imputer.fit_transform(all_data[na_col])\nall_data.isnull().sum().sum()","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:54:48.838137Z","iopub.execute_input":"2022-08-03T17:54:48.838544Z","iopub.status.idle":"2022-08-03T17:56:20.758098Z","shell.execute_reply.started":"2022-08-03T17:54:48.838497Z","shell.execute_reply":"2022-08-03T17:56:20.756857Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Features Encoded","metadata":{}},{"cell_type":"code","source":"cat_col = [col for col in train.columns[:-1] if train[col].dtypes == 'object']\nfor col in cat_col :\n    le = LabelEncoder()\n    all_data[col] = le.fit_transform(all_data[col])","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:56:20.759633Z","iopub.execute_input":"2022-08-03T17:56:20.759985Z","iopub.status.idle":"2022-08-03T17:56:20.803561Z","shell.execute_reply.started":"2022-08-03T17:56:20.759952Z","shell.execute_reply":"2022-08-03T17:56:20.802467Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Split data into training and testing","metadata":{}},{"cell_type":"code","source":"X = all_data[all_data['id'] < train.shape[0]].drop('id',axis=1).copy()\nX_test = all_data[all_data['id'] > train.shape[0]-1].drop('id',axis=1).copy()\nX.shape, X_test.shape\n\nfeatures = [col for col in X.columns if 'loading' not in col]","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:56:20.805018Z","iopub.execute_input":"2022-08-03T17:56:20.806119Z","iopub.status.idle":"2022-08-03T17:56:20.827192Z","shell.execute_reply.started":"2022-08-03T17:56:20.806072Z","shell.execute_reply":"2022-08-03T17:56:20.825934Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Data standardization","metadata":{}},{"cell_type":"code","source":"st = StandardScaler()\nX_sc = st.fit_transform(X[features])\nX_test_sc = st.transform(X_test[features])\nX_sc.shape,X_test_sc.shape","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:56:20.828486Z","iopub.execute_input":"2022-08-03T17:56:20.828843Z","iopub.status.idle":"2022-08-03T17:56:20.863297Z","shell.execute_reply.started":"2022-08-03T17:56:20.828808Z","shell.execute_reply":"2022-08-03T17:56:20.862374Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_sc = np.hstack((X_sc,X[[col for col in all_data.columns if 'loading' in col]]))\nX_test_sc = np.hstack((X_test_sc,X_test[[col for col in all_data.columns if 'loading' in col]]))\nX_sc.shape,X_test_sc.shape","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:56:20.864727Z","iopub.execute_input":"2022-08-03T17:56:20.865450Z","iopub.status.idle":"2022-08-03T17:56:20.879370Z","shell.execute_reply.started":"2022-08-03T17:56:20.865408Z","shell.execute_reply":"2022-08-03T17:56:20.878006Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Training","metadata":{}},{"cell_type":"code","source":"blend_test = np.zeros((test.shape[0]))\n\nnp.random.seed(1)\nrandom.seed(1)\ntf.random.set_seed(1)\n\nnn_oof = np.zeros(train.shape[0])\nnn_pred = np.zeros(test.shape[0])\n\n\nsplit = 5\n\ncv = StratifiedGroupKFold(\n            n_splits = split,\n            shuffle = True,\n            random_state = 1)\n\nGROUP = train['product_code']\n\nfor fold, (idx_train, idx_valid) in enumerate(cv.split(X_sc, \n                                                       target, \n                                                       groups=train['product_code'])):\n    X_train = X_sc[idx_train]\n    y_train  = target[idx_train]\n    X_valid = X_sc[idx_valid]\n    y_valid = target[idx_valid]\n    \n    model = ak.StructuredDataRegressor(max_trials=1,\n                                       overwrite=True)\n    model.fit(X_train, y_train, epochs=10,\n              validation_data=(X_valid, y_valid))\n    \n    pred_oof_nn = model.predict(X_valid)\n    nn_oof[idx_valid] = pred_oof_nn.squeeze()\n\n    nn_pred = model.predict(X_test_sc)\n    blend_test += (nn_pred.squeeze()/split)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T17:56:20.892291Z","iopub.execute_input":"2022-08-03T17:56:20.892926Z","iopub.status.idle":"2022-08-03T18:03:19.345183Z","shell.execute_reply.started":"2022-08-03T17:56:20.892891Z","shell.execute_reply":"2022-08-03T18:03:19.344158Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Submission","metadata":{}},{"cell_type":"code","source":"sub = pd.read_csv('../input/tabular-playground-series-aug-2022/sample_submission.csv')\nsub['failure'] = blend_test\nsub.to_csv('submission.csv',index = False)\npd.read_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-08-03T18:03:19.346541Z","iopub.execute_input":"2022-08-03T18:03:19.346884Z","iopub.status.idle":"2022-08-03T18:03:19.438675Z","shell.execute_reply.started":"2022-08-03T18:03:19.346851Z","shell.execute_reply":"2022-08-03T18:03:19.437510Z"},"trusted":true},"execution_count":null,"outputs":[]}]}