├── Agglomerative code .ipynb ├── IoT Security Prediction system.ipynb ├── KNN Seed model.ipynb ├── KNN-Mean Algo.ipynb ├── Linear_Regression_Practice.ipynb ├── Naive Bayes Model.ipynb ├── README.md ├── Smart HAR System.ipynb ├── TRAFFIC - VIOLATION └── Traffic rules violation.ipynb ├── Traffic-Light-Detection-CNN └── traffic_cnn.ipynb ├── googlebrains-vpp-ver1.ipynb └── handwritingrecognition.ipynb /KNN Seed model.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "3a6e1e1a", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "#importing libraries\n", 11 | "import numpy as np\n", 12 | "import pandas as pd\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "import matplotlib.axes as plt\n" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 3, 20 | "id": "9c4d171e", 21 | "metadata": {}, 22 | "outputs": [], 23 | "source": [ 24 | "#visualising data and importing\n", 25 | "data = pd.read_csv(\"L:\\seed_data.csv\")" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 4, 31 | "id": "e47cb14f", 32 | "metadata": {}, 33 | "outputs": [ 34 | { 35 | "data": { 36 | "text/html": [ 37 | "
\n", 38 | "\n", 51 | "\n", 52 | " \n", 53 | " \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 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \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 | "
areaperimetercompactnesslengthwidthasymmetrylength_kernel_groovekernel
015.2614.840.87105.7633.3122.2215.2200
114.8814.570.88115.5543.3331.0184.9560
214.2914.090.90505.2913.3372.6994.8250
313.8413.940.89555.3243.3792.2594.8050
416.1414.990.90345.6583.5621.3555.1750
514.3814.210.89515.3863.3122.4624.9560
614.6914.490.87995.5633.2593.5865.2190
714.1114.100.89115.4203.3022.7005.0000
816.6315.460.87476.0533.4652.0405.8770
916.4415.250.88805.8843.5051.9695.5330
1015.2614.850.86965.7143.2424.5435.3140
1114.0314.160.87965.4383.2011.7175.0010
1213.8914.020.88805.4393.1993.9864.7380
1313.7814.060.87595.4793.1563.1364.8720
1413.7414.050.87445.4823.1142.9324.8250
1514.5914.280.89935.3513.3334.1854.7810
1613.9913.830.91835.1193.3835.2344.7810
1715.6914.750.90585.5273.5141.5995.0460
1814.7014.210.91535.2053.4661.7674.6490
1912.7213.570.86865.2263.0494.1024.9140
\n", 288 | "
" 289 | ], 290 | "text/plain": [ 291 | " area perimeter compactness length width asymmetry \\\n", 292 | "0 15.26 14.84 0.8710 5.763 3.312 2.221 \n", 293 | "1 14.88 14.57 0.8811 5.554 3.333 1.018 \n", 294 | "2 14.29 14.09 0.9050 5.291 3.337 2.699 \n", 295 | "3 13.84 13.94 0.8955 5.324 3.379 2.259 \n", 296 | "4 16.14 14.99 0.9034 5.658 3.562 1.355 \n", 297 | "5 14.38 14.21 0.8951 5.386 3.312 2.462 \n", 298 | "6 14.69 14.49 0.8799 5.563 3.259 3.586 \n", 299 | "7 14.11 14.10 0.8911 5.420 3.302 2.700 \n", 300 | "8 16.63 15.46 0.8747 6.053 3.465 2.040 \n", 301 | "9 16.44 15.25 0.8880 5.884 3.505 1.969 \n", 302 | "10 15.26 14.85 0.8696 5.714 3.242 4.543 \n", 303 | "11 14.03 14.16 0.8796 5.438 3.201 1.717 \n", 304 | "12 13.89 14.02 0.8880 5.439 3.199 3.986 \n", 305 | "13 13.78 14.06 0.8759 5.479 3.156 3.136 \n", 306 | "14 13.74 14.05 0.8744 5.482 3.114 2.932 \n", 307 | "15 14.59 14.28 0.8993 5.351 3.333 4.185 \n", 308 | "16 13.99 13.83 0.9183 5.119 3.383 5.234 \n", 309 | "17 15.69 14.75 0.9058 5.527 3.514 1.599 \n", 310 | "18 14.70 14.21 0.9153 5.205 3.466 1.767 \n", 311 | "19 12.72 13.57 0.8686 5.226 3.049 4.102 \n", 312 | "\n", 313 | " length_kernel_groove kernel \n", 314 | "0 5.220 0 \n", 315 | "1 4.956 0 \n", 316 | "2 4.825 0 \n", 317 | "3 4.805 0 \n", 318 | "4 5.175 0 \n", 319 | "5 4.956 0 \n", 320 | "6 5.219 0 \n", 321 | "7 5.000 0 \n", 322 | "8 5.877 0 \n", 323 | "9 5.533 0 \n", 324 | "10 5.314 0 \n", 325 | "11 5.001 0 \n", 326 | "12 4.738 0 \n", 327 | "13 4.872 0 \n", 328 | "14 4.825 0 \n", 329 | "15 4.781 0 \n", 330 | "16 4.781 0 \n", 331 | "17 5.046 0 \n", 332 | "18 4.649 0 \n", 333 | "19 4.914 0 " 334 | ] 335 | }, 336 | "execution_count": 4, 337 | "metadata": {}, 338 | "output_type": "execute_result" 339 | } 340 | ], 341 | "source": [ 342 | "data.head(20)" 343 | ] 344 | }, 345 | { 346 | "cell_type": "code", 347 | "execution_count": 5, 348 | "id": "d7162276", 349 | "metadata": {}, 350 | "outputs": [ 351 | { 352 | "name": "stdout", 353 | "output_type": "stream", 354 | "text": [ 355 | "\n", 356 | "RangeIndex: 210 entries, 0 to 209\n", 357 | "Data columns (total 8 columns):\n", 358 | " # Column Non-Null Count Dtype \n", 359 | "--- ------ -------------- ----- \n", 360 | " 0 area 210 non-null float64\n", 361 | " 1 perimeter 210 non-null float64\n", 362 | " 2 compactness 210 non-null float64\n", 363 | " 3 length 210 non-null float64\n", 364 | " 4 width 210 non-null float64\n", 365 | " 5 asymmetry 210 non-null float64\n", 366 | " 6 length_kernel_groove 210 non-null float64\n", 367 | " 7 kernel 210 non-null int64 \n", 368 | "dtypes: float64(7), int64(1)\n", 369 | "memory usage: 13.2 KB\n" 370 | ] 371 | } 372 | ], 373 | "source": [ 374 | "data.info()" 375 | ] 376 | }, 377 | { 378 | "cell_type": "code", 379 | "execution_count": 6, 380 | "id": "4811f59a", 381 | "metadata": {}, 382 | "outputs": [ 383 | { 384 | "data": { 385 | "text/html": [ 386 | "
\n", 387 | "\n", 400 | "\n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \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 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | "
areaperimetercompactnesslengthwidthasymmetrylength_kernel_groovekernel
count210.000000210.000000210.000000210.000000210.000000210.000000210.000000210.000000
mean14.84752414.5592860.8709995.6285333.2586053.7002015.4080711.000000
std2.9096991.3059590.0236290.4430630.3777141.5035570.4914800.818448
min10.59000012.4100000.8081004.8990002.6300000.7651004.5190000.000000
25%12.27000013.4500000.8569005.2622502.9440002.5615005.0450000.000000
50%14.35500014.3200000.8734505.5235003.2370003.5990005.2230001.000000
75%17.30500015.7150000.8877755.9797503.5617504.7687505.8770002.000000
max21.18000017.2500000.9183006.6750004.0330008.4560006.5500002.000000
\n", 505 | "
" 506 | ], 507 | "text/plain": [ 508 | " area perimeter compactness length width \\\n", 509 | "count 210.000000 210.000000 210.000000 210.000000 210.000000 \n", 510 | "mean 14.847524 14.559286 0.870999 5.628533 3.258605 \n", 511 | "std 2.909699 1.305959 0.023629 0.443063 0.377714 \n", 512 | "min 10.590000 12.410000 0.808100 4.899000 2.630000 \n", 513 | "25% 12.270000 13.450000 0.856900 5.262250 2.944000 \n", 514 | "50% 14.355000 14.320000 0.873450 5.523500 3.237000 \n", 515 | "75% 17.305000 15.715000 0.887775 5.979750 3.561750 \n", 516 | "max 21.180000 17.250000 0.918300 6.675000 4.033000 \n", 517 | "\n", 518 | " asymmetry length_kernel_groove kernel \n", 519 | "count 210.000000 210.000000 210.000000 \n", 520 | "mean 3.700201 5.408071 1.000000 \n", 521 | "std 1.503557 0.491480 0.818448 \n", 522 | "min 0.765100 4.519000 0.000000 \n", 523 | "25% 2.561500 5.045000 0.000000 \n", 524 | "50% 3.599000 5.223000 1.000000 \n", 525 | "75% 4.768750 5.877000 2.000000 \n", 526 | "max 8.456000 6.550000 2.000000 " 527 | ] 528 | }, 529 | "execution_count": 6, 530 | "metadata": {}, 531 | "output_type": "execute_result" 532 | } 533 | ], 534 | "source": [ 535 | "data.describe()" 536 | ] 537 | }, 538 | { 539 | "cell_type": "code", 540 | "execution_count": 8, 541 | "id": "1637198e", 542 | "metadata": {}, 543 | "outputs": [ 544 | { 545 | "data": { 546 | "text/plain": [ 547 | "0 70\n", 548 | "1 70\n", 549 | "2 70\n", 550 | "Name: kernel, dtype: int64" 551 | ] 552 | }, 553 | "execution_count": 8, 554 | "metadata": {}, 555 | "output_type": "execute_result" 556 | } 557 | ], 558 | "source": [ 559 | "data['kernel'].value_counts()" 560 | ] 561 | }, 562 | { 563 | "cell_type": "code", 564 | "execution_count": 18, 565 | "id": "9d2a7915", 566 | "metadata": {}, 567 | "outputs": [], 568 | "source": [ 569 | "# data-splitting and standard scaling\n", 570 | "x = data.drop(data.columns[[7]], axis=1)\n", 571 | "y = data['kernel']\n", 572 | "from sklearn.model_selection import train_test_split\n", 573 | "xtrain,xtest,ytrain,ytest = train_test_split(x,y, test_size = 0.25, random_state= -0)" 574 | ] 575 | }, 576 | { 577 | "cell_type": "code", 578 | "execution_count": 15, 579 | "id": "ac4c2544", 580 | "metadata": {}, 581 | "outputs": [ 582 | { 583 | "data": { 584 | "text/html": [ 585 | "
\n", 586 | "\n", 599 | "\n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | "
areaperimetercompactnesslengthwidthasymmetrylength_kernel_groove
015.2614.840.87105.7633.3122.2215.220
114.8814.570.88115.5543.3331.0184.956
214.2914.090.90505.2913.3372.6994.825
313.8413.940.89555.3243.3792.2594.805
416.1414.990.90345.6583.5621.3555.175
\n", 665 | "
" 666 | ], 667 | "text/plain": [ 668 | " area perimeter compactness length width asymmetry \\\n", 669 | "0 15.26 14.84 0.8710 5.763 3.312 2.221 \n", 670 | "1 14.88 14.57 0.8811 5.554 3.333 1.018 \n", 671 | "2 14.29 14.09 0.9050 5.291 3.337 2.699 \n", 672 | "3 13.84 13.94 0.8955 5.324 3.379 2.259 \n", 673 | "4 16.14 14.99 0.9034 5.658 3.562 1.355 \n", 674 | "\n", 675 | " length_kernel_groove \n", 676 | "0 5.220 \n", 677 | "1 4.956 \n", 678 | "2 4.825 \n", 679 | "3 4.805 \n", 680 | "4 5.175 " 681 | ] 682 | }, 683 | "execution_count": 15, 684 | "metadata": {}, 685 | "output_type": "execute_result" 686 | } 687 | ], 688 | "source": [ 689 | "x.head()" 690 | ] 691 | }, 692 | { 693 | "cell_type": "code", 694 | "execution_count": 16, 695 | "id": "ad8fae54", 696 | "metadata": {}, 697 | "outputs": [ 698 | { 699 | "data": { 700 | "text/plain": [ 701 | "0 0\n", 702 | "1 0\n", 703 | "2 0\n", 704 | "3 0\n", 705 | "4 0\n", 706 | "Name: kernel, dtype: int64" 707 | ] 708 | }, 709 | "execution_count": 16, 710 | "metadata": {}, 711 | "output_type": "execute_result" 712 | } 713 | ], 714 | "source": [ 715 | "y.head()" 716 | ] 717 | }, 718 | { 719 | "cell_type": "code", 720 | "execution_count": 19, 721 | "id": "2ce79d8b", 722 | "metadata": {}, 723 | "outputs": [], 724 | "source": [ 725 | "#scaling data using standard scaler\n", 726 | "from sklearn.preprocessing import StandardScaler\n", 727 | "sc = StandardScaler()\n", 728 | "xtrain = sc.fit_transform(xtrain)\n", 729 | "xtest = sc.fit_transform(xtest)" 730 | ] 731 | }, 732 | { 733 | "cell_type": "code", 734 | "execution_count": 20, 735 | "id": "f629be8c", 736 | "metadata": {}, 737 | "outputs": [ 738 | { 739 | "data": { 740 | "text/plain": [ 741 | "KNeighborsClassifier(n_neighbors=3)" 742 | ] 743 | }, 744 | "execution_count": 20, 745 | "metadata": {}, 746 | "output_type": "execute_result" 747 | } 748 | ], 749 | "source": [ 750 | "#training model using K Nearest Neighbor\n", 751 | "from sklearn.neighbors import KNeighborsClassifier\n", 752 | "knn = KNeighborsClassifier(n_neighbors = 3,p=2)\n", 753 | "knn.fit(xtrain,ytrain)" 754 | ] 755 | }, 756 | { 757 | "cell_type": "code", 758 | "execution_count": 21, 759 | "id": "e2052b85", 760 | "metadata": {}, 761 | "outputs": [], 762 | "source": [ 763 | "#predicting \n", 764 | "y_p = knn.predict(xtest)" 765 | ] 766 | }, 767 | { 768 | "cell_type": "code", 769 | "execution_count": 23, 770 | "id": "e5811ff7", 771 | "metadata": {}, 772 | "outputs": [ 773 | { 774 | "data": { 775 | "text/plain": [ 776 | "array([[14, 0, 3],\n", 777 | " [ 3, 18, 0],\n", 778 | " [ 0, 0, 15]], dtype=int64)" 779 | ] 780 | }, 781 | "execution_count": 23, 782 | "metadata": {}, 783 | "output_type": "execute_result" 784 | } 785 | ], 786 | "source": [ 787 | "#Results\n", 788 | "from sklearn.metrics import confusion_matrix , accuracy_score\n", 789 | "confusion_matrix(ytest,y_p)\n" 790 | ] 791 | }, 792 | { 793 | "cell_type": "code", 794 | "execution_count": 24, 795 | "id": "4c0be3a7", 796 | "metadata": {}, 797 | "outputs": [ 798 | { 799 | "data": { 800 | "text/plain": [ 801 | "0.8867924528301887" 802 | ] 803 | }, 804 | "execution_count": 24, 805 | "metadata": {}, 806 | "output_type": "execute_result" 807 | } 808 | ], 809 | "source": [ 810 | "accuracy_score(ytest,y_p)" 811 | ] 812 | }, 813 | { 814 | "cell_type": "code", 815 | "execution_count": null, 816 | "id": "97fe214b", 817 | "metadata": {}, 818 | "outputs": [], 819 | "source": [] 820 | } 821 | ], 822 | "metadata": { 823 | "kernelspec": { 824 | "display_name": "Python 3", 825 | "language": "python", 826 | "name": "python3" 827 | }, 828 | "language_info": { 829 | "codemirror_mode": { 830 | "name": "ipython", 831 | "version": 3 832 | }, 833 | "file_extension": ".py", 834 | "mimetype": "text/x-python", 835 | "name": "python", 836 | "nbconvert_exporter": "python", 837 | "pygments_lexer": "ipython3", 838 | "version": "3.8.8" 839 | } 840 | }, 841 | "nbformat": 4, 842 | "nbformat_minor": 5 843 | } 844 | -------------------------------------------------------------------------------- /KNN-Mean Algo.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 5, 6 | "id": "43f66314", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "#import libraries\n", 11 | "import numpy as np\n", 12 | "import pandas as pd\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "import seaborn as sns\n", 15 | "sns.set()" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 6, 21 | "id": "174b06d7", 22 | "metadata": {}, 23 | "outputs": [], 24 | "source": [ 25 | "#importing data\n", 26 | "data = pd.read_csv(\"E:\\Desktop\\Machine-Learning-Collection\\Data Folder\\market_data.csv\")" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 7, 32 | "id": "ed8f399a", 33 | "metadata": {}, 34 | "outputs": [ 35 | { 36 | "data": { 37 | "text/html": [ 38 | "
\n", 39 | "\n", 52 | "\n", 53 | " \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 | "
SatisfactionLoyalty
04-1.33
16-0.28
25-0.99
37-0.29
441.06
\n", 88 | "
" 89 | ], 90 | "text/plain": [ 91 | " Satisfaction Loyalty\n", 92 | "0 4 -1.33\n", 93 | "1 6 -0.28\n", 94 | "2 5 -0.99\n", 95 | "3 7 -0.29\n", 96 | "4 4 1.06" 97 | ] 98 | }, 99 | "execution_count": 7, 100 | "metadata": {}, 101 | "output_type": "execute_result" 102 | } 103 | ], 104 | "source": [ 105 | "data.head()" 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": 8, 111 | "id": "e43ee217", 112 | "metadata": {}, 113 | "outputs": [ 114 | { 115 | "name": "stdout", 116 | "output_type": "stream", 117 | "text": [ 118 | "\n", 119 | "RangeIndex: 30 entries, 0 to 29\n", 120 | "Data columns (total 2 columns):\n", 121 | " # Column Non-Null Count Dtype \n", 122 | "--- ------ -------------- ----- \n", 123 | " 0 Satisfaction 30 non-null int64 \n", 124 | " 1 Loyalty 30 non-null float64\n", 125 | "dtypes: float64(1), int64(1)\n", 126 | "memory usage: 608.0 bytes\n" 127 | ] 128 | } 129 | ], 130 | "source": [ 131 | "data.info()" 132 | ] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": 10, 137 | "id": "a632a1fe", 138 | "metadata": {}, 139 | "outputs": [ 140 | { 141 | "data": { 142 | "text/plain": [ 143 | "Text(0, 0.5, 'Loyalty')" 144 | ] 145 | }, 146 | "execution_count": 10, 147 | "metadata": {}, 148 | "output_type": "execute_result" 149 | }, 150 | { 151 | "data": { 152 | "image/png": "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\n", 153 | "text/plain": [ 154 | "
" 155 | ] 156 | }, 157 | "metadata": {}, 158 | "output_type": "display_data" 159 | } 160 | ], 161 | "source": [ 162 | "#plotting data\n", 163 | "plt.scatter(data['Satisfaction'],data[\"Loyalty\"])\n", 164 | "plt.xlabel(\"Satisfaction\")\n", 165 | "plt.ylabel(\"Loyalty\")" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 11, 171 | "id": "c37fffb9", 172 | "metadata": {}, 173 | "outputs": [ 174 | { 175 | "data": { 176 | "text/plain": [ 177 | "array([[-0.93138063, -1.3318111 ],\n", 178 | " [-0.15523011, -0.28117124],\n", 179 | " [-0.54330537, -0.99160391],\n", 180 | " [ 0.23284516, -0.29117733],\n", 181 | " [-0.93138063, 1.05964534],\n", 182 | " [-2.09560642, -1.6620122 ],\n", 183 | " [ 1.39707095, -0.97159172],\n", 184 | " [ 0.62092042, -0.32119561],\n", 185 | " [ 0.62092042, 1.01962097],\n", 186 | " [ 0.62092042, 0.67941378],\n", 187 | " [ 1.39707095, -0.3412078 ],\n", 188 | " [-0.54330537, 0.38923705],\n", 189 | " [-0.54330537, -1.69203048],\n", 190 | " [-1.70753116, 0.66940768],\n", 191 | " [ 0.23284516, 0.26916393],\n", 192 | " [ 1.00899568, 1.35982816],\n", 193 | " [ 0.62092042, 1.37984035],\n", 194 | " [ 0.23284516, 1.35982816],\n", 195 | " [ 0.23284516, -0.3412078 ],\n", 196 | " [ 1.00899568, 0.66940768],\n", 197 | " [ 1.39707095, 1.17971847],\n", 198 | " [-1.31945589, -1.69203048],\n", 199 | " [-0.93138063, 1.03963316],\n", 200 | " [-1.31945589, -0.96158562],\n", 201 | " [-0.15523011, 1.02962706],\n", 202 | " [ 1.00899568, -0.99160391],\n", 203 | " [ 1.39707095, 0.36922486],\n", 204 | " [ 1.00899568, 0.02901767],\n", 205 | " [-1.31945589, -1.36182938],\n", 206 | " [-0.54330537, 0.72944425]])" 207 | ] 208 | }, 209 | "execution_count": 11, 210 | "metadata": {}, 211 | "output_type": "execute_result" 212 | } 213 | ], 214 | "source": [ 215 | "from sklearn import preprocessing\n", 216 | "ds = data.copy()\n", 217 | "ds=preprocessing.scale(data)\n", 218 | "ds" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": 17, 224 | "id": "97384ce9", 225 | "metadata": {}, 226 | "outputs": [], 227 | "source": [ 228 | "from sklearn.cluster import KMeans\n" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 18, 234 | "id": "f228f5dd", 235 | "metadata": {}, 236 | "outputs": [ 237 | { 238 | "name": "stderr", 239 | "output_type": "stream", 240 | "text": [ 241 | "C:\\Users\\aryan\\anaconda3\\lib\\site-packages\\sklearn\\cluster\\_kmeans.py:881: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.\n", 242 | " warnings.warn(\n" 243 | ] 244 | } 245 | ], 246 | "source": [ 247 | "w= []\n", 248 | "for i in range(1,8 ):\n", 249 | " kmeans= KMeans(n_clusters=i,random_state=0)\n", 250 | " kmeans.fit(ds)\n", 251 | " w.append(kmeans.inertia_)" 252 | ] 253 | }, 254 | { 255 | "cell_type": "code", 256 | "execution_count": 19, 257 | "id": "9d107d08", 258 | "metadata": {}, 259 | "outputs": [ 260 | { 261 | "data": { 262 | "image/png": "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\n", 263 | "text/plain": [ 264 | "
" 265 | ] 266 | }, 267 | "metadata": {}, 268 | "output_type": "display_data" 269 | } 270 | ], 271 | "source": [ 272 | "plt.plot(range(1,8),w)\n", 273 | "plt.xlabel(\"clusterno.\")\n", 274 | "plt.ylabel(\"value\")\n", 275 | "plt.show()" 276 | ] 277 | }, 278 | { 279 | "cell_type": "code", 280 | "execution_count": 21, 281 | "id": "7809db79", 282 | "metadata": {}, 283 | "outputs": [ 284 | { 285 | "data": { 286 | "text/plain": [ 287 | "KMeans(n_clusters=4)" 288 | ] 289 | }, 290 | "execution_count": 21, 291 | "metadata": {}, 292 | "output_type": "execute_result" 293 | } 294 | ], 295 | "source": [ 296 | "#training\n", 297 | "k = KMeans(4)\n", 298 | "k.fit(ds)" 299 | ] 300 | }, 301 | { 302 | "cell_type": "code", 303 | "execution_count": 23, 304 | "id": "26d00895", 305 | "metadata": {}, 306 | "outputs": [], 307 | "source": [ 308 | "cs = data.copy()\n", 309 | "cs['cp'] = k.fit_predict(ds)" 310 | ] 311 | }, 312 | { 313 | "cell_type": "code", 314 | "execution_count": 25, 315 | "id": "169a321a", 316 | "metadata": {}, 317 | "outputs": [ 318 | { 319 | "data": { 320 | "text/html": [ 321 | "
\n", 322 | "\n", 335 | "\n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \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 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \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 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | "
SatisfactionLoyaltycp
04-1.331
16-0.282
25-0.991
37-0.292
441.063
51-1.661
610-0.972
78-0.322
881.020
980.680
1010-0.342
1150.393
125-1.691
1320.673
1470.272
1591.360
1681.380
1771.360
187-0.342
1990.670
20101.180
213-1.691
2241.043
233-0.961
2461.033
259-0.992
26100.370
2790.032
283-1.361
2950.733
\n", 527 | "
" 528 | ], 529 | "text/plain": [ 530 | " Satisfaction Loyalty cp\n", 531 | "0 4 -1.33 1\n", 532 | "1 6 -0.28 2\n", 533 | "2 5 -0.99 1\n", 534 | "3 7 -0.29 2\n", 535 | "4 4 1.06 3\n", 536 | "5 1 -1.66 1\n", 537 | "6 10 -0.97 2\n", 538 | "7 8 -0.32 2\n", 539 | "8 8 1.02 0\n", 540 | "9 8 0.68 0\n", 541 | "10 10 -0.34 2\n", 542 | "11 5 0.39 3\n", 543 | "12 5 -1.69 1\n", 544 | "13 2 0.67 3\n", 545 | "14 7 0.27 2\n", 546 | "15 9 1.36 0\n", 547 | "16 8 1.38 0\n", 548 | "17 7 1.36 0\n", 549 | "18 7 -0.34 2\n", 550 | "19 9 0.67 0\n", 551 | "20 10 1.18 0\n", 552 | "21 3 -1.69 1\n", 553 | "22 4 1.04 3\n", 554 | "23 3 -0.96 1\n", 555 | "24 6 1.03 3\n", 556 | "25 9 -0.99 2\n", 557 | "26 10 0.37 0\n", 558 | "27 9 0.03 2\n", 559 | "28 3 -1.36 1\n", 560 | "29 5 0.73 3" 561 | ] 562 | }, 563 | "execution_count": 25, 564 | "metadata": {}, 565 | "output_type": "execute_result" 566 | } 567 | ], 568 | "source": [ 569 | "cs" 570 | ] 571 | }, 572 | { 573 | "cell_type": "code", 574 | "execution_count": 27, 575 | "id": "7609d2b0", 576 | "metadata": {}, 577 | "outputs": [ 578 | { 579 | "data": { 580 | "text/plain": [ 581 | "Text(0, 0.5, 'Loyalty')" 582 | ] 583 | }, 584 | "execution_count": 27, 585 | "metadata": {}, 586 | "output_type": "execute_result" 587 | }, 588 | { 589 | "data": { 590 | "image/png": "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2lGhiCLr169n3bp1LFq0iMWLF/Of//yHd9991+lYjtqwYQOLFi1yOobj9u3bx6RJk5g5cyZLly5l586dfPjhh07HckxeXh6PPvoos2fPZsmSJXz66aesX7/e6Vi22rp1K0OHDmXv3r0A5OfnM2HCBGbOnMnbb7/Njh07Kux3RIUiiiQnJzN+/HhiYmLwer2cffbZHDx40OlYjvnxxx+ZPn06Y8aMcTqK495991369OlDgwYN8Hq9TJ8+nbZt2zodyzGhUAjTNMnLyyMYDBIMBvH5fE7HstW8efOYNGkSKSkpAGzbto2mTZvSuHFjPB4PqamprFy5skLaqpKzx56uzj333KJ/37t3LytWrGDu3LkOJnLWxIkTGTt2LD/88IPTURz33Xff4fV6GTNmDD/88APdunXj7rvvdjqWYxITE7nrrrvo3bs3cXFxXHzxxVx44YVOx7LVo48+GvY6PT2d5OTkotcpKSkcPny4QtrSGUUU2rNnDzfffDP33XcfZ511ltNxHDF//nzOOOMMOnbs6HSUqBAKhdiwYQNTpkzhjTfeYNu2bdV6SG737t0sXLiQ999/n7Vr1+JyuXjxxRedjuUo0zQxjOLpwi3LCnv9W6hQRJnNmzdz00038ac//YlBgwY5Hccxb7/9Nh999BEDBgxgxowZrF69milTpjgdyzH16tWjY8eO1KlTh9jYWHr06MG2bducjuWYdevW0bFjR+rWrUtMTAxpaWls3LjR6ViOatCgARkZGUWvMzIyioalfisNPUWRH374gdtuu43p06dX+2/SL7/8ctG/v/nmm2zcuJEJEyY4mMhZ3bt353//9385ceIECQkJrF27liuvvNLpWI5p0aIFjz/+OLm5ucTFxbF69Wpat27tdCxHtW3blm+//ZbvvvuORo0asWzZMq655poKeW8Viijy4osvUlBQwGOPPVa0bciQIQwdOtTBVBIN2rZtyy233MKwYcMIBAJcdtllFfYhcDrq3LkzO3fuJC0tDa/XS+vWrRk1apTTsRzl8/l47LHHuOOOOygoKKBr165cffXVFfLeWuFOREQi0jUKERGJSIVCREQiUqEQEZGIVChERCQiFQoREYlIhUKqrc8//5wbb7yR1NRU+vXrxy233MKePXsi/sy2bduYOHEiANu3b+fOO++MePwPP/xAv379GDBgAFu2bDnpjCfbnkhl0HMUUi35/X5Gjx7NSy+9RKtWrYDCaatHjhzJe++9h9vtLvXnvvrqq6L5c1q3bs2MGTMitvPJJ59Qr149XnnllVPKebLtiVQGFQqplvLy8sjKyiI3N7doW//+/UlMTCQUCjF16lS2bt1KTk4OlmXxyCOPcOaZZzJjxgyysrK4//77GThwIA8//DDLli3j008/5bHHHsM0TQBGjx5NUlISTz31FFlZWdx4443885//ZMqUKSXe96KLLiInJ4dHHnmEzz77DLfbTY8ePRg6dGiZ7WVlZfHQQw+xe/duDMPg8ssv55577sHj8RQ9fPbRRx+Rnp5e9KCeyCmzRKqpl156yWrTpo11xRVXWPfee681f/58Kzc31/rss8+sO+64wwqFQpZlWdasWbOs0aNHW5ZlWQsXLrRGjRplWZZlffzxx1bfvn0ty7Ks4cOHW8uWLbMsy7J27dpl/fnPfy5xfKT3nTJlijV27FgrGAxaBQUF1g033GB9/PHHZbZ33333WQ8//LBlmqZVUFBg3XzzzdasWbMsy7Ks8847z5o9e7ZlWZa1fft264ILLrDy8/MrsSelqtMZhVRbI0aM4LrrrmPTpk1s2rSJ559/nueff54FCxZw99138/rrr7Nv3z4++eQTEhISIr5X7969mTx5MqtXr6ZTp07cc889JY5p3749SUlJpb7v+vXruf/++3G73bjdbl599VWgcJ6r0qxZs4a5c+diGAYxMTEMGTKEf/7zn0XTWPw0D1SrVq3w+/3k5uZWu/UapOLoYrZUS5s3b+aFF14gMTGR7t27c99997F8+XIMw2DVqlWMHj0aKPzALc9cW0OGDGHp0qVcdtllrFu3jv79+1NQUBB2zAcffFDm+3o8nrApoX/44QeOHTtWZnu/nFLaNE2CwWDR65+Kwk/HWJqpR34DFQqplurUqcOzzz7Lp59+WrQtIyOD7Oxsli9fTvfu3Rk2bBgXXHABq1atIhQKAeB2u8M+kH8yZMgQdu3aRVpaGg8//DAnTpwIm/IZ4KOPPirzfTt27MiiRYswTRO/38+dd97Jpk2bymyvc+fOvPrqq1iWhd/vZ968eXTq1Kkiu0ikiAqFVEvNmjXj73//O9OnT+fKK6+kT58+3H333UyZMoX777+fjRs3kpqayqBBg2jcuDH79+/HNE3atWvHvn37uP3228Pe795772XGjBkMHDiQG2+8kdtvv51GjRqFHTNkyJAy3/f222/H6/UyYMAABg4cSNeuXenZs2eZ7T344IMcPXqU1NRUUlNTadasmZaMlUqj2WNFRCQinVGIiEhEKhQiIhKRCoWIiESkQiEiIhGpUIiISEQqFCIiEpEKhYiIRKRCISIiEf1/7N/7njwrqTQAAAAASUVORK5CYII=\n", 591 | "text/plain": [ 592 | "
" 593 | ] 594 | }, 595 | "metadata": {}, 596 | "output_type": "display_data" 597 | } 598 | ], 599 | "source": [ 600 | "#visualisation\n", 601 | "plt.scatter(data[\"Satisfaction\"],data['Loyalty'],c= cs['cp'])\n", 602 | "plt.xlabel('Satisfaction')\n", 603 | "plt.ylabel('Loyalty')" 604 | ] 605 | }, 606 | { 607 | "cell_type": "code", 608 | "execution_count": 28, 609 | "id": "a71c46b5", 610 | "metadata": {}, 611 | "outputs": [], 612 | "source": [ 613 | "#-------------------------------------------------------------------------------\n" 614 | ] 615 | }, 616 | { 617 | "cell_type": "code", 618 | "execution_count": null, 619 | "id": "6891d596", 620 | "metadata": {}, 621 | "outputs": [], 622 | "source": [] 623 | } 624 | ], 625 | "metadata": { 626 | "kernelspec": { 627 | "display_name": "Python 3", 628 | "language": "python", 629 | "name": "python3" 630 | }, 631 | "language_info": { 632 | "codemirror_mode": { 633 | "name": "ipython", 634 | "version": 3 635 | }, 636 | "file_extension": ".py", 637 | "mimetype": "text/x-python", 638 | "name": "python", 639 | "nbconvert_exporter": "python", 640 | "pygments_lexer": "ipython3", 641 | "version": "3.8.8" 642 | } 643 | }, 644 | "nbformat": 4, 645 | "nbformat_minor": 5 646 | } 647 | -------------------------------------------------------------------------------- /Linear_Regression_Practice.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "id": "3e903d11", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "#importing libs\n", 11 | "import numpy as np\n", 12 | "import pandas as pd\n", 13 | "import matplotlib.pyplot as plt" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 5, 19 | "id": "065ad21f", 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "#importing data to notebook\n", 24 | "d= pd.read_csv(\"L:/train.csv\")" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 6, 30 | "id": "0f10b84e", 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/html": [ 36 | "
\n", 37 | "\n", 50 | "\n", 51 | " \n", 52 | " \n", 53 | " \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 | "
xy
024.021.549452
150.047.464463
215.017.218656
338.036.586398
487.087.288984
536.032.463875
612.010.780897
781.080.763399
825.024.612151
95.06.963319
\n", 111 | "
" 112 | ], 113 | "text/plain": [ 114 | " x y\n", 115 | "0 24.0 21.549452\n", 116 | "1 50.0 47.464463\n", 117 | "2 15.0 17.218656\n", 118 | "3 38.0 36.586398\n", 119 | "4 87.0 87.288984\n", 120 | "5 36.0 32.463875\n", 121 | "6 12.0 10.780897\n", 122 | "7 81.0 80.763399\n", 123 | "8 25.0 24.612151\n", 124 | "9 5.0 6.963319" 125 | ] 126 | }, 127 | "execution_count": 6, 128 | "metadata": {}, 129 | "output_type": "execute_result" 130 | } 131 | ], 132 | "source": [ 133 | "d.head(10)" 134 | ] 135 | }, 136 | { 137 | "cell_type": "code", 138 | "execution_count": 7, 139 | "id": "2af2f56a", 140 | "metadata": {}, 141 | "outputs": [ 142 | { 143 | "name": "stdout", 144 | "output_type": "stream", 145 | "text": [ 146 | "\n", 147 | "RangeIndex: 700 entries, 0 to 699\n", 148 | "Data columns (total 2 columns):\n", 149 | " # Column Non-Null Count Dtype \n", 150 | "--- ------ -------------- ----- \n", 151 | " 0 x 700 non-null float64\n", 152 | " 1 y 699 non-null float64\n", 153 | "dtypes: float64(2)\n", 154 | "memory usage: 11.1 KB\n" 155 | ] 156 | } 157 | ], 158 | "source": [ 159 | "d.info()" 160 | ] 161 | }, 162 | { 163 | "cell_type": "code", 164 | "execution_count": 8, 165 | "id": "4fdcfde4", 166 | "metadata": {}, 167 | "outputs": [], 168 | "source": [ 169 | "d= d.dropna()" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": 9, 175 | "id": "721bace4", 176 | "metadata": {}, 177 | "outputs": [ 178 | { 179 | "data": { 180 | "text/plain": [ 181 | "(699, 2)" 182 | ] 183 | }, 184 | "execution_count": 9, 185 | "metadata": {}, 186 | "output_type": "execute_result" 187 | } 188 | ], 189 | "source": [ 190 | "d.shape" 191 | ] 192 | }, 193 | { 194 | "cell_type": "code", 195 | "execution_count": 18, 196 | "id": "a693a65e", 197 | "metadata": {}, 198 | "outputs": [], 199 | "source": [ 200 | "#Splitting train Data \n", 201 | "traini = np.array(d.x[0:500]).reshape(500,1)\n", 202 | "traino = np.array(d.y[0:500]).reshape(500,1)" 203 | ] 204 | }, 205 | { 206 | "cell_type": "code", 207 | "execution_count": 20, 208 | "id": "44eac590", 209 | "metadata": {}, 210 | "outputs": [], 211 | "source": [ 212 | "#splitting test data\n", 213 | "testi = np.array(d.x[500:700]).reshape(199,1)\n", 214 | "testo = np.array(d.y[500:700]).reshape(199,1)" 215 | ] 216 | }, 217 | { 218 | "cell_type": "code", 219 | "execution_count": 23, 220 | "id": "f0b80847", 221 | "metadata": {}, 222 | "outputs": [ 223 | { 224 | "data": { 225 | "text/plain": [ 226 | "LinearRegression()" 227 | ] 228 | }, 229 | "execution_count": 23, 230 | "metadata": {}, 231 | "output_type": "execute_result" 232 | } 233 | ], 234 | "source": [ 235 | "#importing sklearn linear regression library and training\n", 236 | "from sklearn.linear_model import LinearRegression\n", 237 | "l = LinearRegression()\n", 238 | "l.fit(traini,traino)" 239 | ] 240 | }, 241 | { 242 | "cell_type": "code", 243 | "execution_count": 24, 244 | "id": "d78a7cea", 245 | "metadata": {}, 246 | "outputs": [], 247 | "source": [ 248 | "#predicting\n", 249 | "pdict=l.predict(testi)" 250 | ] 251 | }, 252 | { 253 | "cell_type": "code", 254 | "execution_count": 25, 255 | "id": "3dc0c6ea", 256 | "metadata": {}, 257 | "outputs": [], 258 | "source": [ 259 | "#importing metrics library and accuracy of model\n", 260 | "from sklearn.metrics import mean_squared_error\n", 261 | "error = mean_squared_error(testo,pdict)" 262 | ] 263 | }, 264 | { 265 | "cell_type": "code", 266 | "execution_count": 26, 267 | "id": "3c7ab567", 268 | "metadata": {}, 269 | "outputs": [ 270 | { 271 | "data": { 272 | "text/plain": [ 273 | "8.030031591835371" 274 | ] 275 | }, 276 | "execution_count": 26, 277 | "metadata": {}, 278 | "output_type": "execute_result" 279 | } 280 | ], 281 | "source": [ 282 | "error" 283 | ] 284 | }, 285 | { 286 | "cell_type": "code", 287 | "execution_count": 27, 288 | "id": "65802b47", 289 | "metadata": {}, 290 | "outputs": [ 291 | { 292 | "data": { 293 | "image/png": "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\n", 294 | "text/plain": [ 295 | "
" 296 | ] 297 | }, 298 | "metadata": { 299 | "needs_background": "light" 300 | }, 301 | "output_type": "display_data" 302 | } 303 | ], 304 | "source": [ 305 | "# Visualising model\n", 306 | "plt.plot(testi,testo,\"+\",color=\"green\")\n", 307 | "plt.plot(testi,pdict,\"*\",color=\"red\")\n", 308 | "plt.xlabel('input')\n", 309 | "plt.ylabel(\"output\")\n", 310 | "plt.show()" 311 | ] 312 | }, 313 | { 314 | "cell_type": "code", 315 | "execution_count": null, 316 | "id": "dc4f9a7c", 317 | "metadata": {}, 318 | "outputs": [], 319 | "source": [] 320 | } 321 | ], 322 | "metadata": { 323 | "kernelspec": { 324 | "display_name": "Python 3", 325 | "language": "python", 326 | "name": "python3" 327 | }, 328 | "language_info": { 329 | "codemirror_mode": { 330 | "name": "ipython", 331 | "version": 3 332 | }, 333 | "file_extension": ".py", 334 | "mimetype": "text/x-python", 335 | "name": "python", 336 | "nbconvert_exporter": "python", 337 | "pygments_lexer": "ipython3", 338 | "version": "3.8.8" 339 | } 340 | }, 341 | "nbformat": 4, 342 | "nbformat_minor": 5 343 | } 344 | -------------------------------------------------------------------------------- /Naive Bayes Model.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "cb9af7fb", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import numpy as np\n", 11 | "import pandas as pd\n", 12 | "import matplotlib.pyplot as plt\n" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "id": "637425f0", 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "#load data\n", 23 | "data = pd.read_csv(\"E:\\Desktop\\Machine-Learning-Collection\\Data Folder\\study_data.csv\")" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 3, 29 | "id": "b4840518", 30 | "metadata": {}, 31 | "outputs": [ 32 | { 33 | "data": { 34 | "text/html": [ 35 | "
\n", 36 | "\n", 49 | "\n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \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 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | "
repetition_timestudy_timeknowledge_level
00.000.00Low
10.240.90High
20.250.33Low
30.650.30High
40.980.24Low
50.100.66High
60.290.56High
70.400.01Low
80.720.25Low
90.200.85High
100.300.81High
110.410.30Low
120.780.34High
130.150.90High
140.300.60High
150.350.80High
160.010.05Low
170.080.33Low
180.270.29Low
190.490.56High
\n", 181 | "
" 182 | ], 183 | "text/plain": [ 184 | " repetition_time study_time knowledge_level\n", 185 | "0 0.00 0.00 Low\n", 186 | "1 0.24 0.90 High\n", 187 | "2 0.25 0.33 Low\n", 188 | "3 0.65 0.30 High\n", 189 | "4 0.98 0.24 Low\n", 190 | "5 0.10 0.66 High\n", 191 | "6 0.29 0.56 High\n", 192 | "7 0.40 0.01 Low\n", 193 | "8 0.72 0.25 Low\n", 194 | "9 0.20 0.85 High\n", 195 | "10 0.30 0.81 High\n", 196 | "11 0.41 0.30 Low\n", 197 | "12 0.78 0.34 High\n", 198 | "13 0.15 0.90 High\n", 199 | "14 0.30 0.60 High\n", 200 | "15 0.35 0.80 High\n", 201 | "16 0.01 0.05 Low\n", 202 | "17 0.08 0.33 Low\n", 203 | "18 0.27 0.29 Low\n", 204 | "19 0.49 0.56 High" 205 | ] 206 | }, 207 | "execution_count": 3, 208 | "metadata": {}, 209 | "output_type": "execute_result" 210 | } 211 | ], 212 | "source": [ 213 | "data.head(20)" 214 | ] 215 | }, 216 | { 217 | "cell_type": "code", 218 | "execution_count": 4, 219 | "id": "b9ac4664", 220 | "metadata": {}, 221 | "outputs": [ 222 | { 223 | "name": "stdout", 224 | "output_type": "stream", 225 | "text": [ 226 | "\n", 227 | "RangeIndex: 258 entries, 0 to 257\n", 228 | "Data columns (total 3 columns):\n", 229 | " # Column Non-Null Count Dtype \n", 230 | "--- ------ -------------- ----- \n", 231 | " 0 repetition_time 258 non-null float64\n", 232 | " 1 study_time 258 non-null float64\n", 233 | " 2 knowledge_level 258 non-null object \n", 234 | "dtypes: float64(2), object(1)\n", 235 | "memory usage: 6.2+ KB\n" 236 | ] 237 | } 238 | ], 239 | "source": [ 240 | "#exploring data a bit\n", 241 | "data.info()" 242 | ] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "execution_count": 5, 247 | "id": "3e7492c6", 248 | "metadata": {}, 249 | "outputs": [ 250 | { 251 | "data": { 252 | "text/html": [ 253 | "
\n", 254 | "\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 | "
repetition_timestudy_time
count258.000000258.000000
mean0.4327130.458539
std0.2481080.255211
min0.0000000.000000
25%0.2500000.250000
50%0.3300000.500000
75%0.6475000.660000
max0.9900000.930000
\n", 318 | "
" 319 | ], 320 | "text/plain": [ 321 | " repetition_time study_time\n", 322 | "count 258.000000 258.000000\n", 323 | "mean 0.432713 0.458539\n", 324 | "std 0.248108 0.255211\n", 325 | "min 0.000000 0.000000\n", 326 | "25% 0.250000 0.250000\n", 327 | "50% 0.330000 0.500000\n", 328 | "75% 0.647500 0.660000\n", 329 | "max 0.990000 0.930000" 330 | ] 331 | }, 332 | "execution_count": 5, 333 | "metadata": {}, 334 | "output_type": "execute_result" 335 | } 336 | ], 337 | "source": [ 338 | "data.describe()" 339 | ] 340 | }, 341 | { 342 | "cell_type": "code", 343 | "execution_count": 7, 344 | "id": "9aa1bc54", 345 | "metadata": {}, 346 | "outputs": [ 347 | { 348 | "data": { 349 | "text/plain": [ 350 | "High 151\n", 351 | "Low 107\n", 352 | "Name: knowledge_level, dtype: int64" 353 | ] 354 | }, 355 | "execution_count": 7, 356 | "metadata": {}, 357 | "output_type": "execute_result" 358 | } 359 | ], 360 | "source": [ 361 | "data['knowledge_level'].value_counts()" 362 | ] 363 | }, 364 | { 365 | "cell_type": "code", 366 | "execution_count": 8, 367 | "id": "693ee341", 368 | "metadata": {}, 369 | "outputs": [], 370 | "source": [ 371 | "#splitting data and setup\n", 372 | "x = data.drop(data.columns[[2]], axis = 1)\n", 373 | "y=data['knowledge_level']" 374 | ] 375 | }, 376 | { 377 | "cell_type": "code", 378 | "execution_count": 10, 379 | "id": "6b3ff4f5", 380 | "metadata": {}, 381 | "outputs": [ 382 | { 383 | "data": { 384 | "text/html": [ 385 | "
\n", 386 | "\n", 399 | "\n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | "
repetition_timestudy_time
00.000.00
10.240.90
20.250.33
30.650.30
40.980.24
\n", 435 | "
" 436 | ], 437 | "text/plain": [ 438 | " repetition_time study_time\n", 439 | "0 0.00 0.00\n", 440 | "1 0.24 0.90\n", 441 | "2 0.25 0.33\n", 442 | "3 0.65 0.30\n", 443 | "4 0.98 0.24" 444 | ] 445 | }, 446 | "execution_count": 10, 447 | "metadata": {}, 448 | "output_type": "execute_result" 449 | } 450 | ], 451 | "source": [ 452 | "x.head()" 453 | ] 454 | }, 455 | { 456 | "cell_type": "code", 457 | "execution_count": 11, 458 | "id": "9495f882", 459 | "metadata": {}, 460 | "outputs": [], 461 | "source": [ 462 | "#encoding data\n", 463 | "y = pd.get_dummies(data,columns = ['knowledge_level'])" 464 | ] 465 | }, 466 | { 467 | "cell_type": "code", 468 | "execution_count": 12, 469 | "id": "04424408", 470 | "metadata": {}, 471 | "outputs": [ 472 | { 473 | "data": { 474 | "text/html": [ 475 | "
\n", 476 | "\n", 489 | "\n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | "
repetition_timestudy_timeknowledge_level_Highknowledge_level_Low
00.000.0001
10.240.9010
20.250.3301
30.650.3010
40.980.2401
\n", 537 | "
" 538 | ], 539 | "text/plain": [ 540 | " repetition_time study_time knowledge_level_High knowledge_level_Low\n", 541 | "0 0.00 0.00 0 1\n", 542 | "1 0.24 0.90 1 0\n", 543 | "2 0.25 0.33 0 1\n", 544 | "3 0.65 0.30 1 0\n", 545 | "4 0.98 0.24 0 1" 546 | ] 547 | }, 548 | "execution_count": 12, 549 | "metadata": {}, 550 | "output_type": "execute_result" 551 | } 552 | ], 553 | "source": [ 554 | "y.head()" 555 | ] 556 | }, 557 | { 558 | "cell_type": "code", 559 | "execution_count": 15, 560 | "id": "fcac0cd7", 561 | "metadata": {}, 562 | "outputs": [], 563 | "source": [ 564 | "#splitting data\n", 565 | "from sklearn.model_selection import train_test_split\n", 566 | "xtrain,xtest,ytrain,ytest = train_test_split(x,y['knowledge_level_High'],test_size=0.25, random_state=0 )" 567 | ] 568 | }, 569 | { 570 | "cell_type": "code", 571 | "execution_count": 16, 572 | "id": "3c9aa28d", 573 | "metadata": {}, 574 | "outputs": [], 575 | "source": [ 576 | "#scaling\n", 577 | "from sklearn.preprocessing import StandardScaler\n", 578 | "sc = StandardScaler()\n", 579 | "xtrain = sc.fit_transform(xtrain)\n", 580 | "xtest = sc.fit_transform(xtest)" 581 | ] 582 | }, 583 | { 584 | "cell_type": "code", 585 | "execution_count": 17, 586 | "id": "12f194f5", 587 | "metadata": {}, 588 | "outputs": [ 589 | { 590 | "data": { 591 | "text/plain": [ 592 | "GaussianNB()" 593 | ] 594 | }, 595 | "execution_count": 17, 596 | "metadata": {}, 597 | "output_type": "execute_result" 598 | } 599 | ], 600 | "source": [ 601 | "#training\n", 602 | "from sklearn.naive_bayes import GaussianNB\n", 603 | "nvb = GaussianNB()\n", 604 | "nvb.fit(xtrain,ytrain)" 605 | ] 606 | }, 607 | { 608 | "cell_type": "code", 609 | "execution_count": 18, 610 | "id": "b21580bd", 611 | "metadata": {}, 612 | "outputs": [], 613 | "source": [ 614 | "y_p = nvb.predict(xtest)" 615 | ] 616 | }, 617 | { 618 | "cell_type": "code", 619 | "execution_count": 19, 620 | "id": "fd57d426", 621 | "metadata": {}, 622 | "outputs": [], 623 | "source": [ 624 | "#Results\n", 625 | "from sklearn.metrics import confusion_matrix\n", 626 | "cm = confusion_matrix(ytest,y_p)" 627 | ] 628 | }, 629 | { 630 | "cell_type": "code", 631 | "execution_count": 20, 632 | "id": "ed6fb178", 633 | "metadata": {}, 634 | "outputs": [ 635 | { 636 | "data": { 637 | "text/plain": [ 638 | "array([[26, 3],\n", 639 | " [ 4, 32]], dtype=int64)" 640 | ] 641 | }, 642 | "execution_count": 20, 643 | "metadata": {}, 644 | "output_type": "execute_result" 645 | } 646 | ], 647 | "source": [ 648 | "cm" 649 | ] 650 | }, 651 | { 652 | "cell_type": "code", 653 | "execution_count": 23, 654 | "id": "c061eade", 655 | "metadata": {}, 656 | "outputs": [ 657 | { 658 | "name": "stderr", 659 | "output_type": "stream", 660 | "text": [ 661 | "*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with *x* & *y*. Please use the *color* keyword-argument or provide a 2-D array with a single row if you intend to specify the same RGB or RGBA value for all points.\n", 662 | "*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with *x* & *y*. Please use the *color* keyword-argument or provide a 2-D array with a single row if you intend to specify the same RGB or RGBA value for all points.\n" 663 | ] 664 | }, 665 | { 666 | "data": { 667 | "image/png": "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\n", 668 | "text/plain": [ 669 | "
" 670 | ] 671 | }, 672 | "metadata": { 673 | "needs_background": "light" 674 | }, 675 | "output_type": "display_data" 676 | } 677 | ], 678 | "source": [ 679 | "#visualising model prediction\n", 680 | "from matplotlib.colors import ListedColormap\n", 681 | "X_set, y_set = xtest, ytest\n", 682 | "X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),\n", 683 | " np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))\n", 684 | "plt.contourf(X1, X2, nvb.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),\n", 685 | " alpha = 0.75, cmap = ListedColormap(('white', 'grey')))\n", 686 | "plt.xlim(X1.min(), X1.max())\n", 687 | "plt.ylim(X2.min(), X2.max())\n", 688 | "for i, j in enumerate(np.unique(y_set)):\n", 689 | " plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],\n", 690 | " c = ListedColormap(('red', 'green'))(i), label = j)\n", 691 | "plt.title('Knowledge Level')\n", 692 | "plt.xlabel('Repitition Time')\n", 693 | "plt.ylabel('Study Time')\n", 694 | "plt.legend()\n", 695 | "plt.show()\n", 696 | "\n", 697 | " \n", 698 | " " 699 | ] 700 | }, 701 | { 702 | "cell_type": "code", 703 | "execution_count": null, 704 | "id": "d53397f1", 705 | "metadata": {}, 706 | "outputs": [], 707 | "source": [] 708 | } 709 | ], 710 | "metadata": { 711 | "kernelspec": { 712 | "display_name": "Python 3", 713 | "language": "python", 714 | "name": "python3" 715 | }, 716 | "language_info": { 717 | "codemirror_mode": { 718 | "name": "ipython", 719 | "version": 3 720 | }, 721 | "file_extension": ".py", 722 | "mimetype": "text/x-python", 723 | "name": "python", 724 | "nbconvert_exporter": "python", 725 | "pygments_lexer": "ipython3", 726 | "version": "3.8.8" 727 | } 728 | }, 729 | "nbformat": 4, 730 | "nbformat_minor": 5 731 | } 732 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Machine-Learning-Collection 2 | It contains machine learning codes that I made and some of files for data source are from geeksforgeeks courses and Kraggle.com 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Traffic-Light-Detection-CNN/traffic_cnn.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "908e1a66", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import tensorflow as tf\n", 11 | "from keras.preprocessing.image import ImageDataGenerator\n", 12 | "import numpy as np\n", 13 | "import pandas as pd\n", 14 | "import matplotlib.pyplot as plt" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "id": "3abce3f8", 21 | "metadata": {}, 22 | "outputs": [ 23 | { 24 | "name": "stdout", 25 | "output_type": "stream", 26 | "text": [ 27 | "Found 2600 images belonging to 1 classes.\n" 28 | ] 29 | } 30 | ], 31 | "source": [ 32 | "#Preprocessing the Training set\n", 33 | "\n", 34 | "train_datagen = ImageDataGenerator(rescale = 1./255,\n", 35 | " shear_range = 0.2,\n", 36 | " zoom_range = 0.2,\n", 37 | " horizontal_flip = True)\n", 38 | "training_set = train_datagen.flow_from_directory(r\"L:\\project - traffic-light\\train_dataset\",\n", 39 | " target_size = (64, 64),\n", 40 | " batch_size = 32,\n", 41 | " class_mode = 'binary')\n" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 3, 47 | "id": "d7b66b17", 48 | "metadata": {}, 49 | "outputs": [ 50 | { 51 | "name": "stdout", 52 | "output_type": "stream", 53 | "text": [ 54 | "Found 400 images belonging to 1 classes.\n" 55 | ] 56 | } 57 | ], 58 | "source": [ 59 | "#Preprocessing the Test set\n", 60 | "\n", 61 | "test_datagen = ImageDataGenerator(rescale = 1./255)\n", 62 | "test_set = test_datagen.flow_from_directory(r\"L:\\project - traffic-light\\test_dataset\",\n", 63 | " target_size = (64, 64),\n", 64 | " batch_size = 32,\n", 65 | " class_mode = 'binary')" 66 | ] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "execution_count": 4, 71 | "id": "7ffed715", 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": [ 75 | "#starting CNN process\n", 76 | "cnn = tf.keras.models.Sequential()" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 5, 82 | "id": "ee48cbed", 83 | "metadata": {}, 84 | "outputs": [], 85 | "source": [ 86 | "#Convolution\n", 87 | "cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu', input_shape=[64, 64, 3]))" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": 6, 93 | "id": "4d426e93", 94 | "metadata": {}, 95 | "outputs": [], 96 | "source": [ 97 | "#Pooling\n", 98 | "cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 7, 104 | "id": "3d32d4cc", 105 | "metadata": {}, 106 | "outputs": [], 107 | "source": [ 108 | "#second convolutional layer\n", 109 | "cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu'))\n", 110 | "cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))" 111 | ] 112 | }, 113 | { 114 | "cell_type": "code", 115 | "execution_count": 8, 116 | "id": "bda02cfa", 117 | "metadata": {}, 118 | "outputs": [], 119 | "source": [ 120 | "#Flattening\n", 121 | "cnn.add(tf.keras.layers.Flatten())" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 9, 127 | "id": "eed05de7", 128 | "metadata": {}, 129 | "outputs": [], 130 | "source": [ 131 | "#Full Connection\n", 132 | "cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))" 133 | ] 134 | }, 135 | { 136 | "cell_type": "code", 137 | "execution_count": 10, 138 | "id": "58b17c93", 139 | "metadata": {}, 140 | "outputs": [], 141 | "source": [ 142 | "#Output Layer\n", 143 | "cnn.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 11, 149 | "id": "950662cd", 150 | "metadata": {}, 151 | "outputs": [], 152 | "source": [ 153 | "#Training the CNN" 154 | ] 155 | }, 156 | { 157 | "cell_type": "code", 158 | "execution_count": 12, 159 | "id": "32091fb8", 160 | "metadata": {}, 161 | "outputs": [], 162 | "source": [ 163 | "#Compiling the CNN\n", 164 | "cnn.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])" 165 | ] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "execution_count": 13, 170 | "id": "e84b7991", 171 | "metadata": {}, 172 | "outputs": [ 173 | { 174 | "name": "stdout", 175 | "output_type": "stream", 176 | "text": [ 177 | "Epoch 1/3\n", 178 | "82/82 [==============================] - 270s 3s/step - loss: 0.0123 - accuracy: 0.9877 - val_loss: 1.2561e-17 - val_accuracy: 1.0000\n", 179 | "Epoch 2/3\n", 180 | "82/82 [==============================] - 287s 4s/step - loss: 1.1705e-16 - accuracy: 1.0000 - val_loss: 1.2272e-17 - val_accuracy: 1.0000\n", 181 | "Epoch 3/3\n", 182 | "82/82 [==============================] - 312s 4s/step - loss: 6.2950e-17 - accuracy: 1.0000 - val_loss: 1.2272e-17 - val_accuracy: 1.0000\n" 183 | ] 184 | } 185 | ], 186 | "source": [ 187 | "#Training the CNN on the Training set and evaluating it on the Test se\n", 188 | "model = cnn.fit(x = training_set, validation_data = test_set, epochs = 3)\n" 189 | ] 190 | }, 191 | { 192 | "cell_type": "code", 193 | "execution_count": 14, 194 | "id": "547bf9f9", 195 | "metadata": {}, 196 | "outputs": [ 197 | { 198 | "name": "stdout", 199 | "output_type": "stream", 200 | "text": [ 201 | "Model: \"sequential\"\n", 202 | "_________________________________________________________________\n", 203 | " Layer (type) Output Shape Param # \n", 204 | "=================================================================\n", 205 | " conv2d (Conv2D) (None, 62, 62, 32) 896 \n", 206 | " \n", 207 | " max_pooling2d (MaxPooling2D (None, 31, 31, 32) 0 \n", 208 | " ) \n", 209 | " \n", 210 | " conv2d_1 (Conv2D) (None, 29, 29, 32) 9248 \n", 211 | " \n", 212 | " max_pooling2d_1 (MaxPooling (None, 14, 14, 32) 0 \n", 213 | " 2D) \n", 214 | " \n", 215 | " flatten (Flatten) (None, 6272) 0 \n", 216 | " \n", 217 | " dense (Dense) (None, 128) 802944 \n", 218 | " \n", 219 | " dense_1 (Dense) (None, 1) 129 \n", 220 | " \n", 221 | "=================================================================\n", 222 | "Total params: 813,217\n", 223 | "Trainable params: 813,217\n", 224 | "Non-trainable params: 0\n", 225 | "_________________________________________________________________\n" 226 | ] 227 | } 228 | ], 229 | "source": [ 230 | "cnn.summary()" 231 | ] 232 | }, 233 | { 234 | "cell_type": "code", 235 | "execution_count": null, 236 | "id": "21da903f", 237 | "metadata": {}, 238 | "outputs": [], 239 | "source": [] 240 | }, 241 | { 242 | "cell_type": "code", 243 | "execution_count": null, 244 | "id": "4bc02657", 245 | "metadata": {}, 246 | "outputs": [], 247 | "source": [] 248 | } 249 | ], 250 | "metadata": { 251 | "kernelspec": { 252 | "display_name": "Python 3", 253 | "language": "python", 254 | "name": "python3" 255 | }, 256 | "language_info": { 257 | "codemirror_mode": { 258 | "name": "ipython", 259 | "version": 3 260 | }, 261 | "file_extension": ".py", 262 | "mimetype": "text/x-python", 263 | "name": "python", 264 | "nbconvert_exporter": "python", 265 | "pygments_lexer": "ipython3", 266 | "version": "3.8.8" 267 | } 268 | }, 269 | "nbformat": 4, 270 | "nbformat_minor": 5 271 | } 272 | -------------------------------------------------------------------------------- /googlebrains-vpp-ver1.ipynb: -------------------------------------------------------------------------------- 1 | {"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.7.10","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Reference Notebooks:\n","metadata":{}},{"cell_type":"markdown","source":"## Import libraries","metadata":{"papermill":{"duration":0.016249,"end_time":"2021-10-02T10:01:32.887198","exception":false,"start_time":"2021-10-02T10:01:32.870949","status":"completed"},"tags":[]}},{"cell_type":"code","source":"import gc\nimport numpy as np\nimport pandas as pd\nfrom sklearn.model_selection import KFold\nfrom sklearn.preprocessing import RobustScaler\nfrom sklearn.metrics import mean_absolute_error\n\nimport tensorflow as tf\nfrom tensorflow.keras.utils import plot_model\nfrom tensorflow.keras.models import Model, load_model\nfrom tensorflow.keras.callbacks import EarlyStopping\nfrom tensorflow.keras.callbacks import ModelCheckpoint\nfrom tensorflow.keras.callbacks import ReduceLROnPlateau\nfrom tensorflow.keras.layers import Bidirectional, LSTM, Conv1D\nfrom tensorflow.keras.layers import Dense, Dropout, Input\nfrom tensorflow.keras.layers import Concatenate, Add, GRU\n\nnp.random.seed(42)\ntf.random.set_seed(42)","metadata":{"_cell_guid":"3e5a0bd1-3e22-4b2c-a565-68985e55f95e","_uuid":"e331dbcc-0346-4019-9ff6-b890154a878b","collapsed":false,"jupyter":{"outputs_hidden":false},"papermill":{"duration":5.912325,"end_time":"2021-10-02T10:01:38.814556","exception":false,"start_time":"2021-10-02T10:01:32.902231","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:51:31.092445Z","iopub.execute_input":"2021-10-21T10:51:31.093256Z","iopub.status.idle":"2021-10-21T10:51:37.597242Z","shell.execute_reply.started":"2021-10-21T10:51:31.093130Z","shell.execute_reply":"2021-10-21T10:51:37.596298Z"},"trusted":true},"execution_count":1,"outputs":[{"name":"stderr","text":"2021-10-21 10:51:32.748629: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/conda/lib\n2021-10-21 10:51:32.748738: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n","output_type":"stream"}]},{"cell_type":"markdown","source":"## Load source datasets","metadata":{"papermill":{"duration":0.014712,"end_time":"2021-10-02T10:01:38.845382","exception":false,"start_time":"2021-10-02T10:01:38.83067","status":"completed"},"tags":[]}},{"cell_type":"code","source":"train_df = pd.read_csv('../input/ventilator-pressure-prediction/train.csv')\nprint(f\"train_df: {train_df.shape}\")\ntrain_df.head()","metadata":{"_cell_guid":"89eb257e-0ed2-4f8b-94d6-462a5e995eb1","_uuid":"ca71d87d-6594-4f31-906d-0b53cd4c1374","collapsed":false,"jupyter":{"outputs_hidden":false},"papermill":{"duration":10.663035,"end_time":"2021-10-02T10:01:49.523448","exception":false,"start_time":"2021-10-02T10:01:38.860413","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:51:37.599146Z","iopub.execute_input":"2021-10-21T10:51:37.599444Z","iopub.status.idle":"2021-10-21T10:51:46.119928Z","shell.execute_reply.started":"2021-10-21T10:51:37.599406Z","shell.execute_reply":"2021-10-21T10:51:46.118964Z"},"trusted":true},"execution_count":2,"outputs":[{"name":"stdout","text":"train_df: (6036000, 8)\n","output_type":"stream"},{"execution_count":2,"output_type":"execute_result","data":{"text/plain":" id breath_id R C time_step u_in u_out pressure\n0 1 1 20 50 0.000000 0.083334 0 5.837492\n1 2 1 20 50 0.033652 18.383041 0 5.907794\n2 3 1 20 50 0.067514 22.509278 0 7.876254\n3 4 1 20 50 0.101542 22.808822 0 11.742872\n4 5 1 20 50 0.135756 25.355850 0 12.234987","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idbreath_idRCtime_stepu_inu_outpressure
01120500.0000000.08333405.837492
12120500.03365218.38304105.907794
23120500.06751422.50927807.876254
34120500.10154222.808822011.742872
45120500.13575625.355850012.234987
\n
"},"metadata":{}}]},{"cell_type":"code","source":"test_df = pd.read_csv('../input/ventilator-pressure-prediction/test.csv')\nprint(f\"test_df: {test_df.shape}\")\ntest_df.head()","metadata":{"papermill":{"duration":5.111757,"end_time":"2021-10-02T10:01:54.659801","exception":false,"start_time":"2021-10-02T10:01:49.548044","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:51:46.121283Z","iopub.execute_input":"2021-10-21T10:51:46.121609Z","iopub.status.idle":"2021-10-21T10:51:50.216171Z","shell.execute_reply.started":"2021-10-21T10:51:46.121579Z","shell.execute_reply":"2021-10-21T10:51:50.215312Z"},"trusted":true},"execution_count":3,"outputs":[{"name":"stdout","text":"test_df: (4024000, 7)\n","output_type":"stream"},{"execution_count":3,"output_type":"execute_result","data":{"text/plain":" id breath_id R C time_step u_in u_out\n0 1 0 5 20 0.000000 0.000000 0\n1 2 0 5 20 0.031904 7.515046 0\n2 3 0 5 20 0.063827 14.651675 0\n3 4 0 5 20 0.095751 21.230610 0\n4 5 0 5 20 0.127644 26.320956 0","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idbreath_idRCtime_stepu_inu_out
0105200.0000000.0000000
1205200.0319047.5150460
2305200.06382714.6516750
3405200.09575121.2306100
4505200.12764426.3209560
\n
"},"metadata":{}}]},{"cell_type":"markdown","source":"## Feature Engineering","metadata":{"papermill":{"duration":0.017258,"end_time":"2021-10-02T10:01:54.695134","exception":false,"start_time":"2021-10-02T10:01:54.677876","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def add_features(df):\n df['cross']= df['u_in'] * df['u_out']\n df['cross2']= df['time_step'] * df['u_out']\n df['area'] = df['time_step'] * df['u_in']\n df['area'] = df.groupby('breath_id')['area'].cumsum()\n df['time_step_cumsum'] = df.groupby(['breath_id'])['time_step'].cumsum()\n df['u_in_cumsum'] = (df['u_in']).groupby(df['breath_id']).cumsum()\n print(\"Step-1...Completed\")\n \n df['u_in_lag1'] = df.groupby('breath_id')['u_in'].shift(1)\n df['u_out_lag1'] = df.groupby('breath_id')['u_out'].shift(1)\n df['u_in_lag_back1'] = df.groupby('breath_id')['u_in'].shift(-1)\n df['u_out_lag_back1'] = df.groupby('breath_id')['u_out'].shift(-1)\n df['u_in_lag2'] = df.groupby('breath_id')['u_in'].shift(2)\n df['u_out_lag2'] = df.groupby('breath_id')['u_out'].shift(2)\n df['u_in_lag_back2'] = df.groupby('breath_id')['u_in'].shift(-2)\n df['u_out_lag_back2'] = df.groupby('breath_id')['u_out'].shift(-2)\n df['u_in_lag3'] = df.groupby('breath_id')['u_in'].shift(3)\n df['u_out_lag3'] = df.groupby('breath_id')['u_out'].shift(3)\n df['u_in_lag_back3'] = df.groupby('breath_id')['u_in'].shift(-3)\n df['u_out_lag_back3'] = df.groupby('breath_id')['u_out'].shift(-3)\n df['u_in_lag4'] = df.groupby('breath_id')['u_in'].shift(4)\n df['u_out_lag4'] = df.groupby('breath_id')['u_out'].shift(4)\n df['u_in_lag_back4'] = df.groupby('breath_id')['u_in'].shift(-4)\n df['u_out_lag_back4'] = df.groupby('breath_id')['u_out'].shift(-4)\n df = df.fillna(0)\n print(\"Step-2...Completed\")\n \n df['breath_id__u_in__max'] = df.groupby(['breath_id'])['u_in'].transform('max')\n df['breath_id__u_in__mean'] = df.groupby(['breath_id'])['u_in'].transform('mean')\n df['breath_id__u_in__diffmax'] = df.groupby(['breath_id'])['u_in'].transform('max') - df['u_in']\n df['breath_id__u_in__diffmean'] = df.groupby(['breath_id'])['u_in'].transform('mean') - df['u_in']\n print(\"Step-3...Completed\")\n \n df['u_in_diff1'] = df['u_in'] - df['u_in_lag1']\n df['u_out_diff1'] = df['u_out'] - df['u_out_lag1']\n df['u_in_diff2'] = df['u_in'] - df['u_in_lag2']\n df['u_out_diff2'] = df['u_out'] - df['u_out_lag2']\n df['u_in_diff3'] = df['u_in'] - df['u_in_lag3']\n df['u_out_diff3'] = df['u_out'] - df['u_out_lag3']\n df['u_in_diff4'] = df['u_in'] - df['u_in_lag4']\n df['u_out_diff4'] = df['u_out'] - df['u_out_lag4']\n print(\"Step-4...Completed\")\n \n df['one'] = 1\n df['count'] = (df['one']).groupby(df['breath_id']).cumsum()\n df['u_in_cummean'] =df['u_in_cumsum'] /df['count']\n \n df['breath_id_lag']=df['breath_id'].shift(1).fillna(0)\n df['breath_id_lag2']=df['breath_id'].shift(2).fillna(0)\n df['breath_id_lagsame']=np.select([df['breath_id_lag']==df['breath_id']],[1],0)\n df['breath_id_lag2same']=np.select([df['breath_id_lag2']==df['breath_id']],[1],0)\n df['breath_id__u_in_lag'] = df['u_in'].shift(1).fillna(0)\n df['breath_id__u_in_lag'] = df['breath_id__u_in_lag'] * df['breath_id_lagsame']\n df['breath_id__u_in_lag2'] = df['u_in'].shift(2).fillna(0)\n df['breath_id__u_in_lag2'] = df['breath_id__u_in_lag2'] * df['breath_id_lag2same']\n print(\"Step-5...Completed\")\n \n df['time_step_diff'] = df.groupby('breath_id')['time_step'].diff().fillna(0)\n df['ewm_u_in_mean'] = (df\\\n .groupby('breath_id')['u_in']\\\n .ewm(halflife=9)\\\n .mean()\\\n .reset_index(level=0,drop=True))\n df[[\"15_in_sum\",\"15_in_min\",\"15_in_max\",\"15_in_mean\"]] = (df\\\n .groupby('breath_id')['u_in']\\\n .rolling(window=15,min_periods=1)\\\n .agg({\"15_in_sum\":\"sum\",\n \"15_in_min\":\"min\",\n \"15_in_max\":\"max\",\n \"15_in_mean\":\"mean\"})\\\n .reset_index(level=0,drop=True))\n print(\"Step-6...Completed\")\n \n df['u_in_lagback_diff1'] = df['u_in'] - df['u_in_lag_back1']\n df['u_out_lagback_diff1'] = df['u_out'] - df['u_out_lag_back1']\n df['u_in_lagback_diff2'] = df['u_in'] - df['u_in_lag_back2']\n df['u_out_lagback_diff2'] = df['u_out'] - df['u_out_lag_back2']\n print(\"Step-7...Completed\")\n \n df['R'] = df['R'].astype(str)\n df['C'] = df['C'].astype(str)\n df['R__C'] = df[\"R\"].astype(str) + '__' + df[\"C\"].astype(str)\n df = pd.get_dummies(df)\n print(\"Step-8...Completed\")\n \n return df\n\n\nprint(\"Train data...\\n\")\ntrain = add_features(train_df)\n\nprint(\"\\nTest data...\\n\")\ntest = add_features(test_df)\n\ndel train_df\ndel test_df\ngc.collect()","metadata":{"_cell_guid":"13a36b46-7067-4b29-aad3-7e3b15e8415b","_uuid":"dc41dbf2-f199-4b9d-bbd9-bf6084162b47","collapsed":false,"jupyter":{"outputs_hidden":false},"papermill":{"duration":65.287443,"end_time":"2021-10-02T10:02:59.999123","exception":false,"start_time":"2021-10-02T10:01:54.71168","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:51:50.217553Z","iopub.execute_input":"2021-10-21T10:51:50.218523Z","iopub.status.idle":"2021-10-21T10:53:39.627176Z","shell.execute_reply.started":"2021-10-21T10:51:50.218485Z","shell.execute_reply":"2021-10-21T10:53:39.626257Z"},"trusted":true},"execution_count":4,"outputs":[{"name":"stdout","text":"Train data...\n\nStep-1...Completed\nStep-2...Completed\nStep-3...Completed\nStep-4...Completed\nStep-5...Completed\nStep-6...Completed\nStep-7...Completed\nStep-8...Completed\n\nTest data...\n\nStep-1...Completed\nStep-2...Completed\nStep-3...Completed\nStep-4...Completed\nStep-5...Completed\nStep-6...Completed\nStep-7...Completed\nStep-8...Completed\n","output_type":"stream"},{"execution_count":4,"output_type":"execute_result","data":{"text/plain":"0"},"metadata":{}}]},{"cell_type":"code","source":"targets = train[['pressure']].to_numpy().reshape(-1, 80)\n\ntrain.drop(['pressure','id', 'breath_id','one','count',\n 'breath_id_lag','breath_id_lag2','breath_id_lagsame',\n 'breath_id_lag2same'], axis=1, inplace=True)\n\ntest = test.drop(['id', 'breath_id','one','count','breath_id_lag',\n 'breath_id_lag2','breath_id_lagsame',\n 'breath_id_lag2same'], axis=1)\n\nprint(f\"train: {train.shape} \\ntest: {test.shape}\")","metadata":{"_cell_guid":"01328860-fa2a-421c-9e5f-ea0048246f98","_uuid":"346bf2c0-96d2-4da5-8837-c0f820294a85","collapsed":false,"jupyter":{"outputs_hidden":false},"papermill":{"duration":6.737804,"end_time":"2021-10-02T10:03:06.757726","exception":false,"start_time":"2021-10-02T10:03:00.019922","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:53:39.629952Z","iopub.execute_input":"2021-10-21T10:53:39.630898Z","iopub.status.idle":"2021-10-21T10:53:44.665608Z","shell.execute_reply.started":"2021-10-21T10:53:39.630851Z","shell.execute_reply":"2021-10-21T10:53:44.664579Z"},"trusted":true},"execution_count":5,"outputs":[{"name":"stdout","text":"train: (6036000, 64) \ntest: (4024000, 64)\n","output_type":"stream"}]},{"cell_type":"code","source":"scaler = RobustScaler()\ntrain = scaler.fit_transform(train)\ntest = scaler.transform(test)\n\ntrain = train.reshape(-1, 80, train.shape[-1])\ntest = test.reshape(-1, 80, train.shape[-1])\n\nprint(f\"train: {train.shape} \\ntest: {test.shape} \\ntargets: {targets.shape}\")","metadata":{"papermill":{"duration":16.573662,"end_time":"2021-10-02T10:03:23.35312","exception":false,"start_time":"2021-10-02T10:03:06.779458","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:53:44.666977Z","iopub.execute_input":"2021-10-21T10:53:44.667508Z","iopub.status.idle":"2021-10-21T10:53:57.828243Z","shell.execute_reply.started":"2021-10-21T10:53:44.667463Z","shell.execute_reply":"2021-10-21T10:53:57.827159Z"},"trusted":true},"execution_count":6,"outputs":[{"name":"stdout","text":"train: (75450, 80, 64) \ntest: (50300, 80, 64) \ntargets: (75450, 80)\n","output_type":"stream"}]},{"cell_type":"code","source":"pressure = targets.squeeze().reshape(-1,1).astype('float32')\n\nP_MIN = np.min(pressure)\nP_MAX = np.max(pressure)\nP_STEP = (pressure[1] - pressure[0])[0]\nprint('Min pressure: {}'.format(P_MIN))\nprint('Max pressure: {}'.format(P_MAX))\nprint('Pressure step: {}'.format(P_STEP))\nprint('Unique values: {}'.format(np.unique(pressure).shape[0]))\n\ndel pressure\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2021-10-21T10:53:57.829304Z","iopub.execute_input":"2021-10-21T10:53:57.829552Z","iopub.status.idle":"2021-10-21T10:53:58.365213Z","shell.execute_reply.started":"2021-10-21T10:53:57.829524Z","shell.execute_reply":"2021-10-21T10:53:58.364406Z"},"trusted":true},"execution_count":7,"outputs":[{"name":"stdout","text":"Min pressure: -1.8957443237304688\nMax pressure: 64.82099151611328\nPressure step: 0.07030248641967773\nUnique values: 950\n","output_type":"stream"},{"execution_count":7,"output_type":"execute_result","data":{"text/plain":"72"},"metadata":{}}]},{"cell_type":"markdown","source":"## Hardware config","metadata":{"papermill":{"duration":0.02619,"end_time":"2021-10-02T10:03:23.404084","exception":false,"start_time":"2021-10-02T10:03:23.377894","status":"completed"},"tags":[]}},{"cell_type":"code","source":"try:\n tpu = tf.distribute.cluster_resolver.TPUClusterResolver()\n tf.config.experimental_connect_to_cluster(tpu)\n tf.tpu.experimental.initialize_tpu_system(tpu)\n tpu_strategy = tf.distribute.experimental.TPUStrategy(tpu)\n BATCH_SIZE = tpu_strategy.num_replicas_in_sync * 64\n print(\"Running on TPU:\", tpu.master())\n print(f\"Batch Size: {BATCH_SIZE}\")\n \nexcept ValueError:\n strategy = tf.distribute.get_strategy()\n BATCH_SIZE = 512\n print(f\"Running on {strategy.num_replicas_in_sync} replicas\")\n print(f\"Batch Size: {BATCH_SIZE}\")","metadata":{"papermill":{"duration":5.822056,"end_time":"2021-10-02T10:03:29.255869","exception":false,"start_time":"2021-10-02T10:03:23.433813","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:53:58.366432Z","iopub.execute_input":"2021-10-21T10:53:58.366902Z","iopub.status.idle":"2021-10-21T10:54:04.009906Z","shell.execute_reply.started":"2021-10-21T10:53:58.366869Z","shell.execute_reply":"2021-10-21T10:54:04.008589Z"},"trusted":true},"execution_count":8,"outputs":[{"name":"stderr","text":"2021-10-21 10:53:58.374418: I tensorflow/compiler/jit/xla_cpu_device.cc:41] Not creating XLA devices, tf_xla_enable_xla_devices not set\n2021-10-21 10:53:58.377710: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/conda/lib\n2021-10-21 10:53:58.377753: W tensorflow/stream_executor/cuda/cuda_driver.cc:326] failed call to cuInit: UNKNOWN ERROR (303)\n2021-10-21 10:53:58.377789: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (e3b293513433): /proc/driver/nvidia/version does not exist\n2021-10-21 10:53:58.381038: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\nTo enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n2021-10-21 10:53:58.382716: I tensorflow/compiler/jit/xla_gpu_device.cc:99] Not creating XLA devices, tf_xla_enable_xla_devices not set\n2021-10-21 10:53:58.421758: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:301] Initialize GrpcChannelCache for job worker -> {0 -> 10.0.0.2:8470}\n2021-10-21 10:53:58.421844: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:301] Initialize GrpcChannelCache for job localhost -> {0 -> localhost:30470}\n2021-10-21 10:53:58.442591: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:301] Initialize GrpcChannelCache for job worker -> {0 -> 10.0.0.2:8470}\n2021-10-21 10:53:58.442649: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:301] Initialize GrpcChannelCache for job localhost -> {0 -> localhost:30470}\n2021-10-21 10:53:58.444281: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:411] Started server with target: grpc://localhost:30470\n","output_type":"stream"},{"name":"stdout","text":"Running on TPU: grpc://10.0.0.2:8470\nBatch Size: 512\n","output_type":"stream"}]},{"cell_type":"markdown","source":"## Keras DNN Model","metadata":{"papermill":{"duration":0.021164,"end_time":"2021-10-02T10:03:29.2981","exception":false,"start_time":"2021-10-02T10:03:29.276936","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def dnn_model1():\n \n x_input = Input(shape=(train.shape[-2:]))\n \n x1 = Bidirectional(GRU(units=768, return_sequences=True))(x_input)\n x2 = Bidirectional(GRU(units=512, return_sequences=True))(x1)\n x3 = Bidirectional(GRU(units=256, return_sequences=True))(x2)\n \n z2 = Bidirectional(GRU(units=256, return_sequences=True))(x2)\n z3 = Bidirectional(GRU(units=128, return_sequences=True))(Add()([x3, z2]))\n \n x = Concatenate(axis=2)([x3, z2, z3])\n x = Bidirectional(GRU(units=192, return_sequences=True))(x)\n \n x = Dense(units=240, activation='tanh')(x)\n\n x_output = Dense(units=1)(x)\n\n model = Model(inputs=x_input, outputs=x_output, \n name='DNN_Model')\n return model","metadata":{"execution":{"iopub.status.busy":"2021-10-21T10:54:04.011185Z","iopub.execute_input":"2021-10-21T10:54:04.011465Z","iopub.status.idle":"2021-10-21T10:54:04.020622Z","shell.execute_reply.started":"2021-10-21T10:54:04.011434Z","shell.execute_reply":"2021-10-21T10:54:04.019446Z"},"trusted":true},"execution_count":9,"outputs":[]},{"cell_type":"code","source":"def dnn_model():\n \n x_input = Input(shape=(train.shape[-2:]))\n \n x1 = Bidirectional(LSTM(units=768, return_sequences=True))(x_input)\n x2 = Bidirectional(LSTM(units=512, return_sequences=True))(x1)\n x3 = Bidirectional(LSTM(units=256, return_sequences=True))(x2)\n \n z2 = Bidirectional(GRU(units=256, return_sequences=True))(x2)\n z3 = Bidirectional(GRU(units=128, return_sequences=True))(Add()([x3, z2]))\n \n x = Concatenate(axis=2)([x3, z2, z3])\n x = Bidirectional(LSTM(units=192, return_sequences=True))(x)\n \n x = Dense(units=128, activation='tanh')(x)\n \n x_output = Dense(units=1)(x)\n\n model = Model(inputs=x_input, outputs=x_output, \n name='DNN_Model')\n return model","metadata":{"papermill":{"duration":0.034282,"end_time":"2021-10-02T10:03:29.353571","exception":false,"start_time":"2021-10-02T10:03:29.319289","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:54:04.021963Z","iopub.execute_input":"2021-10-21T10:54:04.022216Z","iopub.status.idle":"2021-10-21T10:54:04.043311Z","shell.execute_reply.started":"2021-10-21T10:54:04.022189Z","shell.execute_reply":"2021-10-21T10:54:04.042481Z"},"trusted":true},"execution_count":10,"outputs":[]},{"cell_type":"code","source":"model = dnn_model1()\nmodel.summary()","metadata":{"papermill":{"duration":4.646068,"end_time":"2021-10-02T10:03:34.021825","exception":false,"start_time":"2021-10-02T10:03:29.375757","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:54:04.045173Z","iopub.execute_input":"2021-10-21T10:54:04.045592Z","iopub.status.idle":"2021-10-21T10:54:07.812467Z","shell.execute_reply.started":"2021-10-21T10:54:04.045552Z","shell.execute_reply":"2021-10-21T10:54:07.811111Z"},"trusted":true},"execution_count":11,"outputs":[{"name":"stdout","text":"Model: \"DNN_Model\"\n__________________________________________________________________________________________________\nLayer (type) Output Shape Param # Connected to \n==================================================================================================\ninput_1 (InputLayer) [(None, 80, 64)] 0 \n__________________________________________________________________________________________________\nbidirectional (Bidirectional) (None, 80, 1536) 3843072 input_1[0][0] \n__________________________________________________________________________________________________\nbidirectional_1 (Bidirectional) (None, 80, 1024) 6297600 bidirectional[0][0] \n__________________________________________________________________________________________________\nbidirectional_2 (Bidirectional) (None, 80, 512) 1969152 bidirectional_1[0][0] \n__________________________________________________________________________________________________\nbidirectional_3 (Bidirectional) (None, 80, 512) 1969152 bidirectional_1[0][0] \n__________________________________________________________________________________________________\nadd (Add) (None, 80, 512) 0 bidirectional_2[0][0] \n bidirectional_3[0][0] \n__________________________________________________________________________________________________\nbidirectional_4 (Bidirectional) (None, 80, 256) 493056 add[0][0] \n__________________________________________________________________________________________________\nconcatenate (Concatenate) (None, 80, 1280) 0 bidirectional_2[0][0] \n bidirectional_3[0][0] \n bidirectional_4[0][0] \n__________________________________________________________________________________________________\nbidirectional_5 (Bidirectional) (None, 80, 384) 1698048 concatenate[0][0] \n__________________________________________________________________________________________________\ndense (Dense) (None, 80, 240) 92400 bidirectional_5[0][0] \n__________________________________________________________________________________________________\ndense_1 (Dense) (None, 80, 1) 241 dense[0][0] \n==================================================================================================\nTotal params: 16,362,721\nTrainable params: 16,362,721\nNon-trainable params: 0\n__________________________________________________________________________________________________\n","output_type":"stream"}]},{"cell_type":"code","source":"model = cnn_model()\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2021-10-21T10:54:07.813698Z","iopub.execute_input":"2021-10-21T10:54:07.813925Z","iopub.status.idle":"2021-10-21T10:54:08.118216Z","shell.execute_reply.started":"2021-10-21T10:54:07.813901Z","shell.execute_reply":"2021-10-21T10:54:08.116843Z"},"trusted":true},"execution_count":12,"outputs":[{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)","\u001b[0;32m/tmp/ipykernel_470/149160529.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcnn_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mNameError\u001b[0m: name 'cnn_model' is not defined"],"ename":"NameError","evalue":"name 'cnn_model' is not defined","output_type":"error"}]},{"cell_type":"code","source":"plot_model(\n model, \n to_file='Google_Brain_Keras_Model.png', \n show_shapes=True,\n show_layer_names=True\n)","metadata":{"papermill":{"duration":1.176472,"end_time":"2021-10-02T10:03:35.22082","exception":false,"start_time":"2021-10-02T10:03:34.044348","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:54:08.119574Z","iopub.status.idle":"2021-10-21T10:54:08.120097Z","shell.execute_reply.started":"2021-10-21T10:54:08.119816Z","shell.execute_reply":"2021-10-21T10:54:08.119834Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"with tpu_strategy.scope():\n \n VERBOSE = 0\n test_preds = []\n kf = KFold(n_splits=7, shuffle=True, random_state=2021)\n \n for fold, (train_idx, test_idx) in enumerate(kf.split(train, targets)):\n X_train, X_valid = train[train_idx], train[test_idx]\n y_train, y_valid = targets[train_idx], targets[test_idx]\n \n model = dnn_model1()\n model.compile(optimizer=\"adam\", loss=\"mae\")\n\n lr = ReduceLROnPlateau(monitor=\"val_loss\", factor=0.75, \n patience=10, verbose=VERBOSE)\n \n save_locally = tf.saved_model.SaveOptions(experimental_io_device='/job:localhost')\n chk_point = ModelCheckpoint(f'./Bidirect_LSTM_model_{fold+1}C.h5', options=save_locally, \n monitor='val_loss', verbose=VERBOSE, \n save_best_only=True, mode='min')\n\n es = EarlyStopping(monitor=\"val_loss\", patience=50, \n verbose=VERBOSE, mode=\"min\", \n restore_best_weights=True)\n \n model.fit(X_train, y_train, \n validation_data=(X_valid, y_valid), \n epochs=400,\n verbose=VERBOSE,\n batch_size=BATCH_SIZE, \n callbacks=[lr, chk_point, es])\n \n load_locally = tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')\n model = load_model(f'./Bidirect_LSTM_model_{fold+1}C.h5', options=load_locally)\n \n y_true = y_valid.squeeze().reshape(-1, 1)\n y_pred = model.predict(X_valid, batch_size=BATCH_SIZE).squeeze().reshape(-1, 1)\n score = mean_absolute_error(y_true, y_pred)\n print(f\"Fold-{fold+1} | OOF Score: {score}\")\n \n test_preds.append(model.predict(test, batch_size=BATCH_SIZE).squeeze().reshape(-1, 1).squeeze())","metadata":{"papermill":{"duration":13995.547028,"end_time":"2021-10-02T13:56:50.79368","exception":false,"start_time":"2021-10-02T10:03:35.246652","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:55:47.614251Z","iopub.execute_input":"2021-10-21T10:55:47.614663Z","iopub.status.idle":"2021-10-21T11:02:42.484986Z","shell.execute_reply.started":"2021-10-21T10:55:47.614626Z","shell.execute_reply":"2021-10-21T11:02:42.483621Z"},"trusted":true},"execution_count":13,"outputs":[{"name":"stderr","text":"2021-10-21 10:56:11.139431: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1324462080 exceeds 10% of free system memory.\n","output_type":"stream"},{"name":"stdout","text":"Fold-1 | OOF Score: 0.35343958510227647\n","output_type":"stream"},{"name":"stderr","text":"2021-10-21 11:00:05.736982: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1030144000 exceeds 10% of free system memory.\n2021-10-21 11:00:29.757281: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1324462080 exceeds 10% of free system memory.\n","output_type":"stream"},{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)","\u001b[0;32m/tmp/ipykernel_470/2896258413.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mVERBOSE\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mBATCH_SIZE\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m callbacks=[lr, chk_point, es])\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0mload_locally\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msaved_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLoadOptions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexperimental_io_device\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'/job:localhost'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[1;32m 1139\u001b[0m \u001b[0mworkers\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mworkers\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1140\u001b[0m \u001b[0muse_multiprocessing\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0muse_multiprocessing\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1141\u001b[0;31m return_dict=True)\n\u001b[0m\u001b[1;32m 1142\u001b[0m \u001b[0mval_logs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'val_'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mval\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mval_logs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1143\u001b[0m \u001b[0mepoch_logs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mval_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mevaluate\u001b[0;34m(self, x, y, batch_size, verbose, sample_weight, steps, callbacks, max_queue_size, workers, use_multiprocessing, return_dict)\u001b[0m\n\u001b[1;32m 1392\u001b[0m \u001b[0mlogs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtmp_logs\u001b[0m \u001b[0;31m# No error, now safe to assign to logs.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1393\u001b[0m \u001b[0mend_step\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstep\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep_increment\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1394\u001b[0;31m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_test_batch_end\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mend_step\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1395\u001b[0m \u001b[0mlogs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_utils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_numpy_or_python_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1396\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_test_end\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlogs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.7/contextlib.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, type, value, traceback)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtype\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 119\u001b[0;31m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 120\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 121\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/data_adapter.py\u001b[0m in \u001b[0;36mcatch_stop_iteration\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1162\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1163\u001b[0m \u001b[0;32myield\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1164\u001b[0;31m \u001b[0mcontext\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masync_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1165\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mStopIteration\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOutOfRangeError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1166\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_inferred_steps\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/context.py\u001b[0m in \u001b[0;36masync_wait\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2328\u001b[0m \u001b[0man\u001b[0m \u001b[0merror\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2329\u001b[0m \"\"\"\n\u001b[0;32m-> 2330\u001b[0;31m \u001b[0mcontext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msync_executors\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2331\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2332\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/context.py\u001b[0m in \u001b[0;36msync_executors\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 643\u001b[0m \"\"\"\n\u001b[1;32m 644\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_context_handle\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 645\u001b[0;31m \u001b[0mpywrap_tfe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTFE_ContextSyncExecutors\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_context_handle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 646\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 647\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Context is not initialized.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mKeyboardInterrupt\u001b[0m: "],"ename":"KeyboardInterrupt","evalue":"","output_type":"error"}]},{"cell_type":"code","source":"for i in range(7):\n print(test_preds[i][0])\n\nlen(test_preds)","metadata":{"execution":{"iopub.status.busy":"2021-10-21T10:54:08.126662Z","iopub.status.idle":"2021-10-21T10:54:08.126996Z","shell.execute_reply.started":"2021-10-21T10:54:08.126831Z","shell.execute_reply":"2021-10-21T10:54:08.126847Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Create submission file","metadata":{"papermill":{"duration":0.028835,"end_time":"2021-10-02T13:56:50.851574","exception":false,"start_time":"2021-10-02T13:56:50.822739","status":"completed"},"tags":[]}},{"cell_type":"code","source":"submission = pd.read_csv('../input/ventilator-pressure-prediction/sample_submission.csv')\nsubmission[\"pressure\"] = sum(test_preds)/7\nsubmission.to_csv('mean_submission.csv', index=False)","metadata":{"papermill":{"duration":13.347103,"end_time":"2021-10-02T13:57:04.227112","exception":false,"start_time":"2021-10-02T13:56:50.880009","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-21T10:54:08.127916Z","iopub.status.idle":"2021-10-21T10:54:08.128205Z","shell.execute_reply.started":"2021-10-21T10:54:08.128059Z","shell.execute_reply":"2021-10-21T10:54:08.128073Z"},"trusted":true},"execution_count":null,"outputs":[]}]} --------------------------------------------------------------------------------