이한솔

Add CNN

1 +{
2 + "cells": [
3 + {
4 + "cell_type": "code",
5 + "execution_count": 4,
6 + "metadata": {
7 + "scrolled": true
8 + },
9 + "outputs": [],
10 + "source": [
11 + "import csv\n",
12 + "import numpy as np\n",
13 + "import os\n",
14 + "import pandas as pd"
15 + ]
16 + },
17 + {
18 + "cell_type": "code",
19 + "execution_count": 1,
20 + "metadata": {},
21 + "outputs": [],
22 + "source": [
23 + "def transferData(dir_, outputdir_) :\n",
24 + " outputfile = open(outputdir_, 'w', newline='\\n')\n",
25 + " fopen = open(dir_, 'r')\n",
26 + " csvreader = csv.reader(fopen)\n",
27 + " \n",
28 + " fw = csv.writer(outputfile)\n",
29 + " \n",
30 + " for line in csvreader :\n",
31 + " newdata = []\n",
32 + " can_id = int(line[1], 16)\n",
33 + " newdata.append(can_id)\n",
34 + " newdata.append(line[2])\n",
35 + " \n",
36 + " ll = len(line)\n",
37 + " num = int(line[2])\n",
38 + " \n",
39 + " data = []\n",
40 + " if num == 8 :\n",
41 + " data = line[3:11]\n",
42 + " else :\n",
43 + " data = line[3:3+num]\n",
44 + " for _ in range(8-num):\n",
45 + " data.append('0')\n",
46 + " #print(line)\n",
47 + " newdata.extend(list(map(lambda x:int(x, 16), data)))\n",
48 + " \n",
49 + " if line[-1] == 'T' :\n",
50 + " newdata.append(0)\n",
51 + " else :\n",
52 + " newdata.append(1)\n",
53 + " \n",
54 + " fw.writerow(newdata)\n",
55 + "\n",
56 + "def Preprocess(dir_) :\n",
57 + " f1 = open(dir_, 'r')\n",
58 + " fr = csv.reader(f1)\n",
59 + " d = [] \n",
60 + " for line in fr :\n",
61 + " l = []\n",
62 + " l.append(line[0])\n",
63 + " l.append(line[1])\n",
64 + " l.extend(line[2:11])\n",
65 + " \n",
66 + " d.append(l)\n",
67 + " return d"
68 + ]
69 + },
70 + {
71 + "cell_type": "code",
72 + "execution_count": 5,
73 + "metadata": {},
74 + "outputs": [],
75 + "source": [
76 + "transferData('DoS_dataset.csv', 'DoS.csv')"
77 + ]
78 + },
79 + {
80 + "cell_type": "code",
81 + "execution_count": 6,
82 + "metadata": {},
83 + "outputs": [],
84 + "source": [
85 + "datalist = Preprocess('DoS.csv')"
86 + ]
87 + },
88 + {
89 + "cell_type": "code",
90 + "execution_count": 7,
91 + "metadata": {},
92 + "outputs": [],
93 + "source": [
94 + "datalist = datalist[0:3665761]"
95 + ]
96 + },
97 + {
98 + "cell_type": "code",
99 + "execution_count": 8,
100 + "metadata": {},
101 + "outputs": [
102 + {
103 + "data": {
104 + "text/plain": [
105 + "['790', '8', '5', '33', '104', '9', '33', '33', '0', '111', '1']"
106 + ]
107 + },
108 + "execution_count": 8,
109 + "metadata": {},
110 + "output_type": "execute_result"
111 + }
112 + ],
113 + "source": [
114 + "datalist[0]"
115 + ]
116 + },
117 + {
118 + "cell_type": "code",
119 + "execution_count": 9,
120 + "metadata": {},
121 + "outputs": [],
122 + "source": [
123 + "def createsequence(data) :\n",
124 + " arr = []\n",
125 + " for i in range(0, len(data)-11): \n",
126 + " d = []\n",
127 + " t = []\n",
128 + " for x in range(i, i+11):\n",
129 + " t = list(map(float, data[x]))\n",
130 + " #t = np.array(t, dtype=np.float32)\n",
131 + " #t = tf.convert_to_tensor(t)\n",
132 + " d.append(t)\n",
133 + " arr.append(d)\n",
134 + " return arr"
135 + ]
136 + },
137 + {
138 + "cell_type": "code",
139 + "execution_count": 10,
140 + "metadata": {},
141 + "outputs": [],
142 + "source": [
143 + "resData = createsequence(datalist)"
144 + ]
145 + },
146 + {
147 + "cell_type": "code",
148 + "execution_count": 11,
149 + "metadata": {
150 + "scrolled": true
151 + },
152 + "outputs": [
153 + {
154 + "name": "stdout",
155 + "output_type": "stream",
156 + "text": [
157 + "[[0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [305.0, 8.0, 0.0, 128.0, 0.0, 0.0, 76.0, 127.0, 10.0, 154.0, 1.0], [0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 37.0, 42.0, 71.0, 1.0], [0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [880.0, 8.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1087.0, 8.0, 0.0, 64.0, 96.0, 255.0, 126.0, 203.0, 8.0, 0.0, 1.0], [0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 203.0, 8.0, 0.0, 1.0], [0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]\n",
158 + "11\n",
159 + "<class 'list'>\n"
160 + ]
161 + }
162 + ],
163 + "source": [
164 + "print(resData[1478])\n",
165 + "print(len(resData[1478]))\n",
166 + "print(type(resData))"
167 + ]
168 + },
169 + {
170 + "cell_type": "code",
171 + "execution_count": 12,
172 + "metadata": {},
173 + "outputs": [],
174 + "source": [
175 + "def check(data):\n",
176 + " check = []\n",
177 + " \n",
178 + " for e in data :\n",
179 + " flag = False\n",
180 + " for i in e :\n",
181 + " if i[-1] == 0 :\n",
182 + " check.append(0)\n",
183 + " flag = True\n",
184 + " break\n",
185 + " if flag == False :\n",
186 + " check.append(1)\n",
187 + " \n",
188 + " return check\n",
189 + "\n",
190 + "cc = check(resData)"
191 + ]
192 + },
193 + {
194 + "cell_type": "code",
195 + "execution_count": 13,
196 + "metadata": {},
197 + "outputs": [
198 + {
199 + "name": "stdout",
200 + "output_type": "stream",
201 + "text": [
202 + "2585455\n",
203 + "1080295\n"
204 + ]
205 + }
206 + ],
207 + "source": [
208 + "cnt = 0\n",
209 + "for e in cc:\n",
210 + " if e == 1 :\n",
211 + " cnt += 1\n",
212 + " \n",
213 + "print(cnt)\n",
214 + "print(len(cc)-cnt)"
215 + ]
216 + },
217 + {
218 + "cell_type": "code",
219 + "execution_count": 216,
220 + "metadata": {},
221 + "outputs": [],
222 + "source": [
223 + "from sklearn.model_selection import train_test_split\n",
224 + "import tensorflow as tf"
225 + ]
226 + },
227 + {
228 + "cell_type": "code",
229 + "execution_count": 404,
230 + "metadata": {
231 + "scrolled": true
232 + },
233 + "outputs": [],
234 + "source": [
235 + "df = pd.DataFrame(resData)\n",
236 + "n = len(df)\n",
237 + "\n",
238 + "X_train = df.iloc[0:n, 0:11].values.tolist()\n",
239 + "Y_train = cc\n",
240 + "\n",
241 + "#X_train = pd.\n",
242 + "X_train = np.asarray(X_train)\n",
243 + "Y_train = np.asarray(Y_train)\n",
244 + "#X_train = tf.constant(X_train)\n",
245 + "#print(X_train[-1])\n",
246 + "#Y_train = tf.convert_to_tensor(Y_train)\n",
247 + "\n",
248 + "#Y_train = np.squeeze(Y_train, axis=1)\n",
249 + "x_train, x_test, y_train, y_test = train_test_split(X_train, Y_train, test_size=0.3, random_state=321)"
250 + ]
251 + },
252 + {
253 + "cell_type": "code",
254 + "execution_count": 405,
255 + "metadata": {
256 + "scrolled": false
257 + },
258 + "outputs": [
259 + {
260 + "name": "stdout",
261 + "output_type": "stream",
262 + "text": [
263 + "(333251, 11)\n",
264 + "(3665750, 11, 11)\n",
265 + "(3665750,)\n"
266 + ]
267 + }
268 + ],
269 + "source": [
270 + "print(X_train_.shape)\n",
271 + "print(X_train.shape)\n",
272 + "print(Y_train.shape)"
273 + ]
274 + },
275 + {
276 + "cell_type": "code",
277 + "execution_count": 241,
278 + "metadata": {},
279 + "outputs": [],
280 + "source": [
281 + "for i in x_train:\n",
282 + " for j in i:\n",
283 + " if len(j) != 11:\n",
284 + " print(j)"
285 + ]
286 + },
287 + {
288 + "cell_type": "code",
289 + "execution_count": 211,
290 + "metadata": {
291 + "scrolled": true
292 + },
293 + "outputs": [
294 + {
295 + "data": {
296 + "text/html": [
297 + "<div>\n",
298 + "<style scoped>\n",
299 + " .dataframe tbody tr th:only-of-type {\n",
300 + " vertical-align: middle;\n",
301 + " }\n",
302 + "\n",
303 + " .dataframe tbody tr th {\n",
304 + " vertical-align: top;\n",
305 + " }\n",
306 + "\n",
307 + " .dataframe thead th {\n",
308 + " text-align: right;\n",
309 + " }\n",
310 + "</style>\n",
311 + "<table border=\"1\" class=\"dataframe\">\n",
312 + " <thead>\n",
313 + " <tr style=\"text-align: right;\">\n",
314 + " <th></th>\n",
315 + " <th>0</th>\n",
316 + " <th>1</th>\n",
317 + " <th>2</th>\n",
318 + " <th>3</th>\n",
319 + " <th>4</th>\n",
320 + " <th>5</th>\n",
321 + " <th>6</th>\n",
322 + " <th>7</th>\n",
323 + " <th>8</th>\n",
324 + " <th>9</th>\n",
325 + " <th>10</th>\n",
326 + " </tr>\n",
327 + " </thead>\n",
328 + " <tbody>\n",
329 + " <tr>\n",
330 + " <th>0</th>\n",
331 + " <td>[790.0, 8.0, 5.0, 33.0, 104.0, 9.0, 33.0, 33.0...</td>\n",
332 + " <td>[399.0, 8.0, 254.0, 91.0, 0.0, 0.0, 0.0, 60.0,...</td>\n",
333 + " <td>[608.0, 8.0, 25.0, 33.0, 34.0, 48.0, 8.0, 142....</td>\n",
334 + " <td>[672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2...</td>\n",
335 + " <td>[809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3...</td>\n",
336 + " <td>[1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0...</td>\n",
337 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,...</td>\n",
338 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
339 + " <td>[704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
340 + " <td>[304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128...</td>\n",
341 + " <td>[305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127...</td>\n",
342 + " </tr>\n",
343 + " <tr>\n",
344 + " <th>1</th>\n",
345 + " <td>[399.0, 8.0, 254.0, 91.0, 0.0, 0.0, 0.0, 60.0,...</td>\n",
346 + " <td>[608.0, 8.0, 25.0, 33.0, 34.0, 48.0, 8.0, 142....</td>\n",
347 + " <td>[672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2...</td>\n",
348 + " <td>[809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3...</td>\n",
349 + " <td>[1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0...</td>\n",
350 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,...</td>\n",
351 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
352 + " <td>[704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
353 + " <td>[304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128...</td>\n",
354 + " <td>[305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127...</td>\n",
355 + " <td>[320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43...</td>\n",
356 + " </tr>\n",
357 + " <tr>\n",
358 + " <th>2</th>\n",
359 + " <td>[608.0, 8.0, 25.0, 33.0, 34.0, 48.0, 8.0, 142....</td>\n",
360 + " <td>[672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2...</td>\n",
361 + " <td>[809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3...</td>\n",
362 + " <td>[1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0...</td>\n",
363 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,...</td>\n",
364 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
365 + " <td>[704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
366 + " <td>[304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128...</td>\n",
367 + " <td>[305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127...</td>\n",
368 + " <td>[320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43...</td>\n",
369 + " <td>[848.0, 8.0, 5.0, 32.0, 20.0, 104.0, 119.0, 0....</td>\n",
370 + " </tr>\n",
371 + " <tr>\n",
372 + " <th>3</th>\n",
373 + " <td>[672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2...</td>\n",
374 + " <td>[809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3...</td>\n",
375 + " <td>[1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0...</td>\n",
376 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,...</td>\n",
377 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
378 + " <td>[704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
379 + " <td>[304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128...</td>\n",
380 + " <td>[305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127...</td>\n",
381 + " <td>[320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43...</td>\n",
382 + " <td>[848.0, 8.0, 5.0, 32.0, 20.0, 104.0, 119.0, 0....</td>\n",
383 + " <td>[1087.0, 8.0, 0.0, 64.0, 96.0, 255.0, 126.0, 2...</td>\n",
384 + " </tr>\n",
385 + " <tr>\n",
386 + " <th>4</th>\n",
387 + " <td>[809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3...</td>\n",
388 + " <td>[1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0...</td>\n",
389 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,...</td>\n",
390 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
391 + " <td>[704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
392 + " <td>[304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128...</td>\n",
393 + " <td>[305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127...</td>\n",
394 + " <td>[320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43...</td>\n",
395 + " <td>[848.0, 8.0, 5.0, 32.0, 20.0, 104.0, 119.0, 0....</td>\n",
396 + " <td>[1087.0, 8.0, 0.0, 64.0, 96.0, 255.0, 126.0, 2...</td>\n",
397 + " <td>[880.0, 8.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
398 + " </tr>\n",
399 + " <tr>\n",
400 + " <th>...</th>\n",
401 + " <td>...</td>\n",
402 + " <td>...</td>\n",
403 + " <td>...</td>\n",
404 + " <td>...</td>\n",
405 + " <td>...</td>\n",
406 + " <td>...</td>\n",
407 + " <td>...</td>\n",
408 + " <td>...</td>\n",
409 + " <td>...</td>\n",
410 + " <td>...</td>\n",
411 + " <td>...</td>\n",
412 + " </tr>\n",
413 + " <tr>\n",
414 + " <th>333246</th>\n",
415 + " <td>[809.0, 8.0, 220.0, 183.0, 127.0, 20.0, 17.0, ...</td>\n",
416 + " <td>[880.0, 8.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
417 + " <td>[1072.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
418 + " <td>[1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138...</td>\n",
419 + " <td>[1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0...</td>\n",
420 + " <td>[497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0...</td>\n",
421 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
422 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ...</td>\n",
423 + " <td>[848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0...</td>\n",
424 + " <td>[1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0....</td>\n",
425 + " <td>[304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1...</td>\n",
426 + " </tr>\n",
427 + " <tr>\n",
428 + " <th>333247</th>\n",
429 + " <td>[880.0, 8.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
430 + " <td>[1072.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
431 + " <td>[1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138...</td>\n",
432 + " <td>[1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0...</td>\n",
433 + " <td>[497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0...</td>\n",
434 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
435 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ...</td>\n",
436 + " <td>[848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0...</td>\n",
437 + " <td>[1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0....</td>\n",
438 + " <td>[304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1...</td>\n",
439 + " <td>[305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127...</td>\n",
440 + " </tr>\n",
441 + " <tr>\n",
442 + " <th>333248</th>\n",
443 + " <td>[1072.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
444 + " <td>[1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138...</td>\n",
445 + " <td>[1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0...</td>\n",
446 + " <td>[497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0...</td>\n",
447 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
448 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ...</td>\n",
449 + " <td>[848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0...</td>\n",
450 + " <td>[1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0....</td>\n",
451 + " <td>[304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1...</td>\n",
452 + " <td>[305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127...</td>\n",
453 + " <td>[320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 22.0, 34.0, 4...</td>\n",
454 + " </tr>\n",
455 + " <tr>\n",
456 + " <th>333249</th>\n",
457 + " <td>[1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138...</td>\n",
458 + " <td>[1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0...</td>\n",
459 + " <td>[497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0...</td>\n",
460 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
461 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ...</td>\n",
462 + " <td>[848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0...</td>\n",
463 + " <td>[1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0....</td>\n",
464 + " <td>[304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1...</td>\n",
465 + " <td>[305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127...</td>\n",
466 + " <td>[320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 22.0, 34.0, 4...</td>\n",
467 + " <td>[1264.0, 8.0, 0.0, 0.0, 0.0, 128.0, 0.0, 105.0...</td>\n",
468 + " </tr>\n",
469 + " <tr>\n",
470 + " <th>333250</th>\n",
471 + " <td>[1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0...</td>\n",
472 + " <td>[497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0...</td>\n",
473 + " <td>[339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255....</td>\n",
474 + " <td>[2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ...</td>\n",
475 + " <td>[848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0...</td>\n",
476 + " <td>[1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0....</td>\n",
477 + " <td>[304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1...</td>\n",
478 + " <td>[305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127...</td>\n",
479 + " <td>[320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 22.0, 34.0, 4...</td>\n",
480 + " <td>[1264.0, 8.0, 0.0, 0.0, 0.0, 128.0, 0.0, 105.0...</td>\n",
481 + " <td>[1680.0, 8.0, 0.0, 0.0, 1.0, 0.0, 160.0, 34.0,...</td>\n",
482 + " </tr>\n",
483 + " </tbody>\n",
484 + "</table>\n",
485 + "<p>333251 rows × 11 columns</p>\n",
486 + "</div>"
487 + ],
488 + "text/plain": [
489 + " 0 \\\n",
490 + "0 [790.0, 8.0, 5.0, 33.0, 104.0, 9.0, 33.0, 33.0... \n",
491 + "1 [399.0, 8.0, 254.0, 91.0, 0.0, 0.0, 0.0, 60.0,... \n",
492 + "2 [608.0, 8.0, 25.0, 33.0, 34.0, 48.0, 8.0, 142.... \n",
493 + "3 [672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2... \n",
494 + "4 [809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3... \n",
495 + "... ... \n",
496 + "333246 [809.0, 8.0, 220.0, 183.0, 127.0, 20.0, 17.0, ... \n",
497 + "333247 [880.0, 8.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
498 + "333248 [1072.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
499 + "333249 [1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138... \n",
500 + "333250 [1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0... \n",
501 + "\n",
502 + " 1 \\\n",
503 + "0 [399.0, 8.0, 254.0, 91.0, 0.0, 0.0, 0.0, 60.0,... \n",
504 + "1 [608.0, 8.0, 25.0, 33.0, 34.0, 48.0, 8.0, 142.... \n",
505 + "2 [672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2... \n",
506 + "3 [809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3... \n",
507 + "4 [1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0... \n",
508 + "... ... \n",
509 + "333246 [880.0, 8.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
510 + "333247 [1072.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
511 + "333248 [1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138... \n",
512 + "333249 [1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0... \n",
513 + "333250 [497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0... \n",
514 + "\n",
515 + " 2 \\\n",
516 + "0 [608.0, 8.0, 25.0, 33.0, 34.0, 48.0, 8.0, 142.... \n",
517 + "1 [672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2... \n",
518 + "2 [809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3... \n",
519 + "3 [1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0... \n",
520 + "4 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,... \n",
521 + "... ... \n",
522 + "333246 [1072.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
523 + "333247 [1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138... \n",
524 + "333248 [1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0... \n",
525 + "333249 [497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0... \n",
526 + "333250 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
527 + "\n",
528 + " 3 \\\n",
529 + "0 [672.0, 8.0, 100.0, 0.0, 154.0, 29.0, 151.0, 2... \n",
530 + "1 [809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3... \n",
531 + "2 [1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0... \n",
532 + "3 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,... \n",
533 + "4 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
534 + "... ... \n",
535 + "333246 [1088.0, 8.0, 255.0, 0.0, 0.0, 0.0, 255.0, 138... \n",
536 + "333247 [1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0... \n",
537 + "333248 [497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0... \n",
538 + "333249 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
539 + "333250 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ... \n",
540 + "\n",
541 + " 4 \\\n",
542 + "0 [809.0, 8.0, 64.0, 187.0, 127.0, 20.0, 17.0, 3... \n",
543 + "1 [1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0... \n",
544 + "2 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,... \n",
545 + "3 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
546 + "4 [704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
547 + "... ... \n",
548 + "333246 [1201.0, 8.0, 41.0, 39.0, 39.0, 35.0, 0.0, 0.0... \n",
549 + "333247 [497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0... \n",
550 + "333248 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
551 + "333249 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ... \n",
552 + "333250 [848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0... \n",
553 + "\n",
554 + " 5 \\\n",
555 + "0 [1349.0, 8.0, 216.0, 0.0, 0.0, 138.0, 0.0, 0.0... \n",
556 + "1 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,... \n",
557 + "2 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
558 + "3 [704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
559 + "4 [304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128... \n",
560 + "... ... \n",
561 + "333246 [497.0, 8.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0... \n",
562 + "333247 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
563 + "333248 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ... \n",
564 + "333249 [848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0... \n",
565 + "333250 [1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0.... \n",
566 + "\n",
567 + " 6 \\\n",
568 + "0 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 11.0,... \n",
569 + "1 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
570 + "2 [704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
571 + "3 [304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128... \n",
572 + "4 [305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127... \n",
573 + "... ... \n",
574 + "333246 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
575 + "333247 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ... \n",
576 + "333248 [848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0... \n",
577 + "333249 [1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0.... \n",
578 + "333250 [304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1... \n",
579 + "\n",
580 + " 7 \\\n",
581 + "0 [339.0, 8.0, 0.0, 33.0, 16.0, 255.0, 0.0, 255.... \n",
582 + "1 [704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
583 + "2 [304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128... \n",
584 + "3 [305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127... \n",
585 + "4 [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43... \n",
586 + "... ... \n",
587 + "333246 [2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, ... \n",
588 + "333247 [848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0... \n",
589 + "333248 [1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0.... \n",
590 + "333249 [304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1... \n",
591 + "333250 [305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127... \n",
592 + "\n",
593 + " 8 \\\n",
594 + "0 [704.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
595 + "1 [304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128... \n",
596 + "2 [305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127... \n",
597 + "3 [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43... \n",
598 + "4 [848.0, 8.0, 5.0, 32.0, 20.0, 104.0, 119.0, 0.... \n",
599 + "... ... \n",
600 + "333246 [848.0, 8.0, 5.0, 32.0, 164.0, 104.0, 118.0, 0... \n",
601 + "333247 [1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0.... \n",
602 + "333248 [304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1... \n",
603 + "333249 [305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127... \n",
604 + "333250 [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 22.0, 34.0, 4... \n",
605 + "\n",
606 + " 9 \\\n",
607 + "0 [304.0, 8.0, 8.0, 128.0, 0.0, 255.0, 49.0, 128... \n",
608 + "1 [305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127... \n",
609 + "2 [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43... \n",
610 + "3 [848.0, 8.0, 5.0, 32.0, 20.0, 104.0, 119.0, 0.... \n",
611 + "4 [1087.0, 8.0, 0.0, 64.0, 96.0, 255.0, 126.0, 2... \n",
612 + "... ... \n",
613 + "333246 [1349.0, 8.0, 216.0, 82.0, 0.0, 139.0, 0.0, 0.... \n",
614 + "333247 [304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1... \n",
615 + "333248 [305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127... \n",
616 + "333249 [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 22.0, 34.0, 4... \n",
617 + "333250 [1264.0, 8.0, 0.0, 0.0, 0.0, 128.0, 0.0, 105.0... \n",
618 + "\n",
619 + " 10 \n",
620 + "0 [305.0, 8.0, 229.0, 127.0, 0.0, 0.0, 72.0, 127... \n",
621 + "1 [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 34.0, 43... \n",
622 + "2 [848.0, 8.0, 5.0, 32.0, 20.0, 104.0, 119.0, 0.... \n",
623 + "3 [1087.0, 8.0, 0.0, 64.0, 96.0, 255.0, 126.0, 2... \n",
624 + "4 [880.0, 8.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.... \n",
625 + "... ... \n",
626 + "333246 [304.0, 8.0, 17.0, 128.0, 0.0, 255.0, 251.0, 1... \n",
627 + "333247 [305.0, 8.0, 233.0, 127.0, 0.0, 0.0, 63.0, 127... \n",
628 + "333248 [320.0, 8.0, 0.0, 0.0, 0.0, 0.0, 22.0, 34.0, 4... \n",
629 + "333249 [1264.0, 8.0, 0.0, 0.0, 0.0, 128.0, 0.0, 105.0... \n",
630 + "333250 [1680.0, 8.0, 0.0, 0.0, 1.0, 0.0, 160.0, 34.0,... \n",
631 + "\n",
632 + "[333251 rows x 11 columns]"
633 + ]
634 + },
635 + "execution_count": 211,
636 + "metadata": {},
637 + "output_type": "execute_result"
638 + }
639 + ],
640 + "source": [
641 + "df"
642 + ]
643 + },
644 + {
645 + "cell_type": "code",
646 + "execution_count": 406,
647 + "metadata": {},
648 + "outputs": [
649 + {
650 + "name": "stdout",
651 + "output_type": "stream",
652 + "text": [
653 + "(1099725, 11, 11)\n"
654 + ]
655 + }
656 + ],
657 + "source": [
658 + "print(x_test.shape)"
659 + ]
660 + },
661 + {
662 + "cell_type": "code",
663 + "execution_count": 358,
664 + "metadata": {},
665 + "outputs": [],
666 + "source": [
667 + "# Model\n",
668 + "from keras.models import Sequential\n",
669 + "from keras.layers import Dense, LSTM, Conv1D, Dropout, GlobalAveragePooling1D, MaxPooling1D\n",
670 + "from keras.utils import np_utils\n",
671 + "from keras.layers.normalization import BatchNormalization"
672 + ]
673 + },
674 + {
675 + "cell_type": "code",
676 + "execution_count": 407,
677 + "metadata": {},
678 + "outputs": [
679 + {
680 + "name": "stdout",
681 + "output_type": "stream",
682 + "text": [
683 + "Model: \"sequential_53\"\n",
684 + "_________________________________________________________________\n",
685 + "Layer (type) Output Shape Param # \n",
686 + "=================================================================\n",
687 + "conv1d_99 (Conv1D) (None, 9, 64) 2176 \n",
688 + "_________________________________________________________________\n",
689 + "global_average_pooling1d_24 (None, 64) 0 \n",
690 + "_________________________________________________________________\n",
691 + "dropout_13 (Dropout) (None, 64) 0 \n",
692 + "_________________________________________________________________\n",
693 + "dense_35 (Dense) (None, 1) 65 \n",
694 + "=================================================================\n",
695 + "Total params: 2,241\n",
696 + "Trainable params: 2,241\n",
697 + "Non-trainable params: 0\n",
698 + "_________________________________________________________________\n"
699 + ]
700 + }
701 + ],
702 + "source": [
703 + "model = Sequential()\n",
704 + "model.add(Conv1D(64, 3, input_shape=(11, 11), activation='relu'))\n",
705 + "#model.add(Conv1D(64, 3, activation='relu'))\n",
706 + "#model.add(MaxPooling1D(2))\n",
707 + "#model.add(Conv1D(128, 2, activation='relu'))\n",
708 + "#model.add(Conv1D(128, 2, activation='relu'))\n",
709 + "model.add(GlobalAveragePooling1D())\n",
710 + "model.add(Dropout(0.5))\n",
711 + "model.add(Dense(1, activation='sigmoid'))\n",
712 + "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n",
713 + "model.summary()"
714 + ]
715 + },
716 + {
717 + "cell_type": "code",
718 + "execution_count": 408,
719 + "metadata": {},
720 + "outputs": [
721 + {
722 + "name": "stdout",
723 + "output_type": "stream",
724 + "text": [
725 + "Epoch 1/10\n",
726 + "25661/25661 [==============================] - 33s 1ms/step - loss: 0.0926 - accuracy: 0.9975 - val_loss: 0.0021 - val_accuracy: 0.9997\n",
727 + "Epoch 2/10\n",
728 + "25661/25661 [==============================] - 32s 1ms/step - loss: 0.0019 - accuracy: 0.9997 - val_loss: 8.2212e-04 - val_accuracy: 0.9998\n",
729 + "Epoch 3/10\n",
730 + "25661/25661 [==============================] - 33s 1ms/step - loss: 0.0012 - accuracy: 0.9998 - val_loss: 5.0894e-04 - val_accuracy: 0.9999\n",
731 + "Epoch 4/10\n",
732 + "25661/25661 [==============================] - 33s 1ms/step - loss: 8.3683e-04 - accuracy: 0.9999 - val_loss: 4.0702e-04 - val_accuracy: 0.9999\n",
733 + "Epoch 5/10\n",
734 + "25661/25661 [==============================] - 32s 1ms/step - loss: 6.7326e-04 - accuracy: 0.9999 - val_loss: 1.0525e-04 - val_accuracy: 1.0000\n",
735 + "Epoch 6/10\n",
736 + "25661/25661 [==============================] - 33s 1ms/step - loss: 4.6771e-04 - accuracy: 0.9999 - val_loss: 8.2441e-05 - val_accuracy: 1.0000\n",
737 + "Epoch 7/10\n",
738 + "25661/25661 [==============================] - 32s 1ms/step - loss: 5.0164e-04 - accuracy: 0.9999 - val_loss: 2.7738e-05 - val_accuracy: 1.0000\n",
739 + "Epoch 8/10\n",
740 + "25661/25661 [==============================] - 32s 1ms/step - loss: 4.3489e-04 - accuracy: 0.9999 - val_loss: 5.0454e-05 - val_accuracy: 1.0000\n",
741 + "Epoch 9/10\n",
742 + "25661/25661 [==============================] - 32s 1ms/step - loss: 3.8201e-04 - accuracy: 0.9999 - val_loss: 3.5519e-05 - val_accuracy: 1.0000\n",
743 + "Epoch 10/10\n",
744 + "25661/25661 [==============================] - 32s 1ms/step - loss: 2.5039e-04 - accuracy: 1.0000 - val_loss: 3.4685e-05 - val_accuracy: 1.0000\n"
745 + ]
746 + }
747 + ],
748 + "source": [
749 + "history = model.fit(x_train, y_train, batch_size=100, epochs=10,validation_data=(x_test, y_test))"
750 + ]
751 + },
752 + {
753 + "cell_type": "code",
754 + "execution_count": null,
755 + "metadata": {},
756 + "outputs": [],
757 + "source": []
758 + }
759 + ],
760 + "metadata": {
761 + "kernelspec": {
762 + "display_name": "Python 3",
763 + "language": "python",
764 + "name": "python3"
765 + },
766 + "language_info": {
767 + "codemirror_mode": {
768 + "name": "ipython",
769 + "version": 3
770 + },
771 + "file_extension": ".py",
772 + "mimetype": "text/x-python",
773 + "name": "python",
774 + "nbconvert_exporter": "python",
775 + "pygments_lexer": "ipython3",
776 + "version": "3.8.5"
777 + }
778 + },
779 + "nbformat": 4,
780 + "nbformat_minor": 4
781 +}
1 +{
2 + "cells": [
3 + {
4 + "cell_type": "code",
5 + "execution_count": 1,
6 + "metadata": {},
7 + "outputs": [],
8 + "source": [
9 + "import csv\n",
10 + "import numpy as np\n",
11 + "import os\n",
12 + "import pandas as pd"
13 + ]
14 + },
15 + {
16 + "cell_type": "code",
17 + "execution_count": 5,
18 + "metadata": {},
19 + "outputs": [],
20 + "source": [
21 + "def Preprocess(dir_) :\n",
22 + " f1 = open(dir_, 'r')\n",
23 + " fr = csv.reader(f1)\n",
24 + " d = [] \n",
25 + " for line in fr :\n",
26 + " l = []\n",
27 + " l.append(line[0])\n",
28 + " l.append(line[1])\n",
29 + " l.extend(line[2:11])\n",
30 + " \n",
31 + " d.append(l)\n",
32 + " return d\n",
33 + "\n",
34 + "data = Preprocess('Fuzzy.csv')"
35 + ]
36 + },
37 + {
38 + "cell_type": "code",
39 + "execution_count": 6,
40 + "metadata": {},
41 + "outputs": [],
42 + "source": [
43 + "data = data[:3838857]"
44 + ]
45 + },
46 + {
47 + "cell_type": "code",
48 + "execution_count": 7,
49 + "metadata": {},
50 + "outputs": [
51 + {
52 + "name": "stdout",
53 + "output_type": "stream",
54 + "text": [
55 + "['1349', '8', '216', '0', '0', '138', '0', '0', '0', '0', '1']\n"
56 + ]
57 + }
58 + ],
59 + "source": [
60 + "print(data[0])"
61 + ]
62 + },
63 + {
64 + "cell_type": "code",
65 + "execution_count": 8,
66 + "metadata": {},
67 + "outputs": [],
68 + "source": [
69 + "def createsequence(data) :\n",
70 + " arr = []\n",
71 + " for i in range(0, len(data)-11): \n",
72 + " d = []\n",
73 + " t = []\n",
74 + " for x in range(i, i+11):\n",
75 + " t = list(map(float, data[x]))\n",
76 + " #t = np.array(t, dtype=np.float32)\n",
77 + " #t = tf.convert_to_tensor(t)\n",
78 + " d.append(t)\n",
79 + " arr.append(d)\n",
80 + " return arr\n",
81 + "\n",
82 + "resdata = createsequence(data)"
83 + ]
84 + },
85 + {
86 + "cell_type": "code",
87 + "execution_count": 9,
88 + "metadata": {},
89 + "outputs": [],
90 + "source": [
91 + "def check(data):\n",
92 + " check = []\n",
93 + " \n",
94 + " for e in data :\n",
95 + " flag = False\n",
96 + " for i in e :\n",
97 + " if i[-1] == 0 :\n",
98 + " check.append(0)\n",
99 + " flag = True\n",
100 + " break\n",
101 + " if flag == False :\n",
102 + " check.append(1)\n",
103 + " \n",
104 + " return check\n",
105 + "\n",
106 + "checkblock = check(resdata)"
107 + ]
108 + },
109 + {
110 + "cell_type": "code",
111 + "execution_count": 10,
112 + "metadata": {},
113 + "outputs": [
114 + {
115 + "name": "stdout",
116 + "output_type": "stream",
117 + "text": [
118 + "2582020\n",
119 + "1256826\n"
120 + ]
121 + }
122 + ],
123 + "source": [
124 + "cnt = 0\n",
125 + "for e in checkblock :\n",
126 + " if e == 1 :\n",
127 + " cnt += 1\n",
128 + "\n",
129 + "print(cnt)\n",
130 + "print(len(checkblock)-cnt)"
131 + ]
132 + },
133 + {
134 + "cell_type": "code",
135 + "execution_count": 31,
136 + "metadata": {},
137 + "outputs": [],
138 + "source": [
139 + "from sklearn.model_selection import train_test_split\n",
140 + "import tensorflow as tf\n",
141 + "import pandas as pd\n",
142 + "import numpy as np"
143 + ]
144 + },
145 + {
146 + "cell_type": "code",
147 + "execution_count": 32,
148 + "metadata": {},
149 + "outputs": [],
150 + "source": [
151 + "df = pd.DataFrame(resdata)\n",
152 + "n = len(df)\n",
153 + "\n",
154 + "X_train = df.iloc[0:n, 0:11].values.tolist()\n",
155 + "Y_train = checkblock\n",
156 + "\n",
157 + "X_train = np.asarray(X_train)\n",
158 + "Y_train = np.asarray(Y_train)\n",
159 + "\n",
160 + "x_train, x_test, y_train, y_test = train_test_split(X_train, Y_train, test_size=0.3, random_state=321)"
161 + ]
162 + },
163 + {
164 + "cell_type": "code",
165 + "execution_count": 33,
166 + "metadata": {},
167 + "outputs": [],
168 + "source": [
169 + "for i in x_train:\n",
170 + " for j in i:\n",
171 + " if len(j) != 11:\n",
172 + " print(j)"
173 + ]
174 + },
175 + {
176 + "cell_type": "code",
177 + "execution_count": 34,
178 + "metadata": {},
179 + "outputs": [
180 + {
181 + "name": "stdout",
182 + "output_type": "stream",
183 + "text": [
184 + "(1151654, 11, 11)\n"
185 + ]
186 + }
187 + ],
188 + "source": [
189 + "print(x_test.shape)"
190 + ]
191 + },
192 + {
193 + "cell_type": "code",
194 + "execution_count": 1,
195 + "metadata": {},
196 + "outputs": [],
197 + "source": [
198 + "# Model\n",
199 + "from keras.models import Sequential\n",
200 + "from keras.layers import Dense, LSTM, Conv1D, Dropout, GlobalAveragePooling1D, MaxPooling1D\n",
201 + "from keras.utils import np_utils\n",
202 + "from tensorflow.keras.utils import plot_model\n",
203 + "from keras.layers.normalization import BatchNormalization"
204 + ]
205 + },
206 + {
207 + "cell_type": "code",
208 + "execution_count": 2,
209 + "metadata": {},
210 + "outputs": [
211 + {
212 + "name": "stdout",
213 + "output_type": "stream",
214 + "text": [
215 + "Model: \"sequential\"\n",
216 + "_________________________________________________________________\n",
217 + "Layer (type) Output Shape Param # \n",
218 + "=================================================================\n",
219 + "conv1d (Conv1D) (None, 9, 64) 2176 \n",
220 + "_________________________________________________________________\n",
221 + "global_average_pooling1d (Gl (None, 64) 0 \n",
222 + "_________________________________________________________________\n",
223 + "dropout (Dropout) (None, 64) 0 \n",
224 + "_________________________________________________________________\n",
225 + "dense (Dense) (None, 1) 65 \n",
226 + "=================================================================\n",
227 + "Total params: 2,241\n",
228 + "Trainable params: 2,241\n",
229 + "Non-trainable params: 0\n",
230 + "_________________________________________________________________\n",
231 + "('Failed to import pydot. You must `pip install pydot` and install graphviz (https://graphviz.gitlab.io/download/), ', 'for `pydotprint` to work.')\n"
232 + ]
233 + }
234 + ],
235 + "source": [
236 + "model = Sequential()\n",
237 + "model.add(Conv1D(64, 3, input_shape=(11, 11), activation='relu'))\n",
238 + "model.add(GlobalAveragePooling1D())\n",
239 + "model.add(Dropout(0.5))\n",
240 + "model.add(Dense(1, activation='sigmoid'))\n",
241 + "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n",
242 + "model.summary()\n",
243 + "\n",
244 + "plot_model(model, to_file='CNNmodel.png')"
245 + ]
246 + },
247 + {
248 + "cell_type": "code",
249 + "execution_count": 37,
250 + "metadata": {},
251 + "outputs": [
252 + {
253 + "name": "stdout",
254 + "output_type": "stream",
255 + "text": [
256 + "Epoch 1/10\n",
257 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.1271 - accuracy: 0.9865 - val_loss: 0.0066 - val_accuracy: 0.9983\n",
258 + "Epoch 2/10\n",
259 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0129 - accuracy: 0.9969 - val_loss: 0.0060 - val_accuracy: 0.9986\n",
260 + "Epoch 3/10\n",
261 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0107 - accuracy: 0.9975 - val_loss: 0.0046 - val_accuracy: 0.9990\n",
262 + "Epoch 4/10\n",
263 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0093 - accuracy: 0.9979 - val_loss: 0.0037 - val_accuracy: 0.9993\n",
264 + "Epoch 5/10\n",
265 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0081 - accuracy: 0.9982 - val_loss: 0.0034 - val_accuracy: 0.9993\n",
266 + "Epoch 6/10\n",
267 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0074 - accuracy: 0.9984 - val_loss: 0.0042 - val_accuracy: 0.9991\n",
268 + "Epoch 7/10\n",
269 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0070 - accuracy: 0.9985 - val_loss: 0.0039 - val_accuracy: 0.9992\n",
270 + "Epoch 8/10\n",
271 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0065 - accuracy: 0.9987 - val_loss: 0.0033 - val_accuracy: 0.9994\n",
272 + "Epoch 9/10\n",
273 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0063 - accuracy: 0.9987 - val_loss: 0.0032 - val_accuracy: 0.9994\n",
274 + "Epoch 10/10\n",
275 + "26872/26872 [==============================] - 31s 1ms/step - loss: 0.0058 - accuracy: 0.9988 - val_loss: 0.0031 - val_accuracy: 0.9994\n"
276 + ]
277 + }
278 + ],
279 + "source": [
280 + "history = model.fit(x_train, y_train, batch_size=100, epochs=10,validation_data=(x_test, y_test))"
281 + ]
282 + },
283 + {
284 + "cell_type": "code",
285 + "execution_count": 38,
286 + "metadata": {
287 + "scrolled": true
288 + },
289 + "outputs": [
290 + {
291 + "name": "stdout",
292 + "output_type": "stream",
293 + "text": [
294 + "35990/35990 [==============================] - 13s 361us/step - loss: 0.0031 - accuracy: 0.9994\n",
295 + "\n",
296 + " Test accuracy : 0.9994\n"
297 + ]
298 + }
299 + ],
300 + "source": [
301 + "print(\"\\n Test accuracy : %.4f\"%(model.evaluate(x_test, y_test)[1]))"
302 + ]
303 + },
304 + {
305 + "cell_type": "code",
306 + "execution_count": null,
307 + "metadata": {},
308 + "outputs": [],
309 + "source": []
310 + }
311 + ],
312 + "metadata": {
313 + "kernelspec": {
314 + "display_name": "Python 3",
315 + "language": "python",
316 + "name": "python3"
317 + },
318 + "language_info": {
319 + "codemirror_mode": {
320 + "name": "ipython",
321 + "version": 3
322 + },
323 + "file_extension": ".py",
324 + "mimetype": "text/x-python",
325 + "name": "python",
326 + "nbconvert_exporter": "python",
327 + "pygments_lexer": "ipython3",
328 + "version": "3.8.5"
329 + }
330 + },
331 + "nbformat": 4,
332 + "nbformat_minor": 4
333 +}
1 +{
2 + "cells": [
3 + {
4 + "cell_type": "code",
5 + "execution_count": 4,
6 + "metadata": {},
7 + "outputs": [],
8 + "source": [
9 + "import csv\n",
10 + "import numpy as np\n",
11 + "import os\n",
12 + "import pandas as pd\n",
13 + "import import_ipynb\n",
14 + "import DoS_CNN as dos"
15 + ]
16 + },
17 + {
18 + "cell_type": "code",
19 + "execution_count": null,
20 + "metadata": {},
21 + "outputs": [],
22 + "source": [
23 + "dos.transferData('gear_dataset.csv', 'Spoofing.csv')"
24 + ]
25 + },
26 + {
27 + "cell_type": "code",
28 + "execution_count": 5,
29 + "metadata": {},
30 + "outputs": [],
31 + "source": [
32 + "data = dos.Preprocess('Spoofing.csv')"
33 + ]
34 + },
35 + {
36 + "cell_type": "code",
37 + "execution_count": 10,
38 + "metadata": {},
39 + "outputs": [
40 + {
41 + "data": {
42 + "text/plain": [
43 + "['320', '8', '0', '0', '0', '0', '16', '41', '42', '36', '1']"
44 + ]
45 + },
46 + "execution_count": 10,
47 + "metadata": {},
48 + "output_type": "execute_result"
49 + }
50 + ],
51 + "source": [
52 + "data[0]"
53 + ]
54 + },
55 + {
56 + "cell_type": "code",
57 + "execution_count": 12,
58 + "metadata": {},
59 + "outputs": [],
60 + "source": [
61 + "def createsequence(data) :\n",
62 + " arr = []\n",
63 + " for i in range(0, len(data)-11): \n",
64 + " d = []\n",
65 + " t = []\n",
66 + " for x in range(i, i+11):\n",
67 + " t = list(map(float, data[x]))\n",
68 + " d.append(t)\n",
69 + " arr.append(d)\n",
70 + " return arr\n",
71 + "\n",
72 + "resdata = createsequence(data)"
73 + ]
74 + },
75 + {
76 + "cell_type": "code",
77 + "execution_count": 13,
78 + "metadata": {},
79 + "outputs": [],
80 + "source": [
81 + "def check(data):\n",
82 + " check = []\n",
83 + " \n",
84 + " for e in data :\n",
85 + " flag = False\n",
86 + " for i in e :\n",
87 + " if i[-1] == 0 :\n",
88 + " check.append(0)\n",
89 + " flag = True\n",
90 + " break\n",
91 + " if flag == False :\n",
92 + " check.append(1)\n",
93 + " \n",
94 + " return check\n",
95 + "\n",
96 + "checkblock = check(resdata)"
97 + ]
98 + },
99 + {
100 + "cell_type": "code",
101 + "execution_count": 24,
102 + "metadata": {},
103 + "outputs": [
104 + {
105 + "name": "stdout",
106 + "output_type": "stream",
107 + "text": [
108 + "2580434\n",
109 + "1862697\n"
110 + ]
111 + }
112 + ],
113 + "source": [
114 + "cnt = 0 # 1\n",
115 + "for i in checkblock :\n",
116 + " if i == 1 :\n",
117 + " cnt += 1\n",
118 + "print(cnt) # normal message\n",
119 + "print(len(checkblock)-cnt) #abnormal"
120 + ]
121 + },
122 + {
123 + "cell_type": "code",
124 + "execution_count": 15,
125 + "metadata": {},
126 + "outputs": [],
127 + "source": [
128 + "from sklearn.model_selection import train_test_split\n",
129 + "import tensorflow as tf\n",
130 + "import pandas as pd\n",
131 + "import numpy as np"
132 + ]
133 + },
134 + {
135 + "cell_type": "code",
136 + "execution_count": 16,
137 + "metadata": {},
138 + "outputs": [],
139 + "source": [
140 + "df = pd.DataFrame(resdata)\n",
141 + "n = len(df)\n",
142 + "\n",
143 + "X_train = df.iloc[0:n, 0:11].values.tolist()\n",
144 + "Y_train = checkblock\n",
145 + "\n",
146 + "X_train = np.asarray(X_train)\n",
147 + "Y_train = np.asarray(Y_train)\n",
148 + "\n",
149 + "x_train, x_test, y_train, y_test = train_test_split(X_train, Y_train, test_size=0.3, random_state=321)"
150 + ]
151 + },
152 + {
153 + "cell_type": "code",
154 + "execution_count": 17,
155 + "metadata": {},
156 + "outputs": [],
157 + "source": [
158 + "for i in x_train:\n",
159 + " for j in i:\n",
160 + " if len(j) != 11:\n",
161 + " print(j)"
162 + ]
163 + },
164 + {
165 + "cell_type": "code",
166 + "execution_count": 18,
167 + "metadata": {},
168 + "outputs": [
169 + {
170 + "name": "stdout",
171 + "output_type": "stream",
172 + "text": [
173 + "(1332940, 11, 11)\n"
174 + ]
175 + }
176 + ],
177 + "source": [
178 + "print(x_test.shape)"
179 + ]
180 + },
181 + {
182 + "cell_type": "code",
183 + "execution_count": 19,
184 + "metadata": {},
185 + "outputs": [],
186 + "source": [
187 + "# Model\n",
188 + "from keras.models import Sequential\n",
189 + "from keras.layers import Dense, LSTM, Conv1D, Dropout, GlobalAveragePooling1D, MaxPooling1D\n",
190 + "from keras.utils import np_utils\n",
191 + "from keras.layers.normalization import BatchNormalization"
192 + ]
193 + },
194 + {
195 + "cell_type": "code",
196 + "execution_count": 20,
197 + "metadata": {},
198 + "outputs": [
199 + {
200 + "name": "stdout",
201 + "output_type": "stream",
202 + "text": [
203 + "Model: \"sequential\"\n",
204 + "_________________________________________________________________\n",
205 + "Layer (type) Output Shape Param # \n",
206 + "=================================================================\n",
207 + "conv1d (Conv1D) (None, 9, 64) 2176 \n",
208 + "_________________________________________________________________\n",
209 + "global_average_pooling1d (Gl (None, 64) 0 \n",
210 + "_________________________________________________________________\n",
211 + "dropout (Dropout) (None, 64) 0 \n",
212 + "_________________________________________________________________\n",
213 + "dense (Dense) (None, 1) 65 \n",
214 + "=================================================================\n",
215 + "Total params: 2,241\n",
216 + "Trainable params: 2,241\n",
217 + "Non-trainable params: 0\n",
218 + "_________________________________________________________________\n"
219 + ]
220 + }
221 + ],
222 + "source": [
223 + "model = Sequential()\n",
224 + "model.add(Conv1D(64, 3, input_shape=(11, 11), activation='relu'))\n",
225 + "model.add(GlobalAveragePooling1D())\n",
226 + "model.add(Dropout(0.5))\n",
227 + "model.add(Dense(1, activation='sigmoid'))\n",
228 + "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n",
229 + "model.summary()"
230 + ]
231 + },
232 + {
233 + "cell_type": "code",
234 + "execution_count": 21,
235 + "metadata": {},
236 + "outputs": [
237 + {
238 + "name": "stdout",
239 + "output_type": "stream",
240 + "text": [
241 + "Epoch 1/10\n",
242 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0739 - accuracy: 0.9938 - val_loss: 6.8605e-04 - val_accuracy: 1.0000\n",
243 + "Epoch 2/10\n",
244 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0029 - accuracy: 0.9995 - val_loss: 2.1258e-04 - val_accuracy: 1.0000\n",
245 + "Epoch 3/10\n",
246 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0030 - accuracy: 0.9995 - val_loss: 2.5308e-04 - val_accuracy: 1.0000\n",
247 + "Epoch 4/10\n",
248 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0025 - accuracy: 0.9996 - val_loss: 9.4737e-05 - val_accuracy: 1.0000\n",
249 + "Epoch 5/10\n",
250 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0031 - accuracy: 0.9995 - val_loss: 4.3025e-04 - val_accuracy: 1.0000\n",
251 + "Epoch 6/10\n",
252 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0022 - accuracy: 0.9997 - val_loss: 6.6521e-05 - val_accuracy: 1.0000\n",
253 + "Epoch 7/10\n",
254 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0020 - accuracy: 0.9997 - val_loss: 7.7669e-05 - val_accuracy: 1.0000\n",
255 + "Epoch 8/10\n",
256 + "31102/31102 [==============================] - 36s 1ms/step - loss: 0.0019 - accuracy: 0.9997 - val_loss: 1.3602e-04 - val_accuracy: 1.0000\n",
257 + "Epoch 9/10\n",
258 + "31102/31102 [==============================] - 35s 1ms/step - loss: 0.0018 - accuracy: 0.9997 - val_loss: 3.1278e-05 - val_accuracy: 1.0000\n",
259 + "Epoch 10/10\n",
260 + "31102/31102 [==============================] - 35s 1ms/step - loss: 0.0017 - accuracy: 0.9998 - val_loss: 3.1277e-05 - val_accuracy: 1.0000\n"
261 + ]
262 + }
263 + ],
264 + "source": [
265 + "history = model.fit(x_train, y_train, batch_size=100, epochs=10,validation_data=(x_test, y_test))"
266 + ]
267 + },
268 + {
269 + "cell_type": "code",
270 + "execution_count": 22,
271 + "metadata": {
272 + "scrolled": true
273 + },
274 + "outputs": [
275 + {
276 + "name": "stdout",
277 + "output_type": "stream",
278 + "text": [
279 + "41655/41655 [==============================] - 15s 352us/step - loss: 3.1277e-05 - accuracy: 1.0000\n",
280 + "\n",
281 + " Test accuracy : 1.0000\n"
282 + ]
283 + }
284 + ],
285 + "source": [
286 + "print(\"\\n Test accuracy : %.4f\"%(model.evaluate(x_test, y_test)[1]))"
287 + ]
288 + },
289 + {
290 + "cell_type": "code",
291 + "execution_count": null,
292 + "metadata": {},
293 + "outputs": [],
294 + "source": []
295 + }
296 + ],
297 + "metadata": {
298 + "kernelspec": {
299 + "display_name": "Python 3",
300 + "language": "python",
301 + "name": "python3"
302 + },
303 + "language_info": {
304 + "codemirror_mode": {
305 + "name": "ipython",
306 + "version": 3
307 + },
308 + "file_extension": ".py",
309 + "mimetype": "text/x-python",
310 + "name": "python",
311 + "nbconvert_exporter": "python",
312 + "pygments_lexer": "ipython3",
313 + "version": "3.8.5"
314 + }
315 + },
316 + "nbformat": 4,
317 + "nbformat_minor": 4
318 +}