|
@@ -1,14 +1,16 @@
|
|
|
import tensorflow as tf
|
|
import tensorflow as tf
|
|
|
import os
|
|
import os
|
|
|
-from sklearn.model_selection import KFold
|
|
|
|
|
-import sklearn.linear_model
|
|
|
|
|
-import sklearn.metrics
|
|
|
|
|
import keras
|
|
import keras
|
|
|
from keras.models import Sequential
|
|
from keras.models import Sequential
|
|
|
from keras.layers import Dense, Activation
|
|
from keras.layers import Dense, Activation
|
|
|
import numpy as np
|
|
import numpy as np
|
|
|
import pandas as pd
|
|
import pandas as pd
|
|
|
import typing
|
|
import typing
|
|
|
|
|
+import signal
|
|
|
|
|
+import heapq
|
|
|
|
|
+
|
|
|
|
|
+resheap = []
|
|
|
|
|
+
|
|
|
try:
|
|
try:
|
|
|
import sample
|
|
import sample
|
|
|
except ImportError:
|
|
except ImportError:
|
|
@@ -20,7 +22,7 @@ except ImportError:
|
|
|
DEFAULT_FEATURES = ["average_iat", "high.avg_burst_size", "high.burst_count"]
|
|
DEFAULT_FEATURES = ["average_iat", "high.avg_burst_size", "high.burst_count"]
|
|
|
|
|
|
|
|
|
|
|
|
|
-def main(options: list):
|
|
|
|
|
|
|
+def main(options: list, hparams: tuple):
|
|
|
args = parse_args(options)
|
|
args = parse_args(options)
|
|
|
try:
|
|
try:
|
|
|
import cPickle as pickle
|
|
import cPickle as pickle
|
|
@@ -50,30 +52,25 @@ def main(options: list):
|
|
|
labelsshuffled = trainingdf['0_x']
|
|
labelsshuffled = trainingdf['0_x']
|
|
|
datashuffled = trainingdf.drop(['0_x'], axis=1)
|
|
datashuffled = trainingdf.drop(['0_x'], axis=1)
|
|
|
|
|
|
|
|
- classify(num_users, datashuffled.to_numpy()[:-20], labelsshuffled.to_numpy()[:-20], datashuffled.to_numpy()[-20:], labelsshuffled.to_numpy()[-20:])
|
|
|
|
|
- '''if args.graph_top:
|
|
|
|
|
- graph_top(args, data[s], labels[s])
|
|
|
|
|
- if args.graph_k:
|
|
|
|
|
- graph_k(args, data[s], labels[s])
|
|
|
|
|
- if args.graph_weights:
|
|
|
|
|
- graph_w(args, data[s], labels[s])
|
|
|
|
|
- res, matrix = kNearestNeighbors(data[s], labels[s], n=args.folds,
|
|
|
|
|
- verbose=args.verbose, guesses=args.top,
|
|
|
|
|
- k=args.k_neighbors, weights=args.weight)'''
|
|
|
|
|
- #print("Overall Accuracy: %f" % np.average(res))
|
|
|
|
|
- #if args.p_value:
|
|
|
|
|
- # print("P-Value: %f" % t_test(res, num_users)[1] / 2)
|
|
|
|
|
- #if args.graph:
|
|
|
|
|
- # gen_confusion_matrix(matrix, labels)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def classify(classifications: int, sampleData: list, labels: list, testdata: list, testlabels: list):
|
|
|
|
|
|
|
+ tempr = []
|
|
|
|
|
+ for i in range(5):
|
|
|
|
|
+ tempr.append(classify(num_users, datashuffled.to_numpy()[:-20], labelsshuffled.to_numpy()[:-20],
|
|
|
|
|
+ datashuffled.to_numpy()[-20:], labelsshuffled.to_numpy()[-20:], hparams[0], hparams[1]))
|
|
|
|
|
+ acc = 0
|
|
|
|
|
+ for z in tempr:
|
|
|
|
|
+ acc += z[1]
|
|
|
|
|
+ acc = acc / 5
|
|
|
|
|
+ return acc
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def classify(classifications: int, sampleData: list, labels: list, testdata: list, testlabels: list, activ: str, hiddenlayers: int):
|
|
|
#print(classifications)
|
|
#print(classifications)
|
|
|
model = Sequential()
|
|
model = Sequential()
|
|
|
model.add(Dense(len(sampleData[0]), input_dim=len(sampleData[0])))
|
|
model.add(Dense(len(sampleData[0]), input_dim=len(sampleData[0])))
|
|
|
- model.add(Activation('sigmoid'))
|
|
|
|
|
- model.add(Dense(len(sampleData[0])//2))
|
|
|
|
|
- model.add(Activation('sigmoid'))
|
|
|
|
|
|
|
+ model.add(Activation(activ))
|
|
|
|
|
+ for i in range(hiddenlayers):
|
|
|
|
|
+ model.add(Dense(len(sampleData[0])//2))
|
|
|
|
|
+ model.add(Activation(activ))
|
|
|
model.add(Dense(classifications))
|
|
model.add(Dense(classifications))
|
|
|
model.add(Activation('relu'))
|
|
model.add(Activation('relu'))
|
|
|
model.compile(optimizer='rmsprop',
|
|
model.compile(optimizer='rmsprop',
|
|
@@ -84,6 +81,7 @@ def classify(classifications: int, sampleData: list, labels: list, testdata: lis
|
|
|
one_hot_test_labels = keras.utils.to_categorical(testlabels, num_classes=classifications)
|
|
one_hot_test_labels = keras.utils.to_categorical(testlabels, num_classes=classifications)
|
|
|
results = model.evaluate(testdata, one_hot_test_labels, batch_size=128)
|
|
results = model.evaluate(testdata, one_hot_test_labels, batch_size=128)
|
|
|
print(results)
|
|
print(results)
|
|
|
|
|
+ return results
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -140,12 +138,43 @@ def parse_args(args: list):
|
|
|
return parser.parse_args(args)
|
|
return parser.parse_args(args)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+def receiveSignal(signalNumber, frame):
|
|
|
|
|
+ print('Received:', signalNumber)
|
|
|
|
|
+ f = open("interrupt.txt", 'w+')
|
|
|
|
|
+ for item in resheap:
|
|
|
|
|
+ f.write(str(item))
|
|
|
|
|
+ f.close()
|
|
|
|
|
+ return
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
if __name__ == '__main__':
|
|
|
import sys
|
|
import sys
|
|
|
|
|
|
|
|
|
|
+ signal.signal(signal.SIGHUP, receiveSignal)
|
|
|
|
|
+ signal.signal(signal.SIGINT, receiveSignal)
|
|
|
|
|
+ signal.signal(signal.SIGQUIT, receiveSignal)
|
|
|
|
|
+ signal.signal(signal.SIGILL, receiveSignal)
|
|
|
|
|
+ signal.signal(signal.SIGTRAP, receiveSignal)
|
|
|
|
|
+ signal.signal(signal.SIGABRT, receiveSignal)
|
|
|
|
|
+ signal.signal(signal.SIGBUS, receiveSignal)
|
|
|
|
|
+ signal.signal(signal.SIGFPE, receiveSignal)
|
|
|
|
|
+
|
|
|
|
|
+ params = [('sigmoid', 1), ('relu', 1), ('sigmoid', 2), ('relu', 2), ('exponential', 1), ('exponential', 2)]
|
|
|
|
|
+ outputcounter = 0
|
|
|
|
|
+
|
|
|
for filename in os.listdir('./samples2.0'):
|
|
for filename in os.listdir('./samples2.0'):
|
|
|
print(os.path.join('./samples2.0', filename))
|
|
print(os.path.join('./samples2.0', filename))
|
|
|
- main(["-f*", os.path.join('./samples2.0', filename)])
|
|
|
|
|
- #main(sys.argv[1:])
|
|
|
|
|
- #print(sys.argv[1:])
|
|
|
|
|
- #main(sys.argv[1:])
|
|
|
|
|
|
|
+ if outputcounter > 10:
|
|
|
|
|
+ f = open("tempresults.txt", 'w+')
|
|
|
|
|
+ for item in resheap:
|
|
|
|
|
+ f.write(str(item))
|
|
|
|
|
+ f.close()
|
|
|
|
|
+ outputcounter = 0
|
|
|
|
|
+ for p in params:
|
|
|
|
|
+ temp = main(["-f*", os.path.join('./samples2.0', filename)], p)
|
|
|
|
|
+ print("temp: " + str(temp))
|
|
|
|
|
+ print(resheap)
|
|
|
|
|
+ heapq.heappush(resheap, [temp, filename, p])
|
|
|
|
|
+ if len(resheap) > 100:
|
|
|
|
|
+ heapq.heappop(resheap)
|
|
|
|
|
+ outputcounter += 1
|