-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLinear Regression_dataset1
More file actions
1 lines (1 loc) · 43.9 KB
/
Copy pathLinear Regression_dataset1
File metadata and controls
1 lines (1 loc) · 43.9 KB
1
{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"},"colab":{"provenance":[{"file_id":"19dZo96WIqgG-3C3DCx_ngwg5GkOcz7I4","timestamp":1713282731213},{"file_id":"1rUVKk07zHgrcsqnarxer5SYR_ai7GAwD","timestamp":1713279258669},{"file_id":"1n492Z7nTgaDEqbwg_KX2LZCEeMvU8gCV","timestamp":1713271906268},{"file_id":"https://storage.googleapis.com/kaggle-colab-exported-notebooks/pt2-time-series-forecasting-with-xgboost-d75594f8-f555-4488-86ab-7ed2fcac1328.ipynb?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=gcp-kaggle-com%40kaggle-161607.iam.gserviceaccount.com/20240415/auto/storage/goog4_request&X-Goog-Date=20240415T142350Z&X-Goog-Expires=259200&X-Goog-SignedHeaders=host&X-Goog-Signature=c4097ec783c1a14a3126eb661060ed19cc70539f0f8fe4e4a664a11abedb2cbf5c1c6f46ee317a77557c13dbd6699853efc376d4fb2a7fde4748b0a9b33326c0d1457a670a27b73e1e391c865cc6574f47d2aa598b53b6d51d73eb6ec977f9375858de186358002386a304cd3edb0496d43a695a40d861eb63940d3e03a029c728a6f4cea0b0c8ba4f64cc95529014ab08e422464991578c1cb940a4d0c71588caf8fcebaeae9444d3df8b388e7920dfc8162fe80b11a4598d222c562eecbbcbeec0075d4b0287226875aa40887043f7e9a2bece1261fe56e49e259defc16964f8eca112e5efae37408e36246bd9a951194f47031f2d7ebb8e1d1d19fb0525db","timestamp":1713192571882}]}},"nbformat_minor":0,"nbformat":4,"cells":[{"cell_type":"code","source":["import pandas as pd\n","import numpy as np\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","from sklearn.metrics import mean_squared_error\n","\n","import warnings\n","warnings.filterwarnings(\"ignore\")\n","\n","from google.colab import drive\n","drive.mount('/content/gdrive')\n","\n","data = pd.read_excel('/content/gdrive/My Drive/ML Project/processed_dataset.xlsx')\n","data = data.set_index('Datetime')\n","data.index = pd.to_datetime(data.index)"],"metadata":{"execution":{"iopub.status.busy":"2022-08-01T20:06:56.054744Z","iopub.execute_input":"2022-08-01T20:06:56.055251Z","iopub.status.idle":"2022-08-01T20:06:57.191219Z","shell.execute_reply.started":"2022-08-01T20:06:56.055152Z","shell.execute_reply":"2022-08-01T20:06:57.190146Z"},"trusted":true,"id":"twz2VrrwI0b5","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1713287637501,"user_tz":-330,"elapsed":31739,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}},"outputId":"042912ee-6636-4f87-d68c-6b48425aafcf"},"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/gdrive\n"]}]},{"cell_type":"code","source":["data.head()"],"metadata":{"execution":{"iopub.status.busy":"2022-08-01T20:47:55.649301Z","iopub.execute_input":"2022-08-01T20:47:55.649925Z","iopub.status.idle":"2022-08-01T20:47:55.896973Z","shell.execute_reply.started":"2022-08-01T20:47:55.649882Z","shell.execute_reply":"2022-08-01T20:47:55.895464Z"},"trusted":true,"id":"LKulVa7NI0b6","executionInfo":{"status":"ok","timestamp":1713287638679,"user_tz":-330,"elapsed":11,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}},"colab":{"base_uri":"https://localhost:8080/","height":237},"outputId":"2473841e-953e-45c8-af59-7f906bbcf3ed"},"execution_count":2,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" PJME_MW PJME_MW_normalized\n","Datetime \n","2002-01-01 01:00:00 30393.0 0.461150\n","2002-01-01 02:00:00 29265.0 0.426161\n","2002-01-01 03:00:00 28357.0 0.397996\n","2002-01-01 04:00:00 27899.0 0.383790\n","2002-01-01 05:00:00 28057.0 0.388691"],"text/html":["\n"," <div id=\"df-6595ff19-6d4e-4823-b03e-30ca85129ab2\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>PJME_MW</th>\n"," <th>PJME_MW_normalized</th>\n"," </tr>\n"," <tr>\n"," <th>Datetime</th>\n"," <th></th>\n"," <th></th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>2002-01-01 01:00:00</th>\n"," <td>30393.0</td>\n"," <td>0.461150</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 02:00:00</th>\n"," <td>29265.0</td>\n"," <td>0.426161</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 03:00:00</th>\n"," <td>28357.0</td>\n"," <td>0.397996</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 04:00:00</th>\n"," <td>27899.0</td>\n"," <td>0.383790</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 05:00:00</th>\n"," <td>28057.0</td>\n"," <td>0.388691</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-6595ff19-6d4e-4823-b03e-30ca85129ab2')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-6595ff19-6d4e-4823-b03e-30ca85129ab2 button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-6595ff19-6d4e-4823-b03e-30ca85129ab2');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n","<div id=\"df-e1c47c6a-f31f-4e9b-94e8-f76d7bd3e30d\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-e1c47c6a-f31f-4e9b-94e8-f76d7bd3e30d')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-e1c47c6a-f31f-4e9b-94e8-f76d7bd3e30d button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n","</div>\n","\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"data"}},"metadata":{},"execution_count":2}]},{"cell_type":"markdown","source":["# 1. Forecasting Horizon"],"metadata":{"id":"Z90LV-bWZFR1"}},{"cell_type":"code","source":["def create_features(data):\n"," \"\"\"\n"," Create time series features based on time series index.\n"," \"\"\"\n"," data = data.copy()\n"," data['hour'] = data.index.hour\n"," data['dayofweek'] = data.index.dayofweek\n"," data['quarter'] = data.index.quarter\n"," data['month'] = data.index.month\n"," data['year'] = data.index.year\n"," data['dayofyear'] = data.index.dayofyear\n"," data['dayofmonth'] = data.index.day\n"," data['weekofyear'] = data.index.isocalendar().week\n"," return data\n","\n","data = create_features(data)"],"metadata":{"execution":{"iopub.status.busy":"2022-08-01T21:04:03.166197Z","iopub.execute_input":"2022-08-01T21:04:03.166751Z","iopub.status.idle":"2022-08-01T21:04:03.360967Z","shell.execute_reply.started":"2022-08-01T21:04:03.166711Z","shell.execute_reply":"2022-08-01T21:04:03.359392Z"},"trusted":true,"id":"JRoAjuGEI0b9","executionInfo":{"status":"ok","timestamp":1713287639366,"user_tz":-330,"elapsed":696,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}}},"execution_count":3,"outputs":[]},{"cell_type":"markdown","source":["# 2. Lag Features"],"metadata":{"id":"huqMYwBUZOxS"}},{"cell_type":"code","source":["def add_lags(data):\n"," target_map = data['PJME_MW_normalized'].to_dict()\n"," data['lag1'] = (data.index - pd.Timedelta('364 days')).map(target_map)\n"," data['lag2'] = (data.index - pd.Timedelta('728 days')).map(target_map)\n"," data['lag3'] = (data.index - pd.Timedelta('1092 days')).map(target_map)\n"," return data"],"metadata":{"execution":{"iopub.status.busy":"2022-08-01T21:08:07.781814Z","iopub.execute_input":"2022-08-01T21:08:07.782296Z","iopub.status.idle":"2022-08-01T21:08:07.791203Z","shell.execute_reply.started":"2022-08-01T21:08:07.782254Z","shell.execute_reply":"2022-08-01T21:08:07.789775Z"},"trusted":true,"id":"U9lglFmNI0b-","executionInfo":{"status":"ok","timestamp":1713287639366,"user_tz":-330,"elapsed":3,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["data = add_lags(data)\n","data.head()"],"metadata":{"execution":{"iopub.status.busy":"2022-08-01T21:08:13.332464Z","iopub.execute_input":"2022-08-01T21:08:13.333676Z","iopub.status.idle":"2022-08-01T21:08:19.518906Z","shell.execute_reply.started":"2022-08-01T21:08:13.333621Z","shell.execute_reply":"2022-08-01T21:08:19.517487Z"},"trusted":true,"id":"vMOyOHLXI0b-","colab":{"base_uri":"https://localhost:8080/","height":237},"executionInfo":{"status":"ok","timestamp":1713287643294,"user_tz":-330,"elapsed":3930,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}},"outputId":"1a848076-34ac-4ac9-ef41-b416ced9a3c9"},"execution_count":5,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" PJME_MW PJME_MW_normalized hour dayofweek quarter \\\n","Datetime \n","2002-01-01 01:00:00 30393.0 0.461150 1 1 1 \n","2002-01-01 02:00:00 29265.0 0.426161 2 1 1 \n","2002-01-01 03:00:00 28357.0 0.397996 3 1 1 \n","2002-01-01 04:00:00 27899.0 0.383790 4 1 1 \n","2002-01-01 05:00:00 28057.0 0.388691 5 1 1 \n","\n"," month year dayofyear dayofmonth weekofyear lag1 \\\n","Datetime \n","2002-01-01 01:00:00 1 2002 1 1 1 NaN \n","2002-01-01 02:00:00 1 2002 1 1 1 NaN \n","2002-01-01 03:00:00 1 2002 1 1 1 NaN \n","2002-01-01 04:00:00 1 2002 1 1 1 NaN \n","2002-01-01 05:00:00 1 2002 1 1 1 NaN \n","\n"," lag2 lag3 \n","Datetime \n","2002-01-01 01:00:00 NaN NaN \n","2002-01-01 02:00:00 NaN NaN \n","2002-01-01 03:00:00 NaN NaN \n","2002-01-01 04:00:00 NaN NaN \n","2002-01-01 05:00:00 NaN NaN "],"text/html":["\n"," <div id=\"df-dd7426f0-03cf-4ad6-8a4e-758d2f3deb5f\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>PJME_MW</th>\n"," <th>PJME_MW_normalized</th>\n"," <th>hour</th>\n"," <th>dayofweek</th>\n"," <th>quarter</th>\n"," <th>month</th>\n"," <th>year</th>\n"," <th>dayofyear</th>\n"," <th>dayofmonth</th>\n"," <th>weekofyear</th>\n"," <th>lag1</th>\n"," <th>lag2</th>\n"," <th>lag3</th>\n"," </tr>\n"," <tr>\n"," <th>Datetime</th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>2002-01-01 01:00:00</th>\n"," <td>30393.0</td>\n"," <td>0.461150</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>2002</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 02:00:00</th>\n"," <td>29265.0</td>\n"," <td>0.426161</td>\n"," <td>2</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>2002</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 03:00:00</th>\n"," <td>28357.0</td>\n"," <td>0.397996</td>\n"," <td>3</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>2002</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 04:00:00</th>\n"," <td>27899.0</td>\n"," <td>0.383790</td>\n"," <td>4</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>2002</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," </tr>\n"," <tr>\n"," <th>2002-01-01 05:00:00</th>\n"," <td>28057.0</td>\n"," <td>0.388691</td>\n"," <td>5</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>2002</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>1</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," <td>NaN</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-dd7426f0-03cf-4ad6-8a4e-758d2f3deb5f')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-dd7426f0-03cf-4ad6-8a4e-758d2f3deb5f button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-dd7426f0-03cf-4ad6-8a4e-758d2f3deb5f');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n","<div id=\"df-0f1e8ea9-75d6-46c2-843f-67de4e67f699\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-0f1e8ea9-75d6-46c2-843f-67de4e67f699')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-0f1e8ea9-75d6-46c2-843f-67de4e67f699 button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n","</div>\n","\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"data"}},"metadata":{},"execution_count":5}]},{"cell_type":"markdown","source":["## Train Using Cross Validation"],"metadata":{"id":"CU8ldNvTI0b-"}},{"cell_type":"code","source":["!pip install bayesian-optimization\n","from sklearn.linear_model import LinearRegression\n","from sklearn.model_selection import TimeSeriesSplit\n","from sklearn.metrics import mean_squared_error\n","from bayes_opt import BayesianOptimization\n","from sklearn.linear_model import ElasticNet\n","from sklearn.model_selection import TimeSeriesSplit\n","\n","# Generate features using a rolling window approach\n","window_size = 24 # 60 lags to be taken as decided by ACF\n","for i in range(1, window_size + 1):\n"," data[f'lag_{i}'] = data['PJME_MW_normalized'].shift(i)\n","\n","# Drop rows with NaN values caused by shifting\n","data = data.dropna()\n","\n","# Define features and target\n","X = data[[f'lag_{i}' for i in range(1, window_size + 1)]]\n","y = data['PJME_MW_normalized']\n","\n","def mape(y_true, y_pred):\n"," return np.mean(np.abs((y_true - y_pred) / y_true)) * 100\n","\n","def linear_evaluate(alpha, max_iter,l1_ratio):\n"," params = {\n"," 'eval_metric': 'rmse',\n"," 'alpha': alpha,\n"," 'max_iter': max_iter,\n"," 'l1_ratio': l1_ratio\n"," }\n","\n","\n"," # Ensure to use TimeSeriesSplit for time series data\n"," cv = TimeSeriesSplit(n_splits=8,test_size = 250, gap = 7)\n"," cv_scores = np.empty(8)\n","\n"," # fig, axs = plt.subplots(3, figsize=(20, 15))\n"," for idx, (train_idx, test_idx) in enumerate(cv.split(X)):\n"," X_train, X_test = X.iloc[train_idx], X.iloc[test_idx]\n"," y_train, y_test = y.iloc[train_idx], y.iloc[test_idx]\n","\n"," # Fit model\n","\n"," # ElasticNet uses both alpha and l1_ratio\n"," model = ElasticNet()\n"," model.fit(X_train, y_train)\n"," predictions = model.predict(X_test)\n"," cv_scores[idx] = mape(y_test, predictions)\n","\n"," return -np.mean(cv_scores) # Negative MAPE for maximization\n","\n","TARGET = 'y' # Assuming 'y' is your target variable\n","\n","bounds = {\n"," 'alpha': (0.001, 10),\n"," 'max_iter': (100, 1000),\n"," 'l1_ratio':(0,1)\n","}\n","\n","optimizer = BayesianOptimization(f=linear_evaluate, pbounds=bounds, random_state=42)\n","optimizer.maximize(init_points=10, n_iter=25)\n"],"metadata":{"id":"wBYNvJWwKo3r","outputId":"86e98cc4-4203-40f3-df04-5ada54bda9d8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1713287692897,"user_tz":-330,"elapsed":49623,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}}},"execution_count":6,"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting bayesian-optimization\n"," Downloading bayesian_optimization-1.4.3-py3-none-any.whl (18 kB)\n","Requirement already satisfied: numpy>=1.9.0 in /usr/local/lib/python3.10/dist-packages (from bayesian-optimization) (1.25.2)\n","Requirement already satisfied: scipy>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from bayesian-optimization) (1.11.4)\n","Requirement already satisfied: scikit-learn>=0.18.0 in /usr/local/lib/python3.10/dist-packages (from bayesian-optimization) (1.2.2)\n","Collecting colorama>=0.4.6 (from bayesian-optimization)\n"," Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\n","Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.18.0->bayesian-optimization) (1.4.0)\n","Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.18.0->bayesian-optimization) (3.4.0)\n","Installing collected packages: colorama, bayesian-optimization\n","Successfully installed bayesian-optimization-1.4.3 colorama-0.4.6\n","| iter | target | alpha | l1_ratio | max_iter |\n","-------------------------------------------------------------\n","| \u001b[0m1 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m3.746 \u001b[0m | \u001b[0m0.9507 \u001b[0m | \u001b[0m758.8 \u001b[0m |\n","| \u001b[0m2 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m5.987 \u001b[0m | \u001b[0m0.156 \u001b[0m | \u001b[0m240.4 \u001b[0m |\n","| \u001b[0m3 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m0.5818 \u001b[0m | \u001b[0m0.8662 \u001b[0m | \u001b[0m641.0 \u001b[0m |\n","| \u001b[0m4 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m7.081 \u001b[0m | \u001b[0m0.02058 \u001b[0m | \u001b[0m972.9 \u001b[0m |\n","| \u001b[0m5 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m8.325 \u001b[0m | \u001b[0m0.2123 \u001b[0m | \u001b[0m263.6 \u001b[0m |\n","| \u001b[0m6 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m1.835 \u001b[0m | \u001b[0m0.3042 \u001b[0m | \u001b[0m572.3 \u001b[0m |\n","| \u001b[0m7 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m4.32 \u001b[0m | \u001b[0m0.2912 \u001b[0m | \u001b[0m650.7 \u001b[0m |\n","| \u001b[0m8 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m1.396 \u001b[0m | \u001b[0m0.2921 \u001b[0m | \u001b[0m429.7 \u001b[0m |\n","| \u001b[0m9 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m4.561 \u001b[0m | \u001b[0m0.7852 \u001b[0m | \u001b[0m279.7 \u001b[0m |\n","| \u001b[0m10 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m5.143 \u001b[0m | \u001b[0m0.5924 \u001b[0m | \u001b[0m141.8 \u001b[0m |\n","| \u001b[0m11 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m9.714 \u001b[0m | \u001b[0m0.6324 \u001b[0m | \u001b[0m987.3 \u001b[0m |\n","| \u001b[0m12 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m1.609 \u001b[0m | \u001b[0m0.3991 \u001b[0m | \u001b[0m177.9 \u001b[0m |\n","| \u001b[0m13 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m3.253 \u001b[0m | \u001b[0m0.4791 \u001b[0m | \u001b[0m228.5 \u001b[0m |\n","| \u001b[0m14 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m9.43 \u001b[0m | \u001b[0m0.3679 \u001b[0m | \u001b[0m299.2 \u001b[0m |\n","| \u001b[0m15 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m8.941 \u001b[0m | \u001b[0m0.8615 \u001b[0m | \u001b[0m471.9 \u001b[0m |\n","| \u001b[0m16 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m3.324 \u001b[0m | \u001b[0m0.6799 \u001b[0m | \u001b[0m966.7 \u001b[0m |\n","| \u001b[0m17 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m0.7021 \u001b[0m | \u001b[0m0.1054 \u001b[0m | \u001b[0m999.6 \u001b[0m |\n","| \u001b[0m18 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m9.568 \u001b[0m | \u001b[0m0.7278 \u001b[0m | \u001b[0m999.4 \u001b[0m |\n","| \u001b[0m19 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m9.951 \u001b[0m | \u001b[0m0.8715 \u001b[0m | \u001b[0m100.5 \u001b[0m |\n","| \u001b[0m20 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m9.909 \u001b[0m | \u001b[0m0.8304 \u001b[0m | \u001b[0m998.9 \u001b[0m |\n","| \u001b[0m21 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m3.084 \u001b[0m | \u001b[0m0.8611 \u001b[0m | \u001b[0m184.5 \u001b[0m |\n","| \u001b[0m22 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m8.304 \u001b[0m | \u001b[0m0.6393 \u001b[0m | \u001b[0m511.9 \u001b[0m |\n","| \u001b[0m23 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m2.683 \u001b[0m | \u001b[0m0.2553 \u001b[0m | \u001b[0m554.0 \u001b[0m |\n","| \u001b[0m24 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m6.124 \u001b[0m | \u001b[0m0.06151 \u001b[0m | \u001b[0m482.4 \u001b[0m |\n","| \u001b[0m25 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m0.7052 \u001b[0m | \u001b[0m0.8737 \u001b[0m | \u001b[0m999.3 \u001b[0m |\n","| \u001b[0m26 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m0.1134 \u001b[0m | \u001b[0m0.5321 \u001b[0m | \u001b[0m102.3 \u001b[0m |\n","| \u001b[0m27 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m6.806 \u001b[0m | \u001b[0m0.3538 \u001b[0m | \u001b[0m229.7 \u001b[0m |\n","| \u001b[0m28 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m3.364 \u001b[0m | \u001b[0m0.05813 \u001b[0m | \u001b[0m890.7 \u001b[0m |\n","| \u001b[0m29 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m8.803 \u001b[0m | \u001b[0m0.8377 \u001b[0m | \u001b[0m388.7 \u001b[0m |\n","| \u001b[0m30 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m3.292 \u001b[0m | \u001b[0m0.9631 \u001b[0m | \u001b[0m554.7 \u001b[0m |\n","| \u001b[0m31 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m7.689 \u001b[0m | \u001b[0m0.08163 \u001b[0m | \u001b[0m674.6 \u001b[0m |\n","| \u001b[0m32 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m5.268 \u001b[0m | \u001b[0m0.2212 \u001b[0m | \u001b[0m942.3 \u001b[0m |\n","| \u001b[0m33 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m0.5522 \u001b[0m | \u001b[0m0.9621 \u001b[0m | \u001b[0m100.6 \u001b[0m |\n","| \u001b[0m34 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m0.4092 \u001b[0m | \u001b[0m0.2332 \u001b[0m | \u001b[0m998.9 \u001b[0m |\n","| \u001b[0m35 \u001b[0m | \u001b[0m-40.97 \u001b[0m | \u001b[0m9.78 \u001b[0m | \u001b[0m0.3601 \u001b[0m | \u001b[0m100.1 \u001b[0m |\n","=============================================================\n"]}]},{"cell_type":"code","source":["print(optimizer.max['params'])\n","# Train the model with the best parameters found\n","best_params = {k: int(v) if k == 'max_iter' else v for k, v in optimizer.max['params'].items()}\n","model = ElasticNet()\n","model.fit(X, y) # Training on the full dataset or consider using a separate test set"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":91},"id":"k3JnfnqEX8vB","executionInfo":{"status":"ok","timestamp":1713287692897,"user_tz":-330,"elapsed":26,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}},"outputId":"e04283a3-06df-40f2-a192-aeabd36fecf7"},"execution_count":7,"outputs":[{"output_type":"stream","name":"stdout","text":["{'alpha': 3.7460266483547775, 'l1_ratio': 0.9507143064099162, 'max_iter': 758.7945476302646}\n"]},{"output_type":"execute_result","data":{"text/plain":["ElasticNet()"],"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>ElasticNet()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">ElasticNet</label><div class=\"sk-toggleable__content\"><pre>ElasticNet()</pre></div></div></div></div></div>"]},"metadata":{},"execution_count":7}]},{"cell_type":"code","source":["tss = TimeSeriesSplit(n_splits=8,test_size = 250, gap = 7)\n","data = data.sort_index()\n","\n","fold = 0\n","preds = []\n","scores = []\n","for train_idx, val_idx in tss.split(data):\n"," train = data.iloc[train_idx]\n"," test = data.iloc[val_idx]\n","\n"," train = create_features(train)\n"," test = create_features(test)\n","\n"," FEATURES = ['hour','dayofyear', 'dayofweek', 'quarter', 'month','year',\n"," 'lag1','lag2','lag3']\n"," TARGET = 'PJME_MW_normalized'\n","\n"," X_train = train[FEATURES]\n"," y_train = train[TARGET]\n","\n"," X_test = test[FEATURES]\n"," y_test = test[TARGET]\n","\n"," reg = ElasticNet(alpha=3.7460266483547775,\n"," l1_ratio=0.9507143064099162,\n"," max_iter=759) # Best value found\n"," reg.fit(X_train, y_train)\n","\n"," y_pred = reg.predict(X_test)\n"," preds.append(y_pred)\n"," score = mape(y_test, y_pred) # Calculate MAPE instead of RMSE\n"," scores.append(score)"],"metadata":{"execution":{"iopub.status.busy":"2022-08-01T21:11:18.018074Z","iopub.execute_input":"2022-08-01T21:11:18.01865Z","iopub.status.idle":"2022-08-01T21:13:45.444232Z","shell.execute_reply.started":"2022-08-01T21:11:18.018607Z","shell.execute_reply":"2022-08-01T21:13:45.442166Z"},"trusted":true,"id":"pGgbjaIbI0b-","executionInfo":{"status":"ok","timestamp":1713287850649,"user_tz":-330,"elapsed":1897,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}}},"execution_count":8,"outputs":[]},{"cell_type":"code","source":["print(f'Score across folds {np.mean(scores):0.4f}')\n","print(f'Fold scores:{scores}')"],"metadata":{"execution":{"iopub.status.busy":"2022-08-01T21:15:00.268693Z","iopub.execute_input":"2022-08-01T21:15:00.269293Z","iopub.status.idle":"2022-08-01T21:15:00.277834Z","shell.execute_reply.started":"2022-08-01T21:15:00.269247Z","shell.execute_reply":"2022-08-01T21:15:00.276121Z"},"trusted":true,"id":"W6DHB8GAI0b-","executionInfo":{"status":"ok","timestamp":1713287850651,"user_tz":-330,"elapsed":6,"user":{"displayName":"Aastha Bharill","userId":"03847361273858925441"}},"outputId":"8ff2e07b-e5a9-44a1-c9d0-fd596dcf6aa1","colab":{"base_uri":"https://localhost:8080/"}},"execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["Score across folds 40.9698\n","Fold scores:[63.7571404750661, 41.90887727703904, 48.93222383088743, 39.08034264388143, 34.74284285227661, 37.24511649738179, 31.542386405390065, 30.549081553607714]\n"]}]}]}