BP神经网络数据预测(excel)
生活随笔
收集整理的這篇文章主要介紹了
BP神经网络数据预测(excel)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
整體的處理思路是
先加載訓練數據,對數據進行訓練,然后再進行預測,最后輸出預測值。
main()
import numpy as py import DataLoad as dataload import ModelTrain as modeltrain import DataPrediction as datapredictiondef main():data_train = dataload.load_data_train() # 加載訓練數據 print(data_train) modeltrain.Train_Model(data_train) # 對數據進行訓練data_pre = dataload.load_data_pre() # 加載需要預測的數據data_real = dataload.load_data_real() # 加載數據的真實值print(data_pre)print(3)pre_result = dataprediction.Predict_Data(data_pre) 進行預測print("真實值為:%d"%(data_real)+" 預測結果為:%d" % (pre_result))if __name__ == '__main__':main()數據加載 DataLoad。
import numpy as np import pandas as pd data = pd.read_csv("./2015(z).CSV") #讀取csv格式的文件全部數據 data1 = np.mat(data) #數據矩陣化 pre_raw = 30 #需要預測值所在行數 # print (data1) def load_data_train():data_train = data1[0:26, 3:47] # 取出數據的第1行到26行中的第4列到47列作為訓練數據print(data_train)return data_traindef load_data_pre():data_pre = data1[pre_raw, 3:46].astype('float64') #第31行第4列到第46列為輸入數據data_mean = data_pre.mean() #求平均值data_std = data_pre.std() #求標準差data_pre = (data_pre - data_mean) / data_std #標準化return data_predef load_data_real():data_real = data1[pre_raw, 46] 取出第31行的第47列數據return data_real模型訓練 ModelTrain
import numpy as np from keras.models import Sequential from keras.layers.core import Dense, Activationdef Train_Model(data_train):modelfile = './modelweight' #此位置保存訓練模型過程中的權重y_mean_std = "./y_mean_std.txt" # 保存標準化過程中的數據,后邊數據還原需要用到data_train = np.matrix(data_train).astype('float64')data_mean = np.mean(data_train, axis=0)#對列求平均值data_std = np.std(data_train, axis=0)#計算每一列的標準差# data_train = (data_train - data_mean) / data_stdprint(1)x_train = data_train[:, 0:(data_train.shape[1] - 1)] #所有數據(除最后一列)作為輸入xy_train = data_train[:, data_train.shape[1] - 1] #所有數據的最后一列作為輸出yprint(x_train)print(y_train)#模型訓練model = Sequential()model.add(Dense(x_train.shape[1], input_dim=x_train.shape[1], kernel_initializer="uniform"))model.add(Activation('relu'))model.add(Dense(1, input_dim=x_train.shape[1]))model.compile(loss='mean_squared_error', optimizer='adam')model.fit(x_train, y_train, epochs=40, batch_size=x_train.shape[0])model.save_weights(modelfile) #保存模型權重y_mean = data_mean[:, data_train.shape[1] - 1]y_std = data_std[:, data_train.shape[1] - 1]print("訓練完畢")# 將標準差過程中的參數寫入文件f = open(y_mean_std, "w") mean_std = str(y_mean.astype(str)) + " " + str(y_std.astype(str))mean_std = mean_std.replace("[", "")mean_std = mean_std.replace("]", "")mean_std = mean_std.replace("'", "")f.write(mean_std)數據預測 DataPrediction
import numpy as np from keras.models import Sequential from keras.layers.core import Dense, Activationdef load_y():f = open("./y_mean_std.txt", "r") y_mean = f.read()y_mean = y_mean.split(" ")f.close()return y_meandef Predict_Data(data_pre):model = Sequential()model.add(Dense(data_pre.shape[1], input_dim=data_pre.shape[1], kernel_initializer="uniform"))print(data_pre.shape[1])model.add(Activation('relu'))model.add(Dense(1, input_dim=data_pre.shape[1]))model.compile(loss='mean_squared_error', optimizer='adam')model.load_weights('./modelweight')mean_std = load_y()pre_result = model.predict(data_pre) * float(mean_std[1]) + float(mean_std[0])print(model.summary())#輸出參數param計算過程return pre_result總結
以上是生活随笔為你收集整理的BP神经网络数据预测(excel)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mynt product model:
- 下一篇: Python 爬虫抓取代理IP,并检测联