File size: 166,639 Bytes
2f71709
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
{
 "nbformat": 4,
 "nbformat_minor": 0,
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3"
  },
  "language_info": {
   "name": "python"
  },
  "converted_at": "2025-09-12T01:17:03.225030Z"
 },
 "cells": [
  {
   "cell_type": "code",
   "source": [
    "!pip install keras-tcn"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "vCZkZZaCoL9h",
    "outputId": "6eeaa47d-eaa7-4257-c9bb-6a0c2332cecb"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Collecting keras-tcn\n",
      "  Downloading keras_tcn-3.5.0-py3-none-any.whl (13 kB)\n",
      "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from keras-tcn) (1.25.2)\n",
      "Requirement already satisfied: tensorflow in /usr/local/lib/python3.10/dist-packages (from keras-tcn) (2.15.0)\n",
      "Collecting tensorflow-addons (from keras-tcn)\n",
      "  Downloading tensorflow_addons-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (611 kB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m611.8/611.8 kB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (1.4.0)\n",
      "Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (1.6.3)\n",
      "Requirement already satisfied: flatbuffers>=23.5.26 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (24.3.25)\n",
      "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (0.5.4)\n",
      "Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (0.2.0)\n",
      "Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (3.9.0)\n",
      "Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (18.1.1)\n",
      "Requirement already satisfied: ml-dtypes~=0.2.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (0.2.0)\n",
      "Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (3.3.0)\n",
      "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (24.1)\n",
      "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (3.20.3)\n",
      "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (67.7.2)\n",
      "Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (1.16.0)\n",
      "Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (2.4.0)\n",
      "Requirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (4.12.2)\n",
      "Requirement already satisfied: wrapt<1.15,>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (1.14.1)\n",
      "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (0.37.0)\n",
      "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (1.64.1)\n",
      "Requirement already satisfied: tensorboard<2.16,>=2.15 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (2.15.2)\n",
      "Requirement already satisfied: tensorflow-estimator<2.16,>=2.15.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (2.15.0)\n",
      "Requirement already satisfied: keras<2.16,>=2.15.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow->keras-tcn) (2.15.0)\n",
      "Collecting typeguard<3.0.0,>=2.7 (from tensorflow-addons->keras-tcn)\n",
      "  Downloading typeguard-2.13.3-py3-none-any.whl (17 kB)\n",
      "Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse>=1.6.0->tensorflow->keras-tcn) (0.43.0)\n",
      "Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (2.27.0)\n",
      "Requirement already satisfied: google-auth-oauthlib<2,>=0.5 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (1.2.0)\n",
      "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (3.6)\n",
      "Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (2.31.0)\n",
      "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (0.7.2)\n",
      "Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (3.0.3)\n",
      "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (5.3.3)\n",
      "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (0.4.0)\n",
      "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (4.9)\n",
      "Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (1.3.1)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (3.3.2)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (3.7)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (2.0.7)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (2024.6.2)\n",
      "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.10/dist-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (2.1.5)\n",
      "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (0.6.0)\n",
      "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow->keras-tcn) (3.2.2)\n",
      "Installing collected packages: typeguard, tensorflow-addons, keras-tcn\n",
      "Successfully installed keras-tcn-3.5.0 tensorflow-addons-0.23.0 typeguard-2.13.3\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "TEhT31rlkMFh"
   },
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
    "from tensorflow.keras.utils import to_categorical\n",
    "from tcn import TCN, tcn_full_summary\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "from sklearn.model_selection import train_test_split\n",
    "from scipy.stats import mode"
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout\n",
    "from tensorflow.keras.utils import to_categorical, plot_model\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.metrics import classification_report, confusion_matrix, ConfusionMatrixDisplay\n",
    "from scipy.stats import mode"
   ],
   "metadata": {
    "id": "H3tZYuwhB1Ko"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "from google.colab import drive\n",
    "drive.mount('/content/drive')"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "tTYU8nTAkcoa",
    "outputId": "1d06b292-9cb2-4f0d-bc3f-f9d0b436ee24"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Mounted at /content/drive\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "data=pd.read_csv('/content/drive/MyDrive/combined_output.csv')"
   ],
   "metadata": {
    "id": "8g2iHNKUlXwY"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "\n",
    "\n",
    "# Assuming the features are in columns except the last one which is the target\n",
    "X = data.iloc[:, :-1].values\n",
    "y = data.iloc[:, -1].values\n",
    "\n",
    "\n",
    "# Encode the string labels as integers\n",
    "label_encoder = LabelEncoder()\n",
    "y = label_encoder.fit_transform(y)\n",
    "\n"
   ],
   "metadata": {
    "id": "NpoDfVbdlj0_"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "# Normalize the data\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X = scaler.fit_transform(X)\n",
    "\n",
    "# Define the number of cases per sample (as per your previous setup)\n",
    "num_cases_per_sample = 10\n",
    "num_samples = X.shape[0] // num_cases_per_sample\n",
    "\n",
    "# Reshape X to have samples of 100 cases each\n",
    "X_samples = X[:num_samples * num_cases_per_sample].reshape(num_samples, num_cases_per_sample, -1)\n",
    "y_samples = y[:num_samples * num_cases_per_sample].reshape(num_samples, num_cases_per_sample)\n",
    "\n"
   ],
   "metadata": {
    "id": "9nxh_L_Koe8P"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "# Majority voting for labels\n",
    "from scipy.stats import mode\n",
    "y_samples = mode(y_samples, axis=1)[0].flatten()\n",
    "\n",
    "# One-hot encode the labels\n",
    "num_classes = len(np.unique(y_samples))\n",
    "y_samples_one_hot = to_categorical(y_samples, num_classes=num_classes)\n",
    "\n"
   ],
   "metadata": {
    "id": "7-BbQB0KpkpX"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "# Split into train and test sets\n",
    "X_train, X_test, y_train, y_test = train_test_split(X_samples, y_samples_one_hot, test_size=0.2, random_state=42)"
   ],
   "metadata": {
    "id": "MkOvjEQrwYAU"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "# Build the TCN model\n",
    "model = Sequential([\n",
    "    TCN(nb_filters=64, kernel_size=3, dilations=[1, 2, 4, 8], padding='causal', input_shape=(num_cases_per_sample, X.shape[1])),\n",
    "    Flatten(),\n",
    "    Dense(128, activation='relu'),\n",
    "    Dropout(0.5),\n",
    "    Dense(num_classes, activation='softmax')\n",
    "])\n",
    "\n",
    "# Compile the model\n",
    "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n",
    "\n",
    "# Summary of the model\n",
    "tcn_full_summary(model, expand_residual_blocks=False)\n",
    "\n"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "hBg8ymfhwePA",
    "outputId": "a892a7b2-30a3-424d-f8c8-98c7fd5ba296"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "WARNING: tcn_full_summary: Compatible with tensorflow 2.5.0 or below.\n",
      "Use tensorboard instead. Example in keras-tcn/tasks/tcn_tensorboard.py.\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "model.summary()"
   ],
   "metadata": {
    "id": "13Cwh3sB-pQ9",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "eb8b6ccd-75ca-4321-b237-e2ae8cad445f"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " tcn (TCN)                   (None, 64)                90176     \n",
      "                                                                 \n",
      " flatten (Flatten)           (None, 64)                0         \n",
      "                                                                 \n",
      " dense (Dense)               (None, 128)               8320      \n",
      "                                                                 \n",
      " dropout (Dropout)           (None, 128)               0         \n",
      "                                                                 \n",
      " dense_1 (Dense)             (None, 16)                2064      \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 100560 (392.81 KB)\n",
      "Trainable params: 100560 (392.81 KB)\n",
      "Non-trainable params: 0 (0.00 Byte)\n",
      "_________________________________________________________________\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "# Train the model\n",
    "history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))\n"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "9czorN99wveX",
    "outputId": "849930b6-b5c6-45d6-8de6-76c9db32617d"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Epoch 1/50\n",
      "5409/5409 [==============================] - 136s 24ms/step - loss: 0.7433 - accuracy: 0.7081 - val_loss: 0.4316 - val_accuracy: 0.8288\n",
      "Epoch 2/50\n",
      "5409/5409 [==============================] - 115s 21ms/step - loss: 0.3463 - accuracy: 0.8676 - val_loss: 0.2364 - val_accuracy: 0.9052\n",
      "Epoch 3/50\n",
      "5409/5409 [==============================] - 123s 23ms/step - loss: 0.2477 - accuracy: 0.9078 - val_loss: 0.1782 - val_accuracy: 0.9286\n",
      "Epoch 4/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.1875 - accuracy: 0.9348 - val_loss: 0.1494 - val_accuracy: 0.9428\n",
      "Epoch 5/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.1512 - accuracy: 0.9494 - val_loss: 0.0912 - val_accuracy: 0.9688\n",
      "Epoch 6/50\n",
      "5409/5409 [==============================] - 121s 22ms/step - loss: 0.1346 - accuracy: 0.9572 - val_loss: 0.1194 - val_accuracy: 0.9603\n",
      "Epoch 7/50\n",
      "5409/5409 [==============================] - 116s 22ms/step - loss: 0.1157 - accuracy: 0.9634 - val_loss: 0.0769 - val_accuracy: 0.9742\n",
      "Epoch 8/50\n",
      "5409/5409 [==============================] - 117s 22ms/step - loss: 0.1030 - accuracy: 0.9676 - val_loss: 0.0654 - val_accuracy: 0.9770\n",
      "Epoch 9/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.0981 - accuracy: 0.9697 - val_loss: 0.0926 - val_accuracy: 0.9692\n",
      "Epoch 10/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.0902 - accuracy: 0.9719 - val_loss: 0.0812 - val_accuracy: 0.9737\n",
      "Epoch 11/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.0977 - accuracy: 0.9730 - val_loss: 0.0597 - val_accuracy: 0.9805\n",
      "Epoch 12/50\n",
      "5409/5409 [==============================] - 122s 23ms/step - loss: 0.0873 - accuracy: 0.9735 - val_loss: 0.0557 - val_accuracy: 0.9814\n",
      "Epoch 13/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.0876 - accuracy: 0.9758 - val_loss: 0.0595 - val_accuracy: 0.9824\n",
      "Epoch 14/50\n",
      "5409/5409 [==============================] - 117s 22ms/step - loss: 0.0814 - accuracy: 0.9759 - val_loss: 0.0646 - val_accuracy: 0.9797\n",
      "Epoch 15/50\n",
      "5409/5409 [==============================] - 128s 24ms/step - loss: 0.0792 - accuracy: 0.9765 - val_loss: 0.0578 - val_accuracy: 0.9820\n",
      "Epoch 16/50\n",
      "5409/5409 [==============================] - 116s 21ms/step - loss: 0.0809 - accuracy: 0.9768 - val_loss: 0.0832 - val_accuracy: 0.9740\n",
      "Epoch 17/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.0773 - accuracy: 0.9773 - val_loss: 0.0437 - val_accuracy: 0.9852\n",
      "Epoch 18/50\n",
      "5409/5409 [==============================] - 120s 22ms/step - loss: 0.0841 - accuracy: 0.9787 - val_loss: 0.0553 - val_accuracy: 0.9813\n",
      "Epoch 19/50\n",
      "5409/5409 [==============================] - 122s 23ms/step - loss: 0.0758 - accuracy: 0.9783 - val_loss: 0.0642 - val_accuracy: 0.9810\n",
      "Epoch 20/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.0749 - accuracy: 0.9791 - val_loss: 0.0701 - val_accuracy: 0.9763\n",
      "Epoch 21/50\n",
      "5409/5409 [==============================] - 120s 22ms/step - loss: 0.0795 - accuracy: 0.9775 - val_loss: 0.0591 - val_accuracy: 0.9810\n",
      "Epoch 22/50\n",
      "5409/5409 [==============================] - 121s 22ms/step - loss: 0.0834 - accuracy: 0.9792 - val_loss: 0.0547 - val_accuracy: 0.9822\n",
      "Epoch 23/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.0762 - accuracy: 0.9789 - val_loss: 0.0367 - val_accuracy: 0.9889\n",
      "Epoch 24/50\n",
      "5409/5409 [==============================] - 121s 22ms/step - loss: 0.0929 - accuracy: 0.9792 - val_loss: 0.0463 - val_accuracy: 0.9850\n",
      "Epoch 25/50\n",
      "5409/5409 [==============================] - 121s 22ms/step - loss: 0.0765 - accuracy: 0.9795 - val_loss: 0.1290 - val_accuracy: 0.9733\n",
      "Epoch 26/50\n",
      "5409/5409 [==============================] - 121s 22ms/step - loss: 0.0815 - accuracy: 0.9799 - val_loss: 0.0463 - val_accuracy: 0.9858\n",
      "Epoch 27/50\n",
      "5409/5409 [==============================] - 123s 23ms/step - loss: 0.0878 - accuracy: 0.9783 - val_loss: 0.0491 - val_accuracy: 0.9855\n",
      "Epoch 28/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.1122 - accuracy: 0.9785 - val_loss: 0.0534 - val_accuracy: 0.9832\n",
      "Epoch 29/50\n",
      "5409/5409 [==============================] - 121s 22ms/step - loss: 0.0708 - accuracy: 0.9799 - val_loss: 0.0613 - val_accuracy: 0.9831\n",
      "Epoch 30/50\n",
      "5409/5409 [==============================] - 117s 22ms/step - loss: 0.0867 - accuracy: 0.9798 - val_loss: 0.0817 - val_accuracy: 0.9784\n",
      "Epoch 31/50\n",
      "5409/5409 [==============================] - 120s 22ms/step - loss: 0.0849 - accuracy: 0.9795 - val_loss: 0.0531 - val_accuracy: 0.9836\n",
      "Epoch 32/50\n",
      "5409/5409 [==============================] - 120s 22ms/step - loss: 0.0871 - accuracy: 0.9799 - val_loss: 0.0378 - val_accuracy: 0.9881\n",
      "Epoch 33/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.1126 - accuracy: 0.9780 - val_loss: 0.0799 - val_accuracy: 0.9765\n",
      "Epoch 34/50\n",
      "5409/5409 [==============================] - 116s 21ms/step - loss: 0.0791 - accuracy: 0.9797 - val_loss: 0.0559 - val_accuracy: 0.9856\n",
      "Epoch 35/50\n",
      "5409/5409 [==============================] - 120s 22ms/step - loss: 0.0830 - accuracy: 0.9790 - val_loss: 0.0498 - val_accuracy: 0.9847\n",
      "Epoch 36/50\n",
      "5409/5409 [==============================] - 122s 23ms/step - loss: 0.0829 - accuracy: 0.9801 - val_loss: 0.0546 - val_accuracy: 0.9853\n",
      "Epoch 37/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.0765 - accuracy: 0.9805 - val_loss: 0.2157 - val_accuracy: 0.9588\n",
      "Epoch 38/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.0818 - accuracy: 0.9782 - val_loss: 0.0505 - val_accuracy: 0.9848\n",
      "Epoch 39/50\n",
      "5409/5409 [==============================] - 117s 22ms/step - loss: 0.0906 - accuracy: 0.9760 - val_loss: 0.0779 - val_accuracy: 0.9844\n",
      "Epoch 40/50\n",
      "5409/5409 [==============================] - 122s 23ms/step - loss: 0.1338 - accuracy: 0.9670 - val_loss: 0.0619 - val_accuracy: 0.9869\n",
      "Epoch 41/50\n",
      "5409/5409 [==============================] - 122s 23ms/step - loss: 0.0985 - accuracy: 0.9751 - val_loss: 0.0659 - val_accuracy: 0.9816\n",
      "Epoch 42/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.1022 - accuracy: 0.9763 - val_loss: 0.0562 - val_accuracy: 0.9845\n",
      "Epoch 43/50\n",
      "5409/5409 [==============================] - 123s 23ms/step - loss: 0.1168 - accuracy: 0.9682 - val_loss: 0.1693 - val_accuracy: 0.9588\n",
      "Epoch 44/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.1079 - accuracy: 0.9750 - val_loss: 0.0595 - val_accuracy: 0.9865\n",
      "Epoch 45/50\n",
      "5409/5409 [==============================] - 121s 22ms/step - loss: 0.0990 - accuracy: 0.9756 - val_loss: 0.0684 - val_accuracy: 0.9812\n",
      "Epoch 46/50\n",
      "5409/5409 [==============================] - 119s 22ms/step - loss: 0.1060 - accuracy: 0.9766 - val_loss: 0.0556 - val_accuracy: 0.9857\n",
      "Epoch 47/50\n",
      "5409/5409 [==============================] - 120s 22ms/step - loss: 0.1054 - accuracy: 0.9778 - val_loss: 0.0600 - val_accuracy: 0.9860\n",
      "Epoch 48/50\n",
      "5409/5409 [==============================] - 118s 22ms/step - loss: 0.1056 - accuracy: 0.9767 - val_loss: 0.0602 - val_accuracy: 0.9838\n",
      "Epoch 49/50\n",
      "5409/5409 [==============================] - 120s 22ms/step - loss: 0.0995 - accuracy: 0.9750 - val_loss: 0.0605 - val_accuracy: 0.9802\n",
      "Epoch 50/50\n",
      "5409/5409 [==============================] - 115s 21ms/step - loss: 0.1132 - accuracy: 0.9726 - val_loss: 0.0953 - val_accuracy: 0.9732\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "\n",
    "# Evaluate the model\n",
    "loss, accuracy = model.evaluate(X_test, y_test)\n",
    "print(f\"Test Accuracy: {accuracy:.4f}\")\n"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "cA-nyMPA5zSE",
    "outputId": "35fafd87-eb17-48ec-9380-4e10d8151fcd"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "1353/1353 [==============================] - 12s 9ms/step - loss: 0.0953 - accuracy: 0.9732\n",
      "Test Accuracy: 0.9732\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "model.summary()"
   ],
   "metadata": {
    "id": "nSXpVy1C5uAq",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "03dd6a43-bec3-4ff6-e8ed-340f4b5a8aa5"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " tcn (TCN)                   (None, 64)                90176     \n",
      "                                                                 \n",
      " flatten (Flatten)           (None, 64)                0         \n",
      "                                                                 \n",
      " dense (Dense)               (None, 128)               8320      \n",
      "                                                                 \n",
      " dropout (Dropout)           (None, 128)               0         \n",
      "                                                                 \n",
      " dense_1 (Dense)             (None, 16)                2064      \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 100560 (392.81 KB)\n",
      "Trainable params: 100560 (392.81 KB)\n",
      "Non-trainable params: 0 (0.00 Byte)\n",
      "_________________________________________________________________\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "# Plot model structure\n",
    "plot_model(model, to_file='model_structure.png', show_shapes=True, show_layer_names=True)"
   ],
   "metadata": {
    "id": "FB2SXMfl54iU",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 644
    },
    "outputId": "cf0443d2-3e29-4b4b-af6a-1ef12280c219"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "execution_count": 15
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [
    "label_mapping = {\n",
    "    'F0L': 0, 'F0M': 1, 'F1L': 2, 'F1M': 3, 'F2L': 4, 'F2M': 5, 'F3L': 6, 'F3M': 7,\n",
    "    'F4L': 8, 'F4M': 9, 'F5L': 10, 'F5M': 11, 'F6L': 12, 'F6M': 13, 'F7L': 14, 'F7M': 15\n",
    "}"
   ],
   "metadata": {
    "id": "Qj_PS3eQ-ICm"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "# label_mapping = {'NF':0, 'LG':1, 'LL':2, 'LLG':3, 'LLL':4, 'LLLG':5}"
   ],
   "metadata": {
    "id": "J2lK8PHiJ3eC"
   },
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "source": [
    "# Evaluate the model\n",
    "y_pred_one_hot = model.predict(X_test)\n",
    "y_pred = np.argmax(y_pred_one_hot, axis=1)\n",
    "y_test_labels = np.argmax(y_test, axis=1)\n",
    "\n",
    "# Classification report\n",
    "print(classification_report(y_test_labels, y_pred))\n",
    "\n",
    "# Confusion matrix\n",
    "conf_matrix = confusion_matrix(y_test_labels, y_pred)\n",
    "print(conf_matrix)\n",
    "\n",
    "# Plot confusion matrix\n",
    "disp = ConfusionMatrixDisplay(confusion_matrix=conf_matrix, display_labels=[key for key, val in label_mapping.items()])\n",
    "disp.plot(cmap=plt.cm.Blues)\n",
    "plt.title('Confusion Matrix')\n",
    "plt.show()"
   ],
   "metadata": {
    "id": "fnAxQ7BJBtvx",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "outputId": "e2db5775-708d-436e-8bea-3e195d1ded1b"
   },
   "execution_count": null,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "1353/1353 [==============================] - 8s 6ms/step\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.98      0.97      0.97      2867\n",
      "           1       0.97      0.99      0.98      2762\n",
      "           2       0.96      0.99      0.98      2640\n",
      "           3       1.00      1.00      1.00      2704\n",
      "           4       0.98      0.94      0.96      2769\n",
      "           5       1.00      1.00      1.00      2856\n",
      "           6       0.94      0.88      0.91      2102\n",
      "           7       0.99      0.92      0.95      1394\n",
      "           8       1.00      1.00      1.00      2910\n",
      "           9       1.00      1.00      1.00      2896\n",
      "          10       0.88      0.96      0.91      2848\n",
      "          11       0.98      0.99      0.99      2871\n",
      "          12       0.99      0.96      0.97      2957\n",
      "          13       1.00      0.99      1.00      2950\n",
      "          14       0.91      0.95      0.93      2888\n",
      "          15       1.00      0.99      1.00      2856\n",
      "\n",
      "    accuracy                           0.97     43270\n",
      "   macro avg       0.97      0.97      0.97     43270\n",
      "weighted avg       0.97      0.97      0.97     43270\n",
      "\n",
      "[[2778    0    0    0    2    0    2    0    0    0   45    0    0    0\n",
      "    40    0]\n",
      " [   0 2748    0    0    0    0    0    7    0    0    7    0    0    0\n",
      "     0    0]\n",
      " [   1    0 2608    0    1    0   14    0    0    0   14    0    0    0\n",
      "     2    0]\n",
      " [   0    0    0 2693    0    0    0    2    0    0    8    0    0    0\n",
      "     0    1]\n",
      " [  16    0   34    0 2591    0   21    0    0    0   56    0    2    0\n",
      "    49    0]\n",
      " [   0    0    0    0    0 2852    0    0    0    0    4    0    0    0\n",
      "     0    0]\n",
      " [   4    0   33    0   24    0 1849    0    0    0   97    0    9    0\n",
      "    86    0]\n",
      " [   0   64    0    1    0    0    0 1278    0    0   51    0    0    0\n",
      "     0    0]\n",
      " [   0    0    0    0    0    0    0    0 2907    0    3    0    0    0\n",
      "     0    0]\n",
      " [   0    0    0    0    0    0    0    0    0 2892    4    0    0    0\n",
      "     0    0]\n",
      " [  30    0    0    0   12    0   17    0    0    0 2728   35    3    0\n",
      "    23    0]\n",
      " [   0    0    0    0    0    0    0    0    0    0   13 2854    0    0\n",
      "     0    4]\n",
      " [   4    0    0    0   17    0   11    0    0    0   23    0 2835    0\n",
      "    67    0]\n",
      " [   2    8    0    0    0    0    0    5    0    0   11    0    0 2924\n",
      "     0    0]\n",
      " [   4    0   33    0    5    0   44    0    0    0   46    0   22    0\n",
      "  2734    0]\n",
      " [   0    0    0    0    0    0    0    0    0    0    7    9    0    0\n",
      "     0 2840]]\n"
     ]
    },
    {
     "output_type": "error",
     "ename": "ValueError",
     "evalue": "The number of FixedLocator locations (16), usually from a call to set_ticks, does not match the number of labels (6).",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-19-86e94696cb28>\u001b[0m in \u001b[0;36m<cell line: 15>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     13\u001b[0m \u001b[0;31m# Plot confusion matrix\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     14\u001b[0m \u001b[0mdisp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mConfusionMatrixDisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfusion_matrix\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconf_matrix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplay_labels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlabel_mapping\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[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 15\u001b[0;31m \u001b[0mdisp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mBlues\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     16\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Confusion Matrix'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     17\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\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;32m/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_plot/confusion_matrix.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(self, include_values, cmap, xticks_rotation, values_format, ax, colorbar, im_kw, text_kw)\u001b[0m\n\u001b[1;32m    179\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mcolorbar\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    180\u001b[0m             \u001b[0mfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolorbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mim_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 181\u001b[0;31m         ax.set(\n\u001b[0m\u001b[1;32m    182\u001b[0m             \u001b[0mxticks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_classes\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    183\u001b[0m             \u001b[0myticks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_classes\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;32m/usr/local/lib/python3.10/dist-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m<lambda>\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m    145\u001b[0m             \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    146\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 147\u001b[0;31m         \u001b[0mcls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mArtist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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    148\u001b[0m         \u001b[0mcls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"set\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    149\u001b[0m         \u001b[0mcls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__qualname__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mf\"{cls.__qualname__}.set\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36mset\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m   1229\u001b[0m         \u001b[0;31m# Artist._update_set_signature_and_docstring() at the end of the\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1230\u001b[0m         \u001b[0;31m# module.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1231\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_internal_update\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\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   1232\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1233\u001b[0m     \u001b[0;34m@\u001b[0m\u001b[0mcontextlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontextmanager\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m_internal_update\u001b[0;34m(self, kwargs)\u001b[0m\n\u001b[1;32m   1221\u001b[0m         \u001b[0mThe\u001b[0m \u001b[0mlack\u001b[0m \u001b[0mof\u001b[0m \u001b[0mprenormalization\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mto\u001b[0m \u001b[0mmaintain\u001b[0m \u001b[0mbackcompatibility\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1222\u001b[0m         \"\"\"\n\u001b[0;32m-> 1223\u001b[0;31m         return self._update_props(\n\u001b[0m\u001b[1;32m   1224\u001b[0m             \u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"{cls.__name__}.set() got an unexpected keyword argument \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1225\u001b[0m             \"{prop_name!r}\")\n",
      "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m_update_props\u001b[0;34m(self, props, errfmt)\u001b[0m\n\u001b[1;32m   1197\u001b[0m                         raise AttributeError(\n\u001b[1;32m   1198\u001b[0m                             errfmt.format(cls=type(self), prop_name=k))\n\u001b[0;32m-> 1199\u001b[0;31m                     \u001b[0mret\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\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   1200\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1201\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpchanged\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;32m/usr/local/lib/python3.10/dist-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m     72\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     73\u001b[0m         \u001b[0;32mdef\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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;32m---> 74\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mget_method\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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     75\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     76\u001b[0m         \u001b[0mwrapper\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__module__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mowner\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__module__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/matplotlib/_api/deprecation.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    295\u001b[0m                 f\"for the old name will be dropped %(removal)s.\")\n\u001b[1;32m    296\u001b[0m             \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mold\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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    298\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    299\u001b[0m     \u001b[0;31m# wrapper() must keep the same documented signature as func(): if we\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/matplotlib/axis.py\u001b[0m in \u001b[0;36mset_ticklabels\u001b[0;34m(self, labels, minor, fontdict, **kwargs)\u001b[0m\n\u001b[1;32m   1967\u001b[0m             \u001b[0;31m# remove all tick labels, so only error for > 0 labels\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1968\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlocator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlocs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlabels\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlabels\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1969\u001b[0;31m                 raise ValueError(\n\u001b[0m\u001b[1;32m   1970\u001b[0m                     \u001b[0;34m\"The number of FixedLocator locations\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1971\u001b[0m                     \u001b[0;34mf\" ({len(locator.locs)}), usually from a call to\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mValueError\u001b[0m: The number of FixedLocator locations (16), usually from a call to set_ticks, does not match the number of labels (6)."
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ],
      "image/png": "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\n"
     },
     "metadata": {}
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gradio 接口 — TCN Fault Classification\n",
    "\n",
    "下面的 cell 会构建一个简单的 Gradio UI:\n",
    "- 优先尝试加载当前目录下的 `tcn_model.h5`。\n",
    "- 如果不存在,会提示你先训练并保存模型(原 notebook 中通常含有训练/保存逻辑)。\n",
    "\n",
    "你可以直接在 Colab 中运行这个 notebook 并执行所有单元,最后运行本 cell 来启动 Gradio 服务。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 安装 Gradio(在 Colab 中需要;在 Hugging Face Spaces 可跳过)\n",
    "try:\n",
    "    import gradio as gr\n",
    "except Exception:\n",
    "    !pip install -q gradio\n",
    "    import gradio as gr\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 下面这个 cell 假定 notebook 中已经定义了训练/模型构建逻辑并保存为 'tcn_model.h5'。\n",
    "# 它会尝试加载该模型并提供两个输入方式:上传 CSV(每行是一个样本)或粘贴一行逗号分隔特征。\n",
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from tensorflow.keras.models import load_model\n",
    "\n",
    "MODEL_FILE = \"tcn_model.h5\"\n",
    "model = None\n",
    "if os.path.exists(MODEL_FILE):\n",
    "    try:\n",
    "        model = load_model(MODEL_FILE)\n",
    "        print(\"Loaded model:\", MODEL_FILE)\n",
    "    except Exception as e:\n",
    "        print(\"Found model file but failed to load:\", e)\n",
    "        model = None\n",
    "else:\n",
    "    print(\"Model file not found: {}\".format(MODEL_FILE))\n",
    "\n",
    "def prepare_input_array(arr, n_timesteps=1, n_features=None):\n",
    "    # arr: numpy array shape (features,) or (n_features,) or (timesteps*features,)\n",
    "    if n_features is None:\n",
    "        # if 2D input samples provided, assume already shaped\n",
    "        if arr.ndim == 2:\n",
    "            return arr\n",
    "        # try to infer as (1, timesteps, features)\n",
    "        return arr.reshape(1, n_timesteps, -1)\n",
    "    else:\n",
    "        return arr.reshape(1, n_timesteps, n_features)\n",
    "\n",
    "def predict_text(text, n_timesteps=1, n_features=None):\n",
    "    if model is None:\n",
    "        return \"模型未加载,请先训练并保存 'tcn_model.h5'。\"\n",
    "    arr = np.fromstring(text, sep=',')\n",
    "    x = prepare_input_array(arr, n_timesteps=n_timesteps, n_features=n_features)\n",
    "    probs = model.predict(x)\n",
    "    label = int(np.argmax(probs, axis=1)[0])\n",
    "    return f\"预测类别: {label} (概率: {float(np.max(probs)):.4f})\"\n",
    "\n",
    "def predict_csv(file, n_timesteps=1, n_features=None):\n",
    "    if model is None:\n",
    "        return {\"error\": \"模型未加载,请先训练并保存 'tcn_model.h5'。\"}\n",
    "    df = pd.read_csv(file.name)\n",
    "    X = df.values\n",
    "    # reshape if needed\n",
    "    if n_features is not None:\n",
    "        X = X.reshape(X.shape[0], n_timesteps, n_features)\n",
    "    preds = model.predict(X)\n",
    "    labels = preds.argmax(axis=1).tolist()\n",
    "    return {\"labels\": labels, \"probs\": preds.tolist()}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import gradio as gr\n",
    "with gr.Blocks() as demo:\n",
    "    gr.Markdown(\"# TCN Fault Classification — Gradio Demo\")\n",
    "    gr.Markdown(\"优先尝试加载本地 'tcn_model.h5',如果没有请先训练并保存模型。\\n\\n上传 CSV 文件或粘贴逗号分隔特征进行预测。\")\n",
    "    with gr.Row():\n",
    "        file_in = gr.File(label=\"上传 CSV(每行一个样本)\")\n",
    "        text_in = gr.Textbox(lines=2, placeholder=\"或粘贴逗号分隔的一行特征...\")\n",
    "    n_ts = gr.Number(value=1, label=\"timesteps (整型)\")\n",
    "    n_feat = gr.Number(value=None, label=\"features (可选,留空尝试自动推断)\")\n",
    "    btn = gr.Button(\"预测\")\n",
    "    out_text = gr.Textbox(label=\"单样本预测输出\")\n",
    "    out_json = gr.JSON(label=\"批量预测结果(JSON)\")\n",
    "\n",
    "    def run_predict(file, text, n_timesteps, n_features):\n",
    "        if file is not None:\n",
    "            return \"CSV 预测完成\", predict_csv(file, n_timesteps, int(n_features) if n_features else None)\n",
    "        if text:\n",
    "            return predict_text(text, n_timesteps, int(n_features) if n_features else None), {}\n",
    "        return \"请提供 CSV 或特征文本\", {}\n",
    "\n",
    "    btn.click(run_predict, inputs=[file_in, text_in, n_ts, n_feat], outputs=[out_text, out_json])\n",
    "\n",
    "demo.launch(share=False)\n"
   ]
  }
 ]
}