{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.17","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"tpu1vmV38","dataSources":[{"sourceId":96164,"databundleVersionId":11418275,"sourceType":"competition"}],"dockerImageVersionId":31042,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.linear_model import LinearRegression\nimport gc\nfrom scipy.stats import pearsonr","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:31:49.008345Z","iopub.execute_input":"2025-07-04T07:31:49.008649Z","iopub.status.idle":"2025-07-04T07:31:49.020839Z","shell.execute_reply.started":"2025-07-04T07:31:49.008625Z","shell.execute_reply":"2025-07-04T07:31:49.016117Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# TRAIN","metadata":{}},{"cell_type":"code","source":"train = pd.read_parquet(\"/kaggle/input/drw-crypto-market-prediction/train.parquet\",\n                       engine = 'pyarrow')\ntrain.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:31:49.022013Z","iopub.execute_input":"2025-07-04T07:31:49.022240Z","iopub.status.idle":"2025-07-04T07:31:52.054537Z","shell.execute_reply.started":"2025-07-04T07:31:49.022220Z","shell.execute_reply":"2025-07-04T07:31:52.050145Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**To drop col with inf values**","metadata":{}},{"cell_type":"code","source":"def drop_inf_columns(df):\n    \"\"\"Drop columns from DataFrame if any value is inf or -inf in that column.\"\"\"\n    return df.loc[:, ~df.isin([float('inf'), float('-inf')]).any()]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:31:52.056727Z","iopub.execute_input":"2025-07-04T07:31:52.057021Z","iopub.status.idle":"2025-07-04T07:31:52.067015Z","shell.execute_reply.started":"2025-07-04T07:31:52.056998Z","shell.execute_reply":"2025-07-04T07:31:52.062783Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train = drop_inf_columns(train)\ntrain.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:31:52.068821Z","iopub.execute_input":"2025-07-04T07:31:52.069038Z","iopub.status.idle":"2025-07-04T07:32:19.624339Z","shell.execute_reply.started":"2025-07-04T07:31:52.069020Z","shell.execute_reply":"2025-07-04T07:32:19.620071Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X = train.drop(columns = ['label'])\ny = train['label']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:32:19.626501Z","iopub.execute_input":"2025-07-04T07:32:19.626731Z","iopub.status.idle":"2025-07-04T07:32:20.687284Z","shell.execute_reply.started":"2025-07-04T07:32:19.626710Z","shell.execute_reply":"2025-07-04T07:32:20.682654Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y, shuffle=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:32:20.689434Z","iopub.execute_input":"2025-07-04T07:32:20.689666Z","iopub.status.idle":"2025-07-04T07:32:21.960133Z","shell.execute_reply.started":"2025-07-04T07:32:20.689644Z","shell.execute_reply":"2025-07-04T07:32:21.955971Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"del X,y,train\ngc.collect()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:32:21.961878Z","iopub.execute_input":"2025-07-04T07:32:21.962092Z","iopub.status.idle":"2025-07-04T07:32:22.051075Z","shell.execute_reply.started":"2025-07-04T07:32:21.962071Z","shell.execute_reply":"2025-07-04T07:32:22.047149Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Multi Linear Regression","metadata":{}},{"cell_type":"code","source":"n_features = X_train.shape[1]\nmodels = []\nfor i in range(n_features):\n    model = LinearRegression()\n    Xi = X_train.iloc[:, i].values.reshape(-1, 1)\n    model.fit(Xi, y_train)\n    models.append(model)\n\npreds = np.zeros((X_test.shape[0], n_features))\nfor i, model in enumerate(models):\n    Xi_test = X_test.iloc[:, i].values.reshape(-1, 1)\n    preds[:, i] = model.predict(Xi_test)\ny_pred = np.median(preds, axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:32:22.053385Z","iopub.execute_input":"2025-07-04T07:32:22.053624Z","iopub.status.idle":"2025-07-04T07:32:34.270914Z","shell.execute_reply.started":"2025-07-04T07:32:22.053600Z","shell.execute_reply":"2025-07-04T07:32:34.266709Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"corr, _ = pearsonr(y_pred, y_test)\nprint(corr)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:32:34.271726Z","iopub.execute_input":"2025-07-04T07:32:34.272016Z","iopub.status.idle":"2025-07-04T07:32:34.284960Z","shell.execute_reply.started":"2025-07-04T07:32:34.271993Z","shell.execute_reply":"2025-07-04T07:32:34.280486Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# TEST","metadata":{}},{"cell_type":"code","source":"test = pd.read_parquet(\"/kaggle/input/drw-crypto-market-prediction/test.parquet\",\n                      engine = 'pyarrow')\ntest = test.drop(columns = ['label'])\ntest = drop_inf_columns(test)\ntest.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:32:34.287253Z","iopub.execute_input":"2025-07-04T07:32:34.287498Z","iopub.status.idle":"2025-07-04T07:33:05.529166Z","shell.execute_reply.started":"2025-07-04T07:32:34.287477Z","shell.execute_reply":"2025-07-04T07:33:05.525076Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"preds = np.zeros((test.shape[0], n_features))\nfor i, model in enumerate(models):\n    i_test = test.iloc[:, i].values.reshape(-1, 1)\n    preds[:, i] = model.predict(i_test)\ny_pred = np.median(preds, axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:33:05.532937Z","iopub.execute_input":"2025-07-04T07:33:05.533173Z","iopub.status.idle":"2025-07-04T07:33:25.167270Z","shell.execute_reply.started":"2025-07-04T07:33:05.533151Z","shell.execute_reply":"2025-07-04T07:33:25.161995Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Submission","metadata":{}},{"cell_type":"code","source":"submission = pd.DataFrame({\n    \"ID\": np.arange(1, len(y_pred) + 1),\n    \"prediction\": y_pred\n})\nsubmission.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:33:25.168059Z","iopub.execute_input":"2025-07-04T07:33:25.168306Z","iopub.status.idle":"2025-07-04T07:33:25.189436Z","shell.execute_reply.started":"2025-07-04T07:33:25.168282Z","shell.execute_reply":"2025-07-04T07:33:25.183782Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission.to_csv(\"submission.csv\", index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-04T07:33:25.191296Z","iopub.execute_input":"2025-07-04T07:33:25.191537Z","iopub.status.idle":"2025-07-04T07:33:26.235162Z","shell.execute_reply.started":"2025-07-04T07:33:25.191516Z","shell.execute_reply":"2025-07-04T07:33:26.230141Z"}},"outputs":[],"execution_count":null}]}