{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84493,"databundleVersionId":9871156,"sourceType":"competition"},{"sourceId":213169289,"sourceType":"kernelVersion"}],"dockerImageVersionId":30804,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport sys\nimport random\nimport time\nimport math\nimport copy\nimport numpy as np\nimport pandas as pd\nfrom pathlib import Path\nfrom collections import defaultdict\nimport tqdm  # For progress bars\nfrom tqdm import tqdm, trange\nimport warnings  # To suppress warnings\nwarnings.filterwarnings(\"ignore\")\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom PIL import Image\nfrom sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix\nfrom torchmetrics import Accuracy, Precision, Recall, F1Score  # PyTorch Lightning Metrics\nimport torch\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nimport torch.nn as nn\nimport torch.optim as optim\nimport torch.nn.functional as F\nfrom torch.utils.data import DataLoader, Dataset\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:14:14.67698Z","iopub.execute_input":"2024-12-16T07:14:14.67751Z","iopub.status.idle":"2024-12-16T07:14:24.759517Z","shell.execute_reply.started":"2024-12-16T07:14:14.677467Z","shell.execute_reply":"2024-12-16T07:14:24.758393Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"source_file_path = '/kaggle/input/yunbase/Yunbase/baseline.py'\ntarget_file_path = '/kaggle/working/baseline.py'\nwith open(source_file_path, 'r', encoding='utf-8') as file:\n    content = file.read()\nwith open(target_file_path, 'w', encoding='utf-8') as file:\n    file.write(content)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:14:24.762272Z","iopub.execute_input":"2024-12-16T07:14:24.762947Z","iopub.status.idle":"2024-12-16T07:14:24.782147Z","shell.execute_reply.started":"2024-12-16T07:14:24.762903Z","shell.execute_reply":"2024-12-16T07:14:24.781044Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!pip install -q --requirement /kaggle/input/yunbase/Yunbase/requirements.txt  \\\n--no-index --find-links file:/kaggle/input/yunbase/","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:14:24.783882Z","iopub.execute_input":"2024-12-16T07:14:24.784275Z","iopub.status.idle":"2024-12-16T07:14:37.992869Z","shell.execute_reply.started":"2024-12-16T07:14:24.78424Z","shell.execute_reply":"2024-12-16T07:14:37.991179Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from baseline import Yunbase\nimport polars as pl#similar to pandas, but with better performance when dealing with large datasets.\nimport pandas as pd#read csv,parquet\nimport numpy as np#for scientific computation of matrices\n#model\nfrom  lightgbm import LGBMRegressor\nfrom catboost import CatBoostRegressor\nfrom xgboost import XGBRegressor\nimport os#Libraries that interact with the operating system\nimport gc#rubbish collection\n#environment provided by competition hoster\nimport kaggle_evaluation.jane_street_inference_server\n\nimport random#provide some function to generate random_seed.\n#set random seed,to make sure model can be recurrented.\ndef seed_everything(seed):\n    np.random.seed(seed)#numpy's random seed\n    random.seed(seed)#python built-in random seed\nseed_everything(seed=2025)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:14:37.996243Z","iopub.execute_input":"2024-12-16T07:14:37.996689Z","iopub.status.idle":"2024-12-16T07:15:05.492344Z","shell.execute_reply.started":"2024-12-16T07:14:37.996651Z","shell.execute_reply":"2024-12-16T07:15:05.491008Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"yunbase=Yunbase()\ndata=[]\nfor i in [5,6,7,8,9]:\n    train=pl.read_parquet(f\"/kaggle/input/jane-street-real-time-market-data-forecasting/train.parquet/partition_id={i}/part-0.parquet\")\n    train=train.to_pandas()\n    train['sin_time_id']=np.sin(2*np.pi*train['time_id']/967)\n    train['cos_time_id']=np.cos(2*np.pi*train['time_id']/967)\n    train['sin_time_id_halfday']=np.sin(2*np.pi*train['time_id']/483)\n    train['cos_time_id_halfday']=np.cos(2*np.pi*train['time_id']/483)\n    #train=train.fillna(-1)\n    train=yunbase.reduce_mem_usage(train,float16_as32=False)\n    data.append(train)\ntest=pd.concat(data)\ndel data\ndata=[]\nfor i in [1,2,3,4]:\n    train=pl.read_parquet(f\"/kaggle/input/jane-street-real-time-market-data-forecasting/train.parquet/partition_id={i}/part-0.parquet\")\n    train=train.to_pandas()\n    train['sin_time_id']=np.sin(2*np.pi*train['time_id']/967)\n    train['cos_time_id']=np.cos(2*np.pi*train['time_id']/967)\n    train['sin_time_id_halfday']=np.sin(2*np.pi*train['time_id']/483)\n    train['cos_time_id_halfday']=np.cos(2*np.pi*train['time_id']/483)\n    #train=train.fillna(-1)\n    train=yunbase.reduce_mem_usage(train,float16_as32=False)\n    data.append(train)\ntrain=pd.concat(data)\nprint(f\"train.shape:{train.shape}\")\nprint(f\"test.shape:{test.shape}\")\ndel data\ngc.collect()\nfinal_feature=['symbol_id','sin_time_id','cos_time_id','sin_time_id_halfday','cos_time_id_halfday']+[f'feature_0{i}' if i<10 else f'feature_{i}' for i in range(79)]\ntrain=train[['responder_6']+final_feature]\ntrain.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:15:05.493827Z","iopub.execute_input":"2024-12-16T07:15:05.494517Z","iopub.status.idle":"2024-12-16T07:17:22.171207Z","shell.execute_reply.started":"2024-12-16T07:15:05.494478Z","shell.execute_reply":"2024-12-16T07:17:22.169973Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# train.describe()\ngc.collect()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:17:40.344666Z","iopub.execute_input":"2024-12-16T07:17:40.345135Z","iopub.status.idle":"2024-12-16T07:17:40.635393Z","shell.execute_reply.started":"2024-12-16T07:17:40.345061Z","shell.execute_reply":"2024-12-16T07:17:40.634023Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def find_columns_with_na(df):\n    # Identify columns with NA values and their counts\n    na_counts = df.isna().sum()\n    columns_with_na = {col: count for col, count in na_counts.items() if count > 0}\n    return columns_with_na","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:17:40.638479Z","iopub.execute_input":"2024-12-16T07:17:40.638898Z","iopub.status.idle":"2024-12-16T07:17:40.651256Z","shell.execute_reply.started":"2024-12-16T07:17:40.638859Z","shell.execute_reply":"2024-12-16T07:17:40.64946Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"find_columns_with_na(train)\nfind_columns_with_na(test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:17:40.653023Z","iopub.execute_input":"2024-12-16T07:17:40.653684Z","iopub.status.idle":"2024-12-16T07:17:58.493205Z","shell.execute_reply.started":"2024-12-16T07:17:40.65363Z","shell.execute_reply":"2024-12-16T07:17:58.491651Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(train.shape,test.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:17:58.494701Z","iopub.execute_input":"2024-12-16T07:17:58.495089Z","iopub.status.idle":"2024-12-16T07:17:58.501618Z","shell.execute_reply.started":"2024-12-16T07:17:58.49504Z","shell.execute_reply":"2024-12-16T07:17:58.500149Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"lgb_params={\"boosting_type\": \"gbdt\",\"metric\": 'rmse',\n            'random_state': 2025,  \"max_depth\": 10,\"learning_rate\": 0.1,\n            \"n_estimators\": 120,\"colsample_bytree\": 0.6,\"colsample_bynode\": 0.6,\"verbose\": -1,\"reg_alpha\": 0.2,\n            \"reg_lambda\": 5,\"extra_trees\":True,'num_leaves':64,\"max_bin\":255,\n            'device':'gpu','gpu_use_dp':True,\n            }\n\ncat_params={'task_type':'GPU',\n           'random_state':2025,\n           'eval_metric'         : 'RMSE',\n           'bagging_temperature' : 0.50,\n           'iterations'          : 200,\n           'learning_rate'       : 0.1,\n           'max_depth'           : 12,\n           'l2_leaf_reg'         : 1.25,\n           'min_data_in_leaf'    : 24,\n           'random_strength'     : 0.25, \n           'verbose'             : 0,\n          }\nxgb_params={'random_state': 2025, 'n_estimators': 125, \n            'learning_rate': 0.1, 'max_depth': 10,\n            'reg_alpha': 0.08, 'reg_lambda': 0.8, \n            'subsample': 0.95, 'colsample_bytree': 0.6, \n            'min_child_weight': 3,\n            'tree_method':'gpu_hist',\n           }","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-16T07:17:58.503476Z","iopub.execute_input":"2024-12-16T07:17:58.503981Z","iopub.status.idle":"2024-12-16T07:17:58.521364Z","shell.execute_reply.started":"2024-12-16T07:17:58.50392Z","shell.execute_reply":"2024-12-16T07:17:58.520154Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(\"lgb\")\nlgb=LGBMRegressor(**lgb_params)\nlgb.fit(train[final_feature].values,train['responder_6'].values)\nprint(\"cat\")\ncat=CatBoostRegressor(**cat_params)\ncat.fit(train[final_feature].values,train['responder_6'].values)\nprint(\"xgb\")\nxgb=XGBRegressor(**xgb_params)\nxgb.fit(train[final_feature].values,train['responder_6'].values)","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}