import keras # -*- encoding:utf-8 -*- import numpy as np from keras.models import Sequential from keras.layers import Dense,Dropout import random from keras import regularizers from keras.models import load_model from imblearn.over_sampling import RandomOverSampler def read_data(path): lines = [] with open(path) as f: for x in range(100000): lines.append(eval(f.readline().strip())) random.shuffle(lines) print('读取数据完毕') d=int(0.95*len(lines)) size = len(lines[0]) train_x=[s[:size - 2] for s in lines[0:d]] train_y=[s[size-1] for s in lines[0:d]] test_x=[s[:size - 2] for s in lines[d:]] test_y=[s[size-1] for s in lines[d:]] print('转换数据完毕') ros = RandomOverSampler(random_state=0) X_resampled, y_resampled = ros.fit_sample(np.array(train_x), np.array(train_y)) print('数据重采样完毕') return X_resampled,y_resampled,np.array(test_x),np.array(test_y) def train(input_dim=400, result_class=3, file_path="D:\\data\\quantization\\stock6.log", model_name=''): train_x,train_y,test_x,test_y=read_data(file_path) model = Sequential() model.add(Dense(units=120+input_dim, input_dim=input_dim, activation='relu')) # model.add(Dense(units=60+int(input_dim/2), activation='relu')) model.add(Dense(units=60+input_dim, activation='relu',kernel_regularizer=regularizers.l2(0.01))) model.add(Dropout(0.2)) model.add(Dense(units=60+input_dim, activation='relu',kernel_regularizer=regularizers.l2(0.01))) model.add(Dropout(0.2)) model.add(Dense(units=60+input_dim, activation='relu')) # model.add(Dropout(0.2)) model.add(Dense(units=512, activation='relu')) model.add(Dense(units=result_class, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['accuracy']) print("Starting training ") h=model.fit(train_x, train_y, batch_size=64, epochs=126, shuffle=True) score = model.evaluate(test_x, test_y) print(score) print('Test score:', score[0]) print('Test accuracy:', score[1]) model.save(model_name) model=None model=load_model(model_name) result=model.predict(test_x) print(result) print(test_y) if __name__ == '__main__': train(input_dim=46, result_class=5, file_path="D:\\data\\quantization\\stock6_5.log", model_name='5d_dnn_seq.h5') # train(input_dim=400, result_class=3, file_path="D:\\data\\quantization\\stock6.log", model_name='15m_dnn_seq.h5')