Kaynağa Gözat

把两个结果and下

yufeng0528 4 yıl önce
ebeveyn
işleme
5149e3a66f
5 değiştirilmiş dosya ile 135 ekleme ve 91 silme
  1. 38 23
      stock/cnn_predict.py
  2. 3 3
      stock/cnn_train.py
  3. 21 0
      stock/compont_predict.py
  4. 37 18
      stock/dnn_predict.py
  5. 36 47
      stock/dnn_train.py

+ 38 - 23
stock/cnn_predict.py

@@ -9,7 +9,7 @@ from keras.models import load_model
9 9
 lines = []
10 10
 def read_data(path):
11 11
     with open(path) as f:
12
-        for line in f.readlines()[:2000]:
12
+        for line in f.readlines()[:]:
13 13
             lines.append(eval(line.strip()))
14 14
 
15 15
     train_x=[s[:-2] for s in lines]
@@ -17,29 +17,44 @@ def read_data(path):
17 17
     return np.array(train_x),np.array(train_y)
18 18
 
19 19
 
20
-test_x,test_y=read_data("D:\\data\\quantization\\stock6_test.log")
21
-test_x = test_x.reshape(test_x.shape[0], 1,80,5)
22
-
23
-path="15min_model_seq.h5"
24
-model=load_model(path)
25
-score = model.evaluate(test_x, test_y)
26
-print(score)
20
+def predict():
21
+    test_x,test_y=read_data("D:\\data\\quantization\\stock6_test.log")
22
+    test_x = test_x.reshape(test_x.shape[0], 1,80,5)
23
+
24
+    path="15min_cnn_seq.h5"
25
+    model=load_model(path)
26
+    score = model.evaluate(test_x, test_y)
27
+    print(score)
28
+
29
+    result=model.predict(test_x)
30
+    print(result)
31
+
32
+    up_num = 0
33
+    up_right = 0
34
+    i = 0
35
+    for r in result:
36
+        fact = test_y[i]
37
+        if fact[0] == 1:
38
+            if r[0] > 0.5:
39
+                up_right = up_right + 1
40
+            elif r[1] > 0.5:
41
+                up_right = up_right + 0.5
42
+            up_num = up_num + 1
43
+
44
+        i = i + 1
45
+    print(up_right, up_num, up_right/up_num)
46
+
47
+    i = 0
48
+    win_dnn = []
49
+    for r in result:
50
+        if r[0] > 0.5:
51
+            print(lines[i][-2])
52
+            win_dnn.append([lines[i][-2], lines[i][-1]])
53
+        i = i + 1
27 54
 
28
-result=model.predict(test_x)
29
-print(result)
55
+    return win_dnn
30 56
 
31
-up_num = 0
32
-up_right = 0
33
-i = 0
34
-for r in result:
35
-    fact = test_y[i]
36
-    if fact[0] == 1:
37
-        if r[0] > 0.5:
38
-            up_right = up_right + 1
39
-        elif r[1] > 0.5:
40
-            up_right = up_right + 0.9
41
-        up_num = up_num + 1
42 57
 
43
-    i = i + 1
58
+if __name__ == '__main__':
59
+    predict()
44 60
 
45
-print(up_right, up_num, up_right/up_num)

+ 3 - 3
stock/cnn_train.py

@@ -17,7 +17,7 @@ from keras.layers import Conv2D, Activation, MaxPool2D, Flatten, Dense
17 17
 def read_data(path):
18 18
     lines = []
19 19
     with open(path) as f:
20
-        for x in range(10000):
20
+        for x in range(40000):
21 21
             lines.append(eval(f.readline().strip()))
22 22
 
23 23
     random.shuffle(lines)
@@ -66,7 +66,7 @@ model.add(Activation('relu'))
66 66
 
67 67
 # 设置下采样(池化层)
68 68
 model.add(MaxPool2D(
69
-    pool_size=(2,2),  # 下采样格为2*2
69
+    pool_size=(4,1),  # 下采样格为2*2
70 70
     strides=(2,2),  # 向右向下的步长
71 71
     padding='same', # padding mode is 'same'
72 72
 ))
