keras 实现BP神经网络

来源:互联网 发布:linux开机启动shell 编辑:程序博客网 时间:2024/05/19 18:11
# -*- coding: utf-8 -*-"""Created on Thu Jul 20 09:59:50 2017@author: Administrator"""import pandas as pdinputfile = 'input.xlsx'   #excel输入outputfile = 'output.xls' #excel输出modelfile = 'modelweight.model' #神经网络权重保存data = pd.read_excel(inputfile,index='Date',sheetname=0) #pandas以DataFrame的格式读入excel表feature = ['F1','F2','F3','F4'] #影响因素四个label = ['L1'] #标签一个,即需要进行预测的值data_train = data.loc[range(0,20)].copy() #标明excel表从第0行到520行是训练集#2 数据预处理和标注data_mean = data_train.mean()  data_std = data_train.std()  data_train = (data_train - data_mean)/data_std #数据标准化x_train = data_train[feature].as_matrix() #特征数据y_train = data_train[label].as_matrix() #标签数据 #3 建立一个简单BP神经网络模型from keras.optimizers import SGD,adamfrom keras.models import Sequentialfrom keras.layers.core import Dense, Activationmodel = Sequential()  #层次模型model.add(Dense(12,input_dim=4,init='uniform')) #输入层,Dense表示BP层model.add(Activation('relu'))  #添加激活函数model.add(Dense(1,input_dim=12))  #输出层model.compile(loss='mean_squared_error', optimizer='adam') #编译模型model.fit(x_train, y_train, nb_epoch = 1000, batch_size = 6) #训练模型1000次model.save_weights(modelfile) #保存模型权重#4 预测,并还原结果。x = ((data[feature] - data_mean[feature])/data_std[feature]).as_matrix()data[u'L1_pred'] = model.predict(x) * data_std['L1'] + data_mean['L1']#5 导出结果data.to_excel(outputfile) #6 画出预测结果图import matplotlib.pyplot as plt p = data[['L1','L1_pred']].plot(subplots = True, style=['b-o','r-*'])plt.show()

这里写图片描述

这里写图片描述

原创粉丝点击