{"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":"In this Notebook, we train an XGBoost model. The features are all categorical. We will first One Hot encode them.","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom xgboost import XGBClassifier","metadata":{"execution":{"iopub.status.busy":"2022-07-25T10:41:09.930083Z","iopub.execute_input":"2022-07-25T10:41:09.930678Z","iopub.status.idle":"2022-07-25T10:41:11.374259Z","shell.execute_reply.started":"2022-07-25T10:41:09.930545Z","shell.execute_reply":"2022-07-25T10:41:11.373319Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#  <div style=\"padding:20px;color:white;margin:0;font-size:175%;text-align:center;display:fill;border-radius:5px;background-color:#016CC9;overflow:hidden;font-weight:500\">1. LOAD DATA</div>","metadata":{}},{"cell_type":"code","source":"train=pd.read_csv('../input/sera-venenoso/train.csv')\ntest=pd.read_csv('../input/sera-venenoso/test.csv')\nsub = pd.read_csv('../input/sera-venenoso/sample_submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-25T10:41:11.376120Z","iopub.execute_input":"2022-07-25T10:41:11.376743Z","iopub.status.idle":"2022-07-25T10:41:11.463685Z","shell.execute_reply.started":"2022-07-25T10:41:11.376705Z","shell.execute_reply":"2022-07-25T10:41:11.462721Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#  <div style=\"padding:20px;color:white;margin:0;font-size:175%;text-align:center;display:fill;border-radius:5px;background-color:#016CC9;overflow:hidden;font-weight:500\">2. One Hot Encode</div>","metadata":{}},{"cell_type":"code","source":"#APPEND TEST TO TRAIN THEN OHE EVERYTHING\ntrain['train']=True\ntrain['class'] = pd.factorize(train['class'])[0]\ntest['train']=False\ntest['class']=0\ntraintest=pd.get_dummies(train.append(test,ignore_index=True))","metadata":{"execution":{"iopub.status.busy":"2022-07-25T10:41:11.465342Z","iopub.execute_input":"2022-07-25T10:41:11.465983Z","iopub.status.idle":"2022-07-25T10:41:11.534622Z","shell.execute_reply.started":"2022-07-25T10:41:11.465948Z","shell.execute_reply":"2022-07-25T10:41:11.533620Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#SEPARATE TRAIN AND TEST\ntrain=traintest[traintest['train']]\ntest=traintest[~traintest['train']]\nfeatures = [f for f in train.columns if (f != 'id' and f != 'class' and f != 'train')]","metadata":{"execution":{"iopub.status.busy":"2022-07-25T10:41:11.537021Z","iopub.execute_input":"2022-07-25T10:41:11.537422Z","iopub.status.idle":"2022-07-25T10:41:11.554601Z","shell.execute_reply.started":"2022-07-25T10:41:11.537384Z","shell.execute_reply":"2022-07-25T10:41:11.553424Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#  <div style=\"padding:20px;color:white;margin:0;font-size:175%;text-align:center;display:fill;border-radius:5px;background-color:#016CC9;overflow:hidden;font-weight:500\">3. TRAIN XGBOOST</div>","metadata":{}},{"cell_type":"code","source":"#train xgboost with default parameters (it's enough to get a perfect score)\nmodel = XGBClassifier()\nmodel.fit(train[features],train['class'])","metadata":{"execution":{"iopub.status.busy":"2022-07-25T10:41:11.556410Z","iopub.execute_input":"2022-07-25T10:41:11.556779Z","iopub.status.idle":"2022-07-25T10:41:14.067006Z","shell.execute_reply.started":"2022-07-25T10:41:11.556746Z","shell.execute_reply":"2022-07-25T10:41:14.065757Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#  <div style=\"padding:20px;color:white;margin:0;font-size:175%;text-align:center;display:fill;border-radius:5px;background-color:#016CC9;overflow:hidden;font-weight:500\">4. PREDICT</div>","metadata":{}},{"cell_type":"code","source":"pred = model.predict(test[features])","metadata":{"execution":{"iopub.status.busy":"2022-07-25T10:41:14.068597Z","iopub.execute_input":"2022-07-25T10:41:14.068911Z","iopub.status.idle":"2022-07-25T10:41:14.110762Z","shell.execute_reply.started":"2022-07-25T10:41:14.068883Z","shell.execute_reply":"2022-07-25T10:41:14.109472Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#  <div style=\"padding:20px;color:white;margin:0;font-size:175%;text-align:center;display:fill;border-radius:5px;background-color:#016CC9;overflow:hidden;font-weight:500\">5. SUBMIT</div>","metadata":{}},{"cell_type":"code","source":"#sub ids are ordered identically with test, so we can simply replace the class column in sub with the model predictions\nsub['class']=pred\nsub['class'] = np.where(sub['class']==0,  'Edible','Poisonous')\n\n# DISPLAY PREDICTIONS\nsub.to_csv('submission.csv',index=False)\nprint('Submission file shape is', sub.shape )","metadata":{"execution":{"iopub.status.busy":"2022-07-25T10:41:23.217476Z","iopub.execute_input":"2022-07-25T10:41:23.218411Z","iopub.status.idle":"2022-07-25T10:41:23.235178Z","shell.execute_reply.started":"2022-07-25T10:41:23.218366Z","shell.execute_reply":"2022-07-25T10:41:23.233986Z"},"trusted":true},"execution_count":null,"outputs":[]}]}