{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":56537,"databundleVersionId":8015876,"sourceType":"competition"}],"dockerImageVersionId":30698,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Note: This notebook does NOT predict","metadata":{}},{"cell_type":"markdown","source":"### Note: \"Internet off\" in the right side bar to submit this notebook\n\n---\n\n![image.png](attachment:d4b58d59-f4b7-4dd8-995e-ca4c18fe04c4.png)\n\n---","metadata":{},"attachments":{"d4b58d59-f4b7-4dd8-995e-ca4c18fe04c4.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAx4AAABxCAYAAABbcHUsAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAzaVRYdENyZWF0aW9uIFRpbWUAAAAAADIwMjTlubQwNeaciDA35pelIDE45pmCMzXliIYzMOenkpio/HMAABznSURBVHic7d13fFXl/Qfwz1l3ZXETRoLEAGJlhb1ciIspttbZVnHgrFa0/dVRq9Yitlr7688qbka1traoqOBosVqWDSsQQKCAYFhJSCTjZt17xvP74w4S7k24CTn3Bv28NS/lnOec53vz4o988ixJCCFARERERERkIznZBRARERER0TcfgwcREREREdmOwYOIiIiIiGzH4EFERERERLZj8CAiIiIiItsxeBARERERke0YPIiIiIiIyHYMHkREREREZDsGDyIiIiIisp2ajE43btqM/+7cBQC4/LJLoWla5J6u63h78fsAgCH5gzBwQP+Y7/j3ilUoLS2Dx+PBpZdMaXbvrcXvwdCNuGrp3ftUjBszOmb/rRkzeiT69und7No/lv0LlZVVza5JsoS01FTk9joFAwcMgKLEznrhZ7Oze2DC+HNittm2fQc2b/kCAHDJ1MlITU054bp3/HcXNhVtPu5zYcf2S0REREQUj6QEj+07/ot/fvIpAODSS6ZEBY+P//kJAGDV5//BnMceQUZGetQ71q7bgG3bd8DbpUtU8Fj2yafw+wNx1XLmuDFRwSPcf2tycrKjgseqzwuwf/+BFp/p1q0r7rh1ZtRzTZ+VJAndumZh0MABUW12f7k3Utv5E8ZHBY/21L33q6/iei7s2H6JiIiIiOKRlOARr9raOsz/0+u49+472/TcyOHDEND1yJ9LSw/jwMGDAIDBgwbA5XJF7sUKAWE9undDbm6vmPe6dc1q8TmPx438QQMBAIZp4uDBQygtO4zy8gr84Zm5ePyxh2OGKQAQQuDV+a9hzq8fhsfjabGP1rSl7pzsHhg1cniza4Ubi2BZFjK9XvTt27vZPZfT2a6aiIiIiOjbrVMHDwAo2rwVy1eswnktTD+K5dabb2z254/+sQx/W/QOAOBHP7gKOdnZcb1n6JB8/PCaK+MvNiQrKwt33HZzs2vvvv8B3n1/KXy1tVi+YhUunT61xecrq6rw2htv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"}}},{"cell_type":"code","source":"# standard\nimport numpy as np\nimport pandas as pd\n\nfolder = 'leap-atmospheric-physics-ai-climsim'\nf_train = '../input/'+folder+'/train.csv'\nf_test = '../input/'+folder+'/test.csv'\nf_sub = '../input/'+folder+'/sample_submission.csv'","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-05-07T09:41:55.63428Z","iopub.execute_input":"2024-05-07T09:41:55.634599Z","iopub.status.idle":"2024-05-07T09:41:55.955839Z","shell.execute_reply.started":"2024-05-07T09:41:55.634571Z","shell.execute_reply":"2024-05-07T09:41:55.955193Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ndf_test = pd.read_csv(f_test, index_col=0)\ndf_sub = pd.read_csv(f_sub, index_col=0)\n\ncol_features = df_test.columns\ncol_targets = df_sub.columns\nprint(f'{len(col_features)=}')\nprint(f'{len(col_targets)=}')","metadata":{"execution":{"iopub.status.busy":"2024-05-07T09:41:57.073835Z","iopub.execute_input":"2024-05-07T09:41:57.074307Z","iopub.status.idle":"2024-05-07T09:45:03.149129Z","shell.execute_reply.started":"2024-05-07T09:41:57.07428Z","shell.execute_reply":"2024-05-07T09:45:03.147849Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# just calculate means\nimport sys\nchunk_size = 500000\n\ndf_mean = []\ncnt = 0\nfor df_train in pd.read_csv(f_train, chunksize=chunk_size, index_col=0):\n    n_chunk = df_train.shape[0]\n    means = df_train[col_targets].mean(axis=0).values * n_chunk\n    if len(df_mean) == 0:\n        df_mean = np.zeros_like(means)\n    df_mean += means\n    cnt += n_chunk\n    print(f'{cnt=}, {means.shape=}, {sys.getsizeof(means)}')\n    break\n\ndf_mean = df_mean / cnt\ndf_pred = np.tile(df_mean, (df_sub.shape[0], 1))","metadata":{"execution":{"iopub.status.busy":"2024-05-07T09:55:39.613561Z","iopub.execute_input":"2024-05-07T09:55:39.615856Z","iopub.status.idle":"2024-05-07T09:58:29.492413Z","shell.execute_reply.started":"2024-05-07T09:55:39.615789Z","shell.execute_reply":"2024-05-07T09:58:29.491364Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# in this competition, values in sample_submission.csv are the weight.\nweights = df_sub.to_numpy()\n\ndf_pred_weighted = pd.DataFrame(np.multiply(df_pred, weights))\ndf_pred_weighted.columns = df_sub.columns\ndf_pred_weighted['sample_id'] = df_sub.index\ndf_pred_weighted = df_pred_weighted[['sample_id'] + list(col_targets)]\ndf_pred_weighted.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2024-05-07T10:25:49.754754Z","iopub.execute_input":"2024-05-07T10:25:49.756511Z","iopub.status.idle":"2024-05-07T10:29:43.699532Z","shell.execute_reply.started":"2024-05-07T10:25:49.75647Z","shell.execute_reply":"2024-05-07T10:29:43.698435Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_pred_weighted","metadata":{"execution":{"iopub.status.busy":"2024-05-07T10:29:43.701848Z","iopub.execute_input":"2024-05-07T10:29:43.702218Z","iopub.status.idle":"2024-05-07T10:29:44.114634Z","shell.execute_reply.started":"2024-05-07T10:29:43.702191Z","shell.execute_reply":"2024-05-07T10:29:44.113868Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}