ImplyVolatility(漲跌0.015)練習.xlsx
Section 1
import pandas as pd
import numpy as np
import tensorflow as tf
from sklearn.model_selection import train_test_split
columns = ['IV_C0', 'Std_C0', 'IV_P0', 'Std_P0',
'IV_C1', 'Std_C1', 'IV_P1', 'Std_P1',
'IV_C2', 'Std_C2', 'IV_P2', 'Std_P2',
'IV_C3', 'Std_C3', 'IV_P3', 'Std_P3', 'Target']
file = 'ImplyVolatility(漲跌0.015)練習.xlsx'
path = "C:/Users/USER\\Desktop/112-2/大數據統計分析AA/finance/" + file
D = pd.read_excel(path, usecols = columns)
x_train, x_test, y_train, y_test = train_test_split(D[columns[0:16]],
D['Target'],
test_size = 0.2)
# print(len(y_train))
# print(len(y_test))
# print(D[columns[0:16]])
category = 2 # 標的漲跌有機Label答案Y
dim = 16 # 以幾種Feature特徵X,來預測標的漲跌
y_train2 = tf.keras.utils.to_categorical(y_train, num_classes = (category))
y_test2 = tf.keras.utils.to_categorical(y_test, num_classes = (category))
# 建立模型
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(units = 40,
activation = tf.nn.relu,
input_dim = dim))
model.add(tf.keras.layers.Dense(units = 40,
activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(units = category,
activation = tf.nn.softmax))
model.compile(optimizer = 'adam',
loss = tf.keras.losses.categorical_crossentropy,
metrics = ['accuracy'])
# 繪圖會用到歷史資料
history = model.fit(x_train, y_train2, epochs = 2500, batch_size = 100)
# 測試
score = model.evaluate(x_test, y_test2, batch_size = 16)
print("score:", score) # 輸出是 loss value & metrics values
print("準確率:", score[1])
predict2 = model.predict(x_test)
predict2 = np.argmax(predict2, axis = 1)
print("predict_classes:", predict2[4])
# print(y_test2)
test2 = np.argmax(y_test2, axis = 1)
print("y_test", test2)
tem = 0
print(" 編號 預測 答案")
for i in range(len(y_test)):
print("%5d\\t%5d\\t%5d" % (i, predict2[i], test2[i]))
if predict2[i] == test2[i]:
tem += 1
print("準確率 = %.6f" % (tem/len(y_test)))
Section 2
import pandas as pd
import numpy as np
import tensorflow as tf
from sklearn.model_selection import train_test_split
columns = ['IV_C0', 'Std_C0', 'IV_P0', 'Std_P0',
'IV_C1', 'Std_C1', 'IV_P1', 'Std_P1',
'IV_C2', 'Std_C2', 'IV_P2', 'Std_P2',
'IV_C3', 'Std_C3', 'IV_P3', 'Std_P3', 'Target']
file = 'ImplyVolatility(漲跌0.015)練習.xlsx'
path = "C:/Users/USER\\Desktop/112-2/大數據統計分析AA/finance/" + file
D = pd.read_excel(path, usecols = columns)
for i in range(30):
x_train, x_test, y_train, y_test = train_test_split(D[columns[0:16]],
D['Target'],
test_size = 0.2)
# print(len(y_train))
# print(len(y_test))
# print(D[columns[0:16]])
print("第 %d 次訓練:" % (i+1))
category = 2 # 標的漲跌有機Label答案Y
dim = 16 # 以幾種Feature特徵X,來預測標的漲跌
y_train2 = tf.keras.utils.to_categorical(y_train, num_classes = (category))
y_test2 = tf.keras.utils.to_categorical(y_test, num_classes = (category))
# 建立模型
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(units = 40,
activation = tf.nn.relu,
input_dim = dim))
model.add(tf.keras.layers.Dense(units = 40,
activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(units = category,
activation = tf.nn.softmax))
model.compile(optimizer = 'adam',
loss = tf.keras.losses.categorical_crossentropy,
metrics = ['accuracy'])
# 繪圖會用到歷史資料
history = model.fit(x_train, y_train2, epochs = 2500, batch_size = 100, verbose = 0)
# 測試
score = model.evaluate(x_test, y_test2, batch_size = 16)
# print("score:", score) # 輸出是 loss value & metrics values
print("第 %d 次訓練: 準確率:%.16f" % ((i+1), score[1]))
'''
predict2 = model.predict(x_test)
predict2 = np.argmax(predict2, axis = 1)
print("predict_classes:", predict2[4])
# print(y_test2)
test2 = np.argmax(y_test2, axis = 1)
print("y_test", test2)
tem = 0
print(" 編號 預測 答案")
for i in range(len(y_test)):
print("%5d\\t%5d\\t%5d" % (i, predict2[i], test2[i]))
if predict2[i] == test2[i]:
tem += 1
print("準確率 = %.6f" % (tem/len(y_test)))
'''