{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":104857,"databundleVersionId":12651513,"sourceType":"competition"}],"dockerImageVersionId":31040,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-06-14T16:54:13.775753Z","iopub.execute_input":"2025-06-14T16:54:13.776073Z","iopub.status.idle":"2025-06-14T16:54:13.784856Z","shell.execute_reply.started":"2025-06-14T16:54:13.776049Z","shell.execute_reply":"2025-06-14T16:54:13.783782Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# STEP 1: Imports\nimport pandas as pd\nimport numpy as np\nimport xgboost as xgb\nfrom sklearn.metrics import mean_squared_error\nfrom sklearn.model_selection import train_test_split\n\n# STEP 2: Load data\ntrain = pd.read_csv('/kaggle/input/burnout-datathon-ieeecsmuj/train.csv')\ntest = pd.read_csv('/kaggle/input/burnout-datathon-ieeecsmuj/test.csv')\nval = pd.read_csv('/kaggle/input/burnout-datathon-ieeecsmuj/val.csv')\nsample = pd.read_csv('/kaggle/input/burnout-datathon-ieeecsmuj/sample_submission.csv')\n\n# STEP 3: Use only available + meaningful features\nfeatures = [\n    'Grid_Position',\n    'Avg_Speed_kmh',\n    'Track_Condition',\n    'Humidity_%',\n    'Championship_Position',\n    'Corners_per_Lap',\n    'Tire_Degradation_Factor_per_Lap',\n    'Pit_Stop_Duration_Seconds',\n    'Ambient_Temperature_Celsius',\n    'Track_Temperature_Celsius'\n]\n\n# STEP 4: Clean data\ntrain = train.dropna(subset=features + ['Lap_Time_Seconds'])\ntest = test.fillna(0)\n\n# Convert categorical feature (Track_Condition) to numeric\nfor df in [train, test, val]:\n    df['Track_Condition'] = df['Track_Condition'].astype('category').cat.codes\n\n# STEP 5: Train model\nX_train = train[features]\ny_train = train['Lap_Time_Seconds']\n\nmodel = xgb.XGBRegressor(\n    n_estimators=400,\n    max_depth=5,\n    learning_rate=0.05,\n    subsample=0.9,\n    colsample_bytree=0.8,\n    random_state=42\n)\nmodel.fit(X_train, y_train)\n\n# STEP 6: Predict on test\nX_test = test[features]\ny_pred = model.predict(X_test)\n\n# STEP 7: Export solution.csv\nsolution = sample.copy()\nsolution['Lap_Time_Seconds'] = y_pred\nsolution.to_csv('solution.csv', index=False)\nprint(\"✅ Final solution.csv created using sample_submission!\")\n\n\n# STEP 8: Optional validation\nval = val.dropna(subset=features + ['Lap_Time_Seconds'])\nX_val = val[features]\ny_val = val['Lap_Time_Seconds']\nval_pred = model.predict(X_val)\nrmse = np.sqrt(mean_squared_error(y_val, val_pred))\nprint(f\"✅ Validation RMSE: {rmse:.4f}\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-06-14T16:54:13.791714Z","iopub.execute_input":"2025-06-14T16:54:13.792009Z","iopub.status.idle":"2025-06-14T16:54:59.082846Z","shell.execute_reply.started":"2025-06-14T16:54:13.791990Z","shell.execute_reply":"2025-06-14T16:54:59.081605Z"}},"outputs":[],"execution_count":null}]}