File size: 98,619 Bytes
666348d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "92e48866",
   "metadata": {},
   "source": [
    "## Model Training"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25791a74",
   "metadata": {},
   "source": [
    "#### 1.1 Import Data and Required Packages\n",
    "##### Importing Pandas, Numpy, Matplotlib, Seaborn and Warings Library."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b080dfb2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Basic Import\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt \n",
    "import seaborn as sns\n",
    "# Modelling\n",
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.ensemble import RandomForestRegressor,AdaBoostRegressor\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.linear_model import LinearRegression, Ridge,Lasso\n",
    "from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error\n",
    "from sklearn.model_selection import RandomizedSearchCV\n",
    "from catboost import CatBoostRegressor\n",
    "from xgboost import XGBRegressor\n",
    "import warnings"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e45079ad",
   "metadata": {},
   "source": [
    "#### Import the CSV Data as Pandas DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e11c6255",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv('data/stud.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20634923",
   "metadata": {},
   "source": [
    "#### Show Top 5 Records"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e7e412a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>gender</th>\n",
       "      <th>race_ethnicity</th>\n",
       "      <th>parental_level_of_education</th>\n",
       "      <th>lunch</th>\n",
       "      <th>test_preparation_course</th>\n",
       "      <th>math_score</th>\n",
       "      <th>reading_score</th>\n",
       "      <th>writing_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>group B</td>\n",
       "      <td>bachelor's degree</td>\n",
       "      <td>standard</td>\n",
       "      <td>none</td>\n",
       "      <td>72</td>\n",
       "      <td>72</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>group C</td>\n",
       "      <td>some college</td>\n",
       "      <td>standard</td>\n",
       "      <td>completed</td>\n",
       "      <td>69</td>\n",
       "      <td>90</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>female</td>\n",
       "      <td>group B</td>\n",
       "      <td>master's degree</td>\n",
       "      <td>standard</td>\n",
       "      <td>none</td>\n",
       "      <td>90</td>\n",
       "      <td>95</td>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>group A</td>\n",
       "      <td>associate's degree</td>\n",
       "      <td>free/reduced</td>\n",
       "      <td>none</td>\n",
       "      <td>47</td>\n",
       "      <td>57</td>\n",
       "      <td>44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>male</td>\n",
       "      <td>group C</td>\n",
       "      <td>some college</td>\n",
       "      <td>standard</td>\n",
       "      <td>none</td>\n",
       "      <td>76</td>\n",
       "      <td>78</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   gender race_ethnicity parental_level_of_education         lunch  \\\n",
       "0  female        group B           bachelor's degree      standard   \n",
       "1  female        group C                some college      standard   \n",
       "2  female        group B             master's degree      standard   \n",
       "3    male        group A          associate's degree  free/reduced   \n",
       "4    male        group C                some college      standard   \n",
       "\n",
       "  test_preparation_course  math_score  reading_score  writing_score  \n",
       "0                    none          72             72             74  \n",
       "1               completed          69             90             88  \n",
       "2                    none          90             95             93  \n",
       "3                    none          47             57             44  \n",
       "4                    none          76             78             75  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fbd32281",
   "metadata": {},
   "source": [
    "#### Preparing X and Y variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "56d72fde",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.drop(columns=['math_score'],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "cd613177",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>gender</th>\n",
       "      <th>race_ethnicity</th>\n",
       "      <th>parental_level_of_education</th>\n",
       "      <th>lunch</th>\n",
       "      <th>test_preparation_course</th>\n",
       "      <th>reading_score</th>\n",
       "      <th>writing_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>group B</td>\n",
       "      <td>bachelor's degree</td>\n",
       "      <td>standard</td>\n",
       "      <td>none</td>\n",
       "      <td>72</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>female</td>\n",
       "      <td>group C</td>\n",
       "      <td>some college</td>\n",
       "      <td>standard</td>\n",
       "      <td>completed</td>\n",
       "      <td>90</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>female</td>\n",
       "      <td>group B</td>\n",
       "      <td>master's degree</td>\n",
       "      <td>standard</td>\n",
       "      <td>none</td>\n",
       "      <td>95</td>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>male</td>\n",
       "      <td>group A</td>\n",
       "      <td>associate's degree</td>\n",
       "      <td>free/reduced</td>\n",
       "      <td>none</td>\n",
       "      <td>57</td>\n",
       "      <td>44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>male</td>\n",
       "      <td>group C</td>\n",
       "      <td>some college</td>\n",
       "      <td>standard</td>\n",
       "      <td>none</td>\n",
       "      <td>78</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   gender race_ethnicity parental_level_of_education         lunch  \\\n",
       "0  female        group B           bachelor's degree      standard   \n",
       "1  female        group C                some college      standard   \n",
       "2  female        group B             master's degree      standard   \n",
       "3    male        group A          associate's degree  free/reduced   \n",
       "4    male        group C                some college      standard   \n",
       "\n",
       "  test_preparation_course  reading_score  writing_score  \n",
       "0                    none             72             74  \n",
       "1               completed             90             88  \n",
       "2                    none             95             93  \n",
       "3                    none             57             44  \n",
       "4                    none             78             75  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "f237ea14",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Categories in 'gender' variable:      ['female' 'male']\n",
      "Categories in 'race_ethnicity' variable:   ['group B' 'group C' 'group A' 'group D' 'group E']\n",
      "Categories in'parental level of education' variable: [\"bachelor's degree\" 'some college' \"master's degree\" \"associate's degree\"\n",
      " 'high school' 'some high school']\n",
      "Categories in 'lunch' variable:      ['standard' 'free/reduced']\n",
      "Categories in 'test preparation course' variable:      ['none' 'completed']\n"
     ]
    }
   ],
   "source": [
    "print(\"Categories in 'gender' variable:     \",end=\" \" )\n",
    "print(df['gender'].unique())\n",
    "\n",
    "print(\"Categories in 'race_ethnicity' variable:  \",end=\" \")\n",
    "print(df['race_ethnicity'].unique())\n",
    "\n",
    "print(\"Categories in'parental level of education' variable:\",end=\" \" )\n",
    "print(df['parental_level_of_education'].unique())\n",
    "\n",
    "print(\"Categories in 'lunch' variable:     \",end=\" \" )\n",
    "print(df['lunch'].unique())\n",
    "\n",
    "print(\"Categories in 'test preparation course' variable:     \",end=\" \" )\n",
    "print(df['test_preparation_course'].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "924b7f9d",
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['math_score']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ffc69816",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      72\n",
       "1      69\n",
       "2      90\n",
       "3      47\n",
       "4      76\n",
       "       ..\n",
       "995    88\n",
       "996    62\n",
       "997    59\n",
       "998    68\n",
       "999    77\n",
       "Name: math_score, Length: 1000, dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "1e290fe3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create Column Transformer with 3 types of transformers\n",
    "num_features = X.select_dtypes(exclude=\"object\").columns\n",
    "cat_features = X.select_dtypes(include=\"object\").columns\n",
    "\n",
    "from sklearn.preprocessing import OneHotEncoder, StandardScaler\n",
    "from sklearn.compose import ColumnTransformer\n",
    "\n",
    "numeric_transformer = StandardScaler()\n",
    "oh_transformer = OneHotEncoder()\n",
    "\n",
    "preprocessor = ColumnTransformer(\n",
    "    [\n",
    "        (\"OneHotEncoder\", oh_transformer, cat_features),\n",
    "         (\"StandardScaler\", numeric_transformer, num_features),        \n",
    "    ]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "9c68f99a",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = preprocessor.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "72459f1d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.        ,  0.        ,  0.        , ...,  1.        ,\n",
       "         0.19399858,  0.39149181],\n",
       "       [ 1.        ,  0.        ,  0.        , ...,  0.        ,\n",
       "         1.42747598,  1.31326868],\n",
       "       [ 1.        ,  0.        ,  0.        , ...,  1.        ,\n",
       "         1.77010859,  1.64247471],\n",
       "       ...,\n",
       "       [ 1.        ,  0.        ,  0.        , ...,  0.        ,\n",
       "         0.12547206, -0.20107904],\n",
       "       [ 1.        ,  0.        ,  0.        , ...,  0.        ,\n",
       "         0.60515772,  0.58901542],\n",
       "       [ 1.        ,  0.        ,  0.        , ...,  1.        ,\n",
       "         1.15336989,  1.18158627]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ed5c4e99",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((800, 19), (200, 19))"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# separate dataset into train and test\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=42)\n",
    "X_train.shape, X_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4cd80317",
   "metadata": {},
   "source": [
    "#### Create an Evaluate Function to give all metrics after model Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "8c247bd0",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(true, predicted):\n",
    "    mae = mean_absolute_error(true, predicted)\n",
    "    mse = mean_squared_error(true, predicted)\n",
    "    rmse = np.sqrt(mean_squared_error(true, predicted))\n",
    "    r2_square = r2_score(true, predicted)\n",
    "    return mae, rmse, r2_square"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "79ccb8e7",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear Regression\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 5.3389\n",
      "- Mean Absolute Error: 4.2656\n",
      "- R2 Score: 0.8736\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 5.3979\n",
      "- Mean Absolute Error: 4.2416\n",
      "- R2 Score: 0.8803\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "Lasso\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 6.5938\n",
      "- Mean Absolute Error: 5.2063\n",
      "- R2 Score: 0.8071\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 6.5197\n",
      "- Mean Absolute Error: 5.1579\n",
      "- R2 Score: 0.8253\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "Ridge\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 5.3233\n",
      "- Mean Absolute Error: 4.2650\n",
      "- R2 Score: 0.8743\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 5.3904\n",
      "- Mean Absolute Error: 4.2111\n",
      "- R2 Score: 0.8806\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "K-Neighbors Regressor\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 5.7084\n",
      "- Mean Absolute Error: 4.5160\n",
      "- R2 Score: 0.8555\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 7.2583\n",
      "- Mean Absolute Error: 5.6370\n",
      "- R2 Score: 0.7835\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "Decision Tree\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 0.2795\n",
      "- Mean Absolute Error: 0.0187\n",
      "- R2 Score: 0.9997\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 8.0062\n",
      "- Mean Absolute Error: 6.3100\n",
      "- R2 Score: 0.7366\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "Random Forest Regressor\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 2.3132\n",
      "- Mean Absolute Error: 1.8373\n",
      "- R2 Score: 0.9763\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 5.9560\n",
      "- Mean Absolute Error: 4.6091\n",
      "- R2 Score: 0.8542\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "XGBRegressor\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 1.0073\n",
      "- Mean Absolute Error: 0.6875\n",
      "- R2 Score: 0.9955\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 6.4733\n",
      "- Mean Absolute Error: 5.0577\n",
      "- R2 Score: 0.8278\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "CatBoosting Regressor\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 3.0427\n",
      "- Mean Absolute Error: 2.4054\n",
      "- R2 Score: 0.9589\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 6.0086\n",
      "- Mean Absolute Error: 4.6125\n",
      "- R2 Score: 0.8516\n",
      "====================================================================================================\n",
      "\n",
      "\n",
      "AdaBoost Regressor\n",
      "Model performance for Training set\n",
      "- Root Mean Squared Error: 5.8487\n",
      "- Mean Absolute Error: 4.8200\n",
      "- R2 Score: 0.8483\n",
      "----------------------------------\n",
      "Model performance for Test set\n",
      "- Root Mean Squared Error: 6.0846\n",
      "- Mean Absolute Error: 4.7172\n",
      "- R2 Score: 0.8479\n",
      "====================================================================================================\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "models = {\n",
    "    \"Linear Regression\": LinearRegression(),\n",
    "    \"Lasso\": Lasso(),\n",
    "    \"Ridge\": Ridge(),\n",
    "    \"K-Neighbors Regressor\": KNeighborsRegressor(),\n",
    "    \"Decision Tree\": DecisionTreeRegressor(),\n",
    "    \"Random Forest Regressor\": RandomForestRegressor(),\n",
    "    \"XGBRegressor\": XGBRegressor(), \n",
    "    \"CatBoosting Regressor\": CatBoostRegressor(verbose=False),\n",
    "    \"AdaBoost Regressor\": AdaBoostRegressor()\n",
    "}\n",
    "model_list = []\n",
    "r2_list =[]\n",
    "\n",
    "for i in range(len(list(models))):\n",
    "    model = list(models.values())[i]\n",
    "    model.fit(X_train, y_train) # Train model\n",
    "\n",
    "    # Make predictions\n",
    "    y_train_pred = model.predict(X_train)\n",
    "    y_test_pred = model.predict(X_test)\n",
    "    \n",
    "    # Evaluate Train and Test dataset\n",
    "    model_train_mae , model_train_rmse, model_train_r2 = evaluate_model(y_train, y_train_pred)\n",
    "\n",
    "    model_test_mae , model_test_rmse, model_test_r2 = evaluate_model(y_test, y_test_pred)\n",
    "\n",
    "    \n",
    "    print(list(models.keys())[i])\n",
    "    model_list.append(list(models.keys())[i])\n",
    "    \n",
    "    print('Model performance for Training set')\n",
    "    print(\"- Root Mean Squared Error: {:.4f}\".format(model_train_rmse))\n",
    "    print(\"- Mean Absolute Error: {:.4f}\".format(model_train_mae))\n",
    "    print(\"- R2 Score: {:.4f}\".format(model_train_r2))\n",
    "\n",
    "    print('----------------------------------')\n",
    "    \n",
    "    print('Model performance for Test set')\n",
    "    print(\"- Root Mean Squared Error: {:.4f}\".format(model_test_rmse))\n",
    "    print(\"- Mean Absolute Error: {:.4f}\".format(model_test_mae))\n",
    "    print(\"- R2 Score: {:.4f}\".format(model_test_r2))\n",
    "    r2_list.append(model_test_r2)\n",
    "    \n",
    "    print('='*100)\n",
    "    print('\\n')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06480b5a",
   "metadata": {},
   "source": [
    "### Results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e0159e5f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model Name</th>\n",
       "      <th>R2_Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ridge</td>\n",
       "      <td>0.880593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Linear Regression</td>\n",
       "      <td>0.880262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>CatBoosting Regressor</td>\n",
       "      <td>0.851632</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Random Forest Regressor</td>\n",
       "      <td>0.849435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>AdaBoost Regressor</td>\n",
       "      <td>0.848526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>XGBRegressor</td>\n",
       "      <td>0.827797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Lasso</td>\n",
       "      <td>0.825320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>K-Neighbors Regressor</td>\n",
       "      <td>0.783497</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Decision Tree</td>\n",
       "      <td>0.739293</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                Model Name  R2_Score\n",
       "2                    Ridge  0.880593\n",
       "0        Linear Regression  0.880262\n",
       "7    CatBoosting Regressor  0.851632\n",
       "5  Random Forest Regressor  0.849435\n",
       "8       AdaBoost Regressor  0.848526\n",
       "6             XGBRegressor  0.827797\n",
       "1                    Lasso  0.825320\n",
       "3    K-Neighbors Regressor  0.783497\n",
       "4            Decision Tree  0.739293"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(list(zip(model_list, r2_list)), columns=['Model Name', 'R2_Score']).sort_values(by=[\"R2_Score\"],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "357a7c1c",
   "metadata": {},
   "source": [
    "## Linear Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "9a6ad559",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " Accuracy of the model is 88.03\n"
     ]
    }
   ],
   "source": [
    "lin_model = LinearRegression(fit_intercept=True)\n",
    "lin_model = lin_model.fit(X_train, y_train)\n",
    "y_pred = lin_model.predict(X_test)\n",
    "score = r2_score(y_test, y_pred)*100\n",
    "print(\" Accuracy of the model is %.2f\" %score)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d31453e",
   "metadata": {},
   "source": [
    "## Plot y_pred and y_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "eb557b0a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Nw/vszrffvsthg8fjqSkJBgMBnz++ed2r8u5rxUVFRg7diyio6MRExODiRMn4sKFC9oPViDFPv74YyEsLExYvny58L///U+YNGmSEBMTI5SXl/t7aLp11113CStWrBCKi4uFoqIiYejQoUJKSopw4cIF2zmPPvqokJycLOTl5Qnff/+90K9fP+GWW27x46j1rbCwUOjUqZNw4403ClOnTrUd5332XEVFhdCxY0fh4YcfFnbt2iX8/PPPwtdffy0cPnzYds4rr7wiGI1G4fPPPxf27dsn3HvvvUJqaqpw+fJlP45cX+bPny/ExcUJX375pVBaWiqsWbNGaNOmjfD3v//ddg7vszobN24UnnnmGeGzzz4TAAhr1661e13OfR0yZIjQo0cPYefOncL27duF6667ThgzZozmY2Ugo0KfPn2EnJwc2+/19fVCUlKSkJub68dRNS+nT58WAAjbtm0TBEEQKisrhdDQUGHNmjW2c/bv3y8AEAoKCvw1TN06f/68kJaWJmzevFm4/fbbbYEM77M2Zs6cKQwYMEDydavVKphMJuHVV1+1HausrBTCw8OF1atX+2KIzcKwYcOERx55xO7Y/fffL4wdO1YQBN5nrTgGMnLua0lJiQBA+O6772znfPXVV4LBYBBOnjyp6fi4tKRQbW0tdu/ejezsbNuxoKAgZGdno6CgwI8ja16qqqoAALGxsQCA3bt3o66uzu6+d+3aFSkpKbzvKuTk5GDYsGF29xPgfdbKF198gczMTPz2t79FfHw8evXqhaVLl9peLy0thdlstrvPRqMRffv25X1W4JZbbkFeXh4OHjwIANi3bx/y8/Nx9913A+B99hY597WgoAAxMTHIzMy0nZOdnY2goCDs2rVL0/HookVBIDlz5gzq6+ub9HpKSEjATz/95KdRNS9WqxXTpk1D//79kZGRAQAwm80ICwtDTEyM3bkJCQkwm81+GKV+ffzxx9izZw++++67Jq/xPmvj559/xqJFizBjxgz85S9/wXfffYfHH38cYWFhGD9+vO1eOvt3hPdZvlmzZsFisaBr164IDg5GfX095s+fj7FjxwIA77OXyLmvZrMZ8fHxdq+HhIQgNjZW83vPQIYCTk5ODoqLi5Gfn+/voTQ7J06cwNSpU7F582ZERET4ezjNltVqRWZmJl5++WUAQK9evVBcXIzFixdj/Pjx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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(y_test,y_pred);\n",
    "plt.xlabel('Actual');\n",
    "plt.ylabel('Predicted');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "1e707ec3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6di9eze+/vrrYJ9Kh3PkyBHMnDkTn3/+OSIjI4N9Oh2W3W7H8OHD8cQTTwAAhg4dit27d+PFF1/E5MmTg3x2Hcu///1vvP3221i5ciVOP/10bN++HbNmzUJ6ejq/606ESzwAunbtCovF0qSrIT8/H6mpqUE6q45jxowZ+Pjjj/HFF1847EKdmpqKuro6lJSUODye37tvsrOzUVBQgN/85jewWq2wWq3YsGEDnnvuOVitVqSkpPB79oO0tDScdtppDsdOPfVUHD58GAAav0v+PdJ69957L+bPn4+JEydi0KBBuOGGGzB79mxkZmYC4HcdCN58p6mpqSgoKHC432azoaioKCDfOwMUAOHh4Rg2bBjWrVvXeMxut2PdunUYMWJEEM+sfdM0DTNmzMD777+PrKwsZGRkONw/bNgwhIWFOXzve/fuxeHDh/m9++CSSy7Brl27sH379saf4cOHY9KkSY1/5vfceiNHjmzSJr9v3z706dMHAJCRkYHU1FSH77msrAybN2/m9+yjqqoqmM2OlyeLxQK73Q6A33UgePOdjhgxAiUlJcjOzm58TFZWFux2O8455xz/n5Tfy27bqVWrVmkRERHa66+/rv3444/abbfdpnXp0kXLy8sL9qm1W3fccYeWkJCgrV+/XsvNzW38qaqqanzM7bffrvXu3VvLysrStm7dqo0YMUIbMWJEEM+6YzB28Wgav2d/+O677zSr1aotWrRI279/v/b2229r0dHR2ooVKxofs3jxYq1Lly7aBx98oO3cuVO76qqr2PraApMnT9Z69OjR2Ga8evVqrWvXrtq8efMaH8Pv2nfl5eXatm3btG3btmkAtKeeekrbtm2bdujQIU3TvPtOx40bpw0dOlTbvHmz9vXXX2sDBgxgm3FbeP7557XevXtr4eHh2tlnn61t2rQp2KfUrgFw+fPaa681Pqa6ulq78847tcTERC06Olq75pprtNzc3OCddAfhHKDwe/aPjz76SDvjjDO0iIgIbeDAgdqyZcsc7rfb7dpDDz2kpaSkaBEREdoll1yi7d27N0hn236VlZVpM2fO1Hr37q1FRkZqJ510kvbAAw9otbW1jY/hd+27L774wuXfyZMnT9Y0zbvvtLCwULvuuuu02NhYLT4+XpsyZYpWXl4ekPPlbsZEREQUcliDQkRERCGHAQoRERGFHAYoREREFHIYoBAREVHIYYBCREREIYcBChEREYUcBihEREQUchigEBERUchhgEJEAfXrr7/CZDJh+/btwT4VImpHGKAQkd/cdNNNuPrqq4N9GkTUATBAISIyqK+vD/YpEBEYoBB1WqNGjcJdd92FWbNmITExESkpKVi+fDkqKysxZcoUxMXFoX///vjss88AAA0NDbjllluQkZGBqKgonHLKKXj22WcbX++RRx7BG2+8gQ8++AAmkwkmkwnr169vvP/AgQO4+OKLER0djSFDhmDjxo1eneehQ4dwxRVXIDExETExMTj99NPx6aefNt7/ww8/4Pe//z3i4+MRFxeHCy64AL/88gsAwG6349FHH0XPnj0RERGBM888E2vWrGl8rlp++te//oWLLroIkZGRePvttwEAL7/8Mk499VRERkZi4MCBWLJkSYu/ayJqgYBsQUhEIe+iiy7S4uLitMcee0zbt2+f9thjj2kWi0W79NJLtWXLlmn79u3T7rjjDi05OVmrrKzU6urqtIULF2pbtmzRDhw4oK1YsUKLjo7W/vWvf2maJlu5//GPf9TGjRun5ebmarm5uVptba128OBBDYA2cOBA7eOPP9b27t2rXXvttVqfPn20+vp6j+d5+eWXa7/97W+1nTt3ar/88ov20UcfaRs2bNA0TdOOHj2qJSUlaePHj9e2bNmi7d27V3v11Ve1PXv2aJqmaU899ZQWHx+vvfPOO9qePXu0efPmaWFhYdq+ffs0TdMaz61v377ae++9px04cEA7duyYtmLFCi0tLa3x2HvvvaclJSVpr7/+eoD+1yAiZwxQiDqpiy66SDv//PMbb9tsNi0mJka74YYbGo/l5uZqALSNGze6fI3p06drEyZMaLw9efJk7aqrrnJ4jAoCXn755cZjP/zwgwZA++mnnzye56BBg7RHHnnE5X0LFizQMjIytLq6Opf3p6ena4sWLXI4dtZZZ2l33nmnw7k988wzDo/p16+ftnLlSodjjz32mDZixAiP50tE/mENZvaGiIJr8ODBjX+2WCxITk7GoEGDGo+lpKQAAAoKCgAA//znP/Hqq6/i8OHDqK6uRl1dHc4880yf3ystLa3xdQcOHNjs8+6++27ccccd+O9//4sxY8ZgwoQJja+1fft2XHDBBQgLC2vyvLKyMhw7dgwjR450OD5y5Ejs2LHD4djw4cMb/1xZWYlffvkFt9xyC6ZOndp43GazISEhwavPSkStxxoUok7M+cJuMpkcjplMJgBSy7Fq1Srcc889uOWWW/Df//4X27dvx5QpU1BXV+fzexlf15Nbb70VBw4cwA033IBdu3Zh+PDheP755wEAUVFRXr23JzExMY1/rqioAAAsX74c27dvb/zZvXs3Nm3a5Jf3IyLPGKAQkVe++eYbnHfeebjzzjsxdOhQ9O/fv7EYVQkPD0dDQ4Pf37tXr164/fbbsXr1asydOxfLly8HIFmZr776ymXnTXx8PNLT0/HNN980+RynnXaa2/dKSUlBeno6Dhw4gP79+zv8ZGRk+PeDEZFbXOIhIq8MGDAAb775JtauXYuMjAy89dZb2LJli8NFu2/fvli7di327t2L5ORkvyyJzJo1C5deeilOPvlkFBcX44svvsCpp54KAJgxYwaef/55TJw4EQsWLEBCQgI2bdqEs88+G6eccgruvfdePPzww+jXrx/OPPNMvPbaa9i+fXtjp447f/nLX3D33XcjISEB48aNQ21tLbZu3Yri4mLMmTOn1Z+JiDxjgEJEXpk2bRq2bduGP/3pTzCZTLjuuutw5513NrYhA8DUqVOxfv16DB8+HBUVFfjiiy/Qt2/fVr1vQ0MDpk+fjqNHjyI+Ph7jxo3D008/DQBITk5GVlYW7r33Xlx00UWwWCw488wzG+tO7r77bpSWlmLu3LkoKCjAaaedhg8//BADBgxo9j1vvfVWREdH4+9//zvuvfdexMTEYNCgQZg1a1arPgsRec+kaZoW7JMgIiIiMmINChEREYUcBihEFFSXXnopYmNjXf488cQTwT49IgoSLvEQUVDl5OSgurra5X1JSUlISkpq4zMiolDAAIWIiIhCDpd4iIiIKOQwQCEiIqKQwwCFiIiIQg4DFCIiIgo5DFCIiIgo5DBAISIiopDDAIWIiIhCDgMUIiIiCjn/HzZnbvutoFovAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x=y_test,y=y_pred,ci=None,color ='red');"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79c2fe28",
   "metadata": {},
   "source": [
    "#### Difference between Actual and Predicted Values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "7c9a8b48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Actual Value</th>\n",
       "      <th>Predicted Value</th>\n",
       "      <th>Difference</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>521</th>\n",
       "      <td>91</td>\n",
       "      <td>77.0625</td>\n",
       "      <td>13.9375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>737</th>\n",
       "      <td>53</td>\n",
       "      <td>58.4375</td>\n",
       "      <td>-5.4375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>740</th>\n",
       "      <td>80</td>\n",
       "      <td>76.3750</td>\n",
       "      <td>3.6250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>660</th>\n",
       "      <td>74</td>\n",
       "      <td>76.8125</td>\n",
       "      <td>-2.8125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>411</th>\n",
       "      <td>84</td>\n",
       "      <td>87.6250</td>\n",
       "      <td>-3.6250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>408</th>\n",
       "      <td>52</td>\n",
       "      <td>43.5625</td>\n",
       "      <td>8.4375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>332</th>\n",
       "      <td>62</td>\n",
       "      <td>62.6250</td>\n",
       "      <td>-0.6250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>208</th>\n",
       "      <td>74</td>\n",
       "      <td>67.5625</td>\n",
       "      <td>6.4375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>613</th>\n",
       "      <td>65</td>\n",
       "      <td>67.6875</td>\n",
       "      <td>-2.6875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>78</th>\n",
       "      <td>61</td>\n",
       "      <td>62.6875</td>\n",
       "      <td>-1.6875</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>200 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Actual Value  Predicted Value  Difference\n",
       "521            91          77.0625     13.9375\n",
       "737            53          58.4375     -5.4375\n",
       "740            80          76.3750      3.6250\n",
       "660            74          76.8125     -2.8125\n",
       "411            84          87.6250     -3.6250\n",
       "..            ...              ...         ...\n",
       "408            52          43.5625      8.4375\n",
       "332            62          62.6250     -0.6250\n",
       "208            74          67.5625      6.4375\n",
       "613            65          67.6875     -2.6875\n",
       "78             61          62.6875     -1.6875\n",
       "\n",
       "[200 rows x 3 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred_df=pd.DataFrame({'Actual Value':y_test,'Predicted Value':y_pred,'Difference':y_test-y_pred})\n",
    "pred_df"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}