├── ElectricalFaultDetectionAndClassification.ipynb
├── README.md
├── faultclass.png
├── faultdetect.png
└── faults.zip
/ElectricalFaultDetectionAndClassification.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "ElectricalFaultDetectionAndClassification.ipynb",
7 | "provenance": [],
8 | "toc_visible": true
9 | },
10 | "kernelspec": {
11 | "name": "python3",
12 | "display_name": "Python 3"
13 | },
14 | "language_info": {
15 | "name": "python"
16 | },
17 | "accelerator": "GPU"
18 | },
19 | "cells": [
20 | {
21 | "cell_type": "markdown",
22 | "metadata": {
23 | "id": "22vGnvyZCB0Q"
24 | },
25 | "source": [
26 | "# Electrical Fault Detection and Classification using Line and Phase Currents and Voltages\n",
27 | "\n",
28 | "Electrical power plants require fault detection and operation of protection equipment in minimum possible time to remain stable. The faults on electrical power system transmission lines should be first detected and classified correctly, and repaired in the least possible time. The protection system used for a transmission line can also initiate the other relays to protect the power system from outages. A sound fault detection system provides a fast and secure relaying operation. Once trained on reliable data, an ANN-based fault detection system can help provide fast predictions for the presence of a fault and classify what kind of fault it is.\n"
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "metadata": {
34 | "colab": {
35 | "base_uri": "https://localhost:8080/"
36 | },
37 | "id": "vSeNLEdOq_6Y",
38 | "outputId": "b7d52502-a9e3-4948-8776-a0c70ba1db2f"
39 | },
40 | "source": [
41 | "from google.colab import drive\n",
42 | "drive.mount('/content/drive')"
43 | ],
44 | "execution_count": 1,
45 | "outputs": [
46 | {
47 | "output_type": "stream",
48 | "name": "stdout",
49 | "text": [
50 | "Mounted at /content/drive\n"
51 | ]
52 | }
53 | ]
54 | },
55 | {
56 | "cell_type": "code",
57 | "metadata": {
58 | "id": "Uf66rESprpg_"
59 | },
60 | "source": [
61 | "import pandas as pd\n",
62 | "import numpy as np\n",
63 | "import matplotlib.pyplot as plt\n",
64 | "from sklearn.model_selection import train_test_split\n",
65 | "from sklearn.preprocessing import StandardScaler\n",
66 | "from sklearn.metrics import confusion_matrix, accuracy_score\n",
67 | "from sklearn.preprocessing import LabelEncoder\n",
68 | "from sklearn.compose import ColumnTransformer\n",
69 | "from sklearn.preprocessing import OneHotEncoder\n",
70 | "from keras.utils import np_utils\n",
71 | "from tensorflow.keras.layers import Dense\n",
72 | "from tensorflow.keras.models import Sequential"
73 | ],
74 | "execution_count": 60,
75 | "outputs": []
76 | },
77 | {
78 | "cell_type": "markdown",
79 | "metadata": {
80 | "id": "Vw66GP8It_IK"
81 | },
82 | "source": [
83 | "# Fault Detection"
84 | ]
85 | },
86 | {
87 | "cell_type": "markdown",
88 | "metadata": {
89 | "id": "J2vSpIGmrr9M"
90 | },
91 | "source": [
92 | "## Data Preprocessing"
93 | ]
94 | },
95 | {
96 | "cell_type": "code",
97 | "metadata": {
98 | "colab": {
99 | "base_uri": "https://localhost:8080/"
100 | },
101 | "id": "lAnwsRAdrrvm",
102 | "outputId": "60ad4d1b-96d7-4a25-ec7a-5099c1d6a4f0"
103 | },
104 | "source": [
105 | "!unzip '/content/drive/MyDrive/Datasets/faults.zip' -d '/content'"
106 | ],
107 | "execution_count": 3,
108 | "outputs": [
109 | {
110 | "output_type": "stream",
111 | "name": "stdout",
112 | "text": [
113 | "Archive: /content/drive/MyDrive/Datasets/faults.zip\n",
114 | " inflating: /content/classData.csv \n",
115 | " inflating: /content/detect_dataset.csv \n"
116 | ]
117 | }
118 | ]
119 | },
120 | {
121 | "cell_type": "code",
122 | "metadata": {
123 | "id": "jtxz8WJxr69Y"
124 | },
125 | "source": [
126 | "detectionData = pd.read_csv('detect_dataset.csv')"
127 | ],
128 | "execution_count": 4,
129 | "outputs": []
130 | },
131 | {
132 | "cell_type": "code",
133 | "metadata": {
134 | "colab": {
135 | "base_uri": "https://localhost:8080/",
136 | "height": 203
137 | },
138 | "id": "8oxpCnfhsBzo",
139 | "outputId": "05eac268-8f84-42ad-fb4f-151c548b7f42"
140 | },
141 | "source": [
142 | "detectionData.head()"
143 | ],
144 | "execution_count": 5,
145 | "outputs": [
146 | {
147 | "output_type": "execute_result",
148 | "data": {
149 | "text/html": [
150 | "
\n",
151 | "\n",
164 | "
\n",
165 | " \n",
166 | " \n",
167 | " | \n",
168 | " Output (S) | \n",
169 | " Ia | \n",
170 | " Ib | \n",
171 | " Ic | \n",
172 | " Va | \n",
173 | " Vb | \n",
174 | " Vc | \n",
175 | " Unnamed: 7 | \n",
176 | " Unnamed: 8 | \n",
177 | "
\n",
178 | " \n",
179 | " \n",
180 | " \n",
181 | " 0 | \n",
182 | " 0 | \n",
183 | " -170.472196 | \n",
184 | " 9.219613 | \n",
185 | " 161.252583 | \n",
186 | " 0.054490 | \n",
187 | " -0.659921 | \n",
188 | " 0.605431 | \n",
189 | " NaN | \n",
190 | " NaN | \n",
191 | "
\n",
192 | " \n",
193 | " 1 | \n",
194 | " 0 | \n",
195 | " -122.235754 | \n",
196 | " 6.168667 | \n",
197 | " 116.067087 | \n",
198 | " 0.102000 | \n",
199 | " -0.628612 | \n",
200 | " 0.526202 | \n",
201 | " NaN | \n",
202 | " NaN | \n",
203 | "
\n",
204 | " \n",
205 | " 2 | \n",
206 | " 0 | \n",
207 | " -90.161474 | \n",
208 | " 3.813632 | \n",
209 | " 86.347841 | \n",
210 | " 0.141026 | \n",
211 | " -0.605277 | \n",
212 | " 0.464251 | \n",
213 | " NaN | \n",
214 | " NaN | \n",
215 | "
\n",
216 | " \n",
217 | " 3 | \n",
218 | " 0 | \n",
219 | " -79.904916 | \n",
220 | " 2.398803 | \n",
221 | " 77.506112 | \n",
222 | " 0.156272 | \n",
223 | " -0.602235 | \n",
224 | " 0.445963 | \n",
225 | " NaN | \n",
226 | " NaN | \n",
227 | "
\n",
228 | " \n",
229 | " 4 | \n",
230 | " 0 | \n",
231 | " -63.885255 | \n",
232 | " 0.590667 | \n",
233 | " 63.294587 | \n",
234 | " 0.180451 | \n",
235 | " -0.591501 | \n",
236 | " 0.411050 | \n",
237 | " NaN | \n",
238 | " NaN | \n",
239 | "
\n",
240 | " \n",
241 | "
\n",
242 | "
"
243 | ],
244 | "text/plain": [
245 | " Output (S) Ia Ib ... Vc Unnamed: 7 Unnamed: 8\n",
246 | "0 0 -170.472196 9.219613 ... 0.605431 NaN NaN\n",
247 | "1 0 -122.235754 6.168667 ... 0.526202 NaN NaN\n",
248 | "2 0 -90.161474 3.813632 ... 0.464251 NaN NaN\n",
249 | "3 0 -79.904916 2.398803 ... 0.445963 NaN NaN\n",
250 | "4 0 -63.885255 0.590667 ... 0.411050 NaN NaN\n",
251 | "\n",
252 | "[5 rows x 9 columns]"
253 | ]
254 | },
255 | "metadata": {},
256 | "execution_count": 5
257 | }
258 | ]
259 | },
260 | {
261 | "cell_type": "code",
262 | "metadata": {
263 | "id": "P86wbmAmsEM-"
264 | },
265 | "source": [
266 | "detectionData.drop(['Unnamed: 7', 'Unnamed: 8'], axis='columns' ,inplace=True)"
267 | ],
268 | "execution_count": 6,
269 | "outputs": []
270 | },
271 | {
272 | "cell_type": "code",
273 | "metadata": {
274 | "colab": {
275 | "base_uri": "https://localhost:8080/"
276 | },
277 | "id": "7rDeOhAYyQnP",
278 | "outputId": "331c7708-7b48-4ab1-906c-295cc0da778d"
279 | },
280 | "source": [
281 | "detectionData.shape"
282 | ],
283 | "execution_count": 7,
284 | "outputs": [
285 | {
286 | "output_type": "execute_result",
287 | "data": {
288 | "text/plain": [
289 | "(12001, 7)"
290 | ]
291 | },
292 | "metadata": {},
293 | "execution_count": 7
294 | }
295 | ]
296 | },
297 | {
298 | "cell_type": "code",
299 | "metadata": {
300 | "colab": {
301 | "base_uri": "https://localhost:8080/",
302 | "height": 203
303 | },
304 | "id": "Tm77TZMxsle8",
305 | "outputId": "ff20ccb5-53fe-4bcd-a6f2-02a635b73ab5"
306 | },
307 | "source": [
308 | "detectionData.head()"
309 | ],
310 | "execution_count": 8,
311 | "outputs": [
312 | {
313 | "output_type": "execute_result",
314 | "data": {
315 | "text/html": [
316 | "\n",
317 | "\n",
330 | "
\n",
331 | " \n",
332 | " \n",
333 | " | \n",
334 | " Output (S) | \n",
335 | " Ia | \n",
336 | " Ib | \n",
337 | " Ic | \n",
338 | " Va | \n",
339 | " Vb | \n",
340 | " Vc | \n",
341 | "
\n",
342 | " \n",
343 | " \n",
344 | " \n",
345 | " 0 | \n",
346 | " 0 | \n",
347 | " -170.472196 | \n",
348 | " 9.219613 | \n",
349 | " 161.252583 | \n",
350 | " 0.054490 | \n",
351 | " -0.659921 | \n",
352 | " 0.605431 | \n",
353 | "
\n",
354 | " \n",
355 | " 1 | \n",
356 | " 0 | \n",
357 | " -122.235754 | \n",
358 | " 6.168667 | \n",
359 | " 116.067087 | \n",
360 | " 0.102000 | \n",
361 | " -0.628612 | \n",
362 | " 0.526202 | \n",
363 | "
\n",
364 | " \n",
365 | " 2 | \n",
366 | " 0 | \n",
367 | " -90.161474 | \n",
368 | " 3.813632 | \n",
369 | " 86.347841 | \n",
370 | " 0.141026 | \n",
371 | " -0.605277 | \n",
372 | " 0.464251 | \n",
373 | "
\n",
374 | " \n",
375 | " 3 | \n",
376 | " 0 | \n",
377 | " -79.904916 | \n",
378 | " 2.398803 | \n",
379 | " 77.506112 | \n",
380 | " 0.156272 | \n",
381 | " -0.602235 | \n",
382 | " 0.445963 | \n",
383 | "
\n",
384 | " \n",
385 | " 4 | \n",
386 | " 0 | \n",
387 | " -63.885255 | \n",
388 | " 0.590667 | \n",
389 | " 63.294587 | \n",
390 | " 0.180451 | \n",
391 | " -0.591501 | \n",
392 | " 0.411050 | \n",
393 | "
\n",
394 | " \n",
395 | "
\n",
396 | "
"
397 | ],
398 | "text/plain": [
399 | " Output (S) Ia Ib Ic Va Vb Vc\n",
400 | "0 0 -170.472196 9.219613 161.252583 0.054490 -0.659921 0.605431\n",
401 | "1 0 -122.235754 6.168667 116.067087 0.102000 -0.628612 0.526202\n",
402 | "2 0 -90.161474 3.813632 86.347841 0.141026 -0.605277 0.464251\n",
403 | "3 0 -79.904916 2.398803 77.506112 0.156272 -0.602235 0.445963\n",
404 | "4 0 -63.885255 0.590667 63.294587 0.180451 -0.591501 0.411050"
405 | ]
406 | },
407 | "metadata": {},
408 | "execution_count": 8
409 | }
410 | ]
411 | },
412 | {
413 | "cell_type": "code",
414 | "metadata": {
415 | "colab": {
416 | "base_uri": "https://localhost:8080/"
417 | },
418 | "id": "WQQ30YQQu8g_",
419 | "outputId": "a1bcb84a-52c1-47d3-ee20-2a81d0dd56e1"
420 | },
421 | "source": [
422 | "detectionData['Output (S)'].value_counts()"
423 | ],
424 | "execution_count": 9,
425 | "outputs": [
426 | {
427 | "output_type": "execute_result",
428 | "data": {
429 | "text/plain": [
430 | "0 6505\n",
431 | "1 5496\n",
432 | "Name: Output (S), dtype: int64"
433 | ]
434 | },
435 | "metadata": {},
436 | "execution_count": 9
437 | }
438 | ]
439 | },
440 | {
441 | "cell_type": "code",
442 | "metadata": {
443 | "id": "AwC5WTuzuTui"
444 | },
445 | "source": [
446 | "Xdetection = detectionData.iloc[:, 1:].values\n",
447 | "ydetection = detectionData.iloc[:, 0].values"
448 | ],
449 | "execution_count": 10,
450 | "outputs": []
451 | },
452 | {
453 | "cell_type": "code",
454 | "metadata": {
455 | "id": "ivPH1a7Xukef"
456 | },
457 | "source": [
458 | "Xd_train, Xd_test, yd_train, yd_test = train_test_split(Xdetection, ydetection, test_size = 0.2, random_state = 0)"
459 | ],
460 | "execution_count": 11,
461 | "outputs": []
462 | },
463 | {
464 | "cell_type": "code",
465 | "metadata": {
466 | "id": "KY6pZMEevVEz"
467 | },
468 | "source": [
469 | "sc = StandardScaler()\n",
470 | "Xd_train = sc.fit_transform(Xd_train)\n",
471 | "Xd_test = sc.transform(Xd_test)"
472 | ],
473 | "execution_count": 12,
474 | "outputs": []
475 | },
476 | {
477 | "cell_type": "markdown",
478 | "metadata": {
479 | "id": "tlGsXXi7vZM4"
480 | },
481 | "source": [
482 | "## ANN Model"
483 | ]
484 | },
485 | {
486 | "cell_type": "code",
487 | "metadata": {
488 | "id": "eIgdcWpQvY_Z"
489 | },
490 | "source": [
491 | "detectionANN = Sequential()\n",
492 | "detectionANN.add(Dense(units=6, activation='relu'))\n",
493 | "detectionANN.add(Dense(units=6, activation='relu'))\n",
494 | "detectionANN.add(Dense(units=1, activation='sigmoid'))\n",
495 | "detectionANN.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])"
496 | ],
497 | "execution_count": 13,
498 | "outputs": []
499 | },
500 | {
501 | "cell_type": "code",
502 | "metadata": {
503 | "colab": {
504 | "base_uri": "https://localhost:8080/"
505 | },
506 | "id": "fFtt5P2VwMA1",
507 | "outputId": "5c99ceac-328d-49ad-f4bd-cf68b487b1cf"
508 | },
509 | "source": [
510 | "detectionANN.fit(Xd_train, yd_train, batch_size = 32, epochs = 100)"
511 | ],
512 | "execution_count": 14,
513 | "outputs": [
514 | {
515 | "output_type": "stream",
516 | "name": "stdout",
517 | "text": [
518 | "Epoch 1/100\n",
519 | "300/300 [==============================] - 4s 3ms/step - loss: 0.5607 - accuracy: 0.7136\n",
520 | "Epoch 2/100\n",
521 | "300/300 [==============================] - 1s 3ms/step - loss: 0.3026 - accuracy: 0.8951\n",
522 | "Epoch 3/100\n",
523 | "300/300 [==============================] - 1s 3ms/step - loss: 0.1854 - accuracy: 0.9491\n",
524 | "Epoch 4/100\n",
525 | "300/300 [==============================] - 1s 3ms/step - loss: 0.1154 - accuracy: 0.9697\n",
526 | "Epoch 5/100\n",
527 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0831 - accuracy: 0.9775\n",
528 | "Epoch 6/100\n",
529 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0665 - accuracy: 0.9815\n",
530 | "Epoch 7/100\n",
531 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0574 - accuracy: 0.9837\n",
532 | "Epoch 8/100\n",
533 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0513 - accuracy: 0.9846\n",
534 | "Epoch 9/100\n",
535 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0470 - accuracy: 0.9859\n",
536 | "Epoch 10/100\n",
537 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0441 - accuracy: 0.9867\n",
538 | "Epoch 11/100\n",
539 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0417 - accuracy: 0.9870\n",
540 | "Epoch 12/100\n",
541 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0399 - accuracy: 0.9877\n",
542 | "Epoch 13/100\n",
543 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0388 - accuracy: 0.9883\n",
544 | "Epoch 14/100\n",
545 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0376 - accuracy: 0.9889\n",
546 | "Epoch 15/100\n",
547 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0367 - accuracy: 0.9893\n",
548 | "Epoch 16/100\n",
549 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0352 - accuracy: 0.9893\n",
550 | "Epoch 17/100\n",
551 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0345 - accuracy: 0.9895\n",
552 | "Epoch 18/100\n",
553 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0338 - accuracy: 0.9891\n",
554 | "Epoch 19/100\n",
555 | "300/300 [==============================] - 1s 2ms/step - loss: 0.0326 - accuracy: 0.9898\n",
556 | "Epoch 20/100\n",
557 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0318 - accuracy: 0.9900\n",
558 | "Epoch 21/100\n",
559 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0313 - accuracy: 0.9904\n",
560 | "Epoch 22/100\n",
561 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0304 - accuracy: 0.9903\n",
562 | "Epoch 23/100\n",
563 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0298 - accuracy: 0.9910\n",
564 | "Epoch 24/100\n",
565 | "300/300 [==============================] - 1s 2ms/step - loss: 0.0285 - accuracy: 0.9905\n",
566 | "Epoch 25/100\n",
567 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0282 - accuracy: 0.9909\n",
568 | "Epoch 26/100\n",
569 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0277 - accuracy: 0.9916\n",
570 | "Epoch 27/100\n",
571 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0270 - accuracy: 0.9916\n",
572 | "Epoch 28/100\n",
573 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0258 - accuracy: 0.9915\n",
574 | "Epoch 29/100\n",
575 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0255 - accuracy: 0.9916\n",
576 | "Epoch 30/100\n",
577 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0248 - accuracy: 0.9924\n",
578 | "Epoch 31/100\n",
579 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0244 - accuracy: 0.9923\n",
580 | "Epoch 32/100\n",
581 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0243 - accuracy: 0.9920\n",
582 | "Epoch 33/100\n",
583 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0237 - accuracy: 0.9922\n",
584 | "Epoch 34/100\n",
585 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0232 - accuracy: 0.9925\n",
586 | "Epoch 35/100\n",
587 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0230 - accuracy: 0.9924\n",
588 | "Epoch 36/100\n",
589 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0230 - accuracy: 0.9924\n",
590 | "Epoch 37/100\n",
591 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0223 - accuracy: 0.9927\n",
592 | "Epoch 38/100\n",
593 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0217 - accuracy: 0.9927\n",
594 | "Epoch 39/100\n",
595 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0217 - accuracy: 0.9927\n",
596 | "Epoch 40/100\n",
597 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0214 - accuracy: 0.9926\n",
598 | "Epoch 41/100\n",
599 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0211 - accuracy: 0.9930\n",
600 | "Epoch 42/100\n",
601 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0208 - accuracy: 0.9927\n",
602 | "Epoch 43/100\n",
603 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0207 - accuracy: 0.9926\n",
604 | "Epoch 44/100\n",
605 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0204 - accuracy: 0.9928\n",
606 | "Epoch 45/100\n",
607 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0203 - accuracy: 0.9932\n",
608 | "Epoch 46/100\n",
609 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0203 - accuracy: 0.9925\n",
610 | "Epoch 47/100\n",
611 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0201 - accuracy: 0.9930\n",
612 | "Epoch 48/100\n",
613 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0195 - accuracy: 0.9930\n",
614 | "Epoch 49/100\n",
615 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0199 - accuracy: 0.9928\n",
616 | "Epoch 50/100\n",
617 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0195 - accuracy: 0.9929\n",
618 | "Epoch 51/100\n",
619 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0192 - accuracy: 0.9928\n",
620 | "Epoch 52/100\n",
621 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0191 - accuracy: 0.9929\n",
622 | "Epoch 53/100\n",
623 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0187 - accuracy: 0.9931\n",
624 | "Epoch 54/100\n",
625 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0187 - accuracy: 0.9931\n",
626 | "Epoch 55/100\n",
627 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0187 - accuracy: 0.9934\n",
628 | "Epoch 56/100\n",
629 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0183 - accuracy: 0.9932\n",
630 | "Epoch 57/100\n",
631 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0180 - accuracy: 0.9932\n",
632 | "Epoch 58/100\n",
633 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0184 - accuracy: 0.9932\n",
634 | "Epoch 59/100\n",
635 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0178 - accuracy: 0.9930\n",
636 | "Epoch 60/100\n",
637 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0181 - accuracy: 0.9926\n",
638 | "Epoch 61/100\n",
639 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0177 - accuracy: 0.9932\n",
640 | "Epoch 62/100\n",
641 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0175 - accuracy: 0.9934\n",
642 | "Epoch 63/100\n",
643 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0176 - accuracy: 0.9928\n",
644 | "Epoch 64/100\n",
645 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0172 - accuracy: 0.9937\n",
646 | "Epoch 65/100\n",
647 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0173 - accuracy: 0.9933\n",
648 | "Epoch 66/100\n",
649 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0168 - accuracy: 0.9934\n",
650 | "Epoch 67/100\n",
651 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0168 - accuracy: 0.9932\n",
652 | "Epoch 68/100\n",
653 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0167 - accuracy: 0.9935\n",
654 | "Epoch 69/100\n",
655 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0167 - accuracy: 0.9932\n",
656 | "Epoch 70/100\n",
657 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0161 - accuracy: 0.9939\n",
658 | "Epoch 71/100\n",
659 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0162 - accuracy: 0.9940\n",
660 | "Epoch 72/100\n",
661 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0161 - accuracy: 0.9931\n",
662 | "Epoch 73/100\n",
663 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0162 - accuracy: 0.9934\n",
664 | "Epoch 74/100\n",
665 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0162 - accuracy: 0.9929\n",
666 | "Epoch 75/100\n",
667 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0161 - accuracy: 0.9935\n",
668 | "Epoch 76/100\n",
669 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0156 - accuracy: 0.9941\n",
670 | "Epoch 77/100\n",
671 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0152 - accuracy: 0.9945\n",
672 | "Epoch 78/100\n",
673 | "300/300 [==============================] - 1s 2ms/step - loss: 0.0155 - accuracy: 0.9939\n",
674 | "Epoch 79/100\n",
675 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0148 - accuracy: 0.9941\n",
676 | "Epoch 80/100\n",
677 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0152 - accuracy: 0.9941\n",
678 | "Epoch 81/100\n",
679 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0147 - accuracy: 0.9942\n",
680 | "Epoch 82/100\n",
681 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0149 - accuracy: 0.9939\n",
682 | "Epoch 83/100\n",
683 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0149 - accuracy: 0.9943\n",
684 | "Epoch 84/100\n",
685 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0147 - accuracy: 0.9947\n",
686 | "Epoch 85/100\n",
687 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0146 - accuracy: 0.9940\n",
688 | "Epoch 86/100\n",
689 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0149 - accuracy: 0.9937\n",
690 | "Epoch 87/100\n",
691 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0143 - accuracy: 0.9945\n",
692 | "Epoch 88/100\n",
693 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0141 - accuracy: 0.9940\n",
694 | "Epoch 89/100\n",
695 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0141 - accuracy: 0.9942\n",
696 | "Epoch 90/100\n",
697 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0139 - accuracy: 0.9947\n",
698 | "Epoch 91/100\n",
699 | "300/300 [==============================] - 1s 2ms/step - loss: 0.0136 - accuracy: 0.9943\n",
700 | "Epoch 92/100\n",
701 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0134 - accuracy: 0.9941\n",
702 | "Epoch 93/100\n",
703 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0134 - accuracy: 0.9937\n",
704 | "Epoch 94/100\n",
705 | "300/300 [==============================] - 1s 2ms/step - loss: 0.0131 - accuracy: 0.9944\n",
706 | "Epoch 95/100\n",
707 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0132 - accuracy: 0.9945\n",
708 | "Epoch 96/100\n",
709 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0133 - accuracy: 0.9947\n",
710 | "Epoch 97/100\n",
711 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0128 - accuracy: 0.9949\n",
712 | "Epoch 98/100\n",
713 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0130 - accuracy: 0.9952\n",
714 | "Epoch 99/100\n",
715 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0128 - accuracy: 0.9939\n",
716 | "Epoch 100/100\n",
717 | "300/300 [==============================] - 1s 3ms/step - loss: 0.0129 - accuracy: 0.9952\n"
718 | ]
719 | },
720 | {
721 | "output_type": "execute_result",
722 | "data": {
723 | "text/plain": [
724 | ""
725 | ]
726 | },
727 | "metadata": {},
728 | "execution_count": 14
729 | }
730 | ]
731 | },
732 | {
733 | "cell_type": "markdown",
734 | "metadata": {
735 | "id": "D15b-JUAwqbD"
736 | },
737 | "source": [
738 | "## Results"
739 | ]
740 | },
741 | {
742 | "cell_type": "code",
743 | "metadata": {
744 | "colab": {
745 | "base_uri": "https://localhost:8080/"
746 | },
747 | "id": "C8IKuO2HwsFR",
748 | "outputId": "79854587-87f0-4af8-f388-f0ba3fc86b7c"
749 | },
750 | "source": [
751 | "yd_pred = detectionANN.predict(Xd_test)\n",
752 | "yd_pred = (yd_pred > 0.5)\n",
753 | "print(np.concatenate((yd_pred.reshape(len(yd_pred),1), yd_test.reshape(len(yd_test),1)),1))"
754 | ],
755 | "execution_count": 15,
756 | "outputs": [
757 | {
758 | "output_type": "stream",
759 | "name": "stdout",
760 | "text": [
761 | "[[1 1]\n",
762 | " [0 0]\n",
763 | " [0 0]\n",
764 | " ...\n",
765 | " [0 0]\n",
766 | " [0 0]\n",
767 | " [0 1]]\n"
768 | ]
769 | }
770 | ]
771 | },
772 | {
773 | "cell_type": "code",
774 | "metadata": {
775 | "colab": {
776 | "base_uri": "https://localhost:8080/"
777 | },
778 | "id": "Q4gfoCtNw0JS",
779 | "outputId": "3e48cc0f-76ab-4516-c969-e640c8bdbf8b"
780 | },
781 | "source": [
782 | "cm = confusion_matrix(yd_test, yd_pred)\n",
783 | "acc = accuracy_score(yd_test, yd_pred)\n",
784 | "tn, fp, fn, tp = cm.ravel()\n",
785 | "print(f\"Correct Predictions : {tn+tp}\")\n",
786 | "print(f\"Wrong Predictions : {fn+fp}\")\n",
787 | "print(f\"Accuracy : {acc*100} %\")"
788 | ],
789 | "execution_count": 16,
790 | "outputs": [
791 | {
792 | "output_type": "stream",
793 | "name": "stdout",
794 | "text": [
795 | "Correct Predictions : 2387\n",
796 | "Wrong Predictions : 14\n",
797 | "Accuracy : 99.41690962099126 %\n"
798 | ]
799 | }
800 | ]
801 | },
802 | {
803 | "cell_type": "markdown",
804 | "metadata": {
805 | "id": "-CKxjp9gyjHF"
806 | },
807 | "source": [
808 | "# Fault Classification"
809 | ]
810 | },
811 | {
812 | "cell_type": "markdown",
813 | "metadata": {
814 | "id": "f4fpRk8TzKvD"
815 | },
816 | "source": [
817 | "## Data Preprocessing"
818 | ]
819 | },
820 | {
821 | "cell_type": "code",
822 | "metadata": {
823 | "id": "WJj55fkkyi0j"
824 | },
825 | "source": [
826 | "classData = pd.read_csv('classData.csv')"
827 | ],
828 | "execution_count": 17,
829 | "outputs": []
830 | },
831 | {
832 | "cell_type": "code",
833 | "metadata": {
834 | "colab": {
835 | "base_uri": "https://localhost:8080/"
836 | },
837 | "id": "gxKpC5AayqvT",
838 | "outputId": "9a98df58-4240-4661-bc78-be4571210bdc"
839 | },
840 | "source": [
841 | "classData.shape"
842 | ],
843 | "execution_count": 18,
844 | "outputs": [
845 | {
846 | "output_type": "execute_result",
847 | "data": {
848 | "text/plain": [
849 | "(7861, 10)"
850 | ]
851 | },
852 | "metadata": {},
853 | "execution_count": 18
854 | }
855 | ]
856 | },
857 | {
858 | "cell_type": "code",
859 | "metadata": {
860 | "colab": {
861 | "base_uri": "https://localhost:8080/",
862 | "height": 203
863 | },
864 | "id": "q523-eTtysiX",
865 | "outputId": "37f47843-a222-4e81-c2b0-e200cfca7fb2"
866 | },
867 | "source": [
868 | "classData.head()"
869 | ],
870 | "execution_count": 72,
871 | "outputs": [
872 | {
873 | "output_type": "execute_result",
874 | "data": {
875 | "text/html": [
876 | "\n",
877 | "\n",
890 | "
\n",
891 | " \n",
892 | " \n",
893 | " | \n",
894 | " G | \n",
895 | " C | \n",
896 | " B | \n",
897 | " A | \n",
898 | " Ia | \n",
899 | " Ib | \n",
900 | " Ic | \n",
901 | " Va | \n",
902 | " Vb | \n",
903 | " Vc | \n",
904 | " fault_types | \n",
905 | "
\n",
906 | " \n",
907 | " \n",
908 | " \n",
909 | " 0 | \n",
910 | " 1 | \n",
911 | " 0 | \n",
912 | " 0 | \n",
913 | " 1 | \n",
914 | " -151.291812 | \n",
915 | " -9.677452 | \n",
916 | " 85.800162 | \n",
917 | " 0.400750 | \n",
918 | " -0.132935 | \n",
919 | " -0.267815 | \n",
920 | " 1001 | \n",
921 | "
\n",
922 | " \n",
923 | " 1 | \n",
924 | " 1 | \n",
925 | " 0 | \n",
926 | " 0 | \n",
927 | " 1 | \n",
928 | " -336.186183 | \n",
929 | " -76.283262 | \n",
930 | " 18.328897 | \n",
931 | " 0.312732 | \n",
932 | " -0.123633 | \n",
933 | " -0.189099 | \n",
934 | " 1001 | \n",
935 | "
\n",
936 | " \n",
937 | " 2 | \n",
938 | " 1 | \n",
939 | " 0 | \n",
940 | " 0 | \n",
941 | " 1 | \n",
942 | " -502.891583 | \n",
943 | " -174.648023 | \n",
944 | " -80.924663 | \n",
945 | " 0.265728 | \n",
946 | " -0.114301 | \n",
947 | " -0.151428 | \n",
948 | " 1001 | \n",
949 | "
\n",
950 | " \n",
951 | " 3 | \n",
952 | " 1 | \n",
953 | " 0 | \n",
954 | " 0 | \n",
955 | " 1 | \n",
956 | " -593.941905 | \n",
957 | " -217.703359 | \n",
958 | " -124.891924 | \n",
959 | " 0.235511 | \n",
960 | " -0.104940 | \n",
961 | " -0.130570 | \n",
962 | " 1001 | \n",
963 | "
\n",
964 | " \n",
965 | " 4 | \n",
966 | " 1 | \n",
967 | " 0 | \n",
968 | " 0 | \n",
969 | " 1 | \n",
970 | " -643.663617 | \n",
971 | " -224.159427 | \n",
972 | " -132.282815 | \n",
973 | " 0.209537 | \n",
974 | " -0.095554 | \n",
975 | " -0.113983 | \n",
976 | " 1001 | \n",
977 | "
\n",
978 | " \n",
979 | "
\n",
980 | "
"
981 | ],
982 | "text/plain": [
983 | " G C B A Ia ... Ic Va Vb Vc fault_types\n",
984 | "0 1 0 0 1 -151.291812 ... 85.800162 0.400750 -0.132935 -0.267815 1001\n",
985 | "1 1 0 0 1 -336.186183 ... 18.328897 0.312732 -0.123633 -0.189099 1001\n",
986 | "2 1 0 0 1 -502.891583 ... -80.924663 0.265728 -0.114301 -0.151428 1001\n",
987 | "3 1 0 0 1 -593.941905 ... -124.891924 0.235511 -0.104940 -0.130570 1001\n",
988 | "4 1 0 0 1 -643.663617 ... -132.282815 0.209537 -0.095554 -0.113983 1001\n",
989 | "\n",
990 | "[5 rows x 11 columns]"
991 | ]
992 | },
993 | "metadata": {},
994 | "execution_count": 72
995 | }
996 | ]
997 | },
998 | {
999 | "cell_type": "code",
1000 | "metadata": {
1001 | "id": "oLKebYk6zMq3"
1002 | },
1003 | "source": [
1004 | "Xclass = classData.iloc[:, 4:].values\n",
1005 | "yclass = classData.iloc[:, 0:4].values"
1006 | ],
1007 | "execution_count": 77,
1008 | "outputs": []
1009 | },
1010 | {
1011 | "cell_type": "code",
1012 | "metadata": {
1013 | "colab": {
1014 | "base_uri": "https://localhost:8080/"
1015 | },
1016 | "id": "Z2PBjACsz7Q2",
1017 | "outputId": "5e00575e-ec71-4436-d212-462e8df00827"
1018 | },
1019 | "source": [
1020 | "print(Xclass[0,:])"
1021 | ],
1022 | "execution_count": 21,
1023 | "outputs": [
1024 | {
1025 | "output_type": "stream",
1026 | "name": "stdout",
1027 | "text": [
1028 | "[-1.51291812e+02 -9.67745156e+00 8.58001623e+01 4.00749853e-01\n",
1029 | " -1.32934945e-01 -2.67814907e-01]\n"
1030 | ]
1031 | }
1032 | ]
1033 | },
1034 | {
1035 | "cell_type": "code",
1036 | "metadata": {
1037 | "colab": {
1038 | "base_uri": "https://localhost:8080/"
1039 | },
1040 | "id": "fgOrKgzsz4rR",
1041 | "outputId": "49984d92-8e4e-4693-9c5d-ce9d9e0c112d"
1042 | },
1043 | "source": [
1044 | "print(yclass[0,:])"
1045 | ],
1046 | "execution_count": 50,
1047 | "outputs": [
1048 | {
1049 | "output_type": "stream",
1050 | "name": "stdout",
1051 | "text": [
1052 | "[1 0 0 1]\n"
1053 | ]
1054 | }
1055 | ]
1056 | },
1057 | {
1058 | "cell_type": "code",
1059 | "metadata": {
1060 | "id": "2DzG96Yd3gc2",
1061 | "colab": {
1062 | "base_uri": "https://localhost:8080/"
1063 | },
1064 | "outputId": "bc48f013-4b87-409f-8587-dc782740e722"
1065 | },
1066 | "source": [
1067 | "faults = [\"None\", \"LG Fault\", \"LL Fault\", \"LLG Fault\", \"LLL Fault\", \"LLLG Fault\"]\n",
1068 | "yc = []\n",
1069 | "for f in yclass:\n",
1070 | " if f[0] == 0 and f[1] == 0 and f[2] == 0 and f[3] == 0:\n",
1071 | " yc.append(faults[0])\n",
1072 | " elif f[0] == 1 and f[1] == 0 and f[2] == 0 and f[3] == 1:\n",
1073 | " yc.append(faults[1])\n",
1074 | " elif f[0] == 0 and f[1] == 1 and f[2] == 1 and f[3] == 0:\n",
1075 | " yc.append(faults[2])\n",
1076 | " elif f[0] == 1 and f[1] == 0 and f[2] == 1 and f[3] == 1:\n",
1077 | " yc.append(faults[3])\n",
1078 | " elif f[0] == 0 and f[1] == 1 and f[2] == 1 and f[3] == 1:\n",
1079 | " yc.append(faults[4])\n",
1080 | " else:\n",
1081 | " yc.append(faults[5])\n",
1082 | "yc = np.array(yc)\n",
1083 | "print(f\"No Fault : {len(yc[yc==faults[0]])}\")\n",
1084 | "print(f\"LF Fault : {len(yc[yc==faults[1]])}\")\n",
1085 | "print(f\"LL Fault : {len(yc[yc==faults[2]])}\")\n",
1086 | "print(f\"LLG Fault : {len(yc[yc==faults[3]])}\")\n",
1087 | "print(f\"LLL Fault : {len(yc[yc==faults[4]])}\")\n",
1088 | "print(f\"LLLG Fault : {len(yc[yc==faults[5]])}\")\n",
1089 | "yclass = yc"
1090 | ],
1091 | "execution_count": 78,
1092 | "outputs": [
1093 | {
1094 | "output_type": "stream",
1095 | "name": "stdout",
1096 | "text": [
1097 | "No Fault : 2365\n",
1098 | "LF Fault : 1129\n",
1099 | "LL Fault : 1004\n",
1100 | "LLG Fault : 1134\n",
1101 | "LLL Fault : 1096\n",
1102 | "LLLG Fault : 1133\n"
1103 | ]
1104 | }
1105 | ]
1106 | },
1107 | {
1108 | "cell_type": "code",
1109 | "metadata": {
1110 | "id": "m3WSLLAV6Y0H"
1111 | },
1112 | "source": [
1113 | "encoder = LabelEncoder()\n",
1114 | "encoder.fit(yclass)\n",
1115 | "encoded_Y = encoder.transform(yclass)\n",
1116 | "yclass = np_utils.to_categorical(encoded_Y)"
1117 | ],
1118 | "execution_count": 79,
1119 | "outputs": []
1120 | },
1121 | {
1122 | "cell_type": "code",
1123 | "metadata": {
1124 | "id": "kw4WMxI3037x"
1125 | },
1126 | "source": [
1127 | "Xc_train, Xc_test, yc_train, yc_test = train_test_split(Xclass, yclass, test_size = 0.2, random_state = 0)"
1128 | ],
1129 | "execution_count": 80,
1130 | "outputs": []
1131 | },
1132 | {
1133 | "cell_type": "code",
1134 | "metadata": {
1135 | "id": "MEW-L6vP08lo"
1136 | },
1137 | "source": [
1138 | "sc = StandardScaler()\n",
1139 | "Xc_train = sc.fit_transform(Xc_train)\n",
1140 | "Xc_test = sc.transform(Xc_test)"
1141 | ],
1142 | "execution_count": 81,
1143 | "outputs": []
1144 | },
1145 | {
1146 | "cell_type": "markdown",
1147 | "metadata": {
1148 | "id": "q4NqAZHi0nNj"
1149 | },
1150 | "source": [
1151 | "## ANN Model"
1152 | ]
1153 | },
1154 | {
1155 | "cell_type": "code",
1156 | "metadata": {
1157 | "id": "QsVLkzqn0mph"
1158 | },
1159 | "source": [
1160 | "classANN = Sequential()\n",
1161 | "classANN.add(Dense(units=12, activation='relu'))\n",
1162 | "classANN.add(Dense(units=12, activation='relu'))\n",
1163 | "classANN.add(Dense(units=6, activation='sigmoid'))\n",
1164 | "classANN.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])"
1165 | ],
1166 | "execution_count": 83,
1167 | "outputs": []
1168 | },
1169 | {
1170 | "cell_type": "code",
1171 | "metadata": {
1172 | "id": "wM1KNIUnz_NO",
1173 | "colab": {
1174 | "base_uri": "https://localhost:8080/"
1175 | },
1176 | "outputId": "7712c9a6-f155-48c9-d2b1-a30390b3c3c2"
1177 | },
1178 | "source": [
1179 | "classANN.fit(Xc_train, yc_train, batch_size = 32, epochs = 100)"
1180 | ],
1181 | "execution_count": 84,
1182 | "outputs": [
1183 | {
1184 | "output_type": "stream",
1185 | "name": "stdout",
1186 | "text": [
1187 | "Epoch 1/100\n",
1188 | "197/197 [==============================] - 1s 4ms/step - loss: 1.4433 - accuracy: 0.5060\n",
1189 | "Epoch 2/100\n",
1190 | "197/197 [==============================] - 1s 4ms/step - loss: 0.8129 - accuracy: 0.7351\n",
1191 | "Epoch 3/100\n",
1192 | "197/197 [==============================] - 1s 4ms/step - loss: 0.4896 - accuracy: 0.8357\n",
1193 | "Epoch 4/100\n",
1194 | "197/197 [==============================] - 1s 4ms/step - loss: 0.3413 - accuracy: 0.8930\n",
1195 | "Epoch 5/100\n",
1196 | "197/197 [==============================] - 1s 3ms/step - loss: 0.2666 - accuracy: 0.9210\n",
1197 | "Epoch 6/100\n",
1198 | "197/197 [==============================] - 1s 3ms/step - loss: 0.2195 - accuracy: 0.9342\n",
1199 | "Epoch 7/100\n",
1200 | "197/197 [==============================] - 1s 3ms/step - loss: 0.1888 - accuracy: 0.9413\n",
1201 | "Epoch 8/100\n",
1202 | "197/197 [==============================] - 1s 4ms/step - loss: 0.1654 - accuracy: 0.9555\n",
1203 | "Epoch 9/100\n",
1204 | "197/197 [==============================] - 1s 4ms/step - loss: 0.1462 - accuracy: 0.9614\n",
1205 | "Epoch 10/100\n",
1206 | "197/197 [==============================] - 1s 3ms/step - loss: 0.1307 - accuracy: 0.9666\n",
1207 | "Epoch 11/100\n",
1208 | "197/197 [==============================] - 1s 3ms/step - loss: 0.1184 - accuracy: 0.9709\n",
1209 | "Epoch 12/100\n",
1210 | "197/197 [==============================] - 1s 3ms/step - loss: 0.1099 - accuracy: 0.9763\n",
1211 | "Epoch 13/100\n",
1212 | "197/197 [==============================] - 1s 4ms/step - loss: 0.1020 - accuracy: 0.9746\n",
1213 | "Epoch 14/100\n",
1214 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0959 - accuracy: 0.9785\n",
1215 | "Epoch 15/100\n",
1216 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0899 - accuracy: 0.9806\n",
1217 | "Epoch 16/100\n",
1218 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0852 - accuracy: 0.9812\n",
1219 | "Epoch 17/100\n",
1220 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0805 - accuracy: 0.9816\n",
1221 | "Epoch 18/100\n",
1222 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0762 - accuracy: 0.9843\n",
1223 | "Epoch 19/100\n",
1224 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0728 - accuracy: 0.9843\n",
1225 | "Epoch 20/100\n",
1226 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0684 - accuracy: 0.9857\n",
1227 | "Epoch 21/100\n",
1228 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0656 - accuracy: 0.9844\n",
1229 | "Epoch 22/100\n",
1230 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0626 - accuracy: 0.9857\n",
1231 | "Epoch 23/100\n",
1232 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0596 - accuracy: 0.9870\n",
1233 | "Epoch 24/100\n",
1234 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0582 - accuracy: 0.9858\n",
1235 | "Epoch 25/100\n",
1236 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0556 - accuracy: 0.9874\n",
1237 | "Epoch 26/100\n",
1238 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0534 - accuracy: 0.9890\n",
1239 | "Epoch 27/100\n",
1240 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0515 - accuracy: 0.9892\n",
1241 | "Epoch 28/100\n",
1242 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0508 - accuracy: 0.9878\n",
1243 | "Epoch 29/100\n",
1244 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0480 - accuracy: 0.9895\n",
1245 | "Epoch 30/100\n",
1246 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0463 - accuracy: 0.9901\n",
1247 | "Epoch 31/100\n",
1248 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0453 - accuracy: 0.9885\n",
1249 | "Epoch 32/100\n",
1250 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0440 - accuracy: 0.9900\n",
1251 | "Epoch 33/100\n",
1252 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0426 - accuracy: 0.9900\n",
1253 | "Epoch 34/100\n",
1254 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0410 - accuracy: 0.9906\n",
1255 | "Epoch 35/100\n",
1256 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0394 - accuracy: 0.9908\n",
1257 | "Epoch 36/100\n",
1258 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0388 - accuracy: 0.9914\n",
1259 | "Epoch 37/100\n",
1260 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0376 - accuracy: 0.9916\n",
1261 | "Epoch 38/100\n",
1262 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0364 - accuracy: 0.9920\n",
1263 | "Epoch 39/100\n",
1264 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0362 - accuracy: 0.9906\n",
1265 | "Epoch 40/100\n",
1266 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0359 - accuracy: 0.9917\n",
1267 | "Epoch 41/100\n",
1268 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0341 - accuracy: 0.9906\n",
1269 | "Epoch 42/100\n",
1270 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0337 - accuracy: 0.9914\n",
1271 | "Epoch 43/100\n",
1272 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0322 - accuracy: 0.9932\n",
1273 | "Epoch 44/100\n",
1274 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0320 - accuracy: 0.9917\n",
1275 | "Epoch 45/100\n",
1276 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0311 - accuracy: 0.9928\n",
1277 | "Epoch 46/100\n",
1278 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0299 - accuracy: 0.9924\n",
1279 | "Epoch 47/100\n",
1280 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0297 - accuracy: 0.9924\n",
1281 | "Epoch 48/100\n",
1282 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0290 - accuracy: 0.9927\n",
1283 | "Epoch 49/100\n",
1284 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0283 - accuracy: 0.9925\n",
1285 | "Epoch 50/100\n",
1286 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0272 - accuracy: 0.9932\n",
1287 | "Epoch 51/100\n",
1288 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0269 - accuracy: 0.9935\n",
1289 | "Epoch 52/100\n",
1290 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0271 - accuracy: 0.9927\n",
1291 | "Epoch 53/100\n",
1292 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0262 - accuracy: 0.9928\n",
1293 | "Epoch 54/100\n",
1294 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0271 - accuracy: 0.9924\n",
1295 | "Epoch 55/100\n",
1296 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0251 - accuracy: 0.9941\n",
1297 | "Epoch 56/100\n",
1298 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0244 - accuracy: 0.9930\n",
1299 | "Epoch 57/100\n",
1300 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0240 - accuracy: 0.9940\n",
1301 | "Epoch 58/100\n",
1302 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0239 - accuracy: 0.9941\n",
1303 | "Epoch 59/100\n",
1304 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0237 - accuracy: 0.9943\n",
1305 | "Epoch 60/100\n",
1306 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0231 - accuracy: 0.9938\n",
1307 | "Epoch 61/100\n",
1308 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0223 - accuracy: 0.9933\n",
1309 | "Epoch 62/100\n",
1310 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0220 - accuracy: 0.9952\n",
1311 | "Epoch 63/100\n",
1312 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0215 - accuracy: 0.9949\n",
1313 | "Epoch 64/100\n",
1314 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0221 - accuracy: 0.9944\n",
1315 | "Epoch 65/100\n",
1316 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0214 - accuracy: 0.9941\n",
1317 | "Epoch 66/100\n",
1318 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0211 - accuracy: 0.9943\n",
1319 | "Epoch 67/100\n",
1320 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0215 - accuracy: 0.9935\n",
1321 | "Epoch 68/100\n",
1322 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0206 - accuracy: 0.9941\n",
1323 | "Epoch 69/100\n",
1324 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0200 - accuracy: 0.9946\n",
1325 | "Epoch 70/100\n",
1326 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0193 - accuracy: 0.9952\n",
1327 | "Epoch 71/100\n",
1328 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0196 - accuracy: 0.9943\n",
1329 | "Epoch 72/100\n",
1330 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0183 - accuracy: 0.9949\n",
1331 | "Epoch 73/100\n",
1332 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0182 - accuracy: 0.9952\n",
1333 | "Epoch 74/100\n",
1334 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0184 - accuracy: 0.9949\n",
1335 | "Epoch 75/100\n",
1336 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0180 - accuracy: 0.9949\n",
1337 | "Epoch 76/100\n",
1338 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0175 - accuracy: 0.9951\n",
1339 | "Epoch 77/100\n",
1340 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0177 - accuracy: 0.9946\n",
1341 | "Epoch 78/100\n",
1342 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0174 - accuracy: 0.9955\n",
1343 | "Epoch 79/100\n",
1344 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0176 - accuracy: 0.9946\n",
1345 | "Epoch 80/100\n",
1346 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0169 - accuracy: 0.9949\n",
1347 | "Epoch 81/100\n",
1348 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0174 - accuracy: 0.9955\n",
1349 | "Epoch 82/100\n",
1350 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0166 - accuracy: 0.9957\n",
1351 | "Epoch 83/100\n",
1352 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0165 - accuracy: 0.9955\n",
1353 | "Epoch 84/100\n",
1354 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0160 - accuracy: 0.9954\n",
1355 | "Epoch 85/100\n",
1356 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0161 - accuracy: 0.9957\n",
1357 | "Epoch 86/100\n",
1358 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0160 - accuracy: 0.9948\n",
1359 | "Epoch 87/100\n",
1360 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0157 - accuracy: 0.9954\n",
1361 | "Epoch 88/100\n",
1362 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0159 - accuracy: 0.9959\n",
1363 | "Epoch 89/100\n",
1364 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0157 - accuracy: 0.9963\n",
1365 | "Epoch 90/100\n",
1366 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0149 - accuracy: 0.9960\n",
1367 | "Epoch 91/100\n",
1368 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0153 - accuracy: 0.9954\n",
1369 | "Epoch 92/100\n",
1370 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0147 - accuracy: 0.9955\n",
1371 | "Epoch 93/100\n",
1372 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0150 - accuracy: 0.9949\n",
1373 | "Epoch 94/100\n",
1374 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0147 - accuracy: 0.9957\n",
1375 | "Epoch 95/100\n",
1376 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0150 - accuracy: 0.9960\n",
1377 | "Epoch 96/100\n",
1378 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0144 - accuracy: 0.9954\n",
1379 | "Epoch 97/100\n",
1380 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0142 - accuracy: 0.9955\n",
1381 | "Epoch 98/100\n",
1382 | "197/197 [==============================] - 1s 4ms/step - loss: 0.0145 - accuracy: 0.9948\n",
1383 | "Epoch 99/100\n",
1384 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0144 - accuracy: 0.9951\n",
1385 | "Epoch 100/100\n",
1386 | "197/197 [==============================] - 1s 3ms/step - loss: 0.0145 - accuracy: 0.9949\n"
1387 | ]
1388 | },
1389 | {
1390 | "output_type": "execute_result",
1391 | "data": {
1392 | "text/plain": [
1393 | ""
1394 | ]
1395 | },
1396 | "metadata": {},
1397 | "execution_count": 84
1398 | }
1399 | ]
1400 | },
1401 | {
1402 | "cell_type": "markdown",
1403 | "metadata": {
1404 | "id": "20Ok4goz-KAC"
1405 | },
1406 | "source": [
1407 | "## Results"
1408 | ]
1409 | },
1410 | {
1411 | "cell_type": "code",
1412 | "metadata": {
1413 | "colab": {
1414 | "base_uri": "https://localhost:8080/"
1415 | },
1416 | "id": "_IoFrxSh-Ts5",
1417 | "outputId": "80f6c4ae-3918-44b3-9027-3c77f32bacd2"
1418 | },
1419 | "source": [
1420 | "loss, acc = classANN.evaluate(Xc_test, yc_test)\n",
1421 | "print(f'Accuracy : {acc*100} %')"
1422 | ],
1423 | "execution_count": 95,
1424 | "outputs": [
1425 | {
1426 | "output_type": "stream",
1427 | "name": "stdout",
1428 | "text": [
1429 | "50/50 [==============================] - 0s 3ms/step - loss: 0.0162 - accuracy: 0.9943\n",
1430 | "Accuracy : 99.42784309387207 %\n"
1431 | ]
1432 | }
1433 | ]
1434 | },
1435 | {
1436 | "cell_type": "markdown",
1437 | "metadata": {
1438 | "id": "uslk5JVp_swo"
1439 | },
1440 | "source": [
1441 | "# Summary\n",
1442 | "\n",
1443 | "For Fault Detection, the ANN Model predicted the faults with an accuracy of 99.41% and for Fault Classification, the model was able to classify faults with an accuracy of 99.42%. "
1444 | ]
1445 | }
1446 | ]
1447 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Electrical Fault Detection and Classification using Line and Phase Currents and Voltages
2 |
3 | Electrical power plants require fault detection and operation of protection equipment in minimum possible time to remain stable. The faults on electrical power system transmission lines should be first detected and classified correctly, and repaired in the least possible time. The protection system used for a transmission line can also initiate the other relays to protect the power system from outages. A sound fault detection system provides a fast and secure relaying operation. Once trained on reliable data, an ANN-based fault detection system can help provide fast predictions for the presence of a fault and classify what kind of fault it is. Data for training the ANN was obtained from Kaggle.
4 |
5 | Fault Detection ANN Model:
6 |
7 | 
8 |
9 |
10 | Fault Classification ANN Model:
11 |
12 | 
13 |
14 | For Fault Detection, the model predicted the faults with an accuracy of 99.41% and for Fault Classification, the model was able to classify faults with an accuracy of 99.42%.
15 |
--------------------------------------------------------------------------------
/faultclass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IronVenom/Fault-Detection-and-Classification/5fffdf48c3c3f2b4581fb5d096eed1f550d376e7/faultclass.png
--------------------------------------------------------------------------------
/faultdetect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IronVenom/Fault-Detection-and-Classification/5fffdf48c3c3f2b4581fb5d096eed1f550d376e7/faultdetect.png
--------------------------------------------------------------------------------
/faults.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IronVenom/Fault-Detection-and-Classification/5fffdf48c3c3f2b4581fb5d096eed1f550d376e7/faults.zip
--------------------------------------------------------------------------------