小白使用kares搭建神经网络预测期货误差高,求教各位大神如何改进
import numpy as np
import pandas as pd
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras import optimizers
import matplotlib.pyplot as plt
def excel_one_line_to_list():
global X_train
global Y_train
global X_test
global Y_test
X = pd.read_excel('训练集X.xlsx', usecols=[0,1,2,3,4,5,6,7],
names=None)
X_train = X.values.tolist()
Y = pd.read_excel('训练集Y.xlsx', usecols=[0],
names=None)
Y_train = Y.values.tolist()
Z = pd.read_excel('测试集X.xlsx', usecols=[0,1,2,3,4,5,6,7],
names=None)
X_test = Z.values.tolist()
W = pd.read_excel('测试集Y.xlsx', usecols=[0],
names=None)
Y_test = W.values.tolist()
if __name__ == '__main__':
excel_one_line_to_list()
X_train = np.array(X_train)
Y_train = np.array(Y_train)
X_test = np.array(X_test)
Y_test = np.array(Y_test)
model=Sequential()
model.add(Dense(input_dim=7,units=50))
model.add(Dense(input_dim=7,units=7))
model.add(Dense(input_dim=7,units=1))
sgd = optimizers.SGD(lr=0.00000000001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mse',optimizer=sgd)
print('Training---------')
for step in range(300):#迭代300次
cost=model.train_on_batch(X_train,Y_train)#利用model.train_on_batch训练,输出损失
if step % 50 == 0:
print(cost)
print('\nTesting---------')
cost=model.evaluate(X_test,Y_test,batch_size=10)#测试
print('Test cost:',cost)
W0,b0=model.layers[0].get_weights()#输出参数
#W1,b1=model.layers[1].get_weights()
#w2,b2=model.layers[2].get_weights()
print('Weight=',W0,'\nbiases=',b0)
Y_pred=model.predict(X_test) #输出预测值
print(Y_pred)
plt.scatter(Y_test, Y_pred)#绘图
plt.plot(X_test, Y_pred)
model.save('my_model.h5') # HDF5 file,保存模型HDFS格式
del model # 删除模型XA
# load
model = keras.models.load_model('my_model.h5')
print