File size: 84,843 Bytes
5879a10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "iwcAqKmfYvK5"
      },
      "outputs": [],
      "source": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Linear Regression"
      ],
      "metadata": {
        "id": "haLsv_ADZHIN"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import time\n",
        "import joblib\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "import seaborn as sns\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "from scipy.sparse import csr_matrix, hstack\n",
        "\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.metrics import (\n",
        "    f1_score,\n",
        "    recall_score,\n",
        "    roc_auc_score,\n",
        "    accuracy_score,\n",
        "    precision_score,\n",
        "    confusion_matrix,\n",
        "    classification_report\n",
        ")\n",
        "from sklearn.metrics import ConfusionMatrixDisplay\n",
        "from sklearn.model_selection import train_test_split"
      ],
      "metadata": {
        "id": "_XR00CurZG-S"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "data = pd.read_csv(\"/content/cleaned_sentiment140.csv\")\n",
        "features = pd.read_csv(\"/content/handcrafted_features.csv\")\n",
        "\n",
        "tfidf = joblib.load(\"/content/tfidf_vectorizer.pkl\")\n",
        "scaler = joblib.load(\"/content/feature_scaler.pkl\")\n",
        "\n",
        "train_idx = joblib.load(\"/content/train_indices.pkl\")\n",
        "test_idx = joblib.load(\"/content/test_indices.pkl\")"
      ],
      "metadata": {
        "id": "C5pRUp7nZG7Q"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(data.shape)\n",
        "print(features.shape)\n",
        "\n",
        "print(len(train_idx))\n",
        "print(len(test_idx))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "sWgHdyZRZG2X",
        "outputId": "faab6135-d6ad-4689-bda5-f11a5e2d1231"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(1592688, 7)\n",
            "(1592688, 19)\n",
            "1274150\n",
            "318538\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "x = data[\"clean_text\"]\n",
        "y = data[\"target\"]\n",
        "\n",
        "x_train, x_test, y_train, y_test = train_test_split(\n",
        "    x,\n",
        "    y,\n",
        "    test_size=0.20,\n",
        "    random_state=42,\n",
        "    stratify=y\n",
        ")"
      ],
      "metadata": {
        "id": "nmQ7uFCyZG0T"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "joblib.dump(x_train.index, \"train_indices.pkl\")\n",
        "joblib.dump(x_test.index, \"test_indices.pkl\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "UseniUxLZGvs",
        "outputId": "906a30d6-2fdc-4a48-94fa-79d500875513"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['test_indices.pkl']"
            ]
          },
          "metadata": {},
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "joblib.dump(x_train, \"x_train.pkl\")\n",
        "joblib.dump(x_test, \"x_test.pkl\")\n",
        "joblib.dump(y_train, \"y_train.pkl\")\n",
        "joblib.dump(y_test, \"y_test.pkl\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "abQukeOlfLmK",
        "outputId": "36879b8b-baf0-4637-90b8-7fbb90a480a4"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['y_test.pkl']"
            ]
          },
          "metadata": {},
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "x_train_tf = tfidf.transform(x_train)\n",
        "x_test_tf  = tfidf.transform(x_test)"
      ],
      "metadata": {
        "id": "xlnjMMPJZGtl"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(x_train_tf.shape)\n",
        "print(x_test_tf.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "klpMRrZCZGrR",
        "outputId": "f3fcf149-4769-4fc4-8554-d824aa98c73d"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(1274150, 50000)\n",
            "(318538, 50000)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "features_train = features.loc[x_train.index]\n",
        "features_test  = features.loc[x_test.index]"
      ],
      "metadata": {
        "id": "Y5OEzz2OZGpJ"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(features_train.shape)\n",
        "print(features_test.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "HXbVt8ASZGm9",
        "outputId": "c9c8736e-8071-44c2-d4fd-09e835664997"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(1274150, 19)\n",
            "(318538, 19)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "fea_tr_scaled = scaler.transform(features_train)\n",
        "fea_te_scaled = scaler.transform(features_test)"
      ],
      "metadata": {
        "id": "pohlY6tdZGkh"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "fea_tr_sparse = csr_matrix(fea_tr_scaled)\n",
        "fea_te_sparse = csr_matrix(fea_te_scaled)"
      ],
      "metadata": {
        "id": "jml4IF2SZGiN"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "x_train_final = hstack([\n",
        "    x_train_tf, fea_tr_sparse\n",
        "])\n",
        "x_test_final = hstack([\n",
        "    x_test_tf, fea_te_sparse\n",
        "])"
      ],
      "metadata": {
        "id": "YmoFVur4ZGgA"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(x_train_final.shape)\n",
        "print(x_test_final.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mK4tTax_ZGdh",
        "outputId": "6adc898b-7045-4818-f736-64fab9641fdd"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(1274150, 50019)\n",
            "(318538, 50019)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "us-LmQhnZGbR"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "Gf9ua_SKZGYj"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## BaseLine Model"
      ],
      "metadata": {
        "id": "NDoYdqXfio-B"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "base_model = LogisticRegression(\n",
        "    C=0.1,\n",
        "    solver='liblinear',\n",
        "    max_iter=1000,\n",
        "    random_state=42\n",
        ")"
      ],
      "metadata": {
        "id": "TzrL_5pJio44"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "start = time.time()\n",
        "base_model.fit(x_train_tf, y_train)\n",
        "end = time.time()\n",
        "print(f\"Training Time: {end-start:.2f} Seconds\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RZQ4PUfQio2j",
        "outputId": "4bd68694-dac3-47b5-ca65-9bc2eb617320"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Training Time: 15.82 Seconds\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Prediction\n",
        "\n",
        "start = time.time()\n",
        "y_pred = base_model.predict(x_test_tf)\n",
        "end = time.time()\n",
        "print(f\"Testing Time: {end-start:.2f} Seconds\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "us6ZrARuio0D",
        "outputId": "3c814991-ec41-46aa-d48d-7e37ecf06e44"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Testing Time: 0.03 Seconds\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Probabilities\n",
        "y_prob = base_model.predict_proba(x_test_tf)[:,1]\n",
        "print(y_prob)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6hjRS7rDioxy",
        "outputId": "598b0a08-f293-4e99-ea82-eaee7ef47684"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[0.56792607 0.14369741 0.31388449 ... 0.00470963 0.28237186 0.61505434]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(f\"Accuracy : {accuracy_score(y_test, y_pred):.4f}\")\n",
        "print(f\"Precision: {precision_score(y_test, y_pred):.4f}\")\n",
        "print(f\"Recall   : {recall_score(y_test, y_pred):.4f}\")\n",
        "print(f\"F1 Score : {f1_score(y_test, y_pred):.4f}\")\n",
        "print(f\"ROC AUC  : {roc_auc_score(y_test, y_prob):.4f}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aOXPs1gLiovp",
        "outputId": "d2664fd7-75f1-4955-cbbb-16c2c38437ec"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Accuracy : 0.7876\n",
            "Precision: 0.7765\n",
            "Recall   : 0.8076\n",
            "F1 Score : 0.7917\n",
            "ROC AUC  : 0.8682\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Classification Report\n",
        "print(f\"Classification_Report: \\n \\n {classification_report(y_test, y_pred)}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "BNwc0MUgiotg",
        "outputId": "43752314-6416-4dbb-9a44-8c377be2ea07"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Classification_Report: \n",
            " \n",
            "               precision    recall  f1-score   support\n",
            "\n",
            "           0       0.80      0.77      0.78    159267\n",
            "           1       0.78      0.81      0.79    159271\n",
            "\n",
            "    accuracy                           0.79    318538\n",
            "   macro avg       0.79      0.79      0.79    318538\n",
            "weighted avg       0.79      0.79      0.79    318538\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "ConfusionMatrixDisplay.from_predictions(\n",
        "    y_test,\n",
        "    y_pred,\n",
        "    cmap = \"Blues\"\n",
        ")\n",
        "\n",
        "plt.title(\"Logistic Regression (TF-IDF)\")\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 472
        },
        "id": "DN9wwMK2ioro",
        "outputId": "1f0e610b-e39d-4c65-abf6-11fd9da68789"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "joblib.dump(base_model, \"lr_base_model.pkl\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dzmUzpexiopb",
        "outputId": "32c06bbd-a886-4994-8b1b-36b6e2be8aa0"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['lr_base_model.pkl']"
            ]
          },
          "metadata": {},
          "execution_count": 31
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "1dkA5EkVionm"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Advanced Model"
      ],
      "metadata": {
        "id": "J0RRM900mgVY"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(features_train.shape)\n",
        "print(features_test.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dHLJ6TYWiok-",
        "outputId": "89e5a085-1fbf-4f40-802b-6ed5baf029d1"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(1274150, 19)\n",
            "(318538, 19)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(x_train_final.shape)\n",
        "print(x_test_final.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1LzbkjpWioit",
        "outputId": "60976758-3151-4d54-edc4-ab59e47c909b"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(1274150, 50019)\n",
            "(318538, 50019)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# lr_advanced = LogisticRegression(\n",
        "#     penalty=\"l2\",          # Regularization\n",
        "#     C=2.0,                 # Regularization strength\n",
        "#     solver=\"liblinear\",    # Good for binary classification\n",
        "#     max_iter=2000,         # More iterations if needed\n",
        "#     class_weight=\"balanced\", # Useful if classes are imbalanced\n",
        "#     tol=1e-4,              # Convergence tolerance\n",
        "#     random_state=42,\n",
        "#     n_jobs=-1              # Use all CPU cores (ignored by liblinear)\n",
        "# )"
      ],
      "metadata": {
        "id": "s25c_QA5iogi"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# Why saga?\n",
        "# Better suited for very large sparse datasets.\n",
        "\n",
        "adv_lr = LogisticRegression(\n",
        "    penalty=\"l2\",\n",
        "    C=1.0,\n",
        "    solver=\"saga\",\n",
        "    max_iter=1000,\n",
        "    random_state=42,\n",
        "    n_jobs=-1,\n",
        "    verbose=1\n",
        ")"
      ],
      "metadata": {
        "id": "q8_CJLULioeT"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "start = time.time()\n",
        "adv_lr.fit(x_train_tf, y_train)\n",
        "end = time.time()\n",
        "print(f\"Training Time: {end-start:.2f} Seconds\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-EoCyElYiobe",
        "outputId": "2a6cac81-e80e-4773-c644-f833f347d965"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 2 concurrent workers.\n"
          ]
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "convergence after 24 epochs took 45 seconds\n",
            "Training Time: 44.38 Seconds\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Prediction\n",
        "\n",
        "start = time.time()\n",
        "y_pred_adv = adv_lr.predict(x_test_tf)\n",
        "end = time.time()\n",
        "print(f\"Testing Time: {end-start:.2f} Seconds\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5tzKAjIrn5Wj",
        "outputId": "a2738dff-4d57-4597-8f85-b00270f0026a"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Testing Time: 0.02 Seconds\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "y_prob_adv = adv_lr.predict_proba(x_test_tf)[:,1]\n",
        "print(y_prob_adv)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "auO_HjBzojdz",
        "outputId": "136bc809-5997-4944-fb4b-dd87449ca5ed"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[0.67903617 0.05825675 0.43394412 ... 0.00291358 0.12041503 0.65897089]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(f\"Accuracy : {accuracy_score(y_test, y_pred_adv):.4f}\")\n",
        "print(f\"Precision: {precision_score(y_test, y_pred_adv):.4f}\")\n",
        "print(f\"Recall   : {recall_score(y_test, y_pred_adv):.4f}\")\n",
        "print(f\"F1 Score : {f1_score(y_test, y_pred_adv):.4f}\")\n",
        "print(f\"ROC AUC  : {roc_auc_score(y_test, y_prob_adv):.4f}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5EjueWJgn5Rr",
        "outputId": "5b75c5ac-693f-4865-fcbe-15d072f8eabc"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Accuracy : 0.7954\n",
            "Precision: 0.7852\n",
            "Recall   : 0.8133\n",
            "F1 Score : 0.7990\n",
            "ROC AUC  : 0.8767\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Classification Report\n",
        "print(f\"Classification_Report: \\n \\n {classification_report(y_test, y_pred_adv)}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vDjG1BpCn5PM",
        "outputId": "546ea700-c536-422f-9b4c-b17889d9623e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Classification_Report: \n",
            " \n",
            "               precision    recall  f1-score   support\n",
            "\n",
            "           0       0.81      0.78      0.79    159267\n",
            "           1       0.79      0.81      0.80    159271\n",
            "\n",
            "    accuracy                           0.80    318538\n",
            "   macro avg       0.80      0.80      0.80    318538\n",
            "weighted avg       0.80      0.80      0.80    318538\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Confusion Matric\n",
        "ConfusionMatrixDisplay.from_predictions(\n",
        "    y_test,\n",
        "    y_pred_adv,\n",
        "    cmap='Blues'\n",
        ")\n",
        "plt.title(\"Advanced Confusion Matrix\")\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 472
        },
        "id": "BSjFzTKln5Mj",
        "outputId": "f7bb7a22-89fa-4370-eb82-f24abd14d5ca"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "joblib.dump(adv_lr, \"lr_adv_model\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "kLbgGj3zn5Km",
        "outputId": "047f09f0-419c-4362-fc41-661dddba6b3d"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['lr_adv_model']"
            ]
          },
          "metadata": {},
          "execution_count": 49
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "hfR5BdTin5Id"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "SO_8ovDwn5GD"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "yZFQzdj1n5Dz"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "NQs0autXn5BZ"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "Zk_1YLRun4-6"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "0cHHRO7un48K"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "6j_nGicwn45_"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "A_VkwUp4n43v"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "ZwLE_FvUn41b"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "eskYfWisn4yl"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "e_64_eaEioZy"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}