@@ -93,7 +93,7 @@ print(score)
93 93
 print('Test score:', score[0])
94 94
 print('Test accuracy:', score[1])
95 95
 
96
-path="15min_model_seq.h5"
96
+path="15min_cnn_seq.h5"
97 97
 model.save(path)
98 98
 model=None
99 99
 

+ 21 - 0
stock/compont_predict.py

@@ -0,0 +1,21 @@
1
+from stock import cnn_predict
2
+from stock import dnn_predict
3
+
4
+
5
+def and_predict():
6
+    cnn_result = cnn_predict.predict()
7
+    dnn_result = dnn_predict.predict(file_path='D:\\data\\quantization\\stock6_5_test.log', model_path='5d_dnn_seq.h5')
8
+    print('计算完成')
9
+
10
+    with open('and_predict.txt', 'a') as f:
11
+        for m in cnn_result:
12
+            # print('find', m)
13
+            for n in dnn_result:
14
+                if m[0][0] == n[0][0] and int(m[0][1][:10].replace('-', '')) == n[0][1]:
15
+                    print('AND', m, n)
16
+                    f.write(str(m) + '\n')
17
+                    break
18
+
19
+
20
+if __name__ == '__main__':
21
+    and_predict()

+ 37 - 18
stock/dnn_predict.py

@@ -17,21 +17,40 @@ def read_data(path):
17 17
     train_y=[s[size-1] for s in lines]
18 18
     return np.array(train_x),np.array(train_y)
19 19
 
20
-# test_x,test_y=read_data("D:\\data\\quantization\\stock_test.log")
21
-test_x,test_y=read_data("D:\\data\\quantization\\s\\stock_2020-01-07.log")
22
-
23
-path="model_seq.h5"
24
-model=load_model(path)
25
-# score = model.evaluate(test_x, test_y)
26
-# print(score)
27
-
28
-result=model.predict(test_x)
29
-# print(result)
30
-i = 0
31
-for x in result:
32
-    # print(str(i) + ":" + str(x))
33
-    if x[0] > 0.8:
34
-        print(lines[i][-2], x, 1)
35
-    # elif x[0] + x[1] > 0.9:
36
-    #     print(lines[i][-2], x, 2)
37
-    i = i + 1
20
+
21
+def predict(file_path='', model_path='15min_dnn_seq.h5'):
22
+    test_x,test_y=read_data(file_path)
23
+
24
+    model=load_model(model_path)
25
+    score = model.evaluate(test_x, test_y)
26
+    print(score)
27
+
28
+    up_num = 0
29
+    up_right = 0
30
+    i = 0
31
+    result=model.predict(test_x)
32
+    for r in result:
33
+        fact = test_y[i]
34
+        if fact[0] == 1:
35
+            if r[0] > 0.5:
36
+                up_right = up_right + 1
37
+            elif r[1] > 0.5:
38
+                up_right = up_right + 0.5
39
+            up_num = up_num + 1
40
+
41
+        i = i + 1
42
+    print(up_right, up_num, up_right/up_num)
43
+
44
+    i = 0
45
+    win_dnn = []
46
+    for r in result:
47
+        if r[0] > 0.5:
48
+            print(lines[i][-2])
49
+            win_dnn.append([lines[i][-2], lines[i][-1]])
50
+
51
+        i = i + 1
52
+    return win_dnn
53
+
54
+
55
+if __name__ == '__main__':
56
+    predict(file_path='D:\\data\\quantization\\stock6_5_test.log', model_path='5d_dnn_seq.h5')

+ 36 - 47
stock/dnn_train.py

@@ -9,11 +9,9 @@ from imblearn.over_sampling import RandomOverSampler
9 9
 
10 10
 
11 11
 def read_data(path):
12
-    train_x=[]
13
-    train_y=[]
14 12
     lines = []
