{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\nfrom sklearn import metrics\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.model_selection import train_test_split\n\nimport xgboost as xgb","execution_count":1,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def metric(y_true, y_pred, types, floor=1e-9):\n    maes = (y_true-y_pred).abs().groupby(types).mean()\n    return np.log(maes.map(lambda x: max(x, floor))).mean()","execution_count":2,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"df = dict()\n\ndf['train'] = pd.read_csv('../input/train.csv', index_col='id')\ndf['infer'] = pd.read_csv('../input/test.csv', index_col='id')\ndf['structure'] = pd.read_csv('../input/structures.csv')\ndf['charges'] = pd.read_csv('../input/mulliken_charges.csv')\n\n# merge both datasets\ndf['full'] = pd.concat([df['train'], df['infer']], axis=0, sort=False)\n\n# free up some memory\ndel df['train'], df['infer']","execution_count":3,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/numpy/lib/arraysetops.py:569: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n  mask |= (ar1 == a)\n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# feature engineering\n\nkey = 'full'\n\nfor atom in [0,1]:\n\n    # adding atom coordinates\n    df[key] = pd.merge(df[key], df['structure'], how = 'left',\n                        left_on  = ['molecule_name', f'atom_index_{atom}'],\n                        right_on = ['molecule_name',  'atom_index'], \n                    )\n\n    df[key] = df[key].drop('atom_index', axis=1)\n    df[key] = df[key].rename(columns={\n                            'atom': f'A{atom}',\n                            'x': f'x{atom}',\n                            'y': f'y{atom}',\n                            'z': f'z{atom}'})\n\n# adding number of atoms in a molecule\ndf[key] = pd.merge(df[key], pd.DataFrame(df['structure'].groupby('molecule_name')['atom_index'].max()), how='left',\n                   left_on='molecule_name', right_on='molecule_name')\ndf[key] = df[key].rename(columns={'atom_index' : 'nAtoms'})\n\n# adding bond type\ndf[key].loc[:, 'bond'] = [value[:2] for value in df[key]['type'].values]\n\n# adding atom pair\ndf[key].loc[:, 'pair'] = [value[2:] for value in df[key]['type'].values]\n\n# adding distances between atoms\ndf[key]['L2'] = np.linalg.norm(df[key][['x0', 'y0', 'z0']].values - \\\n                               df[key][['x1', 'y1', 'z1']].values, ord=2, axis=1)\ndf[key]['L1'] = np.linalg.norm(df[key][['x0', 'y0', 'z0']].values - \\\n                               df[key][['x1', 'y1', 'z1']].values, ord=1, axis=1)\n\n# adding distance components between atoms\ndf[key].loc[:, 'dx'] = np.abs(df[key].loc[:, 'x0'] - df[key].loc[:, 'x1'])\ndf[key].loc[:, 'dy'] = np.abs(df[key].loc[:, 'y0'] - df[key].loc[:, 'y1'])\ndf[key].loc[:, 'dz'] = np.abs(df[key].loc[:, 'z0'] - df[key].loc[:, 'z1'])\n\n# adding relative (to the molecule) L1/L2 distance\ndf[key].loc[:, 'L1_RM'] = df[key].loc[:, 'L1'] / df[key].groupby('molecule_name')['L1'].transform('max')\ndf[key].loc[:, 'L2_RM'] = df[key].loc[:, 'L2'] / df[key].groupby('molecule_name')['L2'].transform('max')\n\n# adding relative (to the atom) L1/L2 distance\ndf[key].loc[:, 'L1_RA'] = df[key].loc[:, 'L1'] / df[key].groupby('A1')['L1'].transform('max')\ndf[key].loc[:, 'L2_RA'] = df[key].loc[:, 'L2'] / df[key].groupby('A1')['L2'].transform('max')\n\n# adding relative (to the bond) L1/L2 distance\ndf[key].loc[:, 'L1_RB'] = df[key].loc[:, 'L1'] / df[key].groupby('bond')['L1'].transform('max')\ndf[key].loc[:, 'L2_RB'] = df[key].loc[:, 'L2'] / df[key].groupby('bond')['L2'].transform('max')\n\n# adding relative (to the type) L1/L2 distance\ndf[key].loc[:, 'L1_RT'] = df[key].loc[:, 'L1'] / df[key].groupby('type')['L1'].transform('max')\ndf[key].loc[:, 'L2_RT'] = df[key].loc[:, 'L2'] / df[key].groupby('type')['L2'].transform('max')\n\n# adding molecule reference volume\nvolumes = np.prod(df['structure'].groupby('molecule_name')[['x','y','z']].max() - \\\n                  df['structure'].groupby('molecule_name')[['x','y','z']].min(), axis=1)\n\nvolumes = pd.DataFrame(volumes)\n\ndf[key] = pd.merge(df[key], volumes, how='left', left_on='molecule_name', right_index=True)\ndf[key] = df[key].rename(columns={0 : 'volume'})\n\ndel volumes\n\n# adding molecule reference sizes\nsize = df['structure'].groupby('molecule_name')[['x','y','z']].max() - \\\n       df['structure'].groupby('molecule_name')[['x','y','z']].min()\n\nsize = pd.DataFrame(size)\n\ndf[key] = pd.merge(df[key], size, how='left', left_on='molecule_name', right_index=True)\ndf[key] = df[key].rename(columns={'x':'Lx', 'y':'Ly', 'z':'Lz'})\n\ndel size\n\n# adding molecule weights\natomic_weights = {\n    'H' : 1.008,\n    'C' : 12.011,\n    'N' : 14.007,\n    'O' : 15.999,\n    'F' : 18.998\n}\n\ndef weight(element):\n    return atomic_weights[element]\n\ndf['structure'].loc[:, 'atomic_weight'] = list(map(weight, df['structure']['atom']))\n\nweights = df['structure'].groupby('molecule_name')['atomic_weight'].sum()\nweights = pd.DataFrame(weights)\n\ndf[key] = pd.merge(df[key], weights, how='left', left_on='molecule_name', right_index=True)\ndf[key] = df[key].rename(columns={'atomic_weight' : 'weight'})\n\ndel weights\n\n# adding individual atomic weights\ndf[key].loc[:, 'weightAtom'] = list(map(weight, df[key]['A1']))\n\n# adding some feature crosses\ndf[key].loc[:, 'wA/w'] = df[key].loc[:, 'weightAtom'] / df[key].loc[:, 'weight'] \ndf[key].loc[:, 'L1/Lx'] = df[key].loc[:, 'L1'] / df[key].loc[:, 'Lx']\ndf[key].loc[:, 'L2/Lx'] = df[key].loc[:, 'L2'] / df[key].loc[:, 'Lx']\ndf[key].loc[:, 'L1/Ly'] = df[key].loc[:, 'L1'] / df[key].loc[:, 'Ly']\ndf[key].loc[:, 'L2/Ly'] = df[key].loc[:, 'L2'] / df[key].loc[:, 'Ly']\ndf[key].loc[:, 'L1/Lz'] = df[key].loc[:, 'L1'] / df[key].loc[:, 'Lz']\ndf[key].loc[:, 'L2/Lz'] = df[key].loc[:, 'L2'] / df[key].loc[:, 'Lz']\ndf[key].loc[:, 'dx/Lx'] = df[key].loc[:, 'dx'] / df[key].loc[:, 'Lx']\ndf[key].loc[:, 'dy/Ly'] = df[key].loc[:, 'dy'] / df[key].loc[:, 'Ly']\ndf[key].loc[:, 'dz/Lz'] = df[key].loc[:, 'dz'] / df[key].loc[:, 'Lz']\ndf[key].loc[:, 'dx/Lx_RB'] = df[key].loc[:, 'dx'] / df[key].groupby('bond')['Lx'].transform('max')\ndf[key].loc[:, 'dy/Ly_RB'] = df[key].loc[:, 'dy'] / df[key].groupby('bond')['Ly'].transform('max')\ndf[key].loc[:, 'dz/Lz_RB'] = df[key].loc[:, 'dz'] / df[key].groupby('bond')['Lz'].transform('max')","execution_count":4,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"encoder = LabelEncoder()\nfor feature in ['type', 'bond', 'pair']:\n    df['full'][feature] = encoder.fit_transform(df['full'][feature])","execution_count":5,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X, y = dict(), dict()\n\nto_drop = [\n    'A0', 'A1', 'x0', 'y0', 'z0', 'x1', 'y1', 'z1', 'weightAtom', 'scalar_coupling_constant'\n]\n\nX['train'] = df['full'][df['full']['scalar_coupling_constant'].isna() == False].drop(to_drop, axis=1)\nX['infer'] = df['full'][df['full']['scalar_coupling_constant'].isna() == True].drop(to_drop, axis=1)\n\ny['train'] = df['full'][df['full']['scalar_coupling_constant'].isna() == False]['scalar_coupling_constant']\n\nX['train'], X['valid'], y['train'], y['valid'] = train_test_split(X['train'], y['train'], \n                                                                  random_state=0, test_size=0.2)\n\ndel df['full']","execution_count":6,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for key in ['train', 'valid']:\n    X[key] = pd.merge(X[key], df['charges'], how='left',\n             left_on=['molecule_name', 'atom_index_0'], right_on=['molecule_name', 'atom_index'])\n\n    X[key] = X[key].rename(columns={'mulliken_charge':'M0'})\n\n    X[key] = pd.merge(X[key], df['charges'], how='left',\n             left_on=['molecule_name', 'atom_index_1'], right_on=['molecule_name', 'atom_index'])\n\n    X[key] = X[key].rename(columns={'mulliken_charge':'M1'})\n\n    X[key].drop(['atom_index_x', 'atom_index_y'], axis=1, inplace=True)","execution_count":7,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('{}, {}, {}'.format(X['train'].shape, X['valid'].shape, X['infer'].shape))","execution_count":8,"outputs":[{"output_type":"stream","text":"(3726517, 40), (931630, 40), (2505542, 38)\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"for key in ['train', 'valid', 'infer']:\n    X[key].drop(['molecule_name', 'atom_index_0', 'atom_index_1'], axis=1, inplace=True)","execution_count":9,"outputs":[]},{"metadata":{"trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"# building model for M0\nmodel0 = xgb.XGBRegressor(\n    n_estimators=1000, \n    learning_rate=0.2,\n    max_depth = 9,\n    n_jobs=-1,\n    random_state=0,\n    subsample=0.8,\n    tree_method='gpu_hist'\n)\n\nto_drop = ['M0', 'M1']\n\nmodel0.fit(\n    X['train'].drop(to_drop,axis=1), X['train']['M0'], \n    eval_set=[(X['valid'].drop(to_drop,axis=1), X['valid']['M0'])], \n    eval_metric='mae',early_stopping_rounds=20)","execution_count":10,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n  if getattr(data, 'base', None) is not None and \\\n/opt/conda/lib/python3.6/site-packages/xgboost/core.py:588: FutureWarning: Series.base is deprecated and will be removed in a future version\n  data.base is not None and isinstance(data, np.ndarray) \\\n","name":"stderr"},{"output_type":"stream","text":"[0]\tvalidation_0-mae:0.302339\nWill train until validation_0-mae hasn't improved in 20 rounds.\n[1]\tvalidation_0-mae:0.241872\n[2]\tvalidation_0-mae:0.193498\n[3]\tvalidation_0-mae:0.155003\n[4]\tvalidation_0-mae:0.124891\n[5]\tvalidation_0-mae:0.10135\n[6]\tvalidation_0-mae:0.082837\n[7]\tvalidation_0-mae:0.068092\n[8]\tvalidation_0-mae:0.056371\n[9]\tvalidation_0-mae:0.047004\n[10]\tvalidation_0-mae:0.039628\n[11]\tvalidation_0-mae:0.033889\n[12]\tvalidation_0-mae:0.029553\n[13]\tvalidation_0-mae:0.02632\n[14]\tvalidation_0-mae:0.02399\n[15]\tvalidation_0-mae:0.022304\n[16]\tvalidation_0-mae:0.021147\n[17]\tvalidation_0-mae:0.020356\n[18]\tvalidation_0-mae:0.019808\n[19]\tvalidation_0-mae:0.019416\n[20]\tvalidation_0-mae:0.019154\n[21]\tvalidation_0-mae:0.018957\n[22]\tvalidation_0-mae:0.018793\n[23]\tvalidation_0-mae:0.01868\n[24]\tvalidation_0-mae:0.018601\n[25]\tvalidation_0-mae:0.018536\n[26]\tvalidation_0-mae:0.018479\n[27]\tvalidation_0-mae:0.018433\n[28]\tvalidation_0-mae:0.018391\n[29]\tvalidation_0-mae:0.01836\n[30]\tvalidation_0-mae:0.018324\n[31]\tvalidation_0-mae:0.018307\n[32]\tvalidation_0-mae:0.018281\n[33]\tvalidation_0-mae:0.018253\n[34]\tvalidation_0-mae:0.01824\n[35]\tvalidation_0-mae:0.018213\n[36]\tvalidation_0-mae:0.018202\n[37]\tvalidation_0-mae:0.018178\n[38]\tvalidation_0-mae:0.018165\n[39]\tvalidation_0-mae:0.018145\n[40]\tvalidation_0-mae:0.018114\n[41]\tvalidation_0-mae:0.018102\n[42]\tvalidation_0-mae:0.018087\n[43]\tvalidation_0-mae:0.018076\n[44]\tvalidation_0-mae:0.018069\n[45]\tvalidation_0-mae:0.01805\n[46]\tvalidation_0-mae:0.018036\n[47]\tvalidation_0-mae:0.018029\n[48]\tvalidation_0-mae:0.018016\n[49]\tvalidation_0-mae:0.018009\n[50]\tvalidation_0-mae:0.017992\n[51]\tvalidation_0-mae:0.017977\n[52]\tvalidation_0-mae:0.017963\n[53]\tvalidation_0-mae:0.017954\n[54]\tvalidation_0-mae:0.017936\n[55]\tvalidation_0-mae:0.017916\n[56]\tvalidation_0-mae:0.017908\n[57]\tvalidation_0-mae:0.017889\n[58]\tvalidation_0-mae:0.017875\n[59]\tvalidation_0-mae:0.017862\n[60]\tvalidation_0-mae:0.017849\n[61]\tvalidation_0-mae:0.017843\n[62]\tvalidation_0-mae:0.017833\n[63]\tvalidation_0-mae:0.017824\n[64]\tvalidation_0-mae:0.017817\n[65]\tvalidation_0-mae:0.017809\n[66]\tvalidation_0-mae:0.0178\n[67]\tvalidation_0-mae:0.017787\n[68]\tvalidation_0-mae:0.017779\n[69]\tvalidation_0-mae:0.017777\n[70]\tvalidation_0-mae:0.017771\n[71]\tvalidation_0-mae:0.017758\n[72]\tvalidation_0-mae:0.017753\n[73]\tvalidation_0-mae:0.017746\n[74]\tvalidation_0-mae:0.017737\n[75]\tvalidation_0-mae:0.017733\n[76]\tvalidation_0-mae:0.01773\n[77]\tvalidation_0-mae:0.017716\n[78]\tvalidation_0-mae:0.017709\n[79]\tvalidation_0-mae:0.017701\n[80]\tvalidation_0-mae:0.0177\n[81]\tvalidation_0-mae:0.017689\n[82]\tvalidation_0-mae:0.017678\n[83]\tvalidation_0-mae:0.017672\n[84]\tvalidation_0-mae:0.017664\n[85]\tvalidation_0-mae:0.017661\n[86]\tvalidation_0-mae:0.017652\n[87]\tvalidation_0-mae:0.017643\n[88]\tvalidation_0-mae:0.017635\n[89]\tvalidation_0-mae:0.017633\n[90]\tvalidation_0-mae:0.017627\n[91]\tvalidation_0-mae:0.01762\n[92]\tvalidation_0-mae:0.017617\n[93]\tvalidation_0-mae:0.017612\n[94]\tvalidation_0-mae:0.017605\n[95]\tvalidation_0-mae:0.017604\n[96]\tvalidation_0-mae:0.017599\n[97]\tvalidation_0-mae:0.017595\n[98]\tvalidation_0-mae:0.017593\n[99]\tvalidation_0-mae:0.01759\n[100]\tvalidation_0-mae:0.017583\n[101]\tvalidation_0-mae:0.017579\n[102]\tvalidation_0-mae:0.017576\n[103]\tvalidation_0-mae:0.017571\n[104]\tvalidation_0-mae:0.017568\n[105]\tvalidation_0-mae:0.017563\n[106]\tvalidation_0-mae:0.017551\n[107]\tvalidation_0-mae:0.017545\n[108]\tvalidation_0-mae:0.017541\n[109]\tvalidation_0-mae:0.017534\n[110]\tvalidation_0-mae:0.017527\n[111]\tvalidation_0-mae:0.017526\n[112]\tvalidation_0-mae:0.017519\n[113]\tvalidation_0-mae:0.017514\n[114]\tvalidation_0-mae:0.01751\n[115]\tvalidation_0-mae:0.017505\n[116]\tvalidation_0-mae:0.017498\n[117]\tvalidation_0-mae:0.017492\n[118]\tvalidation_0-mae:0.017485\n[119]\tvalidation_0-mae:0.017483\n[120]\tvalidation_0-mae:0.017479\n[121]\tvalidation_0-mae:0.017476\n[122]\tvalidation_0-mae:0.01747\n[123]\tvalidation_0-mae:0.017466\n[124]\tvalidation_0-mae:0.017463\n[125]\tvalidation_0-mae:0.017458\n[126]\tvalidation_0-mae:0.017456\n[127]\tvalidation_0-mae:0.017453\n[128]\tvalidation_0-mae:0.017447\n[129]\tvalidation_0-mae:0.017445\n[130]\tvalidation_0-mae:0.017437\n[131]\tvalidation_0-mae:0.017436\n[132]\tvalidation_0-mae:0.017433\n[133]\tvalidation_0-mae:0.017431\n[134]\tvalidation_0-mae:0.017425\n[135]\tvalidation_0-mae:0.017421\n[136]\tvalidation_0-mae:0.017416\n[137]\tvalidation_0-mae:0.017413\n[138]\tvalidation_0-mae:0.01741\n[139]\tvalidation_0-mae:0.017407\n[140]\tvalidation_0-mae:0.017405\n[141]\tvalidation_0-mae:0.017397\n[142]\tvalidation_0-mae:0.017395\n[143]\tvalidation_0-mae:0.017392\n[144]\tvalidation_0-mae:0.017387\n[145]\tvalidation_0-mae:0.017384\n[146]\tvalidation_0-mae:0.017382\n[147]\tvalidation_0-mae:0.01738\n[148]\tvalidation_0-mae:0.017377\n[149]\tvalidation_0-mae:0.017375\n[150]\tvalidation_0-mae:0.017372\n[151]\tvalidation_0-mae:0.017369\n[152]\tvalidation_0-mae:0.017364\n[153]\tvalidation_0-mae:0.01736\n[154]\tvalidation_0-mae:0.017357\n[155]\tvalidation_0-mae:0.017351\n[156]\tvalidation_0-mae:0.017348\n[157]\tvalidation_0-mae:0.017345\n[158]\tvalidation_0-mae:0.017339\n[159]\tvalidation_0-mae:0.017336\n[160]\tvalidation_0-mae:0.017335\n[161]\tvalidation_0-mae:0.017332\n[162]\tvalidation_0-mae:0.017328\n[163]\tvalidation_0-mae:0.017324\n[164]\tvalidation_0-mae:0.017322\n[165]\tvalidation_0-mae:0.01732\n[166]\tvalidation_0-mae:0.01732\n[167]\tvalidation_0-mae:0.017316\n[168]\tvalidation_0-mae:0.017313\n[169]\tvalidation_0-mae:0.017311\n[170]\tvalidation_0-mae:0.017308\n[171]\tvalidation_0-mae:0.017304\n[172]\tvalidation_0-mae:0.017301\n[173]\tvalidation_0-mae:0.017299\n[174]\tvalidation_0-mae:0.017296\n[175]\tvalidation_0-mae:0.017294\n[176]\tvalidation_0-mae:0.017292\n[177]\tvalidation_0-mae:0.017289\n[178]\tvalidation_0-mae:0.017287\n[179]\tvalidation_0-mae:0.017284\n[180]\tvalidation_0-mae:0.017281\n[181]\tvalidation_0-mae:0.017278\n[182]\tvalidation_0-mae:0.017272\n[183]\tvalidation_0-mae:0.017271\n[184]\tvalidation_0-mae:0.017269\n[185]\tvalidation_0-mae:0.017266\n[186]\tvalidation_0-mae:0.017265\n[187]\tvalidation_0-mae:0.017263\n[188]\tvalidation_0-mae:0.01726\n[189]\tvalidation_0-mae:0.017258\n[190]\tvalidation_0-mae:0.017256\n[191]\tvalidation_0-mae:0.017255\n[192]\tvalidation_0-mae:0.017252\n[193]\tvalidation_0-mae:0.017251\n[194]\tvalidation_0-mae:0.017247\n[195]\tvalidation_0-mae:0.017246\n[196]\tvalidation_0-mae:0.017239\n[197]\tvalidation_0-mae:0.017236\n[198]\tvalidation_0-mae:0.017234\n[199]\tvalidation_0-mae:0.017232\n","name":"stdout"},{"output_type":"execute_result","execution_count":10,"data":{"text/plain":"XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n       colsample_bytree=1, gamma=0, importance_type='gain',\n       learning_rate=0.2, max_delta_step=0, max_depth=9,\n       min_child_weight=1, missing=None, n_estimators=200, n_jobs=-1,\n       nthread=None, objective='reg:linear', random_state=0, reg_alpha=0,\n       reg_lambda=1, scale_pos_weight=1, seed=None, silent=True,\n       subsample=0.8, tree_method='gpu_hist')"},"metadata":{}}]},{"metadata":{"trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"# building model for M1\nmodel1 = xgb.XGBRegressor(\n    n_estimators=1000, \n    learning_rate=0.2,\n    max_depth = 9,\n    n_jobs=-1,\n    random_state=0,\n    subsample=0.8,\n    tree_method='gpu_hist'\n)\n\nto_drop = ['M0', 'M1']\n\nmodel1.fit(\n    X['train'].drop(to_drop,axis=1), X['train']['M1'], \n    eval_set=[(X['valid'].drop(to_drop,axis=1), X['valid']['M1'])], \n    eval_metric='mae',early_stopping_rounds=20)","execution_count":11,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n  if getattr(data, 'base', None) is not None and \\\n/opt/conda/lib/python3.6/site-packages/xgboost/core.py:588: FutureWarning: Series.base is deprecated and will be removed in a future version\n  data.base is not None and isinstance(data, np.ndarray) \\\n","name":"stderr"},{"output_type":"stream","text":"[0]\tvalidation_0-mae:0.435557\nWill train until validation_0-mae hasn't improved in 20 rounds.\n[1]\tvalidation_0-mae:0.357632\n[2]\tvalidation_0-mae:0.300736\n[3]\tvalidation_0-mae:0.257991\n[4]\tvalidation_0-mae:0.225866\n[5]\tvalidation_0-mae:0.201926\n[6]\tvalidation_0-mae:0.184212\n[7]\tvalidation_0-mae:0.171067\n[8]\tvalidation_0-mae:0.161512\n[9]\tvalidation_0-mae:0.154406\n[10]\tvalidation_0-mae:0.149263\n[11]\tvalidation_0-mae:0.145523\n[12]\tvalidation_0-mae:0.14271\n[13]\tvalidation_0-mae:0.140618\n[14]\tvalidation_0-mae:0.139046\n[15]\tvalidation_0-mae:0.137851\n[16]\tvalidation_0-mae:0.136968\n[17]\tvalidation_0-mae:0.136211\n[18]\tvalidation_0-mae:0.135689\n[19]\tvalidation_0-mae:0.135229\n[20]\tvalidation_0-mae:0.134795\n[21]\tvalidation_0-mae:0.134432\n[22]\tvalidation_0-mae:0.134114\n[23]\tvalidation_0-mae:0.133812\n[24]\tvalidation_0-mae:0.133576\n[25]\tvalidation_0-mae:0.133354\n[26]\tvalidation_0-mae:0.133226\n[27]\tvalidation_0-mae:0.132964\n[28]\tvalidation_0-mae:0.132753\n[29]\tvalidation_0-mae:0.132648\n[30]\tvalidation_0-mae:0.132512\n[31]\tvalidation_0-mae:0.132353\n[32]\tvalidation_0-mae:0.132147\n[33]\tvalidation_0-mae:0.132042\n[34]\tvalidation_0-mae:0.131888\n[35]\tvalidation_0-mae:0.131749\n[36]\tvalidation_0-mae:0.131684\n[37]\tvalidation_0-mae:0.131621\n[38]\tvalidation_0-mae:0.131508\n[39]\tvalidation_0-mae:0.13144\n[40]\tvalidation_0-mae:0.131322\n[41]\tvalidation_0-mae:0.131202\n[42]\tvalidation_0-mae:0.131151\n[43]\tvalidation_0-mae:0.13105\n[44]\tvalidation_0-mae:0.131017\n[45]\tvalidation_0-mae:0.130941\n[46]\tvalidation_0-mae:0.130833\n[47]\tvalidation_0-mae:0.130772\n[48]\tvalidation_0-mae:0.130696\n[49]\tvalidation_0-mae:0.130587\n[50]\tvalidation_0-mae:0.130538\n[51]\tvalidation_0-mae:0.130455\n[52]\tvalidation_0-mae:0.130394\n[53]\tvalidation_0-mae:0.130302\n[54]\tvalidation_0-mae:0.13017\n[55]\tvalidation_0-mae:0.130106\n[56]\tvalidation_0-mae:0.130062\n[57]\tvalidation_0-mae:0.12998\n[58]\tvalidation_0-mae:0.129912\n[59]\tvalidation_0-mae:0.129896\n[60]\tvalidation_0-mae:0.129817\n[61]\tvalidation_0-mae:0.129783\n[62]\tvalidation_0-mae:0.129707\n[63]\tvalidation_0-mae:0.129635\n[64]\tvalidation_0-mae:0.129607\n[65]\tvalidation_0-mae:0.129571\n[66]\tvalidation_0-mae:0.129549\n[67]\tvalidation_0-mae:0.129468\n[68]\tvalidation_0-mae:0.12942\n[69]\tvalidation_0-mae:0.129369\n[70]\tvalidation_0-mae:0.129336\n[71]\tvalidation_0-mae:0.129273\n[72]\tvalidation_0-mae:0.129183\n[73]\tvalidation_0-mae:0.129123\n[74]\tvalidation_0-mae:0.129097\n[75]\tvalidation_0-mae:0.129043\n[76]\tvalidation_0-mae:0.129022\n[77]\tvalidation_0-mae:0.128966\n[78]\tvalidation_0-mae:0.128938\n[79]\tvalidation_0-mae:0.128903\n[80]\tvalidation_0-mae:0.128852\n[81]\tvalidation_0-mae:0.128786\n[82]\tvalidation_0-mae:0.128697\n[83]\tvalidation_0-mae:0.128648\n[84]\tvalidation_0-mae:0.1286\n[85]\tvalidation_0-mae:0.12856\n[86]\tvalidation_0-mae:0.128527\n[87]\tvalidation_0-mae:0.128517\n[88]\tvalidation_0-mae:0.128468\n[89]\tvalidation_0-mae:0.128437\n[90]\tvalidation_0-mae:0.128398\n[91]\tvalidation_0-mae:0.128379\n[92]\tvalidation_0-mae:0.128322\n[93]\tvalidation_0-mae:0.128289\n[94]\tvalidation_0-mae:0.128268\n[95]\tvalidation_0-mae:0.128215\n[96]\tvalidation_0-mae:0.128184\n[97]\tvalidation_0-mae:0.128153\n[98]\tvalidation_0-mae:0.128103\n[99]\tvalidation_0-mae:0.128064\n[100]\tvalidation_0-mae:0.128034\n[101]\tvalidation_0-mae:0.128004\n[102]\tvalidation_0-mae:0.127979\n[103]\tvalidation_0-mae:0.127936\n[104]\tvalidation_0-mae:0.127915\n[105]\tvalidation_0-mae:0.12784\n[106]\tvalidation_0-mae:0.127815\n[107]\tvalidation_0-mae:0.127794\n[108]\tvalidation_0-mae:0.12776\n[109]\tvalidation_0-mae:0.127744\n[110]\tvalidation_0-mae:0.127698\n[111]\tvalidation_0-mae:0.127636\n[112]\tvalidation_0-mae:0.127608\n[113]\tvalidation_0-mae:0.127571\n[114]\tvalidation_0-mae:0.127546\n[115]\tvalidation_0-mae:0.127504\n[116]\tvalidation_0-mae:0.127482\n[117]\tvalidation_0-mae:0.127421\n[118]\tvalidation_0-mae:0.127395\n[119]\tvalidation_0-mae:0.12737\n[120]\tvalidation_0-mae:0.127314\n[121]\tvalidation_0-mae:0.127286\n[122]\tvalidation_0-mae:0.127249\n[123]\tvalidation_0-mae:0.127225\n[124]\tvalidation_0-mae:0.127212\n[125]\tvalidation_0-mae:0.127176\n[126]\tvalidation_0-mae:0.127159\n[127]\tvalidation_0-mae:0.127133\n[128]\tvalidation_0-mae:0.127091\n[129]\tvalidation_0-mae:0.127066\n[130]\tvalidation_0-mae:0.127036\n[131]\tvalidation_0-mae:0.127013\n[132]\tvalidation_0-mae:0.127006\n[133]\tvalidation_0-mae:0.126974\n[134]\tvalidation_0-mae:0.126963\n[135]\tvalidation_0-mae:0.126935\n[136]\tvalidation_0-mae:0.126921\n[137]\tvalidation_0-mae:0.126889\n[138]\tvalidation_0-mae:0.126867\n[139]\tvalidation_0-mae:0.126842\n[140]\tvalidation_0-mae:0.12682\n[141]\tvalidation_0-mae:0.12679\n[142]\tvalidation_0-mae:0.126765\n[143]\tvalidation_0-mae:0.126748\n[144]\tvalidation_0-mae:0.126722\n[145]\tvalidation_0-mae:0.126694\n[146]\tvalidation_0-mae:0.126654\n[147]\tvalidation_0-mae:0.12663\n[148]\tvalidation_0-mae:0.126606\n[149]\tvalidation_0-mae:0.126573\n[150]\tvalidation_0-mae:0.126526\n[151]\tvalidation_0-mae:0.126511\n[152]\tvalidation_0-mae:0.12649\n[153]\tvalidation_0-mae:0.126457\n[154]\tvalidation_0-mae:0.126437\n[155]\tvalidation_0-mae:0.126405\n[156]\tvalidation_0-mae:0.12639\n[157]\tvalidation_0-mae:0.126376\n[158]\tvalidation_0-mae:0.12636\n[159]\tvalidation_0-mae:0.12633\n[160]\tvalidation_0-mae:0.126311\n[161]\tvalidation_0-mae:0.126299\n[162]\tvalidation_0-mae:0.126272\n[163]\tvalidation_0-mae:0.126263\n[164]\tvalidation_0-mae:0.126245\n[165]\tvalidation_0-mae:0.126232\n[166]\tvalidation_0-mae:0.126217\n[167]\tvalidation_0-mae:0.126189\n[168]\tvalidation_0-mae:0.126168\n[169]\tvalidation_0-mae:0.126151\n[170]\tvalidation_0-mae:0.126121\n[171]\tvalidation_0-mae:0.126096\n[172]\tvalidation_0-mae:0.126084\n[173]\tvalidation_0-mae:0.12607\n[174]\tvalidation_0-mae:0.126065\n[175]\tvalidation_0-mae:0.126047\n[176]\tvalidation_0-mae:0.126024\n[177]\tvalidation_0-mae:0.126\n[178]\tvalidation_0-mae:0.125982\n[179]\tvalidation_0-mae:0.125967\n[180]\tvalidation_0-mae:0.125958\n[181]\tvalidation_0-mae:0.125949\n[182]\tvalidation_0-mae:0.125936\n[183]\tvalidation_0-mae:0.125911\n[184]\tvalidation_0-mae:0.125888\n[185]\tvalidation_0-mae:0.125876\n[186]\tvalidation_0-mae:0.12586\n[187]\tvalidation_0-mae:0.12583\n[188]\tvalidation_0-mae:0.125806\n[189]\tvalidation_0-mae:0.125773\n[190]\tvalidation_0-mae:0.125757\n[191]\tvalidation_0-mae:0.125741\n[192]\tvalidation_0-mae:0.125726\n[193]\tvalidation_0-mae:0.125711\n[194]\tvalidation_0-mae:0.125691\n[195]\tvalidation_0-mae:0.125683\n[196]\tvalidation_0-mae:0.125666\n[197]\tvalidation_0-mae:0.125654\n[198]\tvalidation_0-mae:0.125635\n[199]\tvalidation_0-mae:0.125616\n","name":"stdout"},{"output_type":"execute_result","execution_count":11,"data":{"text/plain":"XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n       colsample_bytree=1, gamma=0, importance_type='gain',\n       learning_rate=0.2, max_delta_step=0, max_depth=9,\n       min_child_weight=1, missing=None, n_estimators=200, n_jobs=-1,\n       nthread=None, objective='reg:linear', random_state=0, reg_alpha=0,\n       reg_lambda=1, scale_pos_weight=1, seed=None, silent=True,\n       subsample=0.8, tree_method='gpu_hist')"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"X['infer'].loc[:, 'M0'] = model0.predict(X['infer'])\nX['infer'].loc[:, 'M1'] = model1.predict(X['infer'].drop('M0', axis=1))","execution_count":17,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('{}, {}, {}'.format(X['train'].shape, X['valid'].shape, X['infer'].shape))","execution_count":18,"outputs":[{"output_type":"stream","text":"(3726517, 37), (931630, 37), (2505542, 37)\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = xgb.XGBRegressor(\n    n_estimators=10000, \n    learning_rate=0.2,\n    max_depth = 9,\n    n_jobs=-1,\n    random_state=0,\n    subsample=0.8,\n    tree_method='gpu_hist'\n)","execution_count":19,"outputs":[]},{"metadata":{"_kg_hide-output":true,"trusted":true},"cell_type":"code","source":"model.fit(\n    X['train'], y['train'], \n    eval_set=[(X['valid'], y['valid'])], \n    eval_metric='mae',early_stopping_rounds=20)","execution_count":20,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/xgboost/core.py:587: FutureWarning: Series.base is deprecated and will be removed in a future version\n  if getattr(data, 'base', None) is not None and \\\n","name":"stderr"},{"output_type":"stream","text":"[0]\tvalidation_0-mae:14.7885\nWill train until validation_0-mae hasn't improved in 20 rounds.\n[1]\tvalidation_0-mae:12.0505\n[2]\tvalidation_0-mae:9.87514\n[3]\tvalidation_0-mae:8.15362\n[4]\tvalidation_0-mae:6.78333\n[5]\tvalidation_0-mae:5.69347\n[6]\tvalidation_0-mae:4.82501\n[7]\tvalidation_0-mae:4.13754\n[8]\tvalidation_0-mae:3.59469\n[9]\tvalidation_0-mae:3.16657\n[10]\tvalidation_0-mae:2.83448\n[11]\tvalidation_0-mae:2.58268\n[12]\tvalidation_0-mae:2.39281\n[13]\tvalidation_0-mae:2.2542\n[14]\tvalidation_0-mae:2.149\n[15]\tvalidation_0-mae:2.07821\n[16]\tvalidation_0-mae:2.02341\n[17]\tvalidation_0-mae:1.98461\n[18]\tvalidation_0-mae:1.95686\n[19]\tvalidation_0-mae:1.93923\n[20]\tvalidation_0-mae:1.92495\n[21]\tvalidation_0-mae:1.91282\n[22]\tvalidation_0-mae:1.9023\n[23]\tvalidation_0-mae:1.89354\n[24]\tvalidation_0-mae:1.88783\n[25]\tvalidation_0-mae:1.88257\n[26]\tvalidation_0-mae:1.87738\n[27]\tvalidation_0-mae:1.87339\n[28]\tvalidation_0-mae:1.86678\n[29]\tvalidation_0-mae:1.86278\n[30]\tvalidation_0-mae:1.85743\n[31]\tvalidation_0-mae:1.85318\n[32]\tvalidation_0-mae:1.85076\n[33]\tvalidation_0-mae:1.8469\n[34]\tvalidation_0-mae:1.84306\n[35]\tvalidation_0-mae:1.84108\n[36]\tvalidation_0-mae:1.83753\n[37]\tvalidation_0-mae:1.83365\n[38]\tvalidation_0-mae:1.83227\n[39]\tvalidation_0-mae:1.83048\n[40]\tvalidation_0-mae:1.82701\n[41]\tvalidation_0-mae:1.82458\n[42]\tvalidation_0-mae:1.82232\n[43]\tvalidation_0-mae:1.8169\n[44]\tvalidation_0-mae:1.81392\n[45]\tvalidation_0-mae:1.81247\n[46]\tvalidation_0-mae:1.81111\n[47]\tvalidation_0-mae:1.81029\n[48]\tvalidation_0-mae:1.80725\n[49]\tvalidation_0-mae:1.8036\n[50]\tvalidation_0-mae:1.80238\n[51]\tvalidation_0-mae:1.80158\n[52]\tvalidation_0-mae:1.79953\n[53]\tvalidation_0-mae:1.79766\n[54]\tvalidation_0-mae:1.79532\n[55]\tvalidation_0-mae:1.79371\n[56]\tvalidation_0-mae:1.79221\n[57]\tvalidation_0-mae:1.79047\n[58]\tvalidation_0-mae:1.78912\n[59]\tvalidation_0-mae:1.78824\n[60]\tvalidation_0-mae:1.78674\n[61]\tvalidation_0-mae:1.78467\n[62]\tvalidation_0-mae:1.78289\n[63]\tvalidation_0-mae:1.78183\n[64]\tvalidation_0-mae:1.78014\n[65]\tvalidation_0-mae:1.77878\n[66]\tvalidation_0-mae:1.77727\n[67]\tvalidation_0-mae:1.77682\n[68]\tvalidation_0-mae:1.77408\n[69]\tvalidation_0-mae:1.77192\n[70]\tvalidation_0-mae:1.77012\n[71]\tvalidation_0-mae:1.76939\n[72]\tvalidation_0-mae:1.7669\n[73]\tvalidation_0-mae:1.76563\n[74]\tvalidation_0-mae:1.76438\n[75]\tvalidation_0-mae:1.76357\n[76]\tvalidation_0-mae:1.76199\n[77]\tvalidation_0-mae:1.76086\n[78]\tvalidation_0-mae:1.75864\n[79]\tvalidation_0-mae:1.75791\n[80]\tvalidation_0-mae:1.75703\n[81]\tvalidation_0-mae:1.75641\n[82]\tvalidation_0-mae:1.75518\n[83]\tvalidation_0-mae:1.75377\n[84]\tvalidation_0-mae:1.75291\n[85]\tvalidation_0-mae:1.7524\n[86]\tvalidation_0-mae:1.7515\n[87]\tvalidation_0-mae:1.75037\n[88]\tvalidation_0-mae:1.74899\n[89]\tvalidation_0-mae:1.74848\n[90]\tvalidation_0-mae:1.74745\n[91]\tvalidation_0-mae:1.74613\n[92]\tvalidation_0-mae:1.74477\n[93]\tvalidation_0-mae:1.74343\n[94]\tvalidation_0-mae:1.74255\n[95]\tvalidation_0-mae:1.74233\n[96]\tvalidation_0-mae:1.7409\n[97]\tvalidation_0-mae:1.73997\n[98]\tvalidation_0-mae:1.73868\n[99]\tvalidation_0-mae:1.73821\n[100]\tvalidation_0-mae:1.7376\n[101]\tvalidation_0-mae:1.73676\n[102]\tvalidation_0-mae:1.73607\n[103]\tvalidation_0-mae:1.73532\n[104]\tvalidation_0-mae:1.73354\n[105]\tvalidation_0-mae:1.73292\n[106]\tvalidation_0-mae:1.73208\n[107]\tvalidation_0-mae:1.73083\n[108]\tvalidation_0-mae:1.73037\n[109]\tvalidation_0-mae:1.72982\n[110]\tvalidation_0-mae:1.72898\n[111]\tvalidation_0-mae:1.72822\n[112]\tvalidation_0-mae:1.72759\n[113]\tvalidation_0-mae:1.72697\n[114]\tvalidation_0-mae:1.72636\n[115]\tvalidation_0-mae:1.72507\n[116]\tvalidation_0-mae:1.72398\n[117]\tvalidation_0-mae:1.72332\n[118]\tvalidation_0-mae:1.72227\n[119]\tvalidation_0-mae:1.72111\n[120]\tvalidation_0-mae:1.72058\n[121]\tvalidation_0-mae:1.71969\n[122]\tvalidation_0-mae:1.71945\n[123]\tvalidation_0-mae:1.71836\n[124]\tvalidation_0-mae:1.71741\n[125]\tvalidation_0-mae:1.71668\n[126]\tvalidation_0-mae:1.71629\n[127]\tvalidation_0-mae:1.71593\n[128]\tvalidation_0-mae:1.71539\n[129]\tvalidation_0-mae:1.71461\n[130]\tvalidation_0-mae:1.71365\n[131]\tvalidation_0-mae:1.71305\n[132]\tvalidation_0-mae:1.71188\n[133]\tvalidation_0-mae:1.7117\n[134]\tvalidation_0-mae:1.71115\n[135]\tvalidation_0-mae:1.71075\n[136]\tvalidation_0-mae:1.71015\n[137]\tvalidation_0-mae:1.7098\n[138]\tvalidation_0-mae:1.70905\n[139]\tvalidation_0-mae:1.70861\n[140]\tvalidation_0-mae:1.70826\n[141]\tvalidation_0-mae:1.70805\n[142]\tvalidation_0-mae:1.70741\n[143]\tvalidation_0-mae:1.70634\n[144]\tvalidation_0-mae:1.70586\n[145]\tvalidation_0-mae:1.70537\n[146]\tvalidation_0-mae:1.70432\n[147]\tvalidation_0-mae:1.70381\n[148]\tvalidation_0-mae:1.70341\n[149]\tvalidation_0-mae:1.70265\n[150]\tvalidation_0-mae:1.70214\n[151]\tvalidation_0-mae:1.70189\n[152]\tvalidation_0-mae:1.70133\n[153]\tvalidation_0-mae:1.70061\n[154]\tvalidation_0-mae:1.70018\n[155]\tvalidation_0-mae:1.69952\n[156]\tvalidation_0-mae:1.69922\n[157]\tvalidation_0-mae:1.69888\n[158]\tvalidation_0-mae:1.69837\n[159]\tvalidation_0-mae:1.69773\n[160]\tvalidation_0-mae:1.69695\n[161]\tvalidation_0-mae:1.69631\n[162]\tvalidation_0-mae:1.6956\n[163]\tvalidation_0-mae:1.69539\n[164]\tvalidation_0-mae:1.69491\n[165]\tvalidation_0-mae:1.69404\n[166]\tvalidation_0-mae:1.69379\n[167]\tvalidation_0-mae:1.69323\n[168]\tvalidation_0-mae:1.69291\n[169]\tvalidation_0-mae:1.69257\n[170]\tvalidation_0-mae:1.6922\n[171]\tvalidation_0-mae:1.69204\n[172]\tvalidation_0-mae:1.69186\n[173]\tvalidation_0-mae:1.69147\n[174]\tvalidation_0-mae:1.6908\n[175]\tvalidation_0-mae:1.69003\n[176]\tvalidation_0-mae:1.68945\n[177]\tvalidation_0-mae:1.68924\n[178]\tvalidation_0-mae:1.68882\n[179]\tvalidation_0-mae:1.68836\n[180]\tvalidation_0-mae:1.68817\n[181]\tvalidation_0-mae:1.6879\n[182]\tvalidation_0-mae:1.68749\n[183]\tvalidation_0-mae:1.68689\n[184]\tvalidation_0-mae:1.6865\n[185]\tvalidation_0-mae:1.68603\n[186]\tvalidation_0-mae:1.68567\n[187]\tvalidation_0-mae:1.68533\n[188]\tvalidation_0-mae:1.68501\n[189]\tvalidation_0-mae:1.68446\n[190]\tvalidation_0-mae:1.6842\n[191]\tvalidation_0-mae:1.68375\n[192]\tvalidation_0-mae:1.68312\n[193]\tvalidation_0-mae:1.68276\n[194]\tvalidation_0-mae:1.68261\n[195]\tvalidation_0-mae:1.68182\n[196]\tvalidation_0-mae:1.68144\n[197]\tvalidation_0-mae:1.68099\n[198]\tvalidation_0-mae:1.68\n[199]\tvalidation_0-mae:1.67935\n","name":"stdout"},{"output_type":"execute_result","execution_count":20,"data":{"text/plain":"XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n       colsample_bytree=1, gamma=0, importance_type='gain',\n       learning_rate=0.2, max_delta_step=0, max_depth=9,\n       min_child_weight=1, missing=None, n_estimators=200, n_jobs=-1,\n       nthread=None, objective='reg:linear', random_state=0, reg_alpha=0,\n       reg_lambda=1, scale_pos_weight=1, seed=None, silent=True,\n       subsample=0.8, tree_method='gpu_hist')"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"f, ax = plt.subplots(1,1, figsize=(17,8))\nxgb.plot_importance(model, ax)","execution_count":21,"outputs":[{"output_type":"execute_result","execution_count":21,"data":{"text/plain":"<matplotlib.axes._subplots.AxesSubplot at 0x7f03fa1dfbe0>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 1224x576 with 1 Axes>","image/png":"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q0/2PatXjmP9mGtP9nKRUvH5fEd94RMpiW3btlG5cmVq1apFfn4+7733HkOGDGHXrl189dVXNG3alPfee4/ExEQAVq5cyYQJE/D5fKEiAcCMGTNCr6dNm8by5ctVJBARERE5Q5S7QoGZ/QoYBlzlnCs4QfdDexTUBT4xs27OubllH6WISHRs2bKFvn374vf7OXjwIL169SIzM5MpU6bQo0cPKlWqRO3atXn++ecBGDx4MPn5+fzud78D4Pzzz2fuXP0xKSIiInImK1eFguC+BM8A1zjnfizpdc657WY2FHgQ0L+ARaTCSk1NZeXKlUcCpG4jAAAgAElEQVS1d+/ene7dux/V/v77759w2VpWVhZZWVmnMUoRERERiWUx+3hE4Cwzyw37uQ8YByQArwUfaViaL/1vBcdsXybRioiIiIiIiFQAMbuiwDlXXBFjQimu3wgkhx07IO2IPt6TDE9ERERERESkQorlFQUiIiIiIiIiEmHlvlBgZinB2xDCfz6LdlwiIpG2f/9+WrduTVpaGklJSYwcORKAhQsX0rJlSzweD+3atWPDhg0AFBQU0Lt3b2666SbatGnDxo0bASgsLKRv376kpKSQmJjI6NGjozUlEREREYmCmL31oKScc2sAT7TjEBGJtqpVq7Jo0SISEhIoLCykXbt2ZGRkcMcddzBnzhwSExP53//9Xx555BGmTZvGc889R+3atZkxYwY//PADQ4YMYdasWbz22msUFBSwZs0a9u3bR/PmzenTpw9NmjSJ9hRFREREJAJickWBmeUV03afma0zs9VmttDMLjjO9U3MLD+4umCdmb1oZpWD57xmtit4brWZvW9m9Y81lohIeWFmJCQkAIFVAYWFhZgZZsbu3bsB2LVrFw0bNgRgzpw59O3bF4CePXuycOFCnHOYGXv37qWoqIj8/HyqVKlCzZo1ozMpEREREYm48rSiYCXQyjm3z8zuAMYCvY/T/xvnnMfM4oD3gF7AjOC5j5xzmQBmNhq4Cxh5vDfPL/TTZGj2qc5BpEQGpRSRpXyTUtg45loA/H4/6enpbNiwgbvuuos2bdowdepUunbtSvXq1alZsyZLliwBYPPmzTRu3JgNGzYQHx/POeecw44dO+jZsydz5szh3HPPZd++fTz++OPUqVMnmtMTERERkQgqN4UC59zisMMlwM0lvM5vZkuB8448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+OKLUPvAgQMZO3YslSpV+D/+REREREROSoW+9cDM0oEbAA+BuX4OrACygNlmdjdwDdDmRGPlF/ppMjS77IIVCTMopYgs5RsAG8dcG3qdl5dHjx49mDhxIjVr1uTPf/4zjz/+OD169ODVV1/ltttu4/3336dly5Z8++23JCQkMH/+fH7zm9/w9ddfM2/ePOrXr096enroFgURERERETmcOeeiHUOZMbOBQB3n3Ijg8QTge+fceDP7EzACuNI5t/IY1/cD+gHUrVsvfcTEKRGKXM50DarD1vxoRxEbUs47B4CioiIefPBBLr/8cnr16gVAZmYmf//73zEznHNkZmaSnX10geWGG27gmWee4dVXX+Xdd98lLi6OAwcOsG/fPtq3b8+wYcMiOqdYk5eXR0JCQrTDkDOIck4iSfkmkaR8k0gqbb517NhxhXOuVUn6VugVBSeQAvwM1D9WB+fcs8CzAM2aNXN333R9hEKTM53P56OX1xvtMGKGc46+ffvyy1/+kokTJ4baGzdujJnh9XpZuHAhl112GV6vlx9++IEGDRpgZixdupQqVarQrVs3rr/+P/8N+3w+xo8ff8wND88kPp8Pr/JNIkg5J5GkfJNIUr5JJJVlvlX0QsGHwDQzG01grtcBz5jZb4E6QAdgnpm1ds79HMU4ReQ4PvnkE1566SVSUlLweDwA/M///A9TpkzhnnvuoaioiGrVqvHss88CMHv2bJ566ini4+OpXr06M2fOxMyiOQURERERkXKjQhcKnHOfm9ksYBXwI7AseGoMcLVzbpOZTQYmAX2jFKaInEC7du041m1SK1asOKqtf//+9O/f/7hjer1eVfxFRERERIpRoQsFAM65R4Ejn2owPuz8E5GNSERERERERCR26flgIiIiIiIiIhKiQoGIiIiIiIiIhKhQICIxZ9OmTXTs2JHmzZuTlJTEpEmTAMjJyeGKK67A4/HQqlUrli5dCgSeijBgwAAuueQSUlNT+fzzz0NjDRkyhOTkZJKTk5k1a1ZU5iMiIiIiUp6Uiz0KzKwJMM85lxzlUEQkAuLj43nsscdo2bIle/bsIT09nc6dO/PAAw8wcuRIMjIymD9/Pg888AA+n4+3336br7/+mq+//prPPvuMO+64g88++4zs7Gw+//xzcnJyKCgowOv1kpGRQc2aNaM9RRERERGRmKUVBSISc849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vZWZM2cyb948pk+fTkFBAevWrWPVqlXk5eXRt29fTjrpJI499lgAfvzxR55//nlmzpwZ02cREREREZGfr0YUCn4uM2sEpAKT9uv6K3A2sAFYD+wt5/4JwASA1q3bcENyQfSCFSnmqMbhYkEsBYNBAAoKCrjmmmtITU2lZcuWkfafdOnShWnTpjFgwAB+/PFHEhISeO+99wDo1q0bTzzxBOnp6QC8+eabdO7cmY8++oiPPvoohk8jhyIUCpX6exaJJuWcxJLyTWJJ+SaxFM18q62FgmPMLBPoDLzg7hv3638KeBI4DlgC/J+yJnH3BcACgISEBL/8/DOiF7FIMcFgkHOKvmzHkrszduxY+vXrV+KUgk8//ZRu3boBcM8995CSkkJ6ejpHHXUUl112Gf379+fHH3/kyy+/5Pbbb6dHjx4A3HfffVxyySWRwoFUT8FgUH9HElPKOYkl5ZvEkvJNYima+VZbCwX/dPeAmbUG1pjZb939+Z863X27meUDgwivNiizUCBS16xZs4bFixeTnJxMIBAAYMaMGSxcuJCsrCzq1atHx44due+++wBITExk6NCh9OzZk3r16nHRRRdFigS5ubm8/PLL3H///VX2PCIiIiIicuhqa6EAAHf/xsymAdcAz+/XfQPQtmgfg9gHJ1IN9e/fH3cv1T5s2LBy75k6dSpTp04t1d60aVO+/fbbSo1PRERERESirzqeetDEzLYU+5lsZieY2RbC+wrcb2YfHsJ8zxXNeXLxRnf/f+7+XGUGLiIiIiIiIlLTVbsVBe5eXvEivoL3ZwM9il070KvYkGAZ99xU4QBFREREREREarHquKJARERERERERKpIjS0UmFmymWXu9/NOVcclUl3l5OQwYMAAunfvTlJSEnPnzgXCewwcd9xx9OzZk5EjR7Jr1y4AsrOzady4MYFAgEAgwMSJEyNzLVmyhOTkZHr27MnQoUP55ptvquSZRERERESk8tXYQoG7f+Dugf1+Ussaa2ahWMcnUt00aNCA2bNns3nzZt5++23uvfdeNm/ezKBBg9i0aRMbN27k2GOPZebMmZF7jjnmGDIzM8nMzIycdFBQUMCkSZN47bXX2LhxIz179mTevHlV9VgiIiIiIlLJamyhQEQOTVxcHL179wagefPmJCYmsnXrVgYPHkyDBuHtSk466SS2bNlywHncHXcnNzcX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RGCYu79e9LPG3beY2W1Rjew/3gDONLPGZtYcOB3A3X8AXgLmU/Rl38yOABoUKxqUyd3fAY4G/gtYEsXYRWJizZo1LF68mFdffZVAIEAgEODFF1/k2WefJT4+nrfeeovhw4czZMiQnzWPiIiIiIjUHRVdUTAIuHq/ttPKaKt07r7ezJ4E3ie8meF7xbofB0YCK4vF+cp+U2SY2ZnFrk8qWg3xFBBw953RiVwkdvr374+7l9k3cuTIA9570003VWgeERERERGpGw5YKDCzi4FLgC5mtrFYV3NgTTQDK87dbwVuLaOrP/CwuxcWXQ8l/FrBT/ctAhaVM21/4K7Ki1JERERERESk5jvYioInCG8MOBOYVqx9t7t/F7WoKsDMngWOAX7zU5u7X1SB+44E3iV8MsKq6EUoIiIiIiIiUvMcsFDg7v8G/g2MATCztkAjoJmZNXP3L6MfYrmxHXg9dfn37QKOreRwRERERERERGqFCm1maGanm9mnwOfA60A2BziCUESiLycnhwEDBtC9e3eSkpKYO3cuAN999x2DBg2iW7duDBo0iJ07w9tw7Ny5k5EjR9KzZ09OPPFENm3aFJnrrrvuIikpiR49ejBmzBh++OGHKnkmERERERGpehU99eC/gZOAT9y9MzAQeDtqUVWAmd1kZlcdoD/OzFaaWScz21TeOJGaqkGDBsyePZvNmzfz9ttvc++997J582ZmzZrFwIED+fTTTxk4cCCzZs0CYMaMGQQCATZu3Mijjz7KpEmTANi6dSt33303a9euZdOmTRQWFrJ06dKqfDQREREREalCFS0U5BcdOVjPzOq5+2tAnyjGVRmGEj4+UaRWiouLo3fv3gA0b96cxMREtm7dyvLlyxk7diwAY8eO5bnnngNg8+bN/OY34S09jjvuOLKzs/nqq68AKCgoIC8vj4KCAvbs2UO7du2q4IlERERERKQ6qOjxiLvMrBmwGnjczHYAudELq2xmdi0wlvAxiTnAR2aWWWxIMtDF3b8gXCiYXs487YAXy7mvTHn5hXSa9sIvfAKRipmSXEDGAfIte9bwktfZ2WzYsIHU1FS++uor4uLiAPj1r38dKQb06tWLZ555hpNPPpl3332XL774gi1btpCSksJVV11Fhw4daNy4MYMHD2bw4MHRezgREREREanWKlooOAPIA64AzgeOAG6OVlBlMbMU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umYBA909p+gIxLnA3whvVFhchpmdWez6fML7HPRz90IzG2Vm49z94eg+iUjFXX/99WVWBydNmlSqrVmzZixbtqzMeZYsWVLZoYmIiIiISC1X7QsFAO5+K3Drfs13FOu/G8DMHgQeLNa+CFhUxpQnFRtzViWGKiIiIiIiIlKj1YhCQUW5+0VVHYOIiIiIiIhITVYT9igQERERERERkRhRoUAkCsaPH0/btm3p0aNHpO3cc88lEAgQCATo1KkTgUD4ZM78/HzGjh1LcnIyiYmJzJw5M3LPihUrSEhIoGvXrsyaNSvmzyEiIiIiInVPrXr1oCxmFnL3Zvu1pQFzgJ7Aee7+1yoJTmqtjIwMLrvsMn73u99F2p588snI5ylTpnDEEUcAsGzZMvbu3csHH3zAnj176N69O507d6awsJBLL72Ul19+mfj4eE444QR++9vf0r1795g/j4iIiIiI1B11dUXBl0AG8EQVxyG1VFpaGi1btiyzz9156qmnGDNmDABmRm5uLgUFBeTl5XHYYYfRpEkT3n33Xbp27UqXLl047LDDOO+881i+fHksH0NEREREROqgWr+ioCzung1gZvsqzyEFCwAAIABJREFUek9efiGdpr0QtZik9sieNfyA/atXr+aoo46iW7duAIwePZrly5cTFxfHnj17uOuuu2jRogVbt27l6KOPjtwXHx/PO++8E9XYRURERERE6uqKApEqs2TJkshqAoB3332X+vXrs23bNj7//HNmz57Ntm3bqjBCERERERGpy+rkioKKMrMJwASA1q3bcENyQRVHJDVBMBgEYPv27eTm5kauAQoLC3nyySe5//77I+1z5syhe/furFmzBoAuXbrw/vvv06FDB95///3IuDfeeKPE/CKVJRQKKa8kppRzEkvKN4kl5ZvEUjTzTYWCA3D3BcACgISEBL/8/DOqOCKpSbKzs2natCnp6emRthUrVpCcnMzZZ58daXvnnXf4+OOPSU9PJzc3ly+++ILRo0czduxYZs+eTceOHWnfvj2TJk3iiSeeICkpqQqeRmqzYDBYIk9Fok05J7GkfJNYUr5JLEUz3/TqgUgUjBkzhr59+5KVlUV8fDwLFy4EYOnSpSVeOwC49NJLCYVCJCUlccIJJzBu3DiOOeYYGjRowLx58xgyZAiJiYmcc845KhKIiIiIiEjU1YUVBU3MbEux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HHJycg5o69ChA/n5+dUdmoiIiIiISK2VNIUCdy/vCQ33lW0ws3pAa3cviJqbGbvIRERERERERI4dSVMoqKpgnYLeiY5DREREREREJBmV91d6EREREREREamlVCgQERERERERkQgVCiRmpkyZQnp6Ot26deP++++PtD/wwAN07tyZbt268fOf/xwIPyaxQYMGZGRkkJGRwQ033JCosEVERERERGq1pFijwMwK3b1xmbbbgO8DJcCnwCh3/yiq/2XgB8BTwO3u/nYcQ6713nvvPR555BGWLVvG8ccfz+DBg7n44ovZvHkzc+bMIT8/n3r16rF9+3+eatmxY0fy8vIq2auIiIiIiIjEWlIUCiqwEujt7nvM7EfAJGA4gJk1AFq4+5bgsYkSZ2vXruWss86iYcOGAPTv358XXniBt99+m3HjxlGvXj0AWrVqlcgwRUREREREpIykLRS4++KozaXAtVHbmUCoorlmdivQ3d1HmVl3YCbQ1933VDRnb3Ep7cfNO6qYa4uC3ItIT09n/Pjx7NixgwYNGvC3v/2N3r17s379el577TXGjx9P/fr1mTx5Mn369AFg48aN9OzZk6ZNm/LrX/+a888/P8FHIiIiIiIiUvskbaGgjOuBl6O2LwBmVzJ+ChAysyuA8cAPyysSmNloYDRAampLJnQvqb6Ij2GhUAiAyy67jHPOOYcGDRrQvn17Pv74Y3bv3s27775Lbm4u77//Ppek4DvgAAAgAElEQVReeil//vOfKS4u5s9//jMnnHAC69atY+jQoTz++OM0atQosQeTIIWFhZHvo0isKd8k3pRzEk/KN4kn5ZvEUyzzzdw9JjuuTuWtURDVdy1wM9Df3b8O2t4BznH3fWYWopw1CsysA7AKeNjdf3aoGNLS0nzdunVHeSS115133knbtm2ZO3cuY8eOZcCAAUB4XYKlS5fSsmXLA8ZnZmYyefJkevfunYhwEy4UCpGZmZnoMKSWUL5JvCnnJJ6UbxJPyjeJp8PNNzN7x92r9AErqa8oMLPvEL4iILpI0AHY7O77DjG9E1AInBzbKGuv7du306pVKzZt2sQLL7zA0qVLOe6441i8eDEDBgxg/fr17Nu3j9TUVD799FOaN29OSkoK//rXv9iwYQMdOnRI9CGIiIiIiIjUOklbKDCznsDDwGB33x7VdQEw/xBzTwB+D/QD/mBm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Zi8A5wElQC9geTCmAbC9gn1PBaYCnNLhNL/33cR+uwpGZrJgwQLeeecdcnJy+Oqrr/jiiy+YNm0aTz31FHfffTd16tThueee47jjDr6rJDMzkylTppCenk5qamoCjkCqKhQKkZmZmegwpJZQvkm8KecknpRvEk/KN4mnWOZb0hcKAk8QvoLgauC6qPayl0s4YMAMd7/jcN6gQd0U1gWX/ifSxIkTI1cQhEIhJk+ezFNPPcW0adNYsGABixYtOqBI8MEHH9CxY0fMjBUrVvD111/TokWLRIUvIiIiIiIiNVyyFgq+BJpEbU8HlgGfuPuaqPYsM2sO7AUuB0YRvg1hjpn9zt23B/1N3P2j+IQeGzfccAPt2rXjnHPOAWDIkCFMmDCB559/nieeeIK6devSoEEDnn32WS1oKCIiIiIiIhVKykKBu+8wszfM7D3gZXcfY2Zrgdllhi4DngfaEl7M8G0AM/sf4BUzOw4oBm4Ckq5QkJmZGbnUpKSkpNwxY8eOZezYsXGMSkRERERERJJZUhYKANz9mv2vzawh4QUMZ5YZtsXdLy9n7rPAs7GNUERERERERCT5HLziXZIxs+8Aa4EH3H13ouMRERERERERSWZJe0XBfu7+d6BdOe3TCa9dICIiIiIiIiJVlPRXFCTKV199Rd++fTnjjDPo1q0bv/zlLwF49dVXOfPMM0lPTyc7O7vCtQNEREREREREaqJaVygws/8Nblc4KvXq1ePVV18lPz+fvLw85s+fzz//+U+ys7N55plneO+992jXrh0zZsyojrBFRERERERE4qLWFQrcfUJwu8IBzCzlcPZjZjRu3BiA4uJiiouLSUlJ4fjjj+f0008HICsri+eff746whYRERERERGJi6QvFJhZezN738yeNrO1ZjbLzBqa2QQzW25m75nZVDOzYPx0M7syeF1gZr81sxXAVZW9z97iUtqPm0f7cfMibaWlpWRkZNCqVSuysrLo27cvJSUlvP322wDMmjWLzZs3x+zYRURERERERKpb0hcKAmnAH929C/AFcCPwB3fv4+7pQAPg4grm7nD3M939mcN905SUFPLy8tiyZQvLli1j9erVPPPMM9x666307duXJk2akJJyWBcqiIiIiIiIiCSUuXuiYzgqZtYeWOLupwTb3wZ+DDwJ/BxoCDQn/PjEXDObDvzV3WeZWQHQ390/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\n"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"predictions = dict()\n\npredictions['train'] = model.predict(X['train'])\npredictions['valid'] = model.predict(X['valid'])\npredictions['infer'] = model.predict(X['infer'])","execution_count":22,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"metric(y['train'], predictions['train'], X['train']['type'])","execution_count":23,"outputs":[{"output_type":"execute_result","execution_count":23,"data":{"text/plain":"0.498451469596639"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"metric(y['valid'], predictions['valid'], X['valid']['type'])","execution_count":24,"outputs":[{"output_type":"execute_result","execution_count":24,"data":{"text/plain":"0.49763941223703284"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission = {\n    'id' : pd.read_csv('../input/test.csv', index_col='id').index,\n    'scalar_coupling_constant' : predictions['infer']\n}","execution_count":25,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/numpy/lib/arraysetops.py:569: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n  mask |= (ar1 == a)\n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission = pd.DataFrame(submission)\nsubmission.to_csv('submision_12.csv', index=False)","execution_count":26,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.head()","execution_count":27,"outputs":[{"output_type":"execute_result","execution_count":27,"data":{"text/plain":"        id  scalar_coupling_constant\n0  4658147                 14.104448\n1  4658148                194.247223\n2  4658149                  2.361309\n3  4658150                194.247223\n4  4658151                 14.104448","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>scalar_coupling_constant</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>4658147</td>\n      <td>14.104448</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>4658148</td>\n      <td>194.247223</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>4658149</td>\n      <td>2.361309</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>4658150</td>\n      <td>194.247223</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>4658151</td>\n      <td>14.104448</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}