2
2
import numpy as np
3
3
import tensorflow as tf
4
4
from sklearn .model_selection import train_test_split
5
+ from time import clock
5
6
6
7
class NetLauncher (object ):
7
8
8
9
def __init__ (self , name_csv = 'feature_importanceRF.csv' , predict_var = 'vmlinux' , drop_feature = True ,
9
10
nb_features = 1000 , learning_rate1 = 0.5 , learning_rate2 = 0.025 , nb_node_layer1 = 200 ,
10
11
nb_node_layer2 = 300 , batch_size = 50 , nb_epochs = 30 , training_size = 0.9 ):
11
-
12
+ self .name_csv = name_csv
13
+ self .nb_features = nb_features
14
+ self .drop_feature = drop_feature
12
15
f = FeaturesLoader (predict_var = predict_var , name_csv = name_csv , nb_features = nb_features , drop_feature = drop_feature )
13
-
14
16
self .features = f .get_selected_features ()
15
-
16
17
self .predict_var = predict_var
17
18
self .learning_rate1 = learning_rate1
18
19
self .learning_rate2 = learning_rate2
@@ -24,7 +25,7 @@ def __init__(self, name_csv = 'feature_importanceRF.csv', predict_var ='vmlinux'
24
25
25
26
def create_train_test_set (self ):
26
27
27
- n = 65000
28
+ n = 92000
28
29
sizes = np .array (self .features [0 :n ][self .predict_var ])
29
30
x_train , x_test , y_train , y_test = train_test_split (self .features .drop (self .predict_var , axis = 1 )[0 :n ], sizes , test_size = 1 - self .training_size )
30
31
@@ -36,12 +37,11 @@ def create_train_test_set(self):
36
37
37
38
return (x_train , y_train , x_test , y_test )
38
39
39
- def compute_tiny (self ):
40
- #, batch_size=20, nb_epochs=5, learning_rate=1000):
41
-
40
+ def compute_tiny (self ):#, batch_size=20, nb_epochs=5, learning_rate=1000):
41
+ e = clock ()
42
42
batch_size = self .batch_size
43
43
nb_epochs = self .nb_epochs
44
- learning_rate = self .learning_rate
44
+ learning_rate = self .learning_rate1
45
45
46
46
training_x , training_y , testing_x , testing_y = self .create_train_test_set ()
47
47
@@ -90,14 +90,20 @@ def compute_tiny(self):
90
90
for i in range (nb_batch_test ):
91
91
mape_test += sess .run (test_cost )
92
92
print ("Test final cost =" , mape_test / nb_batch_test )
93
+ s = clock ()
94
+ self .save_csv (mape_train / nb_batch_train , mape_test / nb_batch_test , s - e )
93
95
return (mape_train / nb_batch_train , mape_test / nb_batch_test )
94
-
96
+
97
+ def save_csv (self , mape_train , mape_test , time ):
98
+ with open ('res.csv' ,'a' ) as fd :
99
+ fd .write ('\n ' + str (self .name_csv ) + ',' + str (self .predict_var ) + ',' + str (self .drop_feature ) + ',' + str (self .nb_features )+ ',' + str (self .learning_rate1 ) + ',' + str (self .learning_rate2 ) + ',' + str (self .nb_node_layer1 ) + ',' + str (self .nb_node_layer2 ) + ',' + str (self .batch_size ) + ',' + str (self .nb_epochs ) + ',' + str (self .training_size ) + ',' + str (mape_train ) + ',' + str (mape_test ) + ',' + str (time ))
100
+
95
101
def compute_small (self ):
96
102
#batch_size=20, nb_epochs=5, learning_rate=10, nb_node_layer1=200):
97
-
103
+ e = clock ()
98
104
batch_size = self .batch_size
99
105
nb_epochs = self .nb_epochs
100
- learning_rate = self .learning_rate
106
+ learning_rate = self .learning_rate1
101
107
nb_node_layer1 = self .nb_node_layer1
102
108
training_x , training_y , testing_x , testing_y = self .create_train_test_set ()
103
109
@@ -153,11 +159,13 @@ def compute_small(self):
153
159
for i in range (nb_batch_test ):
154
160
mape_test += sess .run (test_cost )
155
161
print ("Test final cost =" , mape_test / nb_batch_test )
162
+ s = clock ()
163
+ self .save_csv (mape_train / nb_batch_train , mape_test / nb_batch_test , s - e )
156
164
return (mape_train / nb_batch_train , mape_test / nb_batch_test )
157
165
158
166
159
167
def compute_standard (self ):
160
-
168
+ e = clock ()
161
169
batch_size = self .batch_size
162
170
nb_epochs = self .nb_epochs
163
171
learning_rate1 = self .learning_rate1
@@ -241,11 +249,13 @@ def compute_standard(self):
241
249
for i in range (nb_batch_test ):
242
250
mape_test += sess .run (test_cost )
243
251
print ("Test final cost =" , mape_test / nb_batch_test )
252
+ s = clock ()
253
+ self .save_csv (mape_train / nb_batch_train , mape_test / nb_batch_test , s - e )
244
254
return (mape_train / nb_batch_train , mape_test / nb_batch_test )
245
255
246
256
def launch (self ):
247
- if self .training_size < float (1 / 65 ):
257
+ if self .training_size < float (1 / 92 ):
248
258
return self .compute_tiny ()
249
- if self .training_size > float (1 / 65 ) and self .training_size < float (10 / 65 ):
259
+ if self .training_size > float (1 / 92 ) and self .training_size < float (10 / 92 ):
250
260
return self .compute_small ()
251
261
return self .compute_standard ()
0 commit comments