|
@@ -7,13 +7,16 @@ import random
|
7
|
7
|
from keras import regularizers
|
8
|
8
|
from keras.models import load_model
|
9
|
9
|
from imblearn.over_sampling import RandomOverSampler
|
|
10
|
+import joblib
|
10
|
11
|
|
11
|
12
|
|
12
|
13
|
def read_data(path):
|
13
|
14
|
lines = []
|
14
|
15
|
with open(path) as f:
|
15
|
|
- for x in range(30000):
|
16
|
|
- lines.append(eval(f.readline().strip()))
|
|
16
|
+ # for x in range(30000):
|
|
17
|
+ # lines.append(eval(f.readline().strip()))
|
|
18
|
+ for line in f.readlines()[:]:
|
|
19
|
+ lines.append(eval(line.strip()))
|
17
|
20
|
|
18
|
21
|
random.shuffle(lines)
|
19
|
22
|
print('读取数据完毕')
|
|
@@ -36,25 +39,53 @@ def read_data(path):
|
36
|
39
|
return X_resampled,y_resampled,np.array(test_x),np.array(test_y)
|
37
|
40
|
|
38
|
41
|
|
|
42
|
+def resample(path):
|
|
43
|
+ lines = []
|
|
44
|
+ with open(path) as f:
|
|
45
|
+ for x in range(160000):
|
|
46
|
+ lines.append(eval(f.readline().strip()))
|
|
47
|
+ estimator = joblib.load('km.pkl')
|
|
48
|
+
|
|
49
|
+ x = 17
|
|
50
|
+ for line in lines:
|
|
51
|
+ v = line[1:x*10 + 1]
|
|
52
|
+ v = np.array(v)
|
|
53
|
+ v = v.reshape(10, x)
|
|
54
|
+ v = v[:,0:4]
|
|
55
|
+ v = v.reshape(1, 40)
|
|
56
|
+ # print(v)
|
|
57
|
+ r = estimator.predict(v)
|
|
58
|
+ with open('D:\\data\\quantization\\kmeans\\stock2_10_' + str(r[0]) + '.log', 'a') as f:
|
|
59
|
+ f.write(str(line) + '\n')
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+def mul_train():
|
|
63
|
+ # for x in range(0, 16):
|
|
64
|
+ for x in [7,9,12,14,15]:
|
|
65
|
+ train(input_dim=176, result_class=5, file_path="D:\\data\\quantization\\kmeans\\stock2_10_" + str(x) + ".log",
|
|
66
|
+ model_name='5d_dnn_seq_' + str(x) + '.h5')
|
|
67
|
+
|
|
68
|
+
|
39
|
69
|
def train(input_dim=400, result_class=3, file_path="D:\\data\\quantization\\stock6.log", model_name=''):
|
40
|
70
|
train_x,train_y,test_x,test_y=read_data(file_path)
|
41
|
71
|
|
42
|
72
|
model = Sequential()
|
43
|
73
|
model.add(Dense(units=120+input_dim, input_dim=input_dim, activation='relu'))
|
44
|
|
- model.add(Dense(units=120+input_dim, activation='relu',kernel_regularizer=regularizers.l2(0.001)))
|
|
74
|
+ model.add(Dense(units=120+input_dim, activation='relu',kernel_regularizer=regularizers.l1(0.001)))
|
45
|
75
|
model.add(Dense(units=120+input_dim, activation='relu'))
|
46
|
|
- model.add(Dropout(0.2))
|
47
|
|
- model.add(Dense(units=60+input_dim, activation='selu'))
|
48
|
|
- model.add(Dropout(0.2))
|
|
76
|
+ model.add(Dense(units=120 + input_dim, activation='relu'))
|
|
77
|
+ model.add(Dropout(0.1))
|
49
|
78
|
model.add(Dense(units=60+input_dim, activation='selu'))
|
50
|
79
|
# model.add(Dropout(0.2))
|
|
80
|
+ # model.add(Dense(units=60+input_dim, activation='selu'))
|
|
81
|
+ # model.add(Dropout(0.2))
|
51
|
82
|
model.add(Dense(units=512, activation='relu'))
|
52
|
83
|
|
53
|
84
|
model.add(Dense(units=result_class, activation='softmax'))
|
54
|
85
|
model.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['accuracy'])
|
55
|
86
|
|
56
|
87
|
print("Starting training ")
|
57
|
|
- model.fit(train_x, train_y, batch_size=32, epochs=56, shuffle=True)
|
|
88
|
+ model.fit(train_x, train_y, batch_size=32, epochs=117 + int(len(train_x)/900), shuffle=True)
|
58
|
89
|
score = model.evaluate(test_x, test_y)
|
59
|
90
|
print(score)
|
60
|
91
|
print('Test score:', score[0])
|
|
@@ -62,13 +93,15 @@ def train(input_dim=400, result_class=3, file_path="D:\\data\\quantization\\stoc
|
62
|
93
|
|
63
|
94
|
model.save(model_name)
|
64
|
95
|
|
65
|
|
- model=None
|
66
|
|
- model=load_model(model_name)
|
67
|
|
- result=model.predict(test_x)
|
68
|
|
- print(result)
|
69
|
|
- print(test_y)
|
|
96
|
+ # model=None
|
|
97
|
+ # model=load_model(model_name)
|
|
98
|
+ # result=model.predict(test_x)
|
|
99
|
+ # print(result)
|
|
100
|
+ # print(test_y)
|
70
|
101
|
|
71
|
102
|
|
72
|
103
|
if __name__ == '__main__':
|
73
|
|
- train(input_dim=86, result_class=5, file_path="D:\\data\\quantization\\stock6_5.log", model_name='5d_dnn_seq.h5')
|
74
|
|
- # train(input_dim=400, result_class=3, file_path="D:\\data\\quantization\\stock6.log", model_name='15m_dnn_seq.h5')
|
|
104
|
+ # train(input_dim=86, result_class=5, file_path="D:\\data\\quantization\\stock6_5.log", model_name='5d_dnn_seq.h5')
|
|
105
|
+ # train(input_dim=400, result_class=3, file_path="D:\\data\\quantization\\stock6.log", model_name='15m_dnn_seq.h5')
|
|
106
|
+ # resample('D:\\data\\quantization\\stock6_5.log')
|
|
107
|
+ mul_train()
|