├── ProjectReport.pdf ├── ReportSummary.pdf ├── README.md ├── LICENSE ├── .gitignore ├── GradientBoosting.ipynb └── SVR.ipynb /ProjectReport.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pavini11/SkyLens/HEAD/ProjectReport.pdf -------------------------------------------------------------------------------- /ReportSummary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pavini11/SkyLens/HEAD/ReportSummary.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Time-series-forecasting-of-Air-Quality-Prediction 2 | AQI Prediction using LSTM, MLR, SVR, Random Forest, Gradient Boosting 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Pavini Jain 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /GradientBoosting.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "import seaborn as sns\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "\n", 15 | "import warnings\n", 16 | "warnings.filterwarnings(\"ignore\")\n", 17 | "warnings.simplefilter(action='ignore', category=FutureWarning)" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 3, 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "df_x = pd.read_csv(\"train_x.csv\")\n", 27 | "df_y = pd.read_csv(\"train_y.csv\")\n", 28 | "df_x1 = pd.read_csv(\"test_x.csv\")\n", 29 | "df_y1 = pd.read_csv(\"test_y.csv\")" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 4, 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "data": { 39 | "text/html": [ 40 | "
\n", 41 | "\n", 54 | "\n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | "
DatePM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
02016-01-0156.4095.0851.7334.310.697.4455.9620.128.415.754.06.03.0
12016-01-0253.6993.9273.0954.770.768.6734.0620.828.312.945.06.31.1
22016-01-0362.3599.3477.7755.600.969.1047.6221.429.013.745.06.30.4
32016-01-0464.96104.6277.0750.810.898.8750.6221.529.015.247.06.92.2
42016-01-0570.15105.1279.4356.050.859.4136.9420.928.414.751.06.31.1
\n", 162 | "
" 163 | ], 164 | "text/plain": [ 165 | " Date PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp \\\n", 166 | "0 2016-01-01 56.40 95.08 51.73 34.31 0.69 7.44 55.96 20.1 28.4 \n", 167 | "1 2016-01-02 53.69 93.92 73.09 54.77 0.76 8.67 34.06 20.8 28.3 \n", 168 | "2 2016-01-03 62.35 99.34 77.77 55.60 0.96 9.10 47.62 21.4 29.0 \n", 169 | "3 2016-01-04 64.96 104.62 77.07 50.81 0.89 8.87 50.62 21.5 29.0 \n", 170 | "4 2016-01-05 70.15 105.12 79.43 56.05 0.85 9.41 36.94 20.9 28.4 \n", 171 | "\n", 172 | " min_temp humid visible wind \n", 173 | "0 15.7 54.0 6.0 3.0 \n", 174 | "1 12.9 45.0 6.3 1.1 \n", 175 | "2 13.7 45.0 6.3 0.4 \n", 176 | "3 15.2 47.0 6.9 2.2 \n", 177 | "4 14.7 51.0 6.3 1.1 " 178 | ] 179 | }, 180 | "execution_count": 4, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "df_x.head(5)" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 5, 192 | "metadata": {}, 193 | "outputs": [ 194 | { 195 | "data": { 196 | "text/html": [ 197 | "
\n", 198 | "\n", 211 | "\n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | "
DatePM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
001-01-202030.7170.8027.3126.741.078.5637.3922.027.219.2756.93.3
102-01-202025.7862.7328.0530.181.167.5233.1122.226.019.4775.52.0
203-01-202029.6669.6226.2626.920.996.4032.9823.428.419.4686.93.5
304-01-202052.62106.8131.5641.891.396.9437.3523.630.519.0636.31.3
405-01-202052.6497.9429.1029.521.017.0145.1024.230.520.4636.31.3
\n", 319 | "
" 320 | ], 321 | "text/plain": [ 322 | " Date PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp \\\n", 323 | "0 01-01-2020 30.71 70.80 27.31 26.74 1.07 8.56 37.39 22.0 27.2 \n", 324 | "1 02-01-2020 25.78 62.73 28.05 30.18 1.16 7.52 33.11 22.2 26.0 \n", 325 | "2 03-01-2020 29.66 69.62 26.26 26.92 0.99 6.40 32.98 23.4 28.4 \n", 326 | "3 04-01-2020 52.62 106.81 31.56 41.89 1.39 6.94 37.35 23.6 30.5 \n", 327 | "4 05-01-2020 52.64 97.94 29.10 29.52 1.01 7.01 45.10 24.2 30.5 \n", 328 | "\n", 329 | " min_temp humid visible wind \n", 330 | "0 19.2 75 6.9 3.3 \n", 331 | "1 19.4 77 5.5 2.0 \n", 332 | "2 19.4 68 6.9 3.5 \n", 333 | "3 19.0 63 6.3 1.3 \n", 334 | "4 20.4 63 6.3 1.3 " 335 | ] 336 | }, 337 | "execution_count": 5, 338 | "metadata": {}, 339 | "output_type": "execute_result" 340 | } 341 | ], 342 | "source": [ 343 | "df_x1.head(5)" 344 | ] 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": 6, 349 | "metadata": {}, 350 | "outputs": [ 351 | { 352 | "data": { 353 | "text/html": [ 354 | "
\n", 355 | "\n", 368 | "\n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | "
DateAQI
02016-01-01101.0
12016-01-0292.0
22016-01-03108.0
32016-01-04109.0
42016-01-05114.0
\n", 404 | "
" 405 | ], 406 | "text/plain": [ 407 | " Date AQI\n", 408 | "0 2016-01-01 101.0\n", 409 | "1 2016-01-02 92.0\n", 410 | "2 2016-01-03 108.0\n", 411 | "3 2016-01-04 109.0\n", 412 | "4 2016-01-05 114.0" 413 | ] 414 | }, 415 | "execution_count": 6, 416 | "metadata": {}, 417 | "output_type": "execute_result" 418 | } 419 | ], 420 | "source": [ 421 | "df_y.head(5)" 422 | ] 423 | }, 424 | { 425 | "cell_type": "code", 426 | "execution_count": 7, 427 | "metadata": {}, 428 | "outputs": [ 429 | { 430 | "data": { 431 | "text/html": [ 432 | "
\n", 433 | "\n", 446 | "\n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | "
DateAQI
02020-01-0182.0
12020-01-0281.0
22020-01-0385.0
32020-01-0495.0
42020-01-05118.0
\n", 482 | "
" 483 | ], 484 | "text/plain": [ 485 | " Date AQI\n", 486 | "0 2020-01-01 82.0\n", 487 | "1 2020-01-02 81.0\n", 488 | "2 2020-01-03 85.0\n", 489 | "3 2020-01-04 95.0\n", 490 | "4 2020-01-05 118.0" 491 | ] 492 | }, 493 | "execution_count": 7, 494 | "metadata": {}, 495 | "output_type": "execute_result" 496 | } 497 | ], 498 | "source": [ 499 | "df_y1.head(5)" 500 | ] 501 | }, 502 | { 503 | "cell_type": "code", 504 | "execution_count": 8, 505 | "metadata": {}, 506 | "outputs": [ 507 | { 508 | "name": "stdout", 509 | "output_type": "stream", 510 | "text": [ 511 | "\n", 512 | "RangeIndex: 1441 entries, 0 to 1440\n", 513 | "Data columns (total 14 columns):\n", 514 | "Date 1441 non-null object\n", 515 | "PM2.5 1441 non-null float64\n", 516 | "PM10 1441 non-null float64\n", 517 | "NO2 1441 non-null float64\n", 518 | "NOx 1441 non-null float64\n", 519 | "CO 1441 non-null float64\n", 520 | "SO2 1441 non-null float64\n", 521 | "O3 1441 non-null float64\n", 522 | "temp 1441 non-null float64\n", 523 | "max_temp 1441 non-null float64\n", 524 | "min_temp 1441 non-null float64\n", 525 | "humid 1441 non-null float64\n", 526 | "visible 1441 non-null float64\n", 527 | "wind 1441 non-null float64\n", 528 | "dtypes: float64(13), object(1)\n", 529 | "memory usage: 157.7+ KB\n" 530 | ] 531 | } 532 | ], 533 | "source": [ 534 | "df_x.info()" 535 | ] 536 | }, 537 | { 538 | "cell_type": "code", 539 | "execution_count": 9, 540 | "metadata": {}, 541 | "outputs": [ 542 | { 543 | "name": "stdout", 544 | "output_type": "stream", 545 | "text": [ 546 | "\n", 547 | "RangeIndex: 1441 entries, 0 to 1440\n", 548 | "Data columns (total 2 columns):\n", 549 | "Date 1441 non-null object\n", 550 | "AQI 1441 non-null float64\n", 551 | "dtypes: float64(1), object(1)\n", 552 | "memory usage: 22.6+ KB\n" 553 | ] 554 | } 555 | ], 556 | "source": [ 557 | "df_y.info()" 558 | ] 559 | }, 560 | { 561 | "cell_type": "code", 562 | "execution_count": 10, 563 | "metadata": {}, 564 | "outputs": [ 565 | { 566 | "name": "stdout", 567 | "output_type": "stream", 568 | "text": [ 569 | "\n", 570 | "RangeIndex: 182 entries, 0 to 181\n", 571 | "Data columns (total 14 columns):\n", 572 | "Date 182 non-null object\n", 573 | "PM2.5 182 non-null float64\n", 574 | "PM10 182 non-null float64\n", 575 | "NO2 182 non-null float64\n", 576 | "NOx 182 non-null float64\n", 577 | "CO 182 non-null float64\n", 578 | "SO2 182 non-null float64\n", 579 | "O3 182 non-null float64\n", 580 | "temp 182 non-null float64\n", 581 | "max_temp 182 non-null float64\n", 582 | "min_temp 182 non-null float64\n", 583 | "humid 182 non-null int64\n", 584 | "visible 182 non-null float64\n", 585 | "wind 182 non-null float64\n", 586 | "dtypes: float64(12), int64(1), object(1)\n", 587 | "memory usage: 20.0+ KB\n" 588 | ] 589 | } 590 | ], 591 | "source": [ 592 | "df_x1.info()" 593 | ] 594 | }, 595 | { 596 | "cell_type": "code", 597 | "execution_count": 11, 598 | "metadata": {}, 599 | "outputs": [ 600 | { 601 | "name": "stdout", 602 | "output_type": "stream", 603 | "text": [ 604 | "\n", 605 | "RangeIndex: 182 entries, 0 to 181\n", 606 | "Data columns (total 2 columns):\n", 607 | "Date 182 non-null object\n", 608 | "AQI 182 non-null float64\n", 609 | "dtypes: float64(1), object(1)\n", 610 | "memory usage: 2.9+ KB\n" 611 | ] 612 | } 613 | ], 614 | "source": [ 615 | "df_y1.info()" 616 | ] 617 | }, 618 | { 619 | "cell_type": "code", 620 | "execution_count": 12, 621 | "metadata": {}, 622 | "outputs": [], 623 | "source": [ 624 | "df_x[\"Date\"] = pd.to_datetime(df_x[\"Date\"])\n", 625 | "df_x1[\"Date\"] = pd.to_datetime(df_x[\"Date\"])" 626 | ] 627 | }, 628 | { 629 | "cell_type": "code", 630 | "execution_count": 13, 631 | "metadata": {}, 632 | "outputs": [ 633 | { 634 | "name": "stdout", 635 | "output_type": "stream", 636 | "text": [ 637 | "\n", 638 | "RangeIndex: 1441 entries, 0 to 1440\n", 639 | "Data columns (total 14 columns):\n", 640 | "Date 1441 non-null datetime64[ns]\n", 641 | "PM2.5 1441 non-null float64\n", 642 | "PM10 1441 non-null float64\n", 643 | "NO2 1441 non-null float64\n", 644 | "NOx 1441 non-null float64\n", 645 | "CO 1441 non-null float64\n", 646 | "SO2 1441 non-null float64\n", 647 | "O3 1441 non-null float64\n", 648 | "temp 1441 non-null float64\n", 649 | "max_temp 1441 non-null float64\n", 650 | "min_temp 1441 non-null float64\n", 651 | "humid 1441 non-null float64\n", 652 | "visible 1441 non-null float64\n", 653 | "wind 1441 non-null float64\n", 654 | "dtypes: datetime64[ns](1), float64(13)\n", 655 | "memory usage: 157.7 KB\n" 656 | ] 657 | } 658 | ], 659 | "source": [ 660 | "df_x.info()" 661 | ] 662 | }, 663 | { 664 | "cell_type": "code", 665 | "execution_count": 14, 666 | "metadata": {}, 667 | "outputs": [ 668 | { 669 | "name": "stdout", 670 | "output_type": "stream", 671 | "text": [ 672 | "\n", 673 | "RangeIndex: 182 entries, 0 to 181\n", 674 | "Data columns (total 14 columns):\n", 675 | "Date 182 non-null datetime64[ns]\n", 676 | "PM2.5 182 non-null float64\n", 677 | "PM10 182 non-null float64\n", 678 | "NO2 182 non-null float64\n", 679 | "NOx 182 non-null float64\n", 680 | "CO 182 non-null float64\n", 681 | "SO2 182 non-null float64\n", 682 | "O3 182 non-null float64\n", 683 | "temp 182 non-null float64\n", 684 | "max_temp 182 non-null float64\n", 685 | "min_temp 182 non-null float64\n", 686 | "humid 182 non-null int64\n", 687 | "visible 182 non-null float64\n", 688 | "wind 182 non-null float64\n", 689 | "dtypes: datetime64[ns](1), float64(12), int64(1)\n", 690 | "memory usage: 20.0 KB\n" 691 | ] 692 | } 693 | ], 694 | "source": [ 695 | "df_x1.info()" 696 | ] 697 | }, 698 | { 699 | "cell_type": "code", 700 | "execution_count": 15, 701 | "metadata": {}, 702 | "outputs": [ 703 | { 704 | "data": { 705 | "text/plain": [ 706 | "" 707 | ] 708 | }, 709 | "execution_count": 15, 710 | "metadata": {}, 711 | "output_type": "execute_result" 712 | }, 713 | { 714 | "data": { 715 | "image/png": "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\n", 716 | "text/plain": [ 717 | "
" 718 | ] 719 | }, 720 | "metadata": { 721 | "needs_background": "light" 722 | }, 723 | "output_type": "display_data" 724 | } 725 | ], 726 | "source": [ 727 | "sns.heatmap(df_x.isnull(),cbar=False, yticklabels=False)" 728 | ] 729 | }, 730 | { 731 | "cell_type": "code", 732 | "execution_count": 16, 733 | "metadata": {}, 734 | "outputs": [ 735 | { 736 | "data": { 737 | "text/plain": [ 738 | "" 739 | ] 740 | }, 741 | "execution_count": 16, 742 | "metadata": {}, 743 | "output_type": "execute_result" 744 | }, 745 | { 746 | "data": { 747 | "image/png": "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\n", 748 | "text/plain": [ 749 | "
" 750 | ] 751 | }, 752 | "metadata": { 753 | "needs_background": "light" 754 | }, 755 | "output_type": "display_data" 756 | } 757 | ], 758 | "source": [ 759 | "sns.heatmap(df_x1.isnull(),cbar=False, yticklabels=False)" 760 | ] 761 | }, 762 | { 763 | "cell_type": "code", 764 | "execution_count": 17, 765 | "metadata": {}, 766 | "outputs": [], 767 | "source": [ 768 | "x_train = df_x.drop(['Date'], axis = 1)\n", 769 | "y_train = df_y[\"AQI\"]\n", 770 | "x_test = df_x1.drop(['Date'], axis = 1)\n", 771 | "y_test = df_y1[\"AQI\"]" 772 | ] 773 | }, 774 | { 775 | "cell_type": "code", 776 | "execution_count": 18, 777 | "metadata": {}, 778 | "outputs": [ 779 | { 780 | "data": { 781 | "text/html": [ 782 | "
\n", 783 | "\n", 796 | "\n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | "
PM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
056.4095.0851.7334.310.697.4455.9620.128.415.754.06.03.0
153.6993.9273.0954.770.768.6734.0620.828.312.945.06.31.1
262.3599.3477.7755.600.969.1047.6221.429.013.745.06.30.4
364.96104.6277.0750.810.898.8750.6221.529.015.247.06.92.2
470.15105.1279.4356.050.859.4136.9420.928.414.751.06.31.1
\n", 898 | "
" 899 | ], 900 | "text/plain": [ 901 | " PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp min_temp \\\n", 902 | "0 56.40 95.08 51.73 34.31 0.69 7.44 55.96 20.1 28.4 15.7 \n", 903 | "1 53.69 93.92 73.09 54.77 0.76 8.67 34.06 20.8 28.3 12.9 \n", 904 | "2 62.35 99.34 77.77 55.60 0.96 9.10 47.62 21.4 29.0 13.7 \n", 905 | "3 64.96 104.62 77.07 50.81 0.89 8.87 50.62 21.5 29.0 15.2 \n", 906 | "4 70.15 105.12 79.43 56.05 0.85 9.41 36.94 20.9 28.4 14.7 \n", 907 | "\n", 908 | " humid visible wind \n", 909 | "0 54.0 6.0 3.0 \n", 910 | "1 45.0 6.3 1.1 \n", 911 | "2 45.0 6.3 0.4 \n", 912 | "3 47.0 6.9 2.2 \n", 913 | "4 51.0 6.3 1.1 " 914 | ] 915 | }, 916 | "execution_count": 18, 917 | "metadata": {}, 918 | "output_type": "execute_result" 919 | } 920 | ], 921 | "source": [ 922 | "x_train.head(5)" 923 | ] 924 | }, 925 | { 926 | "cell_type": "code", 927 | "execution_count": 19, 928 | "metadata": {}, 929 | "outputs": [ 930 | { 931 | "data": { 932 | "text/html": [ 933 | "
\n", 934 | "\n", 947 | "\n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | "
PM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
030.7170.8027.3126.741.078.5637.3922.027.219.2756.93.3
125.7862.7328.0530.181.167.5233.1122.226.019.4775.52.0
229.6669.6226.2626.920.996.4032.9823.428.419.4686.93.5
352.62106.8131.5641.891.396.9437.3523.630.519.0636.31.3
452.6497.9429.1029.521.017.0145.1024.230.520.4636.31.3
\n", 1049 | "
" 1050 | ], 1051 | "text/plain": [ 1052 | " PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp min_temp \\\n", 1053 | "0 30.71 70.80 27.31 26.74 1.07 8.56 37.39 22.0 27.2 19.2 \n", 1054 | "1 25.78 62.73 28.05 30.18 1.16 7.52 33.11 22.2 26.0 19.4 \n", 1055 | "2 29.66 69.62 26.26 26.92 0.99 6.40 32.98 23.4 28.4 19.4 \n", 1056 | "3 52.62 106.81 31.56 41.89 1.39 6.94 37.35 23.6 30.5 19.0 \n", 1057 | "4 52.64 97.94 29.10 29.52 1.01 7.01 45.10 24.2 30.5 20.4 \n", 1058 | "\n", 1059 | " humid visible wind \n", 1060 | "0 75 6.9 3.3 \n", 1061 | "1 77 5.5 2.0 \n", 1062 | "2 68 6.9 3.5 \n", 1063 | "3 63 6.3 1.3 \n", 1064 | "4 63 6.3 1.3 " 1065 | ] 1066 | }, 1067 | "execution_count": 19, 1068 | "metadata": {}, 1069 | "output_type": "execute_result" 1070 | } 1071 | ], 1072 | "source": [ 1073 | "x_test.head(5)" 1074 | ] 1075 | }, 1076 | { 1077 | "cell_type": "code", 1078 | "execution_count": 20, 1079 | "metadata": {}, 1080 | "outputs": [ 1081 | { 1082 | "data": { 1083 | "text/plain": [ 1084 | "0 101.0\n", 1085 | "1 92.0\n", 1086 | "2 108.0\n", 1087 | "3 109.0\n", 1088 | "4 114.0\n", 1089 | "Name: AQI, dtype: float64" 1090 | ] 1091 | }, 1092 | "execution_count": 20, 1093 | "metadata": {}, 1094 | "output_type": "execute_result" 1095 | } 1096 | ], 1097 | "source": [ 1098 | "y_train.head(5)" 1099 | ] 1100 | }, 1101 | { 1102 | "cell_type": "code", 1103 | "execution_count": 21, 1104 | "metadata": {}, 1105 | "outputs": [ 1106 | { 1107 | "data": { 1108 | "text/plain": [ 1109 | "0 82.0\n", 1110 | "1 81.0\n", 1111 | "2 85.0\n", 1112 | "3 95.0\n", 1113 | "4 118.0\n", 1114 | "Name: AQI, dtype: float64" 1115 | ] 1116 | }, 1117 | "execution_count": 21, 1118 | "metadata": {}, 1119 | "output_type": "execute_result" 1120 | } 1121 | ], 1122 | "source": [ 1123 | "y_test.head(5)" 1124 | ] 1125 | }, 1126 | { 1127 | "cell_type": "code", 1128 | "execution_count": 22, 1129 | "metadata": {}, 1130 | "outputs": [], 1131 | "source": [ 1132 | "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n", 1133 | "sc_x = StandardScaler()\n", 1134 | "sc_y = StandardScaler()\n", 1135 | "x_train = sc_x.fit_transform(x_train)\n", 1136 | "x_test = sc_x.transform(x_test)\n", 1137 | "y_train = sc_y.fit_transform(np.array(y_train).reshape(-1,1))\n", 1138 | "y_test = sc_y.transform(np.array(y_test).reshape(-1,1))" 1139 | ] 1140 | }, 1141 | { 1142 | "cell_type": "code", 1143 | "execution_count": 23, 1144 | "metadata": {}, 1145 | "outputs": [ 1146 | { 1147 | "data": { 1148 | "text/plain": [ 1149 | "array([[-0.27610501],\n", 1150 | " [-0.30227705],\n", 1151 | " [-0.1975889 ],\n", 1152 | " [ 0.06413148],\n", 1153 | " [ 0.66608835]])" 1154 | ] 1155 | }, 1156 | "execution_count": 23, 1157 | "metadata": {}, 1158 | "output_type": "execute_result" 1159 | } 1160 | ], 1161 | "source": [ 1162 | "y_test[:5]" 1163 | ] 1164 | }, 1165 | { 1166 | "cell_type": "code", 1167 | "execution_count": 24, 1168 | "metadata": {}, 1169 | "outputs": [ 1170 | { 1171 | "data": { 1172 | "text/plain": [ 1173 | "GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n", 1174 | " learning_rate=0.1, loss='ls', max_depth=3,\n", 1175 | " max_features=None, max_leaf_nodes=None,\n", 1176 | " min_impurity_decrease=0.0, min_impurity_split=None,\n", 1177 | " min_samples_leaf=1, min_samples_split=2,\n", 1178 | " min_weight_fraction_leaf=0.0, n_estimators=100,\n", 1179 | " n_iter_no_change=None, presort='auto',\n", 1180 | " random_state=None, subsample=1.0, tol=0.0001,\n", 1181 | " validation_fraction=0.1, verbose=0, warm_start=False)" 1182 | ] 1183 | }, 1184 | "execution_count": 24, 1185 | "metadata": {}, 1186 | "output_type": "execute_result" 1187 | } 1188 | ], 1189 | "source": [ 1190 | "from sklearn.ensemble import GradientBoostingRegressor\n", 1191 | "regressor = GradientBoostingRegressor()\n", 1192 | "regressor.fit(x_train,y_train)" 1193 | ] 1194 | }, 1195 | { 1196 | "cell_type": "code", 1197 | "execution_count": 25, 1198 | "metadata": {}, 1199 | "outputs": [ 1200 | { 1201 | "data": { 1202 | "text/plain": [ 1203 | "array([-0.30664803, 0.02744575, -0.45522541, 0.56821673, 0.39152823,\n", 1204 | " -0.33634286, -0.45985512, -0.13761617, 0.21430141, 0.06167805,\n", 1205 | " -0.43960067, -0.05112361, 0.40469433, 0.91172871, 0.24935004,\n", 1206 | " 0.34019051, 0.25525236, -0.59217263, -0.56262186, -0.01497731,\n", 1207 | " 0.0695675 , -0.02144429, 0.04325328, 0.15946079, 0.18446 ,\n", 1208 | " 0.25582022, 0.30949316, 0.40278977, 0.4255181 , 0.2840163 ,\n", 1209 | " 0.42057773, 0.45941366, -0.24938813, -0.25418846, -0.42233104,\n", 1210 | " 0.11668701, 0.33066576, 0.29736599, 0.32064904, 0.40746019,\n", 1211 | " -0.16741748, -0.11139299, -0.30030267, 0.00940919, 0.52902124,\n", 1212 | " 0.71358506, 0.4200336 , 0.26898954, 0.4043111 , 0.51775921,\n", 1213 | " 0.24915816, -0.20381793, -0.32190889, 0.13897562, -0.13482573,\n", 1214 | " 0.45736285, 0.2023384 , 0.32740856, 0.14504189, 0.24373536,\n", 1215 | " 0.4673738 , 0.65162784, 1.76219074, 0.63494524, 0.62830402,\n", 1216 | " 0.30860789, 0.10367325, -0.05551396, 0.20358276, 0.30723921,\n", 1217 | " 0.29236797, 0.1460285 , -0.06520416, -0.35593281, 0.07230334,\n", 1218 | " -0.43199656, -0.50446128, -0.31805938, 0.44619972, 0.50666258,\n", 1219 | " 0.37658415, -0.03478484, 0.09924211, 0.2197565 , -0.86057172,\n", 1220 | " -0.94029625, -0.77387695, -0.65316783, -0.22228412, 0.1078362 ,\n", 1221 | " -0.12004117, -0.17820506, -0.07598379, -0.11422471, -0.05717854,\n", 1222 | " -0.63267181, -0.18355135, -0.35640078, -0.47804469, 0.18869273,\n", 1223 | " -0.64542504, -0.57419083, -0.55506317, -0.49390715, -0.42547427,\n", 1224 | " -0.48798456, -0.5072359 , -0.29127774, -0.49157359, -0.85665164,\n", 1225 | " -0.93764569, -0.76543852, -0.69058052, -0.60870061, -0.25151876,\n", 1226 | " -0.89037835, -0.64424282, -0.74117626, -0.55070149, -0.79329866,\n", 1227 | " -0.66968387, -0.56791011, -0.56984256, -0.48223239, -0.30810351,\n", 1228 | " -0.14926282, -0.44770745, -0.47163955, -0.72383692, -0.79947907,\n", 1229 | " -0.54709498, -0.4843061 , -0.86389296, -0.90695394, -0.61251399,\n", 1230 | " -0.81859382, -0.39373544, -0.30160905, -0.25753693, -0.82518774,\n", 1231 | " -0.91156371, -0.83574485, -0.63531245, -0.46670179, -0.58265605,\n", 1232 | " -0.63542767, -0.51736277, -0.46767405, -0.77992992, -0.80571348,\n", 1233 | " -0.8893096 , -0.7368831 , -1.12757017, -1.29664219, -1.33817791,\n", 1234 | " -1.12177791, -0.85475676, -0.83829278, -1.06097844, -0.87068831,\n", 1235 | " -0.83739172, -0.78359487, -1.05402323, -1.15873018, -0.97677208,\n", 1236 | " -1.1738632 , -1.08756149, -0.87845 , -1.05953758, -0.89726162,\n", 1237 | " -0.92808345, -1.07917673, -1.09615972, -1.04304939, -0.91874159,\n", 1238 | " -0.85788747, -0.96075367, -1.11091323, -1.15244895, -1.11325572,\n", 1239 | " -1.02376198, -1.1516053 ])" 1240 | ] 1241 | }, 1242 | "execution_count": 25, 1243 | "metadata": {}, 1244 | "output_type": "execute_result" 1245 | } 1246 | ], 1247 | "source": [ 1248 | "y_prediction = regressor.predict(x_test)\n", 1249 | "y_prediction " 1250 | ] 1251 | }, 1252 | { 1253 | "cell_type": "code", 1254 | "execution_count": 26, 1255 | "metadata": {}, 1256 | "outputs": [ 1257 | { 1258 | "name": "stdout", 1259 | "output_type": "stream", 1260 | "text": [ 1261 | "R2 SCORE is 0.770856636180251\n", 1262 | "mean_sqrd_error is 0.058365602156151296\n", 1263 | "Root mean squared error of is 0.24158973934368838\n", 1264 | "Mean Absolute error is 0.1872874239791087\n" 1265 | ] 1266 | } 1267 | ], 1268 | "source": [ 1269 | "from sklearn.metrics import r2_score\n", 1270 | "from sklearn.metrics import mean_squared_error\n", 1271 | "from sklearn.metrics import mean_absolute_error\n", 1272 | "score = r2_score(y_test,y_prediction)\n", 1273 | "mean_error = mean_squared_error(y_test,y_prediction)\n", 1274 | "mae = mean_absolute_error(y_test,y_prediction)\n", 1275 | "print(\"R2 SCORE is\", score)\n", 1276 | "print(\"mean_sqrd_error is \", mean_error)\n", 1277 | "print(\"Root mean squared error of is\",np.sqrt(mean_error))\n", 1278 | "print(\"Mean Absolute error is\", mae)" 1279 | ] 1280 | }, 1281 | { 1282 | "cell_type": "code", 1283 | "execution_count": 27, 1284 | "metadata": {}, 1285 | "outputs": [ 1286 | { 1287 | "data": { 1288 | "text/plain": [ 1289 | "array([[ 82.],\n", 1290 | " [ 81.],\n", 1291 | " [ 85.],\n", 1292 | " [ 95.],\n", 1293 | " [118.]])" 1294 | ] 1295 | }, 1296 | "execution_count": 27, 1297 | "metadata": {}, 1298 | "output_type": "execute_result" 1299 | } 1300 | ], 1301 | "source": [ 1302 | "y_test = sc_y.inverse_transform(y_test)\n", 1303 | "y_test[:5]" 1304 | ] 1305 | }, 1306 | { 1307 | "cell_type": "code", 1308 | "execution_count": 28, 1309 | "metadata": {}, 1310 | "outputs": [ 1311 | { 1312 | "data": { 1313 | "text/plain": [ 1314 | "array([ 80.83299016, 93.59828519, 75.15603902, 114.26045103,\n", 1315 | " 107.50940979])" 1316 | ] 1317 | }, 1318 | "execution_count": 28, 1319 | "metadata": {}, 1320 | "output_type": "execute_result" 1321 | } 1322 | ], 1323 | "source": [ 1324 | "y_prediction = sc_y.inverse_transform(y_prediction)\n", 1325 | "y_prediction[:5]" 1326 | ] 1327 | }, 1328 | { 1329 | "cell_type": "code", 1330 | "execution_count": 29, 1331 | "metadata": {}, 1332 | "outputs": [ 1333 | { 1334 | "data": { 1335 | "image/png": "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\n", 1336 | "text/plain": [ 1337 | "
" 1338 | ] 1339 | }, 1340 | "metadata": { 1341 | "needs_background": "light" 1342 | }, 1343 | "output_type": "display_data" 1344 | } 1345 | ], 1346 | "source": [ 1347 | "df1 = pd.DataFrame({'Actual': y_test[100:120].flatten(), 'Predicted': y_prediction[100:120].flatten()})\n", 1348 | "df1.plot(kind='line')\n", 1349 | "plt.grid(which='major', linestyle='-', linewidth='0.5', color='green')\n", 1350 | "plt.grid(which='minor', linestyle=':', linewidth='0.5', color='black')\n", 1351 | "plt.show()" 1352 | ] 1353 | }, 1354 | { 1355 | "cell_type": "code", 1356 | "execution_count": 30, 1357 | "metadata": {}, 1358 | "outputs": [ 1359 | { 1360 | "data": { 1361 | "text/html": [ 1362 | "
\n", 1363 | "\n", 1376 | "\n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | "
ACTUAL AQIPREDICTED AQIDIFFERNCEPERCENTAGE ERROR
082.080.8329901.1670101.423183
181.093.598285-12.59828515.553439
285.075.1560399.84396111.581131
395.0114.260451-19.26045120.274159
4118.0107.50941010.4905908.890331
581.079.6983891.3016111.606927
675.074.9791440.0208560.027808
793.087.2914815.7085196.138193
8101.0100.7378000.2622000.259604
994.094.906258-0.9062580.964104
1078.075.7530402.2469602.880717
1179.090.596251-11.59625114.678798
12106.0108.012470-2.0124701.898556
13121.0127.385603-6.3856035.277358
14111.0102.0769648.9230368.038772
\n", 1494 | "
" 1495 | ], 1496 | "text/plain": [ 1497 | " ACTUAL AQI PREDICTED AQI DIFFERNCE PERCENTAGE ERROR\n", 1498 | "0 82.0 80.832990 1.167010 1.423183\n", 1499 | "1 81.0 93.598285 -12.598285 15.553439\n", 1500 | "2 85.0 75.156039 9.843961 11.581131\n", 1501 | "3 95.0 114.260451 -19.260451 20.274159\n", 1502 | "4 118.0 107.509410 10.490590 8.890331\n", 1503 | "5 81.0 79.698389 1.301611 1.606927\n", 1504 | "6 75.0 74.979144 0.020856 0.027808\n", 1505 | "7 93.0 87.291481 5.708519 6.138193\n", 1506 | "8 101.0 100.737800 0.262200 0.259604\n", 1507 | "9 94.0 94.906258 -0.906258 0.964104\n", 1508 | "10 78.0 75.753040 2.246960 2.880717\n", 1509 | "11 79.0 90.596251 -11.596251 14.678798\n", 1510 | "12 106.0 108.012470 -2.012470 1.898556\n", 1511 | "13 121.0 127.385603 -6.385603 5.277358\n", 1512 | "14 111.0 102.076964 8.923036 8.038772" 1513 | ] 1514 | }, 1515 | "execution_count": 30, 1516 | "metadata": {}, 1517 | "output_type": "execute_result" 1518 | } 1519 | ], 1520 | "source": [ 1521 | "result = pd.DataFrame()\n", 1522 | "result[\"ACTUAL AQI\"] = y_test.flatten()\n", 1523 | "result[\"PREDICTED AQI\"] = y_prediction\n", 1524 | "result[\"DIFFERNCE\"] = result[\"ACTUAL AQI\"] - result[\"PREDICTED AQI\"]\n", 1525 | "result[\"PERCENTAGE ERROR\"] = ( abs(result[\"ACTUAL AQI\"] - result[\"PREDICTED AQI\"] ) / result[\"ACTUAL AQI\"] ) * 100\n", 1526 | "result.head(15)" 1527 | ] 1528 | }, 1529 | { 1530 | "cell_type": "code", 1531 | "execution_count": null, 1532 | "metadata": {}, 1533 | "outputs": [], 1534 | "source": [] 1535 | } 1536 | ], 1537 | "metadata": { 1538 | "kernelspec": { 1539 | "display_name": "Python 3", 1540 | "language": "python", 1541 | "name": "python3" 1542 | }, 1543 | "language_info": { 1544 | "codemirror_mode": { 1545 | "name": "ipython", 1546 | "version": 3 1547 | }, 1548 | "file_extension": ".py", 1549 | "mimetype": "text/x-python", 1550 | "name": "python", 1551 | "nbconvert_exporter": "python", 1552 | "pygments_lexer": "ipython3", 1553 | "version": "3.7.3" 1554 | } 1555 | }, 1556 | "nbformat": 4, 1557 | "nbformat_minor": 2 1558 | } 1559 | -------------------------------------------------------------------------------- /SVR.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "import seaborn as sns\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "\n", 15 | "import warnings\n", 16 | "warnings.filterwarnings(\"ignore\")\n", 17 | "warnings.simplefilter(action='ignore', category=FutureWarning)" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 2, 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "df_x = pd.read_csv(\"train_x.csv\")\n", 27 | "df_y = pd.read_csv(\"train_y.csv\")\n", 28 | "df_x1 = pd.read_csv(\"test_x.csv\")\n", 29 | "df_y1 = pd.read_csv(\"test_y.csv\")" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 3, 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "data": { 39 | "text/html": [ 40 | "
\n", 41 | "\n", 54 | "\n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | "
DatePM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
02016-01-0156.4095.0851.7334.310.697.4455.9620.128.415.754.06.03.0
12016-01-0253.6993.9273.0954.770.768.6734.0620.828.312.945.06.31.1
22016-01-0362.3599.3477.7755.600.969.1047.6221.429.013.745.06.30.4
32016-01-0464.96104.6277.0750.810.898.8750.6221.529.015.247.06.92.2
42016-01-0570.15105.1279.4356.050.859.4136.9420.928.414.751.06.31.1
\n", 162 | "
" 163 | ], 164 | "text/plain": [ 165 | " Date PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp \\\n", 166 | "0 2016-01-01 56.40 95.08 51.73 34.31 0.69 7.44 55.96 20.1 28.4 \n", 167 | "1 2016-01-02 53.69 93.92 73.09 54.77 0.76 8.67 34.06 20.8 28.3 \n", 168 | "2 2016-01-03 62.35 99.34 77.77 55.60 0.96 9.10 47.62 21.4 29.0 \n", 169 | "3 2016-01-04 64.96 104.62 77.07 50.81 0.89 8.87 50.62 21.5 29.0 \n", 170 | "4 2016-01-05 70.15 105.12 79.43 56.05 0.85 9.41 36.94 20.9 28.4 \n", 171 | "\n", 172 | " min_temp humid visible wind \n", 173 | "0 15.7 54.0 6.0 3.0 \n", 174 | "1 12.9 45.0 6.3 1.1 \n", 175 | "2 13.7 45.0 6.3 0.4 \n", 176 | "3 15.2 47.0 6.9 2.2 \n", 177 | "4 14.7 51.0 6.3 1.1 " 178 | ] 179 | }, 180 | "execution_count": 3, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "df_x.head(5)" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 4, 192 | "metadata": {}, 193 | "outputs": [ 194 | { 195 | "data": { 196 | "text/html": [ 197 | "
\n", 198 | "\n", 211 | "\n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | "
DatePM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
001-01-202030.7170.8027.3126.741.078.5637.3922.027.219.2756.93.3
102-01-202025.7862.7328.0530.181.167.5233.1122.226.019.4775.52.0
203-01-202029.6669.6226.2626.920.996.4032.9823.428.419.4686.93.5
304-01-202052.62106.8131.5641.891.396.9437.3523.630.519.0636.31.3
405-01-202052.6497.9429.1029.521.017.0145.1024.230.520.4636.31.3
\n", 319 | "
" 320 | ], 321 | "text/plain": [ 322 | " Date PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp \\\n", 323 | "0 01-01-2020 30.71 70.80 27.31 26.74 1.07 8.56 37.39 22.0 27.2 \n", 324 | "1 02-01-2020 25.78 62.73 28.05 30.18 1.16 7.52 33.11 22.2 26.0 \n", 325 | "2 03-01-2020 29.66 69.62 26.26 26.92 0.99 6.40 32.98 23.4 28.4 \n", 326 | "3 04-01-2020 52.62 106.81 31.56 41.89 1.39 6.94 37.35 23.6 30.5 \n", 327 | "4 05-01-2020 52.64 97.94 29.10 29.52 1.01 7.01 45.10 24.2 30.5 \n", 328 | "\n", 329 | " min_temp humid visible wind \n", 330 | "0 19.2 75 6.9 3.3 \n", 331 | "1 19.4 77 5.5 2.0 \n", 332 | "2 19.4 68 6.9 3.5 \n", 333 | "3 19.0 63 6.3 1.3 \n", 334 | "4 20.4 63 6.3 1.3 " 335 | ] 336 | }, 337 | "execution_count": 4, 338 | "metadata": {}, 339 | "output_type": "execute_result" 340 | } 341 | ], 342 | "source": [ 343 | "df_x1.head(5)" 344 | ] 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": 5, 349 | "metadata": {}, 350 | "outputs": [ 351 | { 352 | "data": { 353 | "text/html": [ 354 | "
\n", 355 | "\n", 368 | "\n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | "
DateAQI
02016-01-01101.0
12016-01-0292.0
22016-01-03108.0
32016-01-04109.0
42016-01-05114.0
\n", 404 | "
" 405 | ], 406 | "text/plain": [ 407 | " Date AQI\n", 408 | "0 2016-01-01 101.0\n", 409 | "1 2016-01-02 92.0\n", 410 | "2 2016-01-03 108.0\n", 411 | "3 2016-01-04 109.0\n", 412 | "4 2016-01-05 114.0" 413 | ] 414 | }, 415 | "execution_count": 5, 416 | "metadata": {}, 417 | "output_type": "execute_result" 418 | } 419 | ], 420 | "source": [ 421 | "df_y.head(5)" 422 | ] 423 | }, 424 | { 425 | "cell_type": "code", 426 | "execution_count": 6, 427 | "metadata": {}, 428 | "outputs": [ 429 | { 430 | "data": { 431 | "text/html": [ 432 | "
\n", 433 | "\n", 446 | "\n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | "
DateAQI
02020-01-0182.0
12020-01-0281.0
22020-01-0385.0
32020-01-0495.0
42020-01-05118.0
\n", 482 | "
" 483 | ], 484 | "text/plain": [ 485 | " Date AQI\n", 486 | "0 2020-01-01 82.0\n", 487 | "1 2020-01-02 81.0\n", 488 | "2 2020-01-03 85.0\n", 489 | "3 2020-01-04 95.0\n", 490 | "4 2020-01-05 118.0" 491 | ] 492 | }, 493 | "execution_count": 6, 494 | "metadata": {}, 495 | "output_type": "execute_result" 496 | } 497 | ], 498 | "source": [ 499 | "df_y1.head(5)" 500 | ] 501 | }, 502 | { 503 | "cell_type": "code", 504 | "execution_count": 7, 505 | "metadata": {}, 506 | "outputs": [ 507 | { 508 | "name": "stdout", 509 | "output_type": "stream", 510 | "text": [ 511 | "\n", 512 | "RangeIndex: 1441 entries, 0 to 1440\n", 513 | "Data columns (total 14 columns):\n", 514 | "Date 1441 non-null object\n", 515 | "PM2.5 1441 non-null float64\n", 516 | "PM10 1441 non-null float64\n", 517 | "NO2 1441 non-null float64\n", 518 | "NOx 1441 non-null float64\n", 519 | "CO 1441 non-null float64\n", 520 | "SO2 1441 non-null float64\n", 521 | "O3 1441 non-null float64\n", 522 | "temp 1441 non-null float64\n", 523 | "max_temp 1441 non-null float64\n", 524 | "min_temp 1441 non-null float64\n", 525 | "humid 1441 non-null float64\n", 526 | "visible 1441 non-null float64\n", 527 | "wind 1441 non-null float64\n", 528 | "dtypes: float64(13), object(1)\n", 529 | "memory usage: 157.7+ KB\n" 530 | ] 531 | } 532 | ], 533 | "source": [ 534 | "df_x.info()" 535 | ] 536 | }, 537 | { 538 | "cell_type": "code", 539 | "execution_count": 8, 540 | "metadata": {}, 541 | "outputs": [ 542 | { 543 | "name": "stdout", 544 | "output_type": "stream", 545 | "text": [ 546 | "\n", 547 | "RangeIndex: 1441 entries, 0 to 1440\n", 548 | "Data columns (total 2 columns):\n", 549 | "Date 1441 non-null object\n", 550 | "AQI 1441 non-null float64\n", 551 | "dtypes: float64(1), object(1)\n", 552 | "memory usage: 22.6+ KB\n" 553 | ] 554 | } 555 | ], 556 | "source": [ 557 | "df_y.info()" 558 | ] 559 | }, 560 | { 561 | "cell_type": "code", 562 | "execution_count": 9, 563 | "metadata": {}, 564 | "outputs": [ 565 | { 566 | "name": "stdout", 567 | "output_type": "stream", 568 | "text": [ 569 | "\n", 570 | "RangeIndex: 182 entries, 0 to 181\n", 571 | "Data columns (total 14 columns):\n", 572 | "Date 182 non-null object\n", 573 | "PM2.5 182 non-null float64\n", 574 | "PM10 182 non-null float64\n", 575 | "NO2 182 non-null float64\n", 576 | "NOx 182 non-null float64\n", 577 | "CO 182 non-null float64\n", 578 | "SO2 182 non-null float64\n", 579 | "O3 182 non-null float64\n", 580 | "temp 182 non-null float64\n", 581 | "max_temp 182 non-null float64\n", 582 | "min_temp 182 non-null float64\n", 583 | "humid 182 non-null int64\n", 584 | "visible 182 non-null float64\n", 585 | "wind 182 non-null float64\n", 586 | "dtypes: float64(12), int64(1), object(1)\n", 587 | "memory usage: 20.0+ KB\n" 588 | ] 589 | } 590 | ], 591 | "source": [ 592 | "df_x1.info()" 593 | ] 594 | }, 595 | { 596 | "cell_type": "code", 597 | "execution_count": 10, 598 | "metadata": {}, 599 | "outputs": [ 600 | { 601 | "name": "stdout", 602 | "output_type": "stream", 603 | "text": [ 604 | "\n", 605 | "RangeIndex: 182 entries, 0 to 181\n", 606 | "Data columns (total 2 columns):\n", 607 | "Date 182 non-null object\n", 608 | "AQI 182 non-null float64\n", 609 | "dtypes: float64(1), object(1)\n", 610 | "memory usage: 2.9+ KB\n" 611 | ] 612 | } 613 | ], 614 | "source": [ 615 | "df_y1.info()" 616 | ] 617 | }, 618 | { 619 | "cell_type": "code", 620 | "execution_count": 11, 621 | "metadata": {}, 622 | "outputs": [], 623 | "source": [ 624 | "df_x[\"Date\"] = pd.to_datetime(df_x[\"Date\"])\n", 625 | "df_x1[\"Date\"] = pd.to_datetime(df_x[\"Date\"])" 626 | ] 627 | }, 628 | { 629 | "cell_type": "code", 630 | "execution_count": 12, 631 | "metadata": {}, 632 | "outputs": [ 633 | { 634 | "name": "stdout", 635 | "output_type": "stream", 636 | "text": [ 637 | "\n", 638 | "RangeIndex: 1441 entries, 0 to 1440\n", 639 | "Data columns (total 14 columns):\n", 640 | "Date 1441 non-null datetime64[ns]\n", 641 | "PM2.5 1441 non-null float64\n", 642 | "PM10 1441 non-null float64\n", 643 | "NO2 1441 non-null float64\n", 644 | "NOx 1441 non-null float64\n", 645 | "CO 1441 non-null float64\n", 646 | "SO2 1441 non-null float64\n", 647 | "O3 1441 non-null float64\n", 648 | "temp 1441 non-null float64\n", 649 | "max_temp 1441 non-null float64\n", 650 | "min_temp 1441 non-null float64\n", 651 | "humid 1441 non-null float64\n", 652 | "visible 1441 non-null float64\n", 653 | "wind 1441 non-null float64\n", 654 | "dtypes: datetime64[ns](1), float64(13)\n", 655 | "memory usage: 157.7 KB\n" 656 | ] 657 | } 658 | ], 659 | "source": [ 660 | "df_x.info()" 661 | ] 662 | }, 663 | { 664 | "cell_type": "code", 665 | "execution_count": 13, 666 | "metadata": {}, 667 | "outputs": [ 668 | { 669 | "name": "stdout", 670 | "output_type": "stream", 671 | "text": [ 672 | "\n", 673 | "RangeIndex: 182 entries, 0 to 181\n", 674 | "Data columns (total 14 columns):\n", 675 | "Date 182 non-null datetime64[ns]\n", 676 | "PM2.5 182 non-null float64\n", 677 | "PM10 182 non-null float64\n", 678 | "NO2 182 non-null float64\n", 679 | "NOx 182 non-null float64\n", 680 | "CO 182 non-null float64\n", 681 | "SO2 182 non-null float64\n", 682 | "O3 182 non-null float64\n", 683 | "temp 182 non-null float64\n", 684 | "max_temp 182 non-null float64\n", 685 | "min_temp 182 non-null float64\n", 686 | "humid 182 non-null int64\n", 687 | "visible 182 non-null float64\n", 688 | "wind 182 non-null float64\n", 689 | "dtypes: datetime64[ns](1), float64(12), int64(1)\n", 690 | "memory usage: 20.0 KB\n" 691 | ] 692 | } 693 | ], 694 | "source": [ 695 | "df_x1.info()" 696 | ] 697 | }, 698 | { 699 | "cell_type": "code", 700 | "execution_count": 14, 701 | "metadata": {}, 702 | "outputs": [ 703 | { 704 | "data": { 705 | "text/plain": [ 706 | "" 707 | ] 708 | }, 709 | "execution_count": 14, 710 | "metadata": {}, 711 | "output_type": "execute_result" 712 | }, 713 | { 714 | "data": { 715 | "image/png": "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\n", 716 | "text/plain": [ 717 | "
" 718 | ] 719 | }, 720 | "metadata": { 721 | "needs_background": "light" 722 | }, 723 | "output_type": "display_data" 724 | } 725 | ], 726 | "source": [ 727 | "sns.heatmap(df_x.isnull(),cbar=False, yticklabels=False)" 728 | ] 729 | }, 730 | { 731 | "cell_type": "code", 732 | "execution_count": 15, 733 | "metadata": {}, 734 | "outputs": [ 735 | { 736 | "data": { 737 | "text/plain": [ 738 | "" 739 | ] 740 | }, 741 | "execution_count": 15, 742 | "metadata": {}, 743 | "output_type": "execute_result" 744 | }, 745 | { 746 | "data": { 747 | "image/png": "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\n", 748 | "text/plain": [ 749 | "
" 750 | ] 751 | }, 752 | "metadata": { 753 | "needs_background": "light" 754 | }, 755 | "output_type": "display_data" 756 | } 757 | ], 758 | "source": [ 759 | "sns.heatmap(df_x1.isnull(),cbar=False, yticklabels=False)" 760 | ] 761 | }, 762 | { 763 | "cell_type": "code", 764 | "execution_count": 16, 765 | "metadata": {}, 766 | "outputs": [], 767 | "source": [ 768 | "x_train = df_x.drop(['Date'], axis = 1)\n", 769 | "y_train = df_y[\"AQI\"]\n", 770 | "x_test = df_x1.drop(['Date'], axis = 1)\n", 771 | "y_test = df_y1[\"AQI\"]" 772 | ] 773 | }, 774 | { 775 | "cell_type": "code", 776 | "execution_count": 17, 777 | "metadata": {}, 778 | "outputs": [ 779 | { 780 | "data": { 781 | "text/html": [ 782 | "
\n", 783 | "\n", 796 | "\n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | "
PM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
056.4095.0851.7334.310.697.4455.9620.128.415.754.06.03.0
153.6993.9273.0954.770.768.6734.0620.828.312.945.06.31.1
262.3599.3477.7755.600.969.1047.6221.429.013.745.06.30.4
364.96104.6277.0750.810.898.8750.6221.529.015.247.06.92.2
470.15105.1279.4356.050.859.4136.9420.928.414.751.06.31.1
\n", 898 | "
" 899 | ], 900 | "text/plain": [ 901 | " PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp min_temp \\\n", 902 | "0 56.40 95.08 51.73 34.31 0.69 7.44 55.96 20.1 28.4 15.7 \n", 903 | "1 53.69 93.92 73.09 54.77 0.76 8.67 34.06 20.8 28.3 12.9 \n", 904 | "2 62.35 99.34 77.77 55.60 0.96 9.10 47.62 21.4 29.0 13.7 \n", 905 | "3 64.96 104.62 77.07 50.81 0.89 8.87 50.62 21.5 29.0 15.2 \n", 906 | "4 70.15 105.12 79.43 56.05 0.85 9.41 36.94 20.9 28.4 14.7 \n", 907 | "\n", 908 | " humid visible wind \n", 909 | "0 54.0 6.0 3.0 \n", 910 | "1 45.0 6.3 1.1 \n", 911 | "2 45.0 6.3 0.4 \n", 912 | "3 47.0 6.9 2.2 \n", 913 | "4 51.0 6.3 1.1 " 914 | ] 915 | }, 916 | "execution_count": 17, 917 | "metadata": {}, 918 | "output_type": "execute_result" 919 | } 920 | ], 921 | "source": [ 922 | "x_train.head(5)" 923 | ] 924 | }, 925 | { 926 | "cell_type": "code", 927 | "execution_count": 18, 928 | "metadata": {}, 929 | "outputs": [ 930 | { 931 | "data": { 932 | "text/html": [ 933 | "
\n", 934 | "\n", 947 | "\n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | "
PM2.5PM10NO2NOxCOSO2O3tempmax_tempmin_temphumidvisiblewind
030.7170.8027.3126.741.078.5637.3922.027.219.2756.93.3
125.7862.7328.0530.181.167.5233.1122.226.019.4775.52.0
229.6669.6226.2626.920.996.4032.9823.428.419.4686.93.5
352.62106.8131.5641.891.396.9437.3523.630.519.0636.31.3
452.6497.9429.1029.521.017.0145.1024.230.520.4636.31.3
\n", 1049 | "
" 1050 | ], 1051 | "text/plain": [ 1052 | " PM2.5 PM10 NO2 NOx CO SO2 O3 temp max_temp min_temp \\\n", 1053 | "0 30.71 70.80 27.31 26.74 1.07 8.56 37.39 22.0 27.2 19.2 \n", 1054 | "1 25.78 62.73 28.05 30.18 1.16 7.52 33.11 22.2 26.0 19.4 \n", 1055 | "2 29.66 69.62 26.26 26.92 0.99 6.40 32.98 23.4 28.4 19.4 \n", 1056 | "3 52.62 106.81 31.56 41.89 1.39 6.94 37.35 23.6 30.5 19.0 \n", 1057 | "4 52.64 97.94 29.10 29.52 1.01 7.01 45.10 24.2 30.5 20.4 \n", 1058 | "\n", 1059 | " humid visible wind \n", 1060 | "0 75 6.9 3.3 \n", 1061 | "1 77 5.5 2.0 \n", 1062 | "2 68 6.9 3.5 \n", 1063 | "3 63 6.3 1.3 \n", 1064 | "4 63 6.3 1.3 " 1065 | ] 1066 | }, 1067 | "execution_count": 18, 1068 | "metadata": {}, 1069 | "output_type": "execute_result" 1070 | } 1071 | ], 1072 | "source": [ 1073 | "x_test.head(5)" 1074 | ] 1075 | }, 1076 | { 1077 | "cell_type": "code", 1078 | "execution_count": 19, 1079 | "metadata": {}, 1080 | "outputs": [ 1081 | { 1082 | "data": { 1083 | "text/plain": [ 1084 | "0 101.0\n", 1085 | "1 92.0\n", 1086 | "2 108.0\n", 1087 | "3 109.0\n", 1088 | "4 114.0\n", 1089 | "Name: AQI, dtype: float64" 1090 | ] 1091 | }, 1092 | "execution_count": 19, 1093 | "metadata": {}, 1094 | "output_type": "execute_result" 1095 | } 1096 | ], 1097 | "source": [ 1098 | "y_train.head(5)" 1099 | ] 1100 | }, 1101 | { 1102 | "cell_type": "code", 1103 | "execution_count": 20, 1104 | "metadata": {}, 1105 | "outputs": [ 1106 | { 1107 | "data": { 1108 | "text/plain": [ 1109 | "0 82.0\n", 1110 | "1 81.0\n", 1111 | "2 85.0\n", 1112 | "3 95.0\n", 1113 | "4 118.0\n", 1114 | "Name: AQI, dtype: float64" 1115 | ] 1116 | }, 1117 | "execution_count": 20, 1118 | "metadata": {}, 1119 | "output_type": "execute_result" 1120 | } 1121 | ], 1122 | "source": [ 1123 | "y_test.head(5)" 1124 | ] 1125 | }, 1126 | { 1127 | "cell_type": "code", 1128 | "execution_count": 21, 1129 | "metadata": {}, 1130 | "outputs": [], 1131 | "source": [ 1132 | "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n", 1133 | "sc_x = StandardScaler()\n", 1134 | "sc_y = StandardScaler()\n", 1135 | "x_train = sc_x.fit_transform(x_train)\n", 1136 | "x_test = sc_x.transform(x_test)\n", 1137 | "y_train = sc_y.fit_transform(np.array(y_train).reshape(-1,1))\n", 1138 | "y_test = sc_y.transform(np.array(y_test).reshape(-1,1))" 1139 | ] 1140 | }, 1141 | { 1142 | "cell_type": "code", 1143 | "execution_count": 22, 1144 | "metadata": {}, 1145 | "outputs": [ 1146 | { 1147 | "data": { 1148 | "text/plain": [ 1149 | "array([[-0.27610501],\n", 1150 | " [-0.30227705],\n", 1151 | " [-0.1975889 ],\n", 1152 | " [ 0.06413148],\n", 1153 | " [ 0.66608835]])" 1154 | ] 1155 | }, 1156 | "execution_count": 22, 1157 | "metadata": {}, 1158 | "output_type": "execute_result" 1159 | } 1160 | ], 1161 | "source": [ 1162 | "y_test[:5]" 1163 | ] 1164 | }, 1165 | { 1166 | "cell_type": "code", 1167 | "execution_count": 23, 1168 | "metadata": {}, 1169 | "outputs": [ 1170 | { 1171 | "data": { 1172 | "text/plain": [ 1173 | "SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1,\n", 1174 | " gamma='auto_deprecated', kernel='rbf', max_iter=-1, shrinking=True,\n", 1175 | " tol=0.001, verbose=False)" 1176 | ] 1177 | }, 1178 | "execution_count": 23, 1179 | "metadata": {}, 1180 | "output_type": "execute_result" 1181 | } 1182 | ], 1183 | "source": [ 1184 | "from sklearn.svm import SVR\n", 1185 | "regressor = SVR(kernel = 'rbf')\n", 1186 | "regressor.fit(x_train,y_train)" 1187 | ] 1188 | }, 1189 | { 1190 | "cell_type": "code", 1191 | "execution_count": 24, 1192 | "metadata": {}, 1193 | "outputs": [ 1194 | { 1195 | "data": { 1196 | "text/plain": [ 1197 | "array([-0.42595944, -0.32311139, -0.37435607, 0.56882821, 0.35833741,\n", 1198 | " -0.4289785 , -0.57286549, -0.26249298, 0.01577009, -0.11099087,\n", 1199 | " -0.32003543, -0.21896574, 0.40781822, 0.70554794, 0.22467137,\n", 1200 | " 0.26272955, 0.05300658, -0.43237994, -0.50516794, -0.15245204,\n", 1201 | " -0.16191589, -0.16050723, -0.09468641, 0.01183634, 0.24495599,\n", 1202 | " 0.43675849, 0.50363451, 0.22383874, 0.36682982, 0.68494588,\n", 1203 | " 0.37600183, 0.16605308, -0.30409398, -0.25732645, -0.17879819,\n", 1204 | " -0.28231346, 0.22057641, 0.25122338, 0.13562446, 0.16869742,\n", 1205 | " -0.27649917, -0.19226034, -0.34176244, -0.07255308, 0.79432799,\n", 1206 | " 0.99324748, 0.03093437, 0.16210712, 0.31583795, 0.47365842,\n", 1207 | " 0.11191249, -0.22742264, -0.26317195, 0.01138717, -0.16583801,\n", 1208 | " 0.34501398, 0.20441671, 0.14925122, 0.16647227, 0.23584846,\n", 1209 | " 0.44561196, 0.74555276, 1.77403237, 0.98925211, 0.6941801 ,\n", 1210 | " 0.04527876, 0.08692571, -0.15628333, -0.03071387, 0.15375035,\n", 1211 | " 0.03870278, 0.00487757, -0.18599819, -0.30738972, -0.12022113,\n", 1212 | " -0.37615108, -0.56692846, -0.31514682, 0.19595979, 0.30663164,\n", 1213 | " 0.4771285 , -0.28227281, -0.05911738, 0.04322423, -0.68263281,\n", 1214 | " -0.73819769, -0.50290478, -0.46696796, -0.38069815, -0.36181173,\n", 1215 | " -0.20645508, -0.36911442, -0.27281806, -0.22542369, -0.37897064,\n", 1216 | " -0.38816626, -0.72536073, -0.98441423, -0.7442325 , -0.71863761,\n", 1217 | " -0.72144794, -0.74704061, -0.58227917, -0.50226986, -0.33404258,\n", 1218 | " -0.48810957, -0.6112883 , -0.42955452, -0.65229843, -0.87307501,\n", 1219 | " -1.00287225, -0.82285002, -0.25709449, -0.75710873, -0.60362084,\n", 1220 | " -0.26031897, -0.91369875, -0.95760632, -0.81297347, -0.14054648,\n", 1221 | " -0.7561288 , -0.61221255, -0.69518032, -0.60207119, -0.37488619,\n", 1222 | " -0.20918184, -0.54138463, -0.49764821, -0.84623359, -0.73307276,\n", 1223 | " -0.60311798, -0.65324264, -0.86782537, -0.94903969, -0.59868767,\n", 1224 | " -0.80292309, -0.57618004, -0.85284508, -0.63479565, -0.51516231,\n", 1225 | " -0.51806576, -0.91674212, -0.68377782, -0.57208282, -0.84884395,\n", 1226 | " -0.80278251, -0.75762862, -0.58761396, -0.79499592, -0.81003283,\n", 1227 | " -0.87723899, -0.83168805, -1.13971526, -1.3723071 , -1.24599784,\n", 1228 | " -1.21094141, -0.90016809, -1.01965268, -1.02627238, -1.06362168,\n", 1229 | " -1.0106033 , -0.74411236, -0.97876786, -1.04877468, -0.96290783,\n", 1230 | " -1.11445661, -1.01896601, -0.86198109, -0.94589339, -0.78238535,\n", 1231 | " -0.85986483, -0.96586506, -1.06933763, -0.99446313, -0.97199095,\n", 1232 | " -0.98809041, -0.86366581, -0.9923654 , -1.1113921 , -1.06807415,\n", 1233 | " -0.08591312, -1.22178744])" 1234 | ] 1235 | }, 1236 | "execution_count": 24, 1237 | "metadata": {}, 1238 | "output_type": "execute_result" 1239 | } 1240 | ], 1241 | "source": [ 1242 | "y_prediction = regressor.predict(x_test)\n", 1243 | "y_prediction" 1244 | ] 1245 | }, 1246 | { 1247 | "cell_type": "code", 1248 | "execution_count": 25, 1249 | "metadata": {}, 1250 | "outputs": [ 1251 | { 1252 | "name": "stdout", 1253 | "output_type": "stream", 1254 | "text": [ 1255 | "R2 SCORE is 0.8063001007104242\n", 1256 | "mean_sqrd_error is 0.04933772059187857\n", 1257 | "Root mean squared error of is 0.22212095937096654\n", 1258 | "Mean Absolute error is 0.16675010409400015\n" 1259 | ] 1260 | } 1261 | ], 1262 | "source": [ 1263 | "from sklearn.metrics import r2_score\n", 1264 | "from sklearn.metrics import mean_squared_error\n", 1265 | "from sklearn.metrics import mean_absolute_error\n", 1266 | "score = r2_score(y_test,y_prediction)\n", 1267 | "mean_error = mean_squared_error(y_test,y_prediction)\n", 1268 | "mae = mean_absolute_error(y_test,y_prediction)\n", 1269 | "print(\"R2 SCORE is\", score)\n", 1270 | "print(\"mean_sqrd_error is \", mean_error)\n", 1271 | "print(\"Root mean squared error of is\",np.sqrt(mean_error))\n", 1272 | "print(\"Mean Absolute error is\", mae)" 1273 | ] 1274 | }, 1275 | { 1276 | "cell_type": "code", 1277 | "execution_count": 26, 1278 | "metadata": {}, 1279 | "outputs": [ 1280 | { 1281 | "data": { 1282 | "text/plain": [ 1283 | "array([[ 82.],\n", 1284 | " [ 81.],\n", 1285 | " [ 85.],\n", 1286 | " [ 95.],\n", 1287 | " [118.]])" 1288 | ] 1289 | }, 1290 | "execution_count": 26, 1291 | "metadata": {}, 1292 | "output_type": "execute_result" 1293 | } 1294 | ], 1295 | "source": [ 1296 | "y_test = sc_y.inverse_transform(y_test)\n", 1297 | "y_test[:5]" 1298 | ] 1299 | }, 1300 | { 1301 | "cell_type": "code", 1302 | "execution_count": 27, 1303 | "metadata": {}, 1304 | "outputs": [ 1305 | { 1306 | "data": { 1307 | "text/plain": [ 1308 | "array([ 76.27425416, 80.20394657, 78.24595278, 114.28381494,\n", 1309 | " 106.24123124])" 1310 | ] 1311 | }, 1312 | "execution_count": 27, 1313 | "metadata": {}, 1314 | "output_type": "execute_result" 1315 | } 1316 | ], 1317 | "source": [ 1318 | "y_prediction = sc_y.inverse_transform(y_prediction)\n", 1319 | "y_prediction[:5]" 1320 | ] 1321 | }, 1322 | { 1323 | "cell_type": "code", 1324 | "execution_count": 28, 1325 | "metadata": {}, 1326 | "outputs": [ 1327 | { 1328 | "data": { 1329 | "image/png": "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\n", 1330 | "text/plain": [ 1331 | "
" 1332 | ] 1333 | }, 1334 | "metadata": { 1335 | "needs_background": "light" 1336 | }, 1337 | "output_type": "display_data" 1338 | } 1339 | ], 1340 | "source": [ 1341 | "df1 = pd.DataFrame({'Actual': y_test[100:120].flatten(), 'Predicted': y_prediction[100:120].flatten()})\n", 1342 | "df1.plot(kind='line')\n", 1343 | "plt.grid(which='major', linestyle='-', linewidth='0.5', color='green')\n", 1344 | "plt.grid(which='minor', linestyle=':', linewidth='0.5', color='black')\n", 1345 | "plt.show()" 1346 | ] 1347 | }, 1348 | { 1349 | "cell_type": "code", 1350 | "execution_count": 29, 1351 | "metadata": {}, 1352 | "outputs": [ 1353 | { 1354 | "data": { 1355 | "text/html": [ 1356 | "
\n", 1357 | "\n", 1370 | "\n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | "
ACTUAL AQIPREDICTED AQIDIFFERENCEPERCENTAGE ERROR
082.076.2742545.7257466.982617
181.080.2039470.7960530.982782
285.078.2459536.7540477.945938
395.0114.283815-19.28381520.298753
4118.0106.24123111.7587699.965058
581.076.1589004.8411005.976667
675.070.6611634.3388375.785116
793.082.52009810.47990211.268712
8101.093.1521737.8478277.770126
994.088.3087995.6912016.054469
1078.080.321475-2.3214752.976250
1179.084.183218-5.1832186.561036
12106.0108.131829-2.1318292.011160
13121.0119.5077001.4923001.233306
14111.0101.1340239.8659778.888267
\n", 1488 | "
" 1489 | ], 1490 | "text/plain": [ 1491 | " ACTUAL AQI PREDICTED AQI DIFFERENCE PERCENTAGE ERROR\n", 1492 | "0 82.0 76.274254 5.725746 6.982617\n", 1493 | "1 81.0 80.203947 0.796053 0.982782\n", 1494 | "2 85.0 78.245953 6.754047 7.945938\n", 1495 | "3 95.0 114.283815 -19.283815 20.298753\n", 1496 | "4 118.0 106.241231 11.758769 9.965058\n", 1497 | "5 81.0 76.158900 4.841100 5.976667\n", 1498 | "6 75.0 70.661163 4.338837 5.785116\n", 1499 | "7 93.0 82.520098 10.479902 11.268712\n", 1500 | "8 101.0 93.152173 7.847827 7.770126\n", 1501 | "9 94.0 88.308799 5.691201 6.054469\n", 1502 | "10 78.0 80.321475 -2.321475 2.976250\n", 1503 | "11 79.0 84.183218 -5.183218 6.561036\n", 1504 | "12 106.0 108.131829 -2.131829 2.011160\n", 1505 | "13 121.0 119.507700 1.492300 1.233306\n", 1506 | "14 111.0 101.134023 9.865977 8.888267" 1507 | ] 1508 | }, 1509 | "execution_count": 29, 1510 | "metadata": {}, 1511 | "output_type": "execute_result" 1512 | } 1513 | ], 1514 | "source": [ 1515 | "result = pd.DataFrame()\n", 1516 | "result[\"ACTUAL AQI\"] = y_test.flatten()\n", 1517 | "result[\"PREDICTED AQI\"] = y_prediction\n", 1518 | "result[\"DIFFERENCE\"] = result[\"ACTUAL AQI\"] - result[\"PREDICTED AQI\"]\n", 1519 | "result[\"PERCENTAGE ERROR\"] = ( abs(result[\"ACTUAL AQI\"] - result[\"PREDICTED AQI\"] ) / result[\"ACTUAL AQI\"] ) * 100\n", 1520 | "result.head(15)" 1521 | ] 1522 | }, 1523 | { 1524 | "cell_type": "code", 1525 | "execution_count": null, 1526 | "metadata": {}, 1527 | "outputs": [], 1528 | "source": [] 1529 | } 1530 | ], 1531 | "metadata": { 1532 | "kernelspec": { 1533 | "display_name": "Python 3", 1534 | "language": "python", 1535 | "name": "python3" 1536 | }, 1537 | "language_info": { 1538 | "codemirror_mode": { 1539 | "name": "ipython", 1540 | "version": 3 1541 | }, 1542 | "file_extension": ".py", 1543 | "mimetype": "text/x-python", 1544 | "name": "python", 1545 | "nbconvert_exporter": "python", 1546 | "pygments_lexer": "ipython3", 1547 | "version": "3.7.3" 1548 | } 1549 | }, 1550 | "nbformat": 4, 1551 | "nbformat_minor": 2 1552 | } 1553 | --------------------------------------------------------------------------------