{"cells":[{"metadata":{},"cell_type":"markdown","source":"### EDA+: make 'trivial predictions' to get a baseline\n\n(for basic EDA, see this kernel: https://www.kaggle.com/rpeer333/molecular-properties-detailed-eda)\n\nAfter EDA but efore starting to build models, it makes sense to get an idea, how large the loss would when making trivial predictions, such as:\n\n* always predicting the median\n* only using the distance between the j-coupled atoms for (univariate) regression\n* always prediting the median per type of j-coupling\n* etc.\n\nOnly features that are already available easy to compute are used for this purpose to get an idea of their relatlive importance.\n\nIt also establishes a base-line: Any model that is not way better than these trivial predictions is clearly not working and it's time to move on to the next idea."},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"import os\nfrom os.path import join\n\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn import metrics\nfrom sklearn.linear_model import LinearRegression","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"DATA_DIR = '../input/champs-scalar-coupling'\ntrain_all = pd.read_csv(join(DATA_DIR, 'train.csv'))\ntest = pd.read_csv(join(DATA_DIR, 'test.csv'))\nstructures = pd.read_csv(join(DATA_DIR, 'structures.csv'))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Add simple features"},{"metadata":{"trusted":true},"cell_type":"code","source":"def map_atom_info(df, atom_idx, structures_df=structures):\n    \"\"\"\n    From this kernel:\n    https://www.kaggle.com/seriousran/just-speed-up-calculate-distance-from-benchmark\n    \"\"\"\n    df = pd.merge(df, structures_df, how = 'left',\n                  left_on  = ['molecule_name', f'atom_index_{atom_idx}'],\n                  right_on = ['molecule_name',  'atom_index'])\n    \n    df = df.drop('atom_index', axis=1)\n    df = df.rename(columns={'atom': f'atom_{atom_idx}',\n                            'x': f'x_{atom_idx}',\n                            'y': f'y_{atom_idx}',\n                            'z': f'z_{atom_idx}'})\n    return df\n\n\ntrain_all = map_atom_info(train_all, 0)\ntrain_all = map_atom_info(train_all, 1)\n\ntest = map_atom_info(test, 0)\ntest = map_atom_info(test, 1)\n\ntrain_all.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# code in this cell is from:\n# https://www.kaggle.com/rpeer333/brute-force-feature-engineering/edit\n\ntrain_p_0 = train_all[['x_0', 'y_0', 'z_0']].values\ntrain_p_1 = train_all[['x_1', 'y_1', 'z_1']].values\ntest_p_0 = test[['x_0', 'y_0', 'z_0']].values\ntest_p_1 = test[['x_1', 'y_1', 'z_1']].values\n\ntrain_all['dist'] = np.linalg.norm(train_p_0 - train_p_1, axis=1)\ntest['dist'] = np.linalg.norm(test_p_0 - test_p_1, axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def add_sc_type_features(df, one_hot=False):\n    assert 'type' in df.columns\n    \n    df['bonds']    = df.type.map(lambda x: int(x[0]))\n    df['atom_pair'] = df.type.map(lambda x: x[2:4])\n    \n    if one_hot:\n        df = pd.get_dummies(df, prefix='bonds')\n        df = pd.get_dummies(df, prefix='atom_pair')\n    \n    return df\n\n\ntrain_all = add_sc_type_features(train_all)\ntest  = add_sc_type_features(test)\ntrain_all.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Split into training and validation-set"},{"metadata":{"trusted":true},"cell_type":"code","source":"is_train = np.random.rand(len(train_all)) < 0.8\n\nval   = train_all[~is_train].copy()\ntrain = train_all[is_train].copy()\nprint(f'training-fraction: {len(train) / (len(train) + len(val)):.4f}')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Context:\n\n#### From Competition description:\n![image.png](attachment:image.png)\n\nBest current score: -2.975  \nCurrent medal-score: <= -1.566\n\n#### Type-weights\n\nNote that the MAEs for all 8 types of sc are weighted equally regadless of their (very differnt) frequencies in the data-set.\n\nThe trivial predictions could probably be improved by simply adding weights to the data points such that the sum of weights for each of the 8 types is exactly 1/8.","attachments":{"image.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAtIAAAFvCAYAAABn1iycAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7snQm8T9X6/x9TJCGzKBGRqxIhQ+Ea0hVudFOXiwpFg6FU1xClSSTKUOhWFE2KW0muhEolmacyFBmiDEW5hvj3Wb+7vv999tnftfbe3+F8v+d81uv1fZ2z9177Wc96r7X3ftazn7V2rlN/JGEiARIgARIgARIgARIgARIIRCB3oNzMTAIkQAIkQAIkQAIkQAIkoAjQkGZHIAESIAESIAESIAESIIEQBGhIh4DGU0iABEiABEiABEiABEiAhjT7AAmQAAmQAAmQAAmQAAmEIEBDOgQ0nkICJEACJEACJEACJEACNKTZB0iABEiABEiABEiABEggBAEa0iGg8RQSIAESIAESIAESIAESoCHNPkACJEACJEACJEACJEACIQjQkA4BjaeQAAmQAAmQAAmQAAmQAA1p9gESIAESIAESIAESIAESCEGAhnQIaDyFBEiABEiABEiABEiABGhIsw+QAAmQAAmQAAmQAAmQQAgCNKRDQOMpJEACJEACJEACJEACJEBDmn2ABEiABEiABEiABEiABEIQoCEdAhpPIQESIAESIAESIAESIAEa0uwDJEACJEACJEACJEACJBCCQJYb0o888og8++yzIVTnKelAIFXb9/fff5c2bdrI+vXrsxxjqjKKN5iTJ0/KU089Jddff708/fTTvsXnFD6+gXhkTDSjRMv3qFK23pUInomQaWsEP/fRsNe9rexEH88KnqY6pZo+Jl2DHkv3uuUNWmGdf9u2bfLKK6/Ixo0b5fjx41KpUiXp3LmzXHjhhWFFxvW8oUOHyllnnSV9+/aNSW685MSkBE8mgYAE/vWvf8nXX38tI0aMCHhm4rKvWLFCFi9eLLhplitXLnEF+ZAMPm+//ba0bNlS7rzzzkxnfPXVVzJs2DApX768TJw4MdPxrNjRr18/+fbbb+XFF1+UokWLZoUKSS9Tt5NXwQ888IDUqVPH6xD3pRCBVLruUwgLVTEQSDe7K5RH+scff5T7779f8ubNK0OGDJHHHntMPRjx/44dOwx4knfo6quvlsaNG8dcYLzkxKwIBUQILFu2TG655Za0JJLOuscKfP/+/WpwW716dSlSpIinuGTyOf300+Wzzz6TEydOZNJl0aJF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u5TXGSEfH374oWzevFkuuOACdQwGdq1atTIV89JLL8ncuXMlX7580rFjR2ndunUkDzzekydPFoSR5M6dW5o1ayYID8mb9//URZx1hQoV5Pfff1cyZsyYobzkpnNwfqFChWTcuHGZdOEOEiABEiABEiABEiABEghKILBHGgXUrl1bGcuHDh1S5cFYrlKlipx99tlSsWLFiLcacdRr167NZEgvWbJEzjrrLBk5cqS0atVKGcAHDx6M6A5jF4b5xIkTZfTo0bJhwwaZPn16hrrNmzdP9uzZI/369VP7beeUL19eypYtm0EGN0iABEiABEiABEiABEggLIFQhjS8zaeffrqsXr1alQtDumbNmup/eJ91nDTiqHPlyiXVqlXLoB9CPdq2bSswbjt06KA8yzt37lR5YEDDE92rVy8pVqyYMn7btWsnCxYsyCADoSIDBgyQunXr+jrn4YcflkGDBmWQwQ0SIAESIAESIAESIAESCEsgVGhHnjx55JJLLlEGc/369ZVBjRU7kBD2MXv2bDl69KgysC+++OJISIZWskyZMhF98+fPr/4/fvy4+ovJiTCs+/TpE8kDz/aRI0fUSiE6vAMecBjpQc6JCOQ/JEACJEACJEACJEACJBAjgVCGNMqEwTxz5kzZunWrMnCrVq2qVKlevbrA0F63bp0ytJs2bRpIRRjRiItGSAfkOJM2orEPsdU6+T0nkCLMTAIkQAIkQAIkQAIkQAIGAqFCOyAPcdI//PCDYP3oiy66KOIphrFbo0YNWbp0qWzatEnlC5LKlSunVv1AzHSJEiXUD4a1Dv3wkhXmHC853EcCJEACJEACJEACJEACfgmENqRLliypYpznz58fiY/WhSJOGgZ26dKl1S9IQtjHZZddJlOmTJHdu3er+OcxY8YoedGSn3MGDx4sWO2DiQRIgARIgARIgARIgATiQSC0IY3CYTAfPnxYxUs7k97vteydH6UxiRCTDBEnffvtt6tJhz169DCeajtnx44dyjBnIgESIAESIAESIAESIIF4EMh16o8UD0GUQQIkQAIkQAIkQAIkQAI5iUBMHumcBIp1JQESIAESIAESIAESIAEnARrS7A8kQAIkQAIkQAIkQAIkEIIADekQ0HgKCZAACZAACZAACZAACdCQZh8gARIgARIgARIgARIggRAEaEiHgMZTSIAESIAESIAESIAESICGNPsACZAACZAACZAACZAACYQgQEM6BDSeQgIkQAIkQAIkQAIkQAI0pNkHSIAESIAESIAESIAESCAEARrSIaDxFBIgARIgARIgARIgARKgIc0+QAIkQAIkQAIkQAIkQAIhCNCQDgGNp5AACZAACZAACZAACZAADWn2ARIgARIgARIgARIgARIIQYCGdAhoPIUESIAESIAESIAESIAEaEizD5AACZAACZAACZAACZBACAI0pENA4ykkQAIkQAIkQAIkQAIkQEOafYAESIAESIAESIAESIAEQhCgIR0CGk8hARIgARIgARIgARIgARrS7AMkQAIkQAIkQAIkQAIkEIIADekQ0HgKCZAACZAACZAACZAACeRNJoL58+fL2LFjJXfu3FKoUCHJnz+/7Nu3T06ePKn2FSlSRA4fPiy///67FCxYUKZPny65cuVKqIqPPPKIFC9eXG677baElpMs4alSH7Qp2vqzzz6TRo0ayV133ZUsBKqcVOGQiEpn57olghdlkgAJkAAJkECiCCTVkF6wYIG0adNG/v73vytD+tSpU9K9e3c5ePCgMpphWGPfBx98IPPmzfM0oocOHSpnnXWW9O3bN1FMKDcOBFasWCGLFy9WBm25cuXiIJEiohHgNRGNDPeTAAmQAAmQQGIJJC20Y//+/XLgwAG55ZZblBGN9MMPP8jevXulevXqyohGgge6SpUqUqFCBc+aX3311dK4cWPPY7ady5YtU+UzJZ4A2hsDHrQt3jQwJY5ALNdEEK14/QShxbwkQAIkQAI5gUDSPNKff/65XH/99ZInT54I11WrVqn/L7nkkgysEe5x7rnnevK//PLLPffbdiLUYOvWrbZsPB4nAnizkOiwnDipmvZiwl4TQSrO6ycILeYlARIgARLIKQSSZkhfeumlUrJkyQxcV69erbbdhvSFF14oF1xwgWcbIFQAns7evXur42vXrpXJkyfLzp07pVSpUsrjXLt27UznPvjgg7J8+XK1H+ElMD4GDRoUyffSSy/J3LlzJV++fNKxY0dp3bp15NixY8dUGQhVQCx3s2bNpFu3bpI3rzc+6AiP+vHjx1WIipdMvI6vVKmSdO3aVZVz5MgRNdAYPXq08sgjaTlHjx4VxJdDTqdOnQQsn376adm4caOUL19e+vfvn2HgASP2xRdfVPUpUKCANG/eXJ2nDVtbfXS5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AlUb0lSI3eODBw+2JwtkY32LKosRvf/++1vjkuPuBgwYYI1qFw/NsUsYlG5zXlE+/nU8HJzogIHEcWQcdcamQAyTPOnWrZs1YjlBhJ8WThU2vOEBJE563333tZsOYZAnxLZyfB6ncXCE2bTTTmsOPfRQ6zknZhrp27evfUGRF/9HXzzqTvL07Nmzp50gHHHEEebCCy+0G5CyklJunr7uWoxlSOeyZZdNX6R3SCeeIXaeFYo+ffrY/zNxy/4gT4ypK5c4fgxxTomgj7EvgDaqlWC80K6szLAJlVAgNr0ioRCg5tY/pn+sT+T101q1bV7eMX25H2vzlDyqLbvMOJGqK6cIMbFiXGNS3rt378rmv1j7lNXHsSFOevz48ZXTOrie0q4p3GrRPiltqDQiIAIi0NIEJvrLO1ouxqEZGuFlIxzCnRU9aNAg64XlqDo2GCKctoGXbeONN7bHPUlEoB4IcLwix9YxKWopIayDkzsI8XDxr6xWYLDzPeG6RAREQAREQAREoH4INMsjXaYaLD/iTeHHJhA2y3AOL8ugzogmpnjIkCH2BA8/ZKFMWUorAo1IgDktqxYsp3/55Zf2vGtWbdiIKyO6EVtUOouACIiACLR3AlWf2lEWDDHJP//8s2G5EIPhhhtusPHSWQ8fXjji8TCis78oWLYspReBRiTAPgFCnoiRZpJJDPfSSy9tw34kIiACIiACIiAC9Ueg1UI7MJ75eWc2GGJAE7NKPLPbxFJ/aKSRCIiACIiACIiACIiACBQTaDVDulgF3REBERABERABERABERCBxiPQajHSjYdGGouACIiACIiACIiACIhAMQEZ0sVsdEcEREAEREAEREAEREAECgnIkC5EoxsiIAIiIAIiIAIiIAIiUExAhnQxG90RAREQAREQAREQAREQgUICMqQL0eiGCIiACIiACIiACIiACBQTkCFdzEZ3REAEREAEREAEREAERKCQgAzpQjS6IQIiIAIiIAIiIAIiIALFBGRIF7PRHREQAREQAREQAREQAREoJFAXhvTo0aPtz4ZLREAEREAEREAEREAERKBRCLS5If3YY4+Zww47zAwcOLBNjelTTjnFXHbZZY3Sbk30/OOPP8ymm25q3njjjTbVv631aOQ2jDVce65brO5tef/PP/805557rtl6663NBRdc0KKqtEUbt0WZLQpRmYuACIhAKxNoU0P63nvvNU888YS58sorbbUvuugiw4srRY477jhz3nnnpSTtkGnEp303u9q3ddr3pZdeMk8++aQ5/vjjzU477dQ6haqUUgT0XSiFS4lFQARqTKBNDek55pjDHHPMMWbaaac1vXv3NquuumqyV3qjjTYya6yxRlU4XnjhBbPrrrtW9WyjPFSWT0dg0ihtl6Jn2fZNybMe07Rkv0zJ++uvvzYzzjijWWKJJcz0009fM0QpZdessHaUUR63jvJdaEfNqKqIQLsiMGlb1qZ79+5Nivc/h3RbccUVQ7cL7+Hx/uCDDwrvt5cbZfh0FCbtpW2pR5n2bdR6t2S/TM2bvRsTTTRRTRGmll3TQttBZkXcOsJ3oR00n6ogAu2WQKsa0s8995z573//a3755RfrEV5sscUs2Hfffdcce+yx5tJLLzUzzDBDEmxi+/AU7bPPPjb966+/bkNEPvnkEzPbbLPZ/JdddtkJ8jrhhBPMiy++aK8TV8wgfNRRR1XSXXPNNeb+++83k002mdlmm23MJptsUrn366+/2jJY6p144onNOuusY3beeWcz6aT5GNFxzjnnNJNMMokhjGWKKaYw6667rtlhhx0qL2fSzDvvvIb4Ysq96aabTKyc77//3lx88cUG7wxest13332Cevp8fvrpJ3PFFVeYZ555xuqzwgormD333NNMOeWUpohJLfTwFQu1U0hH8vnoo49sHPt7771n9V5rrbXMLrvs4hdR+RxLn8fezyym048//mi5Pvvss7ZNV1ppJbPHHnuYqaaaymbFsvMCCyxQCQsgP+JtzznnHLPwwgvbNCn9xNfLb19Xl99++808+OCDuf33m2++sf3m5ZdfNrPMMovZa6+97IpQVhe/nObWP0Wvoj5R1C/RMbVti3iE8nYMjj76aPPKK6/Yj4wVa665pjnkkENMrM1j/SpWdi3HoJiu1I3JwtVXX23HH75X/hhV1D48GxsjfBaMp6+99po5/fTTHWY7pjKmHXzwwcF2LeLmfxdidU7pkxXl9B8REAERiBBotdCOzz77zNx1113mxBNPNPz/8ccfr6iGcYdMN910EXXzb2OEMjhusMEG5rrrrrMvvTPOOMPwEvUFw2G//fYzs846q7n99tvN4Ycf3kQPjPMzzzzTbLjhhnaA//bbbyv3ieFmqReDH+PjzTffNDfeeKNfRJPPjz76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WmSRRWxb4Q3Leol//fVX8+yzz5rll1/evP/++xMUhecY79aCCy5oMLjzDOmy/QyPmc60nQC1LjQIgWr673/+8x/z0Ucfme222y531ae5VcdY2GyzzSrfbbzRePZ79eplau08SdW1pca4lHxT0qTWoyXSVfMeqeaZltA9JU/eJePGjTMLLbRQSvJmpylq77/97W/mpptuqltDupHatNmN1MYZVG1Ix/T+8ccfbZgHhhSGzUorrWT22GMPg/cSYel93nnnNexAv//++22HzMoJJ5xgl2IRDCw6xVFHHVVJQmwjz0022WRmm222MZtssknlHnnjldxnn33stddff91ceeWV5pNPPrHLnrvuuqthaSZPnF4c54SHh/x32GEH0717dxtz+9Zbb9kwhYMPPrji3cJgJH8MQ2aq66yzTmXps6geefX39f7pp58sw2eeecZMMskkZoUVVjB77rmnmXLKKfNUr1wrKtMlCLEL1aWoUHRbZZVVrFc5a0gPGzbMdO7c2XrHigxp+sT8889vQzs+/fRTm75aIeb1lVdesY/TZ9Zcc01zyCGHmOb2RfLDUMET995771n+a621ltlll10qqrr2/O2338yDDz44Qb+ExXnnnWeuv/5625bIwIEDzahRo2zoiy/ffPONufjii83LL79sZpllFrPXXnuZY445xpxzzjlm4YUXtsnz+lCsriz3LbDAAmannXayedDHiCf38yUsBj1ZQmV1Z91117Xfg9gkJdS3YgzLfE9jeWV5+v2C8QIj0JcYu9j9vPYoU4avp+u/fh7+Z9rFjQl54VOkf/TRR80dd9xhV2wwQOhPXbp08bPK/fz555838XAvuuiihnGCNihrzITaOMY3q1xzxrhQ34nliw6xNKHvQNnxtZr3kf8eiY1N1KnomTLvwdSxhfd+mXz9TjlixAhrO/CuzQqTUN4j2AV8H/wxK8a+qG8WtTfjKH3p+++/N9NOO62vpv0M19hYGuv3RXqRf+ie36akjzHyKxFj5qcP6ROzZ2Ic8sbXsvr5+tbqc4ttNrzkkkvMZ599Zo0HvBd0uMsvv7yJ3hgcpCFO1heMhv3228/GM95+++3m8MMPryTBsMRQPvPMM82GG25ojdhvv/3Wz8J+xlCnATbYYANz3XXXWQPrjDPOMBg8RYIBTbnkv95661kDCt179uxpDQ6Ma4wgJxdddJF9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tdBCeZQmgKeS3ffEFcditEpnrgdajAAebUJEONYuu5kwWyBhHcQA4rF23g5WJTB+WJUo8mTXSmmOi+QYP84altQfgbyNVvWgJcvcGpfqoSXavw6sjrCyh5OtLYR+jjOF33kIhThpLG2L1mn9MlvMI936VelYJWJYEZMsI7ox2p24ZAZfVhHYOV1kRFMb5rYM0vzEK14WwlvwJPJLoi1tRDcGTWlZrwQ0LtVry7QvvfA0E6YQOxmrpWpNyCkrxSEjuqXKVr71R0Ae6fprE2nUDgmw+ZJf5uRMUZawQoY01WdTFDHSbDJkmXLppZe2KxB4ilta5EVpacLNy78ePdKEHOWd7du8muppEWhsAhpLG7v9UrWXIZ1KSulEQAREoA4I/Pzzz/ZUl3oS9obEfmGxnvSVLiIgAiJQKwItcmpHrZRTPiIgAiIgAk0JxH4Aoi141aNObcFBZYqACHQ8AvJId7w2V41FQAQanABx9MTdc5xkW+0XJ5yDzbAY0bHTZBoct9QXAREQgUICMqQL0eiGCIiACIiACIiACIiACBQTUGhHMRvdEQEREAEREAEREAEREIFCAjKkC9HohgiIgAiIgAiIgAiIgAgUE5AhXcxGd0RABERABERABERABESgkEBVhjQbXM4991yz9dZbmwsuuKAw83q50Wj6luXGUVibbrqpeeONN8o+qvQikESA81Avu+yypLRKJAIiIAIiIAIdhUBVv2z40ksvmSeffNLwcuX31etdGk3fWvA87rjj7K8eHnjggVVnV4s8qi78rwfbuvzm6F7tsx2lzpw0cd9995nbb7/d8Cth/FDNrrvuan94JivvvvuuufLKK817771nZphhBjth3GKLLSbAe8stt5jrr79+gutcGDBggJl11lnt6RYpZd57771Wr++++87MM888ZrvttjPLLbdcJe/UfHKV0UUREAEREIF2RaAqQ5qfOsZI4yeLG0FaQt8XXnjBXHrppfbX5+pR+HnpMme75tWnbB615tDW5de6Pin5tUad89o6RbdapnnggQfMddddZ39md7755jOPPPKIOf74482FF15ojWrkiy++MEcffbRZa621zAEHHGB/5ZH7/PjHZptt1kSdDTbYoImxy83Bgwebt956y8wyyyw2bUqZDz74oDXI99lnH2tEP/PMM9ZhcM4555gFFlggOZ8myumDCIiACIhA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"}}},{"metadata":{"trusted":true},"cell_type":"code","source":"def metric(df, preds):\n    \"\"\"\n    function from: https://www.kaggle.com/abhishek/competition-metric\n    \"\"\"\n    \n    df[\"prediction\"] = preds\n    maes = []\n    for t in df.type.unique():\n        y_true = df[df.type==t].scalar_coupling_constant.values\n        y_pred = df[df.type==t].prediction.values\n        mae = np.log(metrics.mean_absolute_error(y_true, y_pred))\n        maes.append(mae)\n        \n    return np.mean(maes)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Predict median sc-constant\n\nWe use the median rather than the mean because the comptetion metric is based on the mean absolute error which is minimized by the median (the arithemtic mean would minimize the the mean squared error)."},{"metadata":{"trusted":true},"cell_type":"code","source":"median_prediction = np.tile(train.scalar_coupling_constant.median(), len(val))\nmetric(val, median_prediction)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"mean_prediction = np.tile(train.scalar_coupling_constant.mean(), len(val))\nmetric(val, mean_prediction)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Predict median sc-constant for each type\n\nThe range of sc-constants varies from type to type. Therefore, predicting the median per type will give better results than simply predicting the global median.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.boxplot(data=train, x='type', y='scalar_coupling_constant', fliersize=0.5);","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"group_medians = train.groupby('type').apply(lambda df: df.scalar_coupling_constant.median())\ngroup_medians","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"group_median_prediction = val.type.map(group_medians)\ntype_median_score = metric(val, group_median_prediction)\ntype_median_score","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Linear Regression on euclidean distance\n\nInterestingly regression on the distance between atom-0 and atom-1 is only barely better than the predicting the mean (which is equivalent to 'fitting' the best regression line with zero slope)."},{"metadata":{"trusted":true},"cell_type":"code","source":"lin_reg = LinearRegression()\nlin_reg.fit(X=np.reshape(train.dist.values, (-1, 1)),\n            y=train.scalar_coupling_constant.values)\ny_hat = lin_reg.predict(np.reshape(val.dist.values, (-1, 1)))\n\nmetric(val, y_hat)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Linear regression on distance and sc-type indicator-varibles\n\nInterestinly, this model is even worse than the per-type-median prediction. Probably due to the fact that linear regression minimizes the mean squared error rather than the mean absolute error used in the competition metric."},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train = pd.get_dummies(train[['dist', 'type']], prefix='type', drop_first=True).values\nX_val   = pd.get_dummies(val[['dist', 'type']], prefix='type', drop_first=True).values\n\nlin_reg = LinearRegression()\nlin_reg.fit(X=X_train, y=train.scalar_coupling_constant.values)\ny_hat = lin_reg.predict(X_val)\n\nscore = metric(val, y_hat)\nprint(f'score: {score}')\nprint(f'improvement over type-mean-prediction: {type_median_score - score}')","execution_count":null,"outputs":[]}],"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}