15 13
     with open(path) as f:
16
-        for x in range(20000):
14
+        for x in range(40000):
17 15
             lines.append(eval(f.readline().strip()))
18 16
 
19 17
     random.shuffle(lines)
@@ -36,47 +34,38 @@ def read_data(path):
36 34
 
37 35
     return X_resampled,y_resampled,np.array(test_x),np.array(test_y)
38 36
 
39
-train_x,train_y,test_x,test_y=read_data("D:\\data\\quantization\\stock4.log")
40
-
41
-model = Sequential()
42
-model.add(Dense(units=425, input_dim=166,  activation='relu'))
43
-model.add(Dense(units=325, activation='relu'))
44
-model.add(Dense(units=325, activation='relu'))
45
-model.add(Dropout(0.2))
46
-# model.add(Dense(units=325, activation='relu'))
47
-# model.add(Dropout(0.2))
48
-# model.add(Dense(units=325, activation='relu'))
49
-# model.add(Dropout(0.2))
50
-# model.add(Dense(units=325, activation='relu'))
51
-# model.add(Dropout(0.2))
52
-# model.add(Dense(units=325, activation='relu'))
53
-# model.add(Dropout(0.2))
54
-# model.add(Dense(units=225, activation='relu'))
55
-# model.add(Dense(units=225, activation='relu'))
56
-# model.add(Dense(units=225, activation='relu'))
57
-model.add(Dense(units=225, activation='relu'))
58
-model.add(Dropout(0.2))
59
-# model.add(Dense(units=225, activation='relu'))
60
-model.add(Dense(units=125, activation='relu'))
61
-model.add(Dropout(0.2))
62
-# model.add(Dense(units=125, activation='relu'))
63
-model.add(Dense(units=166, activation='relu'))
64
-model.add(Dense(units=8, activation='softmax'))
65
-model.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['accuracy'])
66
-
67
-print("Starting training ")
68
-h=model.fit(train_x, train_y, batch_size=64, epochs=26, shuffle=True)
69
-score = model.evaluate(test_x, test_y)
70
-print(score)
71
-print('Test score:', score[0])
72
-print('Test accuracy:', score[1])
73
-
74
-path="model_seq.h5"
75
-model.save(path)
76
-model=None
77
-
78
-
79
-model=load_model(path)
80
-result=model.predict(test_x)
81
-print(result)
82
-print(test_y)
37
+
38
+def train(input_dim=400, result_class=3, file_path="D:\\data\\quantization\\stock6.log", model_name=''):
39
+    train_x,train_y,test_x,test_y=read_data(file_path)
40
+
41
+    model = Sequential()
42
+    model.add(Dense(units=625, input_dim=input_dim,  activation='relu'))
43
+    model.add(Dense(units=525, activation='relu'))
44
+    model.add(Dense(units=525, activation='relu'))
45
+    model.add(Dropout(0.2))
46
+    model.add(Dense(units=525, activation='relu'))
47
+    model.add(Dropout(0.2))
48
+    model.add(Dense(units=325, activation='relu'))
49
+    model.add(Dropout(0.2))
50
+    model.add(Dense(units=266, activation='relu'))
51
+    model.add(Dense(units=result_class, activation='softmax'))
52
+    model.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['accuracy'])
53
+
54
+    print("Starting training ")
55
+    h=model.fit(train_x, train_y, batch_size=64, epochs=26, shuffle=True)
56
+    score = model.evaluate(test_x, test_y)
57
+    print(score)
58
+    print('Test score:', score[0])
59
+    print('Test accuracy:', score[1])
60
+
61
+    model.save(model_name)
62
+
63
+    model=None
64
+    model=load_model(model_name)
65
+    result=model.predict(test_x)
66
+    print(result)
67
+    print(test_y)
68
+
69
+
70
+if __name__ == '__main__':
71
+    train(input_dim=46, result_class=5, file_path="D:\\data\\quantization\\stock6_5.log", model_name='5d_dnn_seq.h5')