ソースを参照

先用dnn试试

yufeng0528 4 年 前
コミット
bbced1af4e
共有1 個のファイルを変更した70 個の追加0 個の削除を含む
  1. 70 0
      stock/cnn_train.py

+ 70 - 0
stock/cnn_train.py

@@ -0,0 +1,70 @@
1
+import keras
2
+# -*- encoding:utf-8 -*-
3
+import numpy as np
4
+from keras.models import Sequential
5
+from keras.layers import Dense,Dropout
6
+import random
7
+from keras.models import load_model
8
+from imblearn.over_sampling import RandomOverSampler
9
+from keras.utils import np_utils
10
+
11
+
12
+def read_data(path):
13
+    train_x=[]
14
+    train_y=[]
15
+    lines = []
16
+    with open(path) as f:
17
+        for x in range(3000):
18
+            lines.append(eval(f.readline().strip()))
19
+
20
+    random.shuffle(lines)
21
+    print('读取数据完毕')
22
+
23
+    d=int(0.95*len(lines))
24
+
25
+    size = len(lines[0])
26
+    train_x=[s[:size - 2] for s in lines[0:d]]
27
+    train_y=[s[-1] for s in lines[0:d]]
28
+    test_x=[s[:size - 2] for s in lines[d:]]
29
+    test_y=[s[-1] for s in lines[d:]]
30
+
31
+    print('转换数据完毕')
32
+
33
+    ros = RandomOverSampler(random_state=0)
34
+    X_resampled, y_resampled = ros.fit_sample(np.array(train_x), np.array(train_y))
35
+
36
+    print('数据重采样完毕')
37
+
38
+    return X_resampled,y_resampled,np.array(test_x),np.array(test_y)
39
+
40
+train_x,train_y,test_x,test_y=read_data("D:\\data\\quantization\\stock6.log")
41
+
42
+model = Sequential()
43
+model.add(Dense(units=635, input_dim=400,  activation='relu'))
44
+model.add(Dense(units=525, activation='relu'))
45
+model.add(Dense(units=525, activation='relu'))
46
+model.add(Dropout(0.2))
47
+model.add(Dense(units=525, activation='relu'))
48
+model.add(Dropout(0.2))
49
+model.add(Dense(units=425, activation='relu'))
50
+model.add(Dropout(0.2))
51
+model.add(Dense(units=366, activation='relu'))
52
+model.add(Dense(units=3, activation='softmax'))
53
+model.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['accuracy'])
54
+
55
+print("Starting training ")
56
+h=model.fit(train_x, train_y, batch_size=64, epochs=6, shuffle=True)
57
+score = model.evaluate(test_x, test_y)
58
+print(score)
59
+print('Test score:', score[0])
60
+print('Test accuracy:', score[1])
61
+
62
+path="15min_model_seq.h5"
63
+model.save(path)
64
+model=None
65
+
66
+
67
+model=load_model(path)
68
+result=model.predict(test_x)
69
+print(result)
70
+print(test_y)