{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.linear_model import LinearRegression\n\ntrain = pd.read_csv('../input/train.csv')\ntest = pd.read_csv('../input/test.csv')\nstructures = pd.read_csv('../input/structures.csv')\nscalar_coupling_contributions = pd.read_csv('../input/scalar_coupling_contributions.csv')\n\nstructures_0 = structures.copy()\nstructures_1 = structures.copy()\nstructures_0.columns = structures.columns+(['']+['_0']*(len(structures.columns)-1))\nstructures_1.columns = structures.columns+(['']+['_1']*(len(structures.columns)-1))\n\ntrain_2 = pd.merge(pd.merge(train,structures_0),structures_1)\ntest_2 = pd.merge(pd.merge(test,structures_0),structures_1)\ntrain_2['distance'] = np.sqrt((train_2.x_0-train_2.x_1)**2 + (train_2.y_0-train_2.y_1)**2 + (train_2.z_0-train_2.z_1)**2)\ntest_2['distance'] = np.sqrt((test_2.x_0-test_2.x_1)**2 + (test_2.y_0-test_2.y_1)**2 + (test_2.z_0-test_2.z_1)**2)\nreg = LinearRegression().fit(X = pd.concat([pd.get_dummies(train_2.type), train_2.distance], axis = 1), y = train_2.scalar_coupling_constant)\n\ntest_2['scalar_coupling_constant'] = reg.predict(X = pd.concat([pd.get_dummies(test_2.type), test_2.distance], axis = 1))\ntest_2[['id','scalar_coupling_constant']].to_csv('distance_based.csv', index = False)","execution_count":46,"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}