{"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 pandas as pd\nimport numpy as np\nimport seaborn as sns\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-02T14:06:39.357644Z","iopub.execute_input":"2022-08-02T14:06:39.358057Z","iopub.status.idle":"2022-08-02T14:06:40.301231Z","shell.execute_reply.started":"2022-08-02T14:06:39.357973Z","shell.execute_reply":"2022-08-02T14:06:40.299993Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<span style=\"font-size: 200%; \">Read test and train data</span>","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\")","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:06:44.358297Z","iopub.execute_input":"2022-08-02T14:06:44.358674Z","iopub.status.idle":"2022-08-02T14:06:44.565660Z","shell.execute_reply.started":"2022-08-02T14:06:44.358642Z","shell.execute_reply":"2022-08-02T14:06:44.564688Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#store test id for submission\ntestid = test.id\n","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:06:46.598300Z","iopub.execute_input":"2022-08-02T14:06:46.599047Z","iopub.status.idle":"2022-08-02T14:06:46.609024Z","shell.execute_reply.started":"2022-08-02T14:06:46.599010Z","shell.execute_reply":"2022-08-02T14:06:46.607569Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(train.shape)","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:06:47.318817Z","iopub.execute_input":"2022-08-02T14:06:47.319300Z","iopub.status.idle":"2022-08-02T14:06:47.330445Z","shell.execute_reply.started":"2022-08-02T14:06:47.319260Z","shell.execute_reply":"2022-08-02T14:06:47.328474Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(test.shape)","metadata":{"execution":{"iopub.status.busy":"2022-08-01T22:33:59.445719Z","iopub.execute_input":"2022-08-01T22:33:59.446381Z","iopub.status.idle":"2022-08-01T22:33:59.456203Z","shell.execute_reply.started":"2022-08-01T22:33:59.446332Z","shell.execute_reply":"2022-08-01T22:33:59.455006Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"----------------------traindata--------------------------\")\nfor i,df in train.groupby(\"product_code\"):\n    print(i)\n    print(df.attribute_0.unique())\n    print(df.attribute_1.unique())\n    print(df.attribute_2.unique())\n    print(df.attribute_3.unique())\nprint(\"----------------------testdata--------------------------\")    \nfor i,df in test.groupby(\"product_code\"):\n    print(i)\n    print(df.attribute_0.unique())\n    print(df.attribute_1.unique())\n    print(df.attribute_2.unique())\n    print(df.attribute_3.unique())","metadata":{"execution":{"iopub.status.busy":"2022-08-02T10:32:01.415445Z","iopub.execute_input":"2022-08-02T10:32:01.415847Z","iopub.status.idle":"2022-08-02T10:32:01.476946Z","shell.execute_reply.started":"2022-08-02T10:32:01.415813Z","shell.execute_reply":"2022-08-02T10:32:01.475347Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Aggregation by \"product_code\" uniquely determines columns with \"attribute_n\".The same is true for test data\n","metadata":{}},{"cell_type":"markdown","source":"<span style=\"font-size: 200%; \">PreProcessing</span>","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import StandardScaler,PowerTransformer\n\nscaler = StandardScaler()\nscaler.fit(train.loc[:,[i for i in train.columns if (\"measurement\" in i)]])\n\ntrain.loc[:,[i for i in train.columns if (\"measurement\" in i)]] = scaler.transform(train.loc[:,[i for i in train.columns if (\"measurement\" in i)]])\n\ntest.loc[:,[i for i in test.columns if (\"measurement\" in i)]] = scaler.transform(test.loc[:,[i for i in test.columns if (\"measurement\" in i)]])\n","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:06:58.489835Z","iopub.execute_input":"2022-08-02T14:06:58.490214Z","iopub.status.idle":"2022-08-02T14:06:58.714410Z","shell.execute_reply.started":"2022-08-02T14:06:58.490183Z","shell.execute_reply":"2022-08-02T14:06:58.713424Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"scaling ","metadata":{}},{"cell_type":"markdown","source":"<span style=\"font-size: 200%; \">Feature Engineering</span>","metadata":{}},{"cell_type":"code","source":"def process(train):\n    \n    del train[\"product_code\"],train[\"id\"]\n    \n\n    train.attribute_0 = train.attribute_0.apply(lambda x:int(x.replace(\"material_\",\"\")))\n    train.attribute_1 = train.attribute_1.apply(lambda x:int(x.replace(\"material_\",\"\")))\n    train[\"atb_6_sum\"]= (train.filter(like = \"attribute\") == 6).sum(axis=1)\n    train[\"atb_5_sum\"]= (train.filter(like = \"attribute\") == 5).sum(axis=1)\n    train[\"atb_7_sum\"]= (train.filter(like = \"attribute\") == 7).sum(axis=1)\n    train[\"atb_8_sum\"]= (train.filter(like = \"attribute\") == 8).sum(axis=1)\n    \n    train[\"measure_null\"]=train.loc[:,[i for i in train.columns if (\"measurement\" in i)]].isnull().sum(axis=1)\n    train[\"measure_sum\"] =train.loc[:,[i for i in train.columns if (\"measurement\" in i)]].sum(axis=1)\n    train[\"measure_std\"] =train.loc[:,[i for i in train.columns if (\"measurement\" in i)]].std(axis=1)\n    \n    \n    \n    for i in range(1,18):\n        train[f\"measurement_{str(i)}sub{str(i-1)}\"] = train[f\"measurement_{str(i)}\"] - train[f\"measurement_{str(i-1)}\"]\n        #train[\"loading_null\"] = train.loading.isnull()\n    return train.loc[:,[i for i in train.columns if \"attribute\" not in i]]\n\ntrain = process(train)\ntest = process(test)","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:07:03.569855Z","iopub.execute_input":"2022-08-02T14:07:03.570538Z","iopub.status.idle":"2022-08-02T14:07:03.742476Z","shell.execute_reply.started":"2022-08-02T14:07:03.570490Z","shell.execute_reply":"2022-08-02T14:07:03.741498Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# split train data with x and y\n\nX = train.loc[:,[i for i in train.columns if i!= \"failure\"]]\ny = train.loc[:,[i for i in train.columns if i== \"failure\"]]\n\ntest_X = test.loc[:,[i for i in test.columns if i!= \"failure\"]]\n\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:07:09.163477Z","iopub.execute_input":"2022-08-02T14:07:09.163879Z","iopub.status.idle":"2022-08-02T14:07:09.184417Z","shell.execute_reply.started":"2022-08-02T14:07:09.163845Z","shell.execute_reply":"2022-08-02T14:07:09.183449Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<span style=\"font-size: 200%;\">Imputation by IterativeImputer</span>","metadata":{}},{"cell_type":"code","source":"from sklearn.experimental import enable_iterative_imputer\nfrom sklearn.impute import IterativeImputer\nimport xgboost\n\nimputer = IterativeImputer(estimator=xgboost.XGBRegressor(n_estimators=500, tree_method='gpu_hist', predictor=\"gpu_predictor\"),\n                           verbose=2,\n                           max_iter=20)\nimputer.fit(X)\nX = pd.DataFrame(imputer.transform(X), columns = X.columns) # preserve the column names, used later\ntest_X = pd.DataFrame(imputer.transform(test_X), columns = test_X.columns) ","metadata":{"execution":{"iopub.status.busy":"2022-08-02T10:58:02.535378Z","iopub.execute_input":"2022-08-02T10:58:02.536392Z","iopub.status.idle":"2022-08-02T10:59:48.630385Z","shell.execute_reply.started":"2022-08-02T10:58:02.536320Z","shell.execute_reply":"2022-08-02T10:59:48.629334Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<span style=\"font-size: 200%;\">Model Training</span>","metadata":{}},{"cell_type":"code","source":"from sklearn.metrics import log_loss,accuracy_score,roc_auc_score\nfrom sklearn.model_selection import StratifiedShuffleSplit\nimport lightgbm as lgb\n\n\n\nNUM_ROUND = 100\nVERBOSE_EVAL = -1\nNUM_CLASS = 2\n\nparams = {\"objective\":\"binary\", \n              \"metric\":\"binary_logloss\", \n              \"verbosity\": -1}\n\nlgb_train = lgb.Dataset(X, y)\n\nmodel = lgb.train(\n    params,\n    lgb_train,\n    num_boost_round=NUM_ROUND,\n    verbose_eval=VERBOSE_EVAL\n)","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:07:23.484464Z","iopub.execute_input":"2022-08-02T14:07:23.485422Z","iopub.status.idle":"2022-08-02T14:07:26.747445Z","shell.execute_reply.started":"2022-08-02T14:07:23.485381Z","shell.execute_reply":"2022-08-02T14:07:26.746534Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<span style=\"font-size: 200%; \">Feature Importance </span>","metadata":{}},{"cell_type":"code","source":"importance = pd.DataFrame(model.feature_importance(importance_type='gain'), index=X.columns, columns=['importance'])\nimportance = importance.sort_values('importance', ascending=False)\nimportance","metadata":{"execution":{"iopub.status.busy":"2022-08-02T11:00:10.975145Z","iopub.execute_input":"2022-08-02T11:00:10.975520Z","iopub.status.idle":"2022-08-02T11:00:10.992998Z","shell.execute_reply.started":"2022-08-02T11:00:10.975488Z","shell.execute_reply":"2022-08-02T11:00:10.991950Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":" features by aggregation(measure_std,measure_sum) seems to working","metadata":{}},{"cell_type":"markdown","source":"<span style=\"font-size: 200%; \">Prediction and Submission</span>","metadata":{}},{"cell_type":"code","source":"pred =model.predict(test_X)","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:07:33.609885Z","iopub.execute_input":"2022-08-02T14:07:33.610397Z","iopub.status.idle":"2022-08-02T14:07:33.775576Z","shell.execute_reply.started":"2022-08-02T14:07:33.610356Z","shell.execute_reply":"2022-08-02T14:07:33.774539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submit = pd.read_csv(\"../input/tabular-playground-series-aug-2022/sample_submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:07:52.820134Z","iopub.execute_input":"2022-08-02T14:07:52.820571Z","iopub.status.idle":"2022-08-02T14:07:52.843228Z","shell.execute_reply.started":"2022-08-02T14:07:52.820532Z","shell.execute_reply":"2022-08-02T14:07:52.842303Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:07:37.517823Z","iopub.execute_input":"2022-08-02T14:07:37.518465Z","iopub.status.idle":"2022-08-02T14:07:37.676065Z","shell.execute_reply.started":"2022-08-02T14:07:37.518427Z","shell.execute_reply":"2022-08-02T14:07:37.674714Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submit[\"id\"] = testid\nsubmit[\"failure\"] = pred","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:07:55.697699Z","iopub.execute_input":"2022-08-02T14:07:55.698079Z","iopub.status.idle":"2022-08-02T14:07:55.704241Z","shell.execute_reply.started":"2022-08-02T14:07:55.698046Z","shell.execute_reply":"2022-08-02T14:07:55.703132Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submit[\"failure\"].hist()","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:08:12.973272Z","iopub.execute_input":"2022-08-02T14:08:12.973623Z","iopub.status.idle":"2022-08-02T14:08:13.233674Z","shell.execute_reply.started":"2022-08-02T14:08:12.973592Z","shell.execute_reply":"2022-08-02T14:08:13.232679Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submit.to_csv(\"submission.csv\",index = False)","metadata":{"execution":{"iopub.status.busy":"2022-08-02T14:08:13.236537Z","iopub.execute_input":"2022-08-02T14:08:13.237275Z","iopub.status.idle":"2022-08-02T14:08:13.293442Z","shell.execute_reply.started":"2022-08-02T14:08:13.237231Z","shell.execute_reply":"2022-08-02T14:08:13.292541